我正在尝试发出命令以在不和谐事件中托管事件。我试图使它起作用的方法是,当任何用户对消息的已发送响应做出反应时,将编辑“已输入”字段以添加任何响应用户的用户名。我让机器人等待反应,它可以有效地编辑嵌入的消息以添加字段。问题是我需要它接受一个以上用户的反应(多个用户)并每次更新该字段,以便它显示在嵌入字段中做出反应的每个人。我现在拥有的代码适用于第一个用户,但此后将不再对任何人起作用。
到目前为止,这是我的代码:
# 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('?')
任何对此的帮助将不胜感激。预先感谢!
答案 0 :(得分:0)
这是因为await bot.wait_for
仅等待1个事件。您需要将其放入循环中。