Не могу реализовать дуэли в боте дискорд
Не могу нормально реализовать дуэли, не понимаю как сделать чтобы стреляли по очереди, сначала человек который кинул дуэль, потом его оппонент. Как сделать чтобы кнопки действовали один раз? Можете просто хотя бы направить меня в нужное направление
import discord
import random
from discord.ext import commands
from discord.ui import Button, View
intents = discord.Intents.all()
intents.messages = True
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.event
async def on_ready():
print(f'Bot is ready.... {bot.user}')
@bot.command()
async def дуэль(ctx, opponent):
author = ctx.author
AcceptV = Button(label='Принять', emoji='?', style=discord.ButtonStyle.green)
CancelV = Button(label='Отказаться', emoji='?', style=discord.ButtonStyle.red)
async def AcceptDef(interaction: discord.Interaction):
if interaction.user == author:
await interaction.response.send_message('Вы не можете принять чужой вызов!')
return
Fire = Button(label='Выстрел', emoji='?', style=discord.ButtonStyle.green)
FireAir = Button(label='Выстрел в воздух', emoji='?', style=discord.ButtonStyle.gray)
async def FireDef(interaction: discord.Interaction):
result = random.random() > 0.74
if interaction.user == opponent:
await opponent.response.send_message('Не ваша учередь стрелять!')
buttonManager = View()
buttonManager.add_item(Fire)
buttonManager.add_item(FireAir)
Fire.callback = FireDef
await ctx.send(f'{opponent} принял вызов {author.mention} на дуэль \n Право первого выстрела предоставляется {author.mention}.', view=buttonManager)
async def CancelDef(interaction: discord.Interaction):
if interaction.user == author:
await interaction.response.send_message('Вы не можете отклонить чужой вызов!')
return
if CancelV:
await interaction.response.send_message(f'✅{opponent} отказался от дуэли {author.mention}')
buttonManager = View()
buttonManager.add_item(AcceptV)
buttonManager.add_item(CancelV)
AcceptV.callback = AcceptDef
CancelV.callback = CancelDef
await ctx.send(f"{author.mention} вызывает {opponent} на дуэль! Подтверждаете ли вы вызов?", view=buttonManager)