@multiapi

Выдача ролей определенной роли по команде?

Имеется команда для запроса роли. Не понимаю, как задать для реакций некоторые функции.

@client.command()
async def role( ctx):

    role = ctx.guild.get_role(
        703596629860548643
    )  

    zapros_chanell = client.get_channel( 729733881129074768 ) 
    zapros2_chanell = client.get_channel( 703596629923725339 ) 
    embed = discord.Embed(title="Запрос роли")
    embed.add_field(name='Запросивший роль', value=ctx.message.author.mention)
    embed.add_field(name='Роль для выдачи', value=f'{role.mention}' )

    embed.set_thumbnail(url=ctx.guild.icon_url)

    message = await zapros_chanell.send(embed=embed)
    await zapros2_chanell.send(embed = discord.Embed(description = f'{ctx.message.author.mention}, `запрос на выдачу роли был успешно отправлен, ожидайте его рассмотрения модерацией Discord`', color=discord.Color.purple()))
    await message.add_reaction('✅')
    await message.add_reaction('❎')


Суть в том, что бы если при нажатии на ✅ роль выдавалась и в zapros2_chanell человеку писался текст.

При нажатии на ❎ человеку роль не выдавалась следовательно, но и в zapros2_chanell писался определенный текст.
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
@multiapi Автор вопроса
Все, додумался ).

@client.command()
async def role(ctx):
    await ctx.send(f"{ctx.author.mention}, `запрос на роль был успешно отправлен, ожидайте рассмотрение запроса модерацией.`")
    chatmoder = client.get_channel( 729733881129074768 )
    confirm_msg = await chatmoder.send(f"{ctx.author.mention} запрашивает роль")
    await confirm_msg.add_reaction("")
    await confirm_msg.add_reaction("") 
    role = ctx.guild.get_role(703596629860548643)  
        
    try:
        reaction, user = await client.wait_for('reaction_add', timeout=1800.0)
    except asyncio.TimeoutError:
        await ctx.send("Время ожидание прошло. Попросите руководителя семьи еще раз приглосить Вас в семью")
    else:
        if str(reaction) == "":
            await ctx.author.add_roles(role)
            await ctx.send("Роль выдана.")
        else:
            await ctx.send("Роль не выдана.")
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы