import disnake
from disnake.ext import commands
bot = commands.Bot(command_prefix='!')
class Viberi(disnake.ui.View):
def __init__(self):
super().__init__(timeout=10.0)
self.value = None
@disnake.ui.button(label="Делать", style=disnake.ButtonStyle.green)
async def prinyal(self, button: disnake.ui.Button, inter: disnake.CommandInteraction):
await inter.send("Вы сделали.")
self.value = True
self.stop()
@disnake.ui.button(label="Не делать", style=disnake.ButtonStyle.red)
async def otkazal(self, button: disnake.ui.Button, inter: disnake.CommandInteraction):
await inter.send("Вы отказались делать.")
self.value = False
self.stop()
@bot.command(name="delat")
async def ask_delat(ctx, member: disnake.Member):
print("Команда вызвана") # Отладка
view = Viberi()
await ctx.send(f"{ctx.message.author.mention} предложил делать {member.mention}, {member.mention} Вы согласны?", view=view)
await view.wait()
if view.value == True:
await ctx.send("Кек)))")
elif view.value == False:
await ctx.send("Анлак(((")
else:
await ctx.send("Нет ответа")
bot.run('твой_токен_бота')
Если не поможет, то скорее всего есть конфликт с другими частями твоего кода class Viberi(disnake.ui.View):
def __init__(self, target_user):
super().__init__(timeout=10.0)
self.value = None
self.target_user = target_user
@disnake.ui.button(label="Делать", style=disnake.ButtonStyle.green)
async def prinyal(self, button: disnake.ui.Button, inter: disnake.CommandInteraction):
if inter.user != self.target_user:
await inter.send("Вы не можете нажать эту кнопку.", ephemeral=True)
return
await inter.send("Вы сделали.")
self.value = True
self.stop()
@disnake.ui.button(label="Не делать", style=disnake.ButtonStyle.red)
async def otkazal(self, button: disnake.ui.Button, inter: disnake.CommandInteraction):
if inter.user != self.target_user:
await inter.send("Вы не можете нажать эту кнопку.", ephemeral=True)
return
await inter.send("Вы отказались делать.")
self.value = False
self.stop()
@bot.command(name="delat")
async def ask_delat(ctx, member: disnake.Member):
print("Команда вызвана") # Отладочное сообщение
view = Viberi(target_user=member)
await ctx.send(f"{ctx.message.author.mention} предложил делать {member.mention}, {member.mention} Вы согласны?", view=view)
await view.wait()
if view.value == True:
await ctx.send("Кек)))")
elif view.value == False:
await ctx.send("Анлак(((")
else:
await ctx.send("Нет ответа")
выполняется три раза и в чат дискорда пишет 3 раза одно и тоже, когда нужно только одно сообщение.
Помогите исправить проблему.