Задать вопрос
creat1vv
@creat1vv
nodejs developer

Как я могу передать пользователя в класс?

У меня есть слэш-команда с кнопками. Как я могу использовать member'a в классе с моими кнопками и взаимодействовать с ним?
То есть, допустим выдать ему роль.

@commands.slash_command(description="Верификация пользователя")
	async def uwu(self, inter, member : disnake.Member):
		times_k = int(member.created_at.timestamp() + 10800)
		times_j = int(member.joined_at.timestamp() + 10800)
		embed = disnake.Embed(color=0x2f3236, view=Verify())
		embed.set_image(url="https://c.tenor.com/TCuck5iIIH4AAAAC/rain-anime-rain.gif")
		embed.add_field(name="Пользователь", value=f"{member.name}#{member.discriminator}", inline=True)
		embed.add_field(name="Регистрация", value=f"<t:{times_k}:R>", inline=True)
		embed.add_field(name="Зашёл на сервер", value=f"<t:{times_j}:R>", inline=True)


И сам class:
class Verify(disnake.ui.View):
	def __init__(self, *, timeout=180):
		super().__init__(timeout=timeout)
		self.db = database.DataBase()
	@disnake.ui.button(label="",style=disnake.ButtonStyle.gray, emoji="", disabled=True)
	async def asdaasda(self,button:disnake.ui.Button,interaction:disnake.Interaction):
		await interaction.response.send_message("xaxaxax", ephemeral=True)
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
retUrn3d
@retUrn3d
Пользователь, просто пользователь...
После нажатия кнопки, вам вернется взаимодействие. Одним из его атрибутов является автор, который инициировал взаимодействие.
Со знанием этого, можно уже реализовать вашу задумку по выдаче роли.
class Verify(disnake.ui.View):
    def __init__(self):
        super().__init__(timeout=180)
        self.db = database.DataBase()
    @disnake.ui.button(label="",style=disnake.ButtonStyle.gray, emoji="", disabled=False)
    async def my_button(self, button: disnake.ui.Button, interaction: disnake.Interaction):
        role = disnake.utils.get(bot.guilds[0].roles, id=1234567890)  # Получаем роль.
        await interaction.author.add_roles(role)  # Выдаем роль.
        await interaction.response.send_message("Done", ephemeral=True)

Интересный факт, можно фактически не давать никакого ответа пользователю на нажатие кнопки.
Достаточно намеренно вызвать ошибку при ответе на взаимодействие и следом тихо ее задушить.
async def no_respond(inter: disnake.Interaction) -> None:
    try:
        await inter.response.send_message('', ephemeral=True)
    except Exception:
        pass
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽