Не могу реализовать дуэли в боте дискорд

Не могу нормально реализовать дуэли, не понимаю как сделать чтобы стреляли по очереди, сначала человек который кинул дуэль, потом его оппонент. Как сделать чтобы кнопки действовали один раз? Можете просто хотя бы направить меня в нужное направление

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)

Ответы (0 шт):