当多个用户做出反应时,需要帮助让discord.py bot编辑消息

时间:2020-10-25 10:54:46

标签: python-3.x discord.py

我正在尝试发出命令以在不和谐事件中托管事件。我试图使它起作用的方法是,当任何用户对消息的已发送响应做出反应时,将编辑“已输入”字段以添加任何响应用户的用户名。我让机器人等待反应,它可以有效地编辑嵌入的消息以添加字段。问题是我需要它接受一个以上用户的反应(多个用户)并每次更新该字段,以便它显示在嵌入字段中做出反应的每个人。我现在拥有的代码适用于第一个用户,但此后将不再对任何人起作用。

到目前为止,这是我的代码:

# Event creation command
@bot.command()
async def eventcreate(ctx, arg1, arg2):
    eventembed = discord.Embed(
        title= ":partying_face: GIVEAWAY!!! :partying_face:",
        color=7419530
    )
    eventembed.add_field(
        name= "Event",
        value=arg1,
        inline=False
    )
    eventembed.add_field(
        name= "Prize",
        value=arg2,
        inline=False
    )
    message = await ctx.send(embed=eventembed)
    await message.add_reaction('?')

    def check (reaction, user):
        return str(reaction.emoji) == '?' and user != bot.user
    while True:
        try:
            reaction, user = await bot.wait_for('reaction_add', timeout=604800, check=check)

            if str(reaction.emoji) == '?':
                reacted = user.name
                eventembed.add_field(
                    name= "Entered:",
                    value= f"```{reacted}```",
                    inline=False
                )
                await message.edit(embed=eventembed)
                await message.remove_reaction(reaction, user)

        except asyncio.TimeoutError:
            await message.remove_reaction('?')

任何对此的帮助将不胜感激。预先感谢!

1 个答案:

答案 0 :(得分:0)

这是因为await bot.wait_for仅等待1个事件。您需要将其放入循环中。