Discord

fzzxhq

Активный
Автор темы
459
71
Кто знает как сделать выдачу роли по запросу? Человек нажимает на эмодзи к примеру, и мне в канал приходит запрос, что он хочет получить роль, и после одобрения роль выдается.
Не просто клацнуть на эмодзи и роль твоя
 

.caterpillarteal$

Участник
24
6
Q, ответ ИИ
Python:
import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.reactions = True

bot = commands.Bot(command_prefix='!', intents=intents)

@bot.event
async def on_ready():
print('Бот готов к работе')

@bot.event
async def on_raw_reaction_add(payload):
# Проверяем, что реакция добавлена к сообщению на нужном канале
if payload.channel_id == YOUR_CHANNEL_ID and payload.message_id == YOUR_MESSAGE_ID:
        guild = bot.get_guild(payload.guild_id)
        member = guild.get_member(payload.user_id)
role = discord.utils.get(guild.roles, name="Название вашей роли")
if role is not None:
 await member.add_roles(role)
print(f"Роль {role.name} назначена для {member.name}")

# Запуск бота
bot.run('YOUR_BOT_TOKEN')

В этом примере:

  1. on_ready() - событие, которое срабатывает, когда бот успешно запущен и готов к работе.
  2. on_raw_reaction_add(payload) - событие, которое срабатывает, когда пользователь добавляет реакцию на сообщение. Мы проверяем, что реакция добавлена на нужное сообщение и в нужном канале, а затем назначаем роль участнику сервера.
Замените YOUR_CHANNEL_ID, YOUR_MESSAGE_ID, YOUR_BOT_TOKEN и "Название вашей роли" на соответствующие значения вашего сервера Discord и бота.



Python:
import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.reactions = True

bot = commands.Bot(command_prefix='!', intents=intents)

@bot.event
async def on_ready():
    print('Бот готов к работе')

@bot.event
async def on_raw_reaction_add(payload):
    # Проверяем, что реакция добавлена к сообщению на нужном канале
    if payload.channel_id == YOUR_CHANNEL_ID and payload.message_id == YOUR_MESSAGE_ID:
        guild = bot.get_guild(payload.guild_id)
        member = guild.get_member(payload.user_id)
        role = discord.utils.get(guild.roles, name="Название вашей роли")
        if role is not None:
            # Отправляем уведомление о запросе на одобрение роли
            channel = bot.get_channel(YOUR_APPROVAL_CHANNEL_ID)
            await channel.send(f"Пользователь {member.mention} запрашивает роль {role.mention}.")
            print(f"Запрос на роль {role.name} от {member.name}")

# Запуск бота
bot.run('YOUR_BOT_TOKEN')