【问题标题】:How to use wait_for in discord.py rewrite如何在 discord.py 重写中使用 wait_for
【发布时间】:2020-11-27 17:00:53
【问题描述】:

我一直在制作一个不和谐的机器人,并尝试制作使用反应的命令。我已经看到使用 wait_for 是实现这一目标的最佳方式。如果有人可以提供一些例子:

• 使用反应来赋予角色

• 使用反应创建频道

• 使用反应来编辑消息

如果您可以逐行分解代码以便我可以学习它而不是复制粘贴,将不胜感激。提前谢谢你

【问题讨论】:

  • docs has an example。如果您不理解某行,请具体询问。如果您不知道如何分配角色,请创建一个频道或编辑一条消息,具体询问。文档也解释了这一点。与其要求提供信息(当它在那里时),不如问你到底不明白什么。
  • 我不明白如何在反应中使用 wait_for。我已经知道如何创建频道赋予角色等。
  • 该链接提供了一个反应示例reaction, user = await client.wait_for('reaction_add', timeout=60.0, check=check)
  • 我将如何进行检查?
  • 我提供的链接有一个关于如何进行检查的示例。

标签: discord discord.py discord.py-rewrite


【解决方案1】:

这是我在实现检查时通常使用的方法

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

如果您愿意,您还可以拥有一个可以做出反应的用户列表,并在检查中检查该用户是否在用户中 不和谐你可以做成员==用户

【讨论】:

    【解决方案2】:

    文档有很好的解释,但一开始可能很难理解, 通常反应角色是这样完成的(如果我们暂时不考虑数据库):

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 2021-09-10
      • 2021-07-03
      相关资源
      最近更新 更多