質問: '!いいいい': #「xx」と発言したら await message.channel.send('いいいいいい')#「XX」が返る処理 #BOTのToken(とーくん) client.run('xxxxxxxxxxxxxxxxxxxxxxxxxxx') ```
回答: まず初めに、 > > うまくいきません。 > > > とありますが、具体的にどのようにうまくいかないのか(やりたいことは〇〇と◇◇だが、◇◇しかできない)を記載いただくほうがよろしいかと思います。 おそらくこの場合は、これまでのコードでは「ああああ」に反応していたのに、「いいいい」に関する追記を行った結果「ああああ」に反応しなくなってしまったということだと思いますが、今回の事例を単純に見れば「うまくいかない」パターンとして、 * 「いいいい」について追加したのに、これまで通り「ああああ」にしか反応しない * コードを追加した結果、「ああああ」「いいいい」の両方に反応しなくなった 可能性も考えられます。症状は具体的に記載ください。 今回の場合、直接の原因は`on_message`メソッドが2回定義されていることが原因になっています。Pythonは上から順にコードを実行しますので、同名の関数を2回定義した場合は一番下の定義だけが有効になります(それより上で定義されたものが上書きされてしまう)。 そのため、2か所に分散して書かれている`on_message`の内容を一つにまとめる必要があります。例えば以下のようにしてはいかがでしょうか。 ``` @client.event async def on_message(message): # 冒頭は共通の処理なので書き換えは不要 if message.author.bot: # メッセージ送信者がBotだった場合は無視する return if message.channel.id == CHANNEL_ID1: # チャンネルIDがID1に一致した場合の処理 if message.content == 'ああああ': #「XX」と発言したら await message.channel.send('ああああああ')#「XX」が返る処理 if message.channel.id == CHANNEL_ID2: # チャンネルIDがID2に一致した場合の処理 if message.content == 'いいいい': #「xx」と発言したら await message.channel.send('いいいいいい')#「XX」が返る処理 ``` ※ `if message.content == '!いいいい':` この部分は`'いいいい'`の誤記と思われましたので、上記コードでは修正しています。