我一直在制作一个不和谐的机器人,并尝试制作使用反应的命令。我已经看到使用wait_for是实现这一目标的最佳方法。如果有人可以提供以下示例:
•通过反应来扮演角色
•使用反应来创建频道
•使用反应来编辑消息
如果您可以逐行分解代码,以便我可以学习它(如果仅复制粘贴),那么将不胜感激。预先谢谢你
答案 0 :(得分:0)
该文档有很好的解释,但起初可能很难理解, 通常,反应角色是这样完成的(如果我们暂时不使用数据库):
reaction, user = await self.bot.wait_for('reaction')
if str(reaction.emoji) == '?':
role = discord.utils.get(ctx.guild.roles, name='thumbsup')
await user.add_roles(role)
elif str(reaction.emoji) == '?':
role = discord.utils.get(ctx.guild.roles, name='thumbsdown')
await user.add_roles(role)
但是此代码可以像这样进行优化,它还可以模拟数据库:
reaction, user = await self.bot.wait_for('reaction')
roles = {'?': 'thumbsup', '?': 'thumbsdown'}
role = discord.utils.get(ctx.guild.roles, name=roles[str(reaction.emoji)])
await user.add_roles(role)
答案 1 :(得分:0)
这是我通常在执行检查时使用的
message = ctx.send("message")
reactions = [...]
def check(r:discord.reaction, u:discord.user):
checker = message.id == reaction.message.id
checker = checker and u == message.author
checker = checker and r in reactions
return checker
while true:
reaction, user = await self.bot.wait_for("reaction_add",check=check)
if reaction == reactions[0]:
ctx.send("reaction one")
elif reaction == reactions[1]:
ctx.send("reaction two")
elif reaction == reactions[2]:
break
如果需要,您还可以列出可以做出反应的用户列表,并在检查中检查该用户是否在用户中 不和谐的话,你可以做成员==用户