#python #discord.py
#python #discord.py
Вопрос:
def isAdmin(reaction, user):
for i in admins:
if user.id == i: return (str(reaction.emoji) == '👍' or str(reaction.emoji) == '👎')
try: reaction, user = await self.bot.wait_for('reaction_add', timeout=43200, check=isAdmin)
except asyncio.TimeoutError: await msg.edit(embed=embedEnd)
else:
resign_channel = discord.utils.get(ctx.guild.channels, name="resignings")
if str(reaction.emoji) == '👍':
print('{}: {} resigned {} {}.'.format(extCalls.timeNow('datetime'), ctx.channel.category.name, firstName, lastName))
await msg.edit(embed=embedFin)
await resign_channel.send(embed=embedConf)
else: await msg.edit(embed=embedEnd)
Это мой код, чтобы заставить бота ждать реакции на msg
. Но, по какой-то причине, когда у меня есть два msg
(сообщения), ожидающих реакции одновременно, когда я реагирую на одно сообщение, оба срабатывают успешно, даже если я не отреагировал на второе сообщение. Это чрезвычайно проблематично для системы утверждения на основе администратора … кто-нибудь знает, почему это происходит или как это исправить?
Ответ №1:
Этот код действительно запутанный, но если вы ищете способ дождаться реакции только на одно сообщение, вам следует добавить материал в свою команду проверки, например:
@bot.command(name="some_command")
async def sc(ctx):
msg = await ctx.send("Some interesting message!")
def check(reaction, user):
return reaction.message.id == msg.id
try:
reaction, user = await bot.wait_for("reaction_add", check=check,timeout=30.0)
except asyncio.TimeoutError:
await ctx.send("timeout")
return
await ctx.send(f"You reacted {str(reaction)}")
Комментарии:
1. Большое вам спасибо! Ты сделал мой день: D