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

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

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

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

См. также:  Установка определенной версии python для действия github

Попробуйте разбить это на части. Вы уверены, что получаете канал? Сообщение? Член? Роль? Распечатайте, чтобы увидеть, что дает вам бот, что значительно упрощает устранение неполадок   —  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: :???: :?: :!: