じゃんけんコマンドを作成しましたが、ほぼ完璧に機能します。しかし、私がそれをひどく修正する必要があるバグがあります。しかし、残念ながらどこからも助けを得ることができませんでした。コードの仕組みは次のとおりです。'> rps'と入力すると、埋め込みが送信され、絵文字(じゃんけん)のいずれかに反応するように求められます。ボットはすでにそのアイテムを選択しています(ランダムモジュールの助けを借りて)。絵文字(岩、紙、はさみの絵文字)に反応すると、試合に勝った、負けた、または引き分けたことがわかります。ここまでは大丈夫です。ただし、同じメッセージに手動で(3つの絵文字のいずれかを使用して)反応すると、メッセージは再び変化して、勝ち、負け、または埋め込みを描画します。メンバーが1試合を終えた後、これが起こらないようにしたい。これが私のコードです。
コードサンプルがちょっとバグだったので、生のコードを提供しなかったことをお詫びします。誰かが私を助けてくれたら本当に感謝しています。ありがとう:)
イベントを使用せず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
...
また、埋め込みを1つだけ作成し、ニーズに合わせて編集することを強くお勧めします。埋め込みは次のように定義できます。
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]
コメントを追加