@omzit

Как сделать, чтобы роль по реакции на сообщения, ставилась игроку, который написал запрос, а не админу, который поставил реакцию?

У меня есть код для заявок, мне нужно его переделать под то, чтобы роль выдавалась не админу который ставит реакцию, а игроку, который написал команду до этого.

@client.command()
async def name( ctx, arg ):
	await ctx.author.send( 'ваш никнейм ' + '```' + arg + '```' )
	await ctx.author.send('Ожидайте пока админы одобрят вашу заявку')
	my_channel = client.get_channel( 726560573688381541 )
	await my_channel.send( 'Nickname:```' + arg + '```' 'User:' + ctx.author.mention )

@client.command()
async def on_raw_reaction_add(payload):
    channel_id = payload.channel_id
    if channel_id == 726560573688381541:
        guild_id = payload.guild_id
        guild = discord.utils.find(lambda g : g.id == guild_id, client.guilds)

        if payload.emoji.name == 'added':
            role = discord.utils.get(guild.roles, name='принят')
        elif payload.emoji.name == 'otmena':
            role = discord.utils.get(guild.roles, name='отклонен')
        else:
            role = discord.utils.get(guild.roles, name=payload.emoji.name)

        if role is not None:
            member = payload.member
            if member is not None:
                await member.add_roles(role)
                print("done")
            else:
                print("Member not found.")
        else: 
            print("Role not found.")
  • Вопрос задан
  • 291 просмотр
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Подсказка - нужно изменить эту строку:
member = payload.member
Для on_raw_reaction_add() поле payload.member - это тот, кто поставил реакцию.
Если почитать доки, то у payload есть несколько полей, и среди них message_id, которое содержит id сообщения, на которое была поставлена реакция.
После этого нужно получить канал, где было сообщение (если что, в payload есть guild_id и channel_id), и на этом канале вызвать fetch_message(). Получите объект класса Message, у которого уже будет свойство author.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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