Не реагирует на нажатие кнопки в дискорд питон!
Когда нажимаю кнопку с данным идом, кнопку не видет ивент, те как-будто я не нажимаю. Что не так в коде?
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 шт):
Во первых, перед функцией ивента нет декоратора ивента, 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())
Ещё проверь, включены ли данные параметры на сайте дискорда:
