所以我做了一个剪刀石头布命令,它的工作原理几乎完美。但是,有一个错误需要我严重修复。但不幸的是,我无法从任何地方获得任何帮助。代码的工作方式如下。当您输入'> rps'时,它会发送一个嵌入代码,并要求对任何表情符号(石头,纸张或剪刀)做出反应。机器人已经选择了它的物品(借助random模块)。当我对任何表情符号(石头,纸和剪刀表情符号)做出反应时,它表明我赢了,输了或平局了比赛。到这里都很好。但是,当您手动对同一条消息(带有3个表情符号中的任何一个)做出反应时,该消息会再次更改以赢得,丢失或吸引嵌入。我希望在成员完成一场比赛后停止这种情况。这是我的代码。
很抱歉没有提供原始代码,因为该代码示例有点像个错误。如果有人帮助我,我真的很感激。谢谢 :)
不要使用event 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 = ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句