Вопросы

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

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

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

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

Читать:
Графическая диаграмма не отображается в блокноте Jupyter

Названия смайликов — 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

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

Похожие записи

Запустить скрипт во вкладках Терминала в High Sierra

admin

Объединить несколько столбцов словаря / списка в новые столбцы и строки

admin

vscode: как узнать позицию курсора в документе?

admin

Ядро Python умирает на Jupyter Notebook с tenorflow 2

admin

Как отправить событие adb для длительного нажатия клавиши

admin

Функция Typescript, принимающая общий параметр и массив строк

admin