Как выдать роль при нажатии на реакцию в discord.py?
Я хочу реализовать кое-какую игру. Чтобы войти в игровую комнату пользователь должен нажать на реакцию.
Код:
import discord as ds
from discord.ext import commands
bot = commands.Bot(command_prefix='!', intents=ds.Intents.all())
bot.remove_command('help')
@bot.event
async def on_member_join( member ):
role = ds.utils.get(member.guild.roles, name='Вне игры')
role2 = ds.utils.get(member.guild.roles, name='Игрок')
await member.add_roles(role, role2)
@bot.command()
async def start(ctx):
msg = await ctx.send('Чтобы войти или создать комнату нажмите на реакцию')
await msg.add_reaction('✅')
bot.run('token')
Как проверить, нажал ли пользователь на реакцию?
Ответы (1 шт):
Автор решения: RAINGM
→ Ссылка
@commands.Cog.listener()
async def on_raw_reaction_add(self, payload):
message_id = payload.message_id
if message_id == message_id:
guild_id = payload.guild_id
guild = discord.utils.find(lambda g: g.id == guild_id, self.bot.guilds)
if payload.emoji.id == emoji_id:
role = discord.utils.get(guild.roles, id=emoji_id)
else:
role = discord.utils.get(guild.roles, name = payload.emoji.name)
if role:
member = discord.utils.find(lambda m: m.id == payload.user_id, guild.members)
if member:
await member.add_roles(role)