Answer the question
In order to leave comments, you need to log in
Auto-assignment not working?
The problem is that adding a role on click works.
@commands.Cog.listener()
async def on_raw_reaction_add(self, payload):
if payload.message_id == list.GAMEPOST_ID:
channel = self.client.get_channel(payload.channel_id) # получаем объект канала
guild = await self.client.fetch_guild(payload.guild_id)
emoji = str(payload.emoji)
role = discord.utils.get(guild.roles, id = list.GAMEROLES[emoji])
await payload.member.add_roles(role)
print('[ROLE] User {0.display_name} has been granted with role {1.name}'.format(payload.member, role))
@commands.Cog.listener()
async def on_raw_reaction_remove(self, payload):
if payload.message_id == list.GAMEPOST_ID:
channel = self.client.get_channel(payload.channel_id) # получаем объект канала
guild = await self.client.fetch_guild(payload.guild_id)
emoji = str(payload.emoji)
role = discord.utils.get(guild.roles, id = list.GAMEROLES[emoji])
await payload.member.remove_roles(role)
print('[ROLE] Role {1.name} has been remove for user {0.display_name}'.format(payload.member, role))
Answer the question
In order to leave comments, you need to log in
member
The y
attribute RawReactionActionEvent
is only populated when a reaction is added: https://discordpy.readthedocs.io/en/stable/api.htm...
You can use the fetch_member
and functions get_member
to get members by ID:
@commands.Cog.listener()
async def on_raw_reaction_remove(self, payload):
if not (guild := self.client.get_guild(payload.guild_id)):
# Удаление реакции произошло вне сервера
return
if not (member := guild.get_member(payload.user_id)):
# Реакция удалена, но её автора во время удаления не было на сервере
return
if payload.message_id == list.GAMEPOST_ID:
channel = self.client.get_channel(payload.channel_id) # получаем объект канала
emoji = str(payload.emoji)
role = guild.get_role(list.GAMEROLES[emoji])
await member.remove_roles(role)
print('[ROLE] Role {1.name} has been remove for user {0.display_name}'.format(member, role))
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question