gpt4 book ai didi

python - 检查用户列表是否对消息 discord.py rewrite 作出 react

转载 作者:行者123 更新时间:2023-12-04 15:37:43 29 4
gpt4 key购买 nike

我正在尝试为机器人发出命令,当消息中提到的每个人都对机器人的响应使用react时,它会提到原始消息作者

这就是我尝试过的

        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

最佳答案

好的,首先,您需要考虑当前实现中的一些事项。首先,您可能希望将希望机器人在某处观看的消息 ID 保存下来。不管这是 SQL、Shelve 还是什么

为此,当调用 /iniciar 函数时,将消息 ID 保存在您喜欢的任何首选长期存储方法中,机器人可以检查的地方。

然后您需要考虑如何激活此代码块,我在您当前给定的代码中看不到它。我建议,出于您的目的,使用 on_reaction_add 此处有文档:https://discordpy.readthedocs.io/en/latest/api.html#discord.on_reaction_add

使用Reaction.message 获取消息对象,并将消息中提到的相关信息读取到列表中(类似于您的操作)。

当用户对消息使用react并调用 on_reaction_add 时:

  1. 检查正在回复的消息是否在您的存储解决方案中,如果是您正在等待继续回复的消息
  2. 然后检查使用react的用户是否在该消息中提到的用户列表中
  3. 如果是,则让机器人提及消息作者
  4. 最后检查是否所有用户都做出了 react ,如果是,请从 SQL/Shelve/您拥有它的任何存储中删除该消息,这样进一步的 react 就不会提及作者。

关于python - 检查用户列表是否对消息 discord.py rewrite 作出 react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59167599/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com