我正在尝试向机器人发出命令,以便当消息中提到的每个人都对机器人的响应做出反应时,它会提及原始消息的作者
这就是我尝试过的
if msg.content.startswith('/iniciar'):
async with msg.channel.typing():
mentions = ""
for mention in msg.mentions:
mentions = mentions + " " + mention.mention
bot_msg: discord.Message = await msg.channel.send(mentions + ' confirmem presença reagindo abaixo.')
await bot_msg.add_reaction('✅')
for mention in msg.mentions:
def check(reaction, user):
return user == mention and str(reaction.emoji) == '✅'
try:
reaction, user = await client.wait_for('reaction_add', check=check)
finally:
reactionusers: list = await reaction.users().flatten()
reactionusers.remove(reactionusers[0])
print(reactionusers)
print(msg.mentions)
if reactionusers == msg.mentions:
await msg.channel.send(msg.author.mention)
else:
return
答案 0 :(得分:1)
好的,首先,您需要在当前实现中考虑一些事项。首先,您可能想要将您希望机器人观看的消息ID保存在某个地方。无论这是SQL,还是搁置,等等
为此,在调用/iniciar
函数时,请将消息ID保存在您可以检查的某个地方(该僵尸可以检查的地方)。
然后,您将要考虑如何激活此代码块,在您当前的给定代码中看不到。为了您的目的,我建议您使用on_reaction_add
,此处提供了文档:https://discordpy.readthedocs.io/en/latest/api.html#discord.on_reaction_add
使用Reaction.message
抓取消息对象,并将消息中提及的对象的相关信息读入列表(类似于您的工作方式)。
当用户对消息做出反应并调用on_reaction_add
时: