本文介绍了Discord.py|避免同一用户对机器人发送的消息做出不止一种反应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试制作一个命令,它将发送一个嵌入的命令,它有两个反应,一个勾号和一个十字,我想让用户只对其中一个反应做出反应,而不是对这两个反应都做出反应。我还需要一些帮助来制定一个系统,以确保做出反应的人具有特定的角色。如有任何帮助,将不胜感激!推荐答案
使用on_raw_reaction_add()
事件可以做到这一点。
@bot.event
async def on_raw_reaction_add(payload): # checks whenever a reaction is added to a message
# whether the message is in the cache or not
# check which channel the reaction was added in
if payload.channel_id == 112233445566778899:
channel = await bot.fetch_channel(payload.channel_id)
message = await channel.fetch_message(payload.message_id)
# iterating through each reaction in the message
for r in message.reactions:
# checks the reactant isn't a bot and the emoji isn't the one they just reacted with
if payload.member in await r.users().flatten() and not payload.member.bot and str(r) != str(payload.emoji):
# removes the reaction
await message.remove_reaction(r.emoji, payload.member)
引用:
on_raw_reaction_add()
Message.remove_reaction()
Reaction.users()
User.bot
RawReactionActionEvent
-(负载)Message.reactions
Client.fetch_channel()
TextChannel.fetch_message()
这篇关于Discord.py|避免同一用户对机器人发送的消息做出不止一种反应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!