Почему я не могу добавить роль реакции для участника?

#python #python-3.x #discord.py

#питон #python-3.x #discord.py

Вопрос:

Я хочу дать участнику роль, когда он добавляет реакцию

Я попробовал сделать это так

bot.py

 import discord
import config

TOKEN = config.settings['token']

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

client = discord.Client(intents=intents)

@client.event
async def on_raw_reaction_add(payload):
    channel = client.get_channel(config.channels['my_channel'])
    message = await channel.fetch_message(payload.message_id)
    member = discord.utils.get(message.guild.roles, id = payload.user_id)

    if payload.emoji.name == 'emoji_name':
        role = discord.utils.get(message.guild.roles, name = 'role_name')
    elif payload.emoji.name == 'emoji_name_2':
        role = discord.utils.get(message.guild.roles, name = 'role_name_2')

    await member.add_roles(role)
 

config.py

 settings = {
    'token': 'my_token',
    'bot': 'bot_name',
    'id': bot_id,
    'prefix': '-',
}

roles = {
    'role_name': role_id,
    'role_name_2': role_id_2,
}

channels = {
    'channel_name': channel_id,
}


 

кроме того, я попытался получить канал по-другому

 async def on_raw_reaction_add(self, payload):
    channel = self.get_channel(payload.channel_id)
 

но и это не сработало

Комментарии:

1. потому что вы не intents.members включили

2. я добавил intents.members , но он все еще не работает

3. вы включили их на портале разработчика?

4. Да, я включил их

5. Вероятно, вы совершаете ошибку, проверяя названия смайликов. Для какой строки вы используете 'emoji_name' ?

Ответ №1:

В этой строке 'emoji_name' должно быть или что бы это ни было. Вы можете использовать :emoji_name: in discord, чтобы получить этот или этот веб-сайт

 if payload.emoji.name == '✅':
 

РЕДАКТИРОВАТЬ (пользовательский смайлик) :

Сначала получите смайлик, используя его идентификатор

 emoji_1 = bot.get_emoji(ID_HERE)

if payload.emoji == emoji_1:
 

Комментарии:

1. Я создал свои собственные смайлики и не могу их скопировать и вставить

2. о, я отредактировал свой код для пользовательских смайликов. Смайлик может быть из любой гильдии, в которой состоит бот.

Ответ №2:

Попробуйте изменить имя смайлика на полный идентификатор смайлика.

Вы можете получить ее, отправив :emoji: в discord.

Комментарии:

1. я пытался сделать так if payload.emoji.id == emoji_id , но это все равно не работает

2. Вы пробовали if payload.emoji == <:emoji:123123123> ?

3. Есть ли какая-либо ошибка? И только это не работает?

4. Здесь нет никаких ошибок. Не работает только выдача ролей

5. Что, если вы перейдете на другой смайлик?