首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角色发布系统

角色发布系统
EN

Stack Overflow用户
提问于 2020-08-03 07:16:53
回答 1查看 69关注 0票数 1

有一个请求角色的命令。我不明白如何为reactions设置一些函数。

代码语言:javascript
复制
@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=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中单击✅时,角色已经发出,并向person写入了一段文本。

因此,当您单击❎时,不会为此人分配角色,但也会使用zapros2_chanell编写特定的文本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-04 05:34:49

我使用了一个名为on_raw_reaction_add的事件。对反应进行了检查,记住会给公会中的任何消息以✅.It的角色,这只是一个概念证明。

您可以使其仅接受特定通道上的响应,甚至只接受给定消息it的响应

代码语言:javascript
复制
@client.command()
async def role(ctx):    
    zapros_chanell = client.get_channel(729733881129074768)
 
    embed = discord.Embed(title="Запрос роли")
    embed.add_field(name='Запросивший роль', value=ctx.message.author.mention)
    embed.add_field(name='Роль для выдачи', value=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('❎')
    
@client.event
async def on_raw_reaction_add(payload):
    channel = await client.fetch_channel(payload.channel_id)
    message = await channel.fetch_message(payload.message_id)
    user = await client.fetch_user(payload.user_id)
    emoji = payload.emoji.name
    
    guild = client.get_guild(ID_HERE)
    role = guild.get_role(703596629860548643)  
    zapros2_chanell = client.get_channel(703596629923725339 ) 
    
    if user.id != bot.user.id: # bot to count itself
        if emoji == '✅':
            await client.add_roles(user, role)
            await zapros2_chanell.send(f'{user.name} has been given {role.name}')
        elif emoji == '❎':
          await zapros2_chanell.send(f'{user.name} did not want {role.name}')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63221894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档