質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

687閲覧

フラグを使ってしりとりをしたい

siranui

総合スコア54

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/10/17 16:43

###やりたいこと&現状&備考

  • やりたいこと
列1列2
しりとりとコメントされるしりとりとコメントされていない
フラグ[しりとり]がtrueになるフラグ[しりとり]がfalseのまま
あうろらとコメントされるあうろらとコメントされる
フラグ[しりとり]がtrueなので、反応するフラグ[しりとり]がfalseなので、反応しない
  • 現状
列1列2例3
しりとりとコメントされるしりとりとコメントされていない普段反応するワードを書く
不明不明エラーコードrejection idが出る
あうろらとコメントされるあうろらとコメントされる
反応する反応してしまう(しりとり系除き)何も反応しない
  • 備考

 Discord.jsを使用しています。Discordとは、端的に言えばチャットサイトです。

そのため、embed等聞き覚えのない単語が入るかもしれませんが、今回質問するのはフラグ関連のため、そこまで気にしなくても良いと思います。
このプログラムは、ここの4680行目に書いてあります

###問題のプログラム

js

1 var しりとり = false; 2 3 if (message.content.substring(1).startsWith('しりとり')) { 4 let embed = new discord.RichEmbed(); 5 embed.setTitle(`スピカとしりとりをします!`); 6 embed.setDescription(` 7__**注意事項**__ 8・全部ひらがなで打ってね! 9・スピカが知らない単語もあるよ!ごめんね! 10・めっちゃくっちゃ強いよ!`); 11 embed.setColor('#00ffca'); 12 embed.setFooter('現在の時刻',message.author.avatarURL) 13 embed.setTimestamp(); 14 message.channel.sendEmbed(embed); 15 var しりとり = true; 16 return; 17 } 18 if (message.content.includes('あうろら') && (しりとり = true)) { 19 message.channel.send('らら'); 20 return; 21 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

js

1if (message.content.includes('あうろら') && (しりとり = true)) {

ここ、しりとり = true ってしてしまっているので、常に真判定されますよね。

js

1if (message.content.includes('あうろら') && しりとり) {

これでよいのでは?

投稿2018/10/18 01:51

macaron_xxx

総合スコア3191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

何でかしらね

①しりとりとコメントされていないのに「あうろら」とコメントされると反応してしまう件

  • 誤: if (message.content.includes('あうろら') && (しりとり = true))
  • 正: if (message.content.includes('あうろら') && (しりとり == true))
  • 正: if (message.content.includes('あうろら') && しりとり)

でも毎回 var しりとり = false で初期化されるので、現コードだと多分うまくいかないですね。しりとりフラグはどっか別のとこに持たせる必要がありそうです。

②普段反応するワードでエラーが出る件

パッと見 4680 行目じゃなくて 4678 行目に挿入するのが正しそうな気がしましたが良く分かんないです。「普段反応するワード」の例とか欲しいです。

投稿2018/10/17 18:42

set0gut1

総合スコア2413

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siranui

2018/10/18 12:21

回答いただき、ありがとうございます! ②については、何とか解決することができました(ここでないプログラムの、}がなかったです;;) ①の`var しりとり = false`の場所なんですが、すみません。試行錯誤しても、 うまいことできませんでした。 どこに組み込むと、できるのでしょうか?
set0gut1

2018/10/18 21:02

function runCommand の外側のスコープで変数が定義されていれば良いので、例えば次のようにすればいけると思います。 - main.js の17行目あたりに let しりとり = false - しりとりモード開始時に しりとり = true - しりとりモード終了時に しりとり = false
siranui

2018/10/19 14:03

すみません。最初に、謝っておきます。 どうせ、今までの人と同じで、これやってもうまくいくわけないだろな...なんて思って侮ってました。。。 これ以上ないぐらい、完璧にフラグの管理ができてました! たったこの3行の追加だけでできるなんて、びっくりですw わざわざプログラム全体を見てくださったり、このような的確すぎる回答をしてくださったり、本当にありがとうございました!
set0gut1

2018/10/19 14:05

くふふ、おめでとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問