Ну получается использовать две команды с кнопками

Делаю бота для DISCORD с библиотекой disnake. Сделала команду, которая будет как информационная доска с кнопками, но при участии в коде второго такого же кода, одна работает - другая нет, даже если другая будет на одном сервере. А если их три, то работает только последняя из них.

@bot.command()
async def основное(ctx):
    if ctx.channel.id != YOUR_CHANNEL_ID: 
        return
    embed = disnake.Embed(title="-", colour=0x6b0000, description="-"). set_image(url="-").set_footer(text=f"-")

    view = ui.View()
    view.add_item(ui.Button(style=disnake.ButtonStyle.secondary, label="?-?", custom_id="button5"))
    view.add_item(ui.Button(style=disnake.ButtonStyle.secondary, label="❗❗-❗❗", custom_id="button6"))
    view.add_item(ui.Button(style=disnake.ButtonStyle.link, label="❤️-❤️", url="-"))

    await ctx.send(embed=embed, view=view)

@bot.event
async def on_button_click(interaction: disnake.MessageInteraction):
    if interaction.component.custom_id == "button5":
        embed = disnake.Embed(title="-", colour=0x6b0000, description="⁠-")
        await interaction.response.send_message(embed=embed, ephemeral=True)
    elif interaction.component.custom_id == "button6":
      embed1 = disnake.Embed(title="-", colour=0x6b0000, description="-")
      embed2 = disnake.Embed(title="-", colour=0x6b0000, description="-")
        await interaction.response.send_message(embed=embed1, ephemeral=True)
        await interaction.followup.send(embed=embed2, ephemeral=True)
pass

Это только один, в другом кнопки button4, button3. Как сделать чтобы работали две команды в коде?


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

Автор решения: q r t s

Проблема была в том, что использовались две функции с одинаковыми названиями:

@bot.event
async def on_button_click(interaction: disnake.MessageInteraction):
    <...>

@bot.event
async def on_button_click(interaction: disnake.MessageInteraction):
    <...>

Достаточно было пронумеровать их:

@bot.event
async def on_button_click_1(interaction: disnake.MessageInteraction):
    <...>

@bot.event
async def on_button_click_2(interaction: disnake.MessageInteraction):
    <...>
→ Ссылка