В документации есть отличное объяснение, но сначала может быть трудно понять, обычно роли реакции выполняются следующим образом (если мы пока оставим базы данных):
reaction, user = await self.bot.wait_for('reaction')
if str(reaction.emoji) == '?':
role = discord.utils.get(ctx.guild.roles, name='thumbsup')
await user.add_roles(role)
elif str(reaction.emoji) == '?':
role = discord.utils.get(ctx.guild.roles, name='thumbsdown')
await user.add_roles(role)
, но этот код можно оптимизировать таким образом, он также имитирует базу данных:
reaction, user = await self.bot.wait_for('reaction')
roles = {'?': 'thumbsup', '?': 'thumbsdown'}
role = discord.utils.get(ctx.guild.roles, name=roles[str(reaction.emoji)])
await user.add_roles(role)