需要帮助修复石头剪刀布命令中的某个错误 | Discord.py重写

Need help to fix a certain bug in Rock Paper Scissors Command | Discord.py rewrite

所以我做了一个石头剪刀布命令,它几乎完美地工作。但是,有一个错误,我非常需要修复它。但不幸的是,我无法从任何地方得到任何帮助。下面是代码的工作原理。 当您键入“>rps”时,它会发送一个嵌入并要求对任何表情符号(石头、布或剪刀)做出反应。机器人已经选择了它的项目(在随机模块的帮助下)。当我对任何表情符号(石头、布和剪刀表情符号)做出反应时,它表明我赢了、输了或打平了比赛。到这里为止一切都很好。但是,当您手动对同一消息做出反应时(使用 3 个表情符号中的任何一个),消息会再次更改为获胜、失败或平局嵌入。我希望在成员完成一场比赛后停止发生这种情况。这是我的代码。

my code

很抱歉没有提供原始代码,因为代码示例有点错误。如果有人帮助我,我真的很感激。谢谢:)

不要使用事件 on_reaction_add,而是使用 wait_for,这是一个例子。

def check(reaction, user):
    return user == message.author and str(reaction.emoji) in ["put", "emojis", "here"]

try:
    reaction, user = await client.wait_for('reaction_add', timeout=60.0, check=check)
except asyncio.TimeoutError:
    await channel.send("Timed out!")
else:
    if str(reaction.emoji) == rock:
        ...
    elif str(reaction.emoji) == paper:
        ...
    else: # Scissors
        ...

我也强烈建议只嵌入一个并根据您的需要对其进行编辑,您可以将嵌入定义为

em = discord.Embed(description=f"The bot chose {x}")
# Later on in the code
if bot_won:
    em.title = "You lost!"
    em.color = ...
elif user_won:
    em.title = "You won!"
    em.color = ...
else: # Draw
    em.title = "Draw!"
    em.color = ...