Ну получается использовать две команды с кнопками
Делаю бота для 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):
<...>