discord.py не видит пользователя
@client.event
async def on_raw_reaction_add(payload):
message_id = payload.message_id
if message_id == 766958633032351744:
guild_id = payload.guild_id
guild = discord.utils.find(lambda g : g.id == guild_id, client.guilds)
#role = discord.utils.get(guild.roles, name = '3D')
if payload.emoji.name == 'as':
role = discord.utils.get(guild.roles, name = 'mute')
elif payload.emoji.name == ':video_game:':
role = discord.utils.get(guild.roles, name = 'Gamer')
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)
if member is not None:
await member.add_roles(role)
print ('done')
else:
print ('user not found')
else:
print ('role not found')
@client.event
async def on_raw_reaction_remove(payload):
pass
Вывод:
C:\Users\Administrator>py Desktop\server\back.py
Successfull connect
user not found
Ответы (2 шт):
Автор решения: xZartsust
→ Ссылка
Вы же сами написали эту структуру:
if member is not None:
await member.add_roles(role)
print('done')
else:
print('user not found')
И вам выводит user not found значить у вас переменная member есть None
Да и лучше не find а get_user:
import discord
from discord.ext import commands
from discord.utils import get
if role is not None:
member = client.get_user(payload.member.id)
if member is not None:
await member.add_roles(role)
print ('done')
else:
print ('user not found')
Автор решения: LeonidM
→ Ссылка
В связи с новым обновлением дискорда, guild.members всегда возвращает пустой список. Поэтому
member = discord.utils.find(lambda m : m.id == payload.user_id, guild.members)
нужно заменить на
member = await (await client.fetch_guild(payload.guild_id)).fetch_member(payload.user_id)