Использую Discord.py
Пытаюсь разобраться в возможностях discord_components, а точнее в кнопках. У меня есть команда, которая вызывает embed с картинкой. По задумке, когда человек получает роль высылается этого рода сообщения. При нажатии на кнопку "Принять", удаляется основной embed с картинкой и высылается новый (с другой картинкой). Кнопка "Отклонить" делает тоже самое.
Однако если от бота отправлено несколько подобного рода сообщений, то кнопка у одного сообщения влияет сразу на все (Допустим, у нас есть сообщение A и B. У A и B есть кнопки "Принять" и "Отклонить", по идее они должны работать отдельно, но влияют друг на друга)
Использую коги
Ниже скриншоты и код:
@commands.command()
async def passport(self, ctx):
file = discord.File("user.png", filename="user.png")
embed=discord.Embed(title="Welcome!", description="Welcome on this server!")
embed.set_image(url="attachment://user.png")
msg = await ctx.send(
file = file,
embed=embed,
components = [
[
Button(style=ButtonStyle.green, label="Принять", emoji="✔️"),
Button(style=ButtonStyle.red, label="Отклонить", emoji="✖️"),
]
]
)
response = await self.client.wait_for("button_click")
if response.channel == ctx.channel:
if response.component.label == "Принять":
file = discord.File("user.png", filename="user.png")
embed=discord.Embed(title="Welcome!", description="Welcome on this server!")
embed.set_image(url="attachment://user.png")
await msg.delete()
await ctx.send(file = file, embed=embed)
else:
await msg.delete()
embed=discord.Embed(title="Отказано", description=f"Возможному участнику {ctx.author.name} в предоставлении статуса 'Участник' отказано!", color=0xff0000)
await ctx.send(embed=embed)
Как оно работает, если есть всего одно сообщение от бота:
Как оно работает, если есть более одного сообщения от бота: