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

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

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

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)

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

потому что у вас не включено intents.members   —  person demon    schedule 28.12.2020

Я добавил intents.members, но он по-прежнему не работает   —  person demon    schedule 28.12.2020

вы включили их на портале разработчика?   —  person demon    schedule 28.12.2020

Да, я их включил   —  person demon    schedule 28.12.2020

Вероятно, вы ошиблись, проверяя имена смайлов. Какую строку вы используете для 'emoji_name'?   —  person demon    schedule 28.12.2020

Названия смайликов — league и stardew, это имена взяты из Discord.   —  person demon    schedule 28.12.2020

Проверьте это: stackoverflow.com/a/65466198/11146632 дайте мне знать, если это все еще не работает.   —  person demon    schedule 28.12.2020

Проблема в том, что я создал свои собственные эмодзи и не знаю, как скопировать их в код. Итак, я хотел получить смайлы по их имени   —  person demon    schedule 28.12.2020

Можете ли вы проверить с помощью других встроенных смайлов? Тогда мы точно узнаем, что это проблема с именами эмодзи.   —  person demon    schedule 28.12.2020

Я попытался сделать, как показано в ссылке, которую вы мне дали, со встроенными смайликами, но это все равно не работает   —  person demon    schedule 28.12.2020

См. также:  Ошибка трассировки: ModuleNotFoundError: нет модуля с именем tenorflow.keras

Попробуйте разбить это на части. Вы уверены, что получаете канал? Сообщение? Член? Роль? Распечатайте, чтобы увидеть, что дает вам бот, что значительно упрощает устранение неполадок   —  person demon    schedule 28.12.2020

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. demon

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

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

    ИЗМЕНИТЬ (собственный смайлик):

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

    emoji_1 = bot.get_emoji(ID_HERE)
    
    if payload.emoji == emoji_1:
    

    Я создал свои собственные смайлы, и я не могу их скопировать и вставить person demon; 28.12.2020

    ох, я отредактировал свой код для пользовательских эмодзи. Эмодзи может быть из любой гильдии, в которой состоит бот. person demon; 28.12.2020

  2. demon

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

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

    я пытался сделать это if payload.emoji.id == emoji_id но все равно не работает person demon; 28.12.2020

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

    Да тоже не работает person demon; 28.12.2020

    Есть ли ошибка? И только это не работает? person demon; 28.12.2020

    Ошибок нет. Только выдача ролей не работает person demon; 28.12.2020

    Что, если вы перейдете на другой смайлик? person demon; 28.12.2020

    Когда я меняю смайлики, результат остается прежним person demon; 28.12.2020

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: