В чем моя ошибка? disnake buttons
class MyView(disnake.ui.View):
def __init__(self):
super().__init__(timeout=None)
@disnake.ui.button(label="Button 1", style=disnake.ButtonStyle.primary, custom_id='bt1')
async def first_button_callback(self, button: disnake.ui.Button, interaction: disnake.CommandInteraction):
await interaction.response.send_message("You pressed me!", ephemeral = True)
@disnake.ui.button(label="Button 2", style=disnake.ButtonStyle.primary, custom_id='bt2')
async def second_button_callback(self, button: disnake.ui.Button, interaction: disnake.CommandInteraction):
await interaction.response.send_message("You pressed me!", ephemeral = True)
@bot.command()
async def bb(ctx, interaction: disnake.MessageInteraction):
view = MyView()
await ctx.send("Нажми на меня, придурок", view=view)
if interaction.component.custom_id == 'bt1':
await interaction.response.send_message('Вы нажали на 1 попку')
elif interaction.component.custom_id == 'bt2':
await interaction.response.send_message('Вы нажали на 2 попку')```
Ответы (1 шт):
Автор решения: Rainbowfoxz
→ Ссылка
Проблема в вашем коде заключается в том, что вы пытаетесь обрабатывать взаимодействия с кнопками в команде bb, однако, в данном случае interaction не имеет атрибута component. Взаимодействия с кнопками обрабатываются в методах, которые вы определили в классе MyView.
class MyView(disnake.ui.View):
def __init__(self):
super().__init__(timeout=None)
@disnake.ui.button(label="Button 1", style=disnake.ButtonStyle.primary, custom_id='bt1')
async def first_button_callback(self, button: disnake.ui.Button, interaction: disnake.MessageInteraction):
await interaction.response.send_message('Вы нажали на 1 попку', ephemeral=True)
@disnake.ui.button(label="Button 2", style=disnake.ButtonStyle.primary, custom_id='bt2')
async def second_button_callback(self, button: disnake.ui.Button, interaction: disnake.MessageInteraction):
await interaction.response.send_message('Вы нажали на 2 попку', ephemeral=True)
@bot.command()
async def bb(ctx):
view = MyView()
await ctx.send("Нажми на меня, придурок", view=view)
Теперь при нажатии на кнопки Button 1 и Button 2 будут вызываться соответствующие методы first_button_callback и second_button_callback, и отправляться соответствующие сообщения.