#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. Что, если вы перейдете на другой смайлик?