前提・実現したいこと
プログラミング超初心者です
ここからのテンプレを元にいろいろいじってます
やりたいこと
①BOTが接続したら任意のメッセージを任意のチャンネル(CHANNEL_ID4)で発言する
②発言したメッセージにあらかじめ設定したリアクション(EMOJI_n(13))がついたら、リアクションを元に処理を変える3)がついたら任意のチャンネル(CHANNEL_IDn(1
処理1 EMOJI_n(13)で任意のメッセージを発言する3)のリアクションが消されたら処理1で発言したメッセージと処理2で付与したロールを削除
処理2 発言先で特定のリアクション(EMOJI_4)がついたらロールを付与
処理3 EMOJI_n(1
まだできたところは①のみです。
色々参考記事を見つけては応用して作ってます
発生している問題・疑問
①returnを使った処理をするとその下のBOT起動&discordに接続するコードまでたどり着けていないようです
②payloadは何をしているものですか?
③テストでリアクションを検知したらメッセージを発言するようにしましたがどうやら検知していないみたいです
EMOJI_nでの絵文字の指定の仕方がおかしいのか単純にコードがおかしいのかわかりません
該当のソースコード
@bot.event() async def on_add_reaction(payload): if payload.channel_id != CHANNEL_ID4: return else: if payload.emoji.neme != EMOJI_1 or EMOJI_2 or EMOJI_3: return else: if payload.emoji.neme == EMOJI_1: channel = bot.get_channel(CHANNEL_ID1) await channel.send('xxxxx') else: if payload.emoji.neme == EMOJI_2: channel = bot.get_channel(CHANNEL_ID2) await channel.send('xxxxx') else: if payload.emoji.neme == EMOJI_3: channel = bot.get_channel(CHANNEL_ID3) await channel.send('xxxxx') return token = getenv('DISCORD_BOT_TOKEN') bot.run(token)
ソースコード
python
1import discord 2from discord.ext import commands 3from os import getenv 4import traceback 5 6 7bot = commands.Bot(command_prefix='/') 8 9 10CHANNEL_ID1 = 0123456789 11CHANNEL_ID2 = 0123456789 12CHANNEL_ID3 = 0123456789 13CHANNEL_ID4 = 0123456789 14EMOJI_1 = "<:xxx:0123456789>" 15EMOJI_2 = "<:xxx:0123456789>" 16EMOJI_3 = "<:xxx:0123456789>" 17EMOJI_4 = "<:xxx:0123456789>" 18 19@bot.event 20async def on_command_error(ctx, error): 21 orig_error = getattr(error, "original", error) 22 error_msg = ''.join(traceback.TracebackException.from_exception(orig_error).format()) 23 await ctx.send(error_msg) 24 25 26@bot.command() 27async def ping(ctx): 28 await ctx.send('pong') 29 30 31@bot.event #BOTが接続したら任意のメッセージを任意のチャンネルで発言する 32async def on_ready(): 33 await bot.change_presence(activity=discord.Game(name="ピポピポ", type=1)) 34 channel = bot.get_channel(CHANNEL_ID4) 35 await channel.send('xxxxx') 36 37 38@bot.command() 39async def ready(ctx): 40 channel = bot.get_channel(CHANNEL_ID4) 41 await channel.send('xxxxx') 42 43 44@bot.event() 45async def on_add_reaction(payload): 46 if payload.channel_id != CHANNEL_ID4: 47 return 48 else: 49 if payload.emoji.neme != EMOJI_1 or EMOJI_2 or EMOJI_3: 50 return 51 else: 52 if payload.emoji.neme == EMOJI_1: 53 channel = bot.get_channel(CHANNEL_ID1) 54 await channel.send('xxxxx') 55 else: 56 if payload.emoji.neme == EMOJI_2: 57 channel = bot.get_channel(CHANNEL_ID2) 58 await channel.send('xxxxx') 59 else: 60 if payload.emoji.neme == EMOJI_3: 61 channel = bot.get_channel(CHANNEL_ID3) 62 await channel.send('xxxxx') 63 return 64 65 66token = getenv('DISCORD_BOT_TOKEN') 67bot.run(token)
試したこと
BOT起動&Discordに接続するコードをreturnより手前に記述するとBOT自体は動きます(pingに反応する)
補足情報(FW/ツールのバージョンなど)
Discord.py 1.7.3
GitHub
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。