Zefiree
@Zefiree
Самоучка

Как я могу выдать роль по кнопке через ЛС?

Пишу бота на disnake.
Суть бота:
Пользователь вводит команду, ему в ЛС бот отправляет эмбед и кнопки.
Вопрос такой:
Как выдать пользователю роль кнопкой через ЛС?

Изучаю disnake недавно.
Убедительная просьба, тапками не бросаться.
Я лишь хочу научиться и сделать прикольного бота для своего сервера.

from typing import Optional
import disnake
from disnake.ext import commands
from disnake import utils


class Test(disnake.ui.View):
	def __init__(self, bot):
		super().__init__(timeout=None)
		self.value = Optional[bool]
		
	@disnake.ui.button(label='Выйти в открытый космос', style=disnake.ButtonStyle.blurple, custom_id="Кнопка5")
	async def button5(self, button: disnake.ui.Button, interaction: disnake.Interaction):
		guild = self.bot.get_guild(id server)
		member = guild.get_member(ctx.message.author.id)
		user = interaction.author
		embed = disnake.Embed(colour= disnake.Color.dark_red())
		embed.title = "Отчаяние"
		embed.description = "текст"
		embed.add_field(name="Вы погибаете.", value="Вы прошли на плохую концовку. [:x:]")
		await interaction.response.send_message(embed=embed)
		await member.add_roles(rolebad)
		self.value = False
		self.stop()
		

class TestRole(commands.Cog):
	def __init__(self, bot):
		self.bot = bot
		self.persistents_views_added = False
		print('Module {} is loaded'.format(self.__class__.__name__))

	@commands.command()
	@commands.cooldown(1, 30, commands.BucketType.user)
	async def test(self, ctx):
		start = Test()
		user = ctx.author
		embed = disnake.Embed(colour= disnake.Color.dark_green())
		embed.title = "Квесты"
		embed.description = "текст"
		embed.set_footer(text="Бета тест")
		embed.set_author(name=f"{user.name}", icon_url=f"{user.display_avatar}")
		await ctx.message.delete()
		await ctx.author.send(embed=embed, view=start)

def setup(bot):
	bot.add_cog(TestRole(bot))
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ответы на вопрос 1
fenrir1121
@fenrir1121 Куратор тега discord.py
Начни с документации
Сейчас вы используете interaction.send для отправки. Переводя на русский смысл данной команды "отправь в канал взаимодействия"

Если вы хотите отправить пользователю, первым шагом вы идете в документацию и находите объект User, вторым шагом смотрите доступные ему методы и находите знакомый метод send. Переводите описание метода и понимаете, что он вам подходит. Объект пользователя у вас уже в коде есть. В случае возникновения новых проблем повторить шаг 1.

Это было по теме вопроса, но раз вы изучаете недавно вам еще домашнее задание подумать и ответить "а почему так никто не делает"
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы