как вывести пользователя, нажавшего на кнопку
def __init__(self):
super().__init__(timeout=None)
self.value = Optional[bool]
@disnake.ui.button(label="Одобрить", style=disnake.ButtonStyle.green, custom_id='accept')
async def first_button_callback(self, button: disnake.ui.Button, interaction: disnake.MessageInteraction):
await interaction.response.send_message('Вы успешно одобрили запрос', ephemeral=True)
await interaction.message.delete()
self.value = True
self.stop()
@disnake.ui.button(label="Отказать", style=disnake.ButtonStyle.red, custom_id='cancel')
async def second_button_callback(self, button: disnake.ui.Button, interaction: disnake.MessageInteraction):
await interaction.response.send_message('Вы успешно отказали запрос', ephemeral=True)
await interaction.message.delete()
self.value = False
self.stop()
@bot.slash_command(description='Снять фракционную роль с участника')
async def remove(inter, user: disnake.User, reason: str):
view = MyView()
mention = user.mention
id = user.id
nick = user.nick
if user.get_role(1218120021931200573):
embed = disnake.Embed(
title='`Discord >> Запрос на снятие роли`'
)
embed.add_field(name="Пользователь:", value=f"{mention}", inline=False)
embed.add_field(name="Ник:", value=f"{nick}", inline=True)
embed.add_field(name="Роль:", value="<@&1218120021931200573>", inline=True)
embed.add_field(name="Причина:", value=f"{reason}", inline=True)
await inter.send(embed=embed, view=view)
await view.wait()
if view.value is True:
await inter.send(f'`[ACCEPT] Запрос на снятие роли (⋆ Los-Santos Police Departament ⋆) от ` {inter.author.mention} ` пользователю ` {user.mention} ` его ID `||{user.id}||` был одобрен`')
role = disnake.utils.get(user.guild.roles, id=1218120021931200573)
await user.remove_roles(role)
else:
await inter.send(f'`[CANCEL] Запрос на снятие роли (⋆ Los-Santos Police Departament ⋆) от ` {inter.author.mention} ` пользователю ` {user.mention} ` его ID `||{user.id}||` был отказан`')
elif user.get_role(1218120207000670309):
embed = disnake.Embed(
title='`Discord >> Запрос на снятие роли`'
)
embed.add_field(name="Пользователь:", value=f"{mention}", inline=False)
embed.add_field(name="Ник:", value=f"{nick}", inline=True)
embed.add_field(name="Роль:", value="<@&1218120207000670309>", inline=True)
embed.add_field(name="Причина:", value=f"{reason}", inline=True)
await inter.send(embed=embed, view=view)
await view.wait()
if view.value is True:
await inter.send(
f'`[ACCEPT] Запрос на снятие роли (⋆ San-Fierro Medical Center ⋆) от ` {inter.author.mention} ` пользователю ` {user.mention} ` его ID `||{user.id}||` был одобрен`')
role = disnake.utils.get(user.guild.roles, id=1218120207000670309)
await user.remove_roles(role)
else:
await inter.send(
f'`[CANCEL] Запрос на снятие роли (⋆ San-Fierro Medical Center ⋆) от ` {inter.author.mention} ` пользователю ` {user.mention} ` его ID `||{user.id}||` был отказан`')
else:
await inter.send('У человека не найдено ни одной из фракционных ролей', ephemeral=True)```
Ответы (1 шт):
Автор решения: q r t s
→ Ссылка
@disnake.ui.button(label="Одобрить", style=disnake.ButtonStyle.green, custom_id='accept')
async def first_button_callback(self, button: disnake.ui.Button, interaction: disnake.MessageInteraction):
print(interaction.user) #Вывод в консоль пользователя, нажавшего на кнопку.