как сделать определение и выдачу роли?

Можно ли сделать чтобы при вводе команды определяло какой в тег в нике у пользователя? например если у пользователя: [Moderator] Nick, то это определялось и выдавалась соответствующая роль по нажатию на реакцию.

@bot.command()
async def роль(ctx):
    await ctx.send("**`[✅ | Запрос отправлен] Запрос был успешно отправлен. Ожидайте проверку заявки модератором`**")
    channel = bot.get_channel(1043881287842275401)
    message = await channel.send("**`Была создана заявка на выдачу роли! Одобрить - ✅ | Отклонить - ❌ | Запросить доказательства - ?`**")
    await message.add_reaction('✅')
    await message.add_reaction('❌')
    await message.add_reaction('?')


@bot.event
async def on_raw_reaction_add(payload):
    if payload.user_id == 1025789656865964092:
        return
    if payload.channel_id == 1043881287842275401:
        if str(payload.emoji) == "✅":
            channel1 = bot.get_channel(1043881288504971269)
            await channel1.send(f"**`[✅ | Одобрение] модератор`** {payload.member.mention} **`одобрил ваш запрос на получение роли`**")
    if str(payload.emoji) == "❌":
            channel1 = bot.get_channel(1043881288504971269)
            await channel1.send(f"**`[❌ | Отклонение] модератор`** {payload.member.mention} **`отклонил ваш запрос на получение роли`**")
    if str(payload.emoji) == "?":
            channel1 = bot.get_channel(1043881288504971269)
            await channel1.send(f"**`[? | Проверка] модератор`** {payload.member.mention} **`запрашивает доказательства на получение роли`**")
    #логирование
    if str(payload.emoji) == "✅":
            channel1 = bot.get_channel(1043881287842275402)
            await channel1.send(f"**`[✅ | Одобрение] модератор`** `{payload.member}` **`одобрил запрос на получение роли`**")
    if str(payload.emoji) == "❌":
            channel1 = bot.get_channel(1043881287842275402)
            await channel1.send(f"**`[❌ | Отклонение] модератор`** `{payload.member}` **`отклонил запрос на получение роли`**")
    if str(payload.emoji) == "?":
            channel1 = bot.get_channel(1043881287842275402)
            await channel1.send(f"**`[? | Проверка] модератор`** `{payload.member}` **`запросил доказательства на получение роли`**")

Ответы (1 шт):

Автор решения: q r t s

Сначала нам необходимо получить гильдию:

    guild = client.get_guild(payload.guild_id)

Далее необходимо получить самого пользователя:

    user = discord.utils.get(guild.members, id=payload.user_id)

Теперь проверяем есть ли у пользователя приписка [Moderator] в нике:

    if "[Moderator]" in user.nick:

Теперь получаем роль либо по имени либо по id:

        role = discord.utils.get(guild.roles, name='name')

И выдаём её:

        await user.add_roles(role)

Код полностью:

    guild = client.get_guild(payload.guild_id)
    user = discord.utils.get(guild.members, id=payload.user_id)
    if "[Moderator]" in user.nick:
        role = discord.utils.get(guild.roles, name='name')
        await user.add_roles(role)
→ Ссылка