Не реагирует на нажатие кнопки в дискорд питон!

Когда нажимаю кнопку с данным идом, кнопку не видет ивент, те как-будто я не нажимаю. Что не так в коде?

async def on_button_click(inter):
    guild = bot.get_guild(inter.guild.id)
    if inter.component.id == "get_role":#айди кнопки, кастомный
        print("asd")```

```await ctx.send(embed = embed_r,components = [[Button(style=ButtonStyle.blue, label='---', emoji="-", custom_id = 'get_role')```


 

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

Автор решения: LuK_

Во первых, перед функцией ивента нет декоратора ивента, eсли ты работаешь в когах, то необходимо указать @commands.Cog.listener(), если без когов, то @bot.event. Во вторых, сли используешь коги, то во всех функциях первый аргумент должен быть self. В третьих, функция bot.get_guild(inter.guild.id) асинхронная, перед ней должен стоять await. Так-же, необходимо использовать custom_id, вместо interaction.id. Код будет выглядеть так:

# cogs:

    @commands.Cog.listener()
    async def on_button_click(self, interaction):
        guild = await self.bot.get_guild(interaction.guild.id)
        if interaction.custom_id == "get_role": 
            print("asd")


# bot:

    @bot.event
    async def on_button_click(interaction):
        guild = await bot.get_guild(interaction.guild.id)
        if interaction.custom_id == "get_role": 
            print("asd")

Так-же, проверь, есть ли при инициализации бота строчка intents=discord.Intents.all(), должно выглядеть так:

bot = commands.Bot(command_prefix = 'prefix', intents = discord.Intents.all())

Ещё проверь, включены ли данные параметры на сайте дискорда: введите сюда описание изображения

→ Ссылка