#python #discord #discord.py
#python #Discord #discord.py
Вопрос:
Я написал этот код в Discord.py Версия API 1.4, и все работает нормально. Теперь я попытался импортировать его в свой новый код 1.5, и он больше не работает. «404 участник не найден».
Я не смог найти никаких изменений в API, поэтому мне любопытно, почему он больше не работает.
@bot.event
async def on_raw_reaction_add(payload):
message_id = payload.message_id
if message_id == 768180630218342411:
guild_id = payload.guild_id
guild = discord.utils.find(lambda g: g.id == guild_id, bot.guilds)
if payload.emoji.name == 'testemoji':
role = discord.utils.get(guild.roles, name='testrolle')
elif payload.emoji.name == 'emojitest':
role = discord.utils.get(guild.roles, name='rolletest')
else:
role = discord.utils.get(guild.roles, name=payload.emoji.name)
if role is not None:
member = discord.utils.find(lambda m: m.id == payload.user_id, guild.members)
#member = guild.get_member(payload.user_id)
if member is not None:
await member.add_roles(role)
print("done")
else:
print("404 no member found")
else:
print("404 no group found")
Ответ №1:
В новой версии discord.py , то есть 1.5.1, о котором есть обновление Intents
. Вероятно, именно поэтому вы не смогли получить участников с помощью discord.utils.get
. Вам нужно определить Intents
в начале вашего кода, прежде чем определять bot = commands.Bot(prefix='')
:
import discord
intents = discord.Intents().all()
bot = commands.Bot(command_prefix='', intents=intents)
Комментарии:
1. Теперь я получаю следующую ошибку: discord.errors. Запрещено: 403 Запрещено (код ошибки: 50013): отсутствуют разрешения, и я установил для ботов права администратора с помощью Oauth.
2. Вот и все, приятель.
3. Извините, я понятия не имею, в чем проблема.
4. все в порядке, я разберусь с этим в один прекрасный день. : D я хотел бы проголосовать за ваш ответ, но у меня недостаточно репутации. извините.
Ответ №2:
Nurqm направил вас на правильный путь. Код правильный. Вы также должны прочитать больше о намерениях здесь.
Из ваших комментариев кажется, что вы не включили намерения с веб-сайта discord для приложений. Там также должна быть включена ссылка Intents.
Добавление кода из Nurqm.
import discord
intents = discord.Intents.all()
...
bot = commands.Bot(command_prefix='', intents=intents)