【问题标题】:Discord.py, on_raw_reaction_add add_roles not workingDiscord.py,on_raw_reaction_add add_roles 不起作用
【发布时间】:2021-06-04 15:17:30
【问题描述】:

我正在尝试制作一个不和谐机器人,它可以为做出反应的成员添加角色......到目前为止我已经完成了......第一部分正在工作,但我无法添加角色反应时。尝试了很多事情,我迷路了..你能帮我吗?非常感谢:)

import discord
from discord import Embed
from discord.utils import get
from discord.utils import find
from discord.ext import commands
 
 
class color(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
 
    @commands.Cog.listener()
    async def on_ready(self):
        print('Module "Color" prêt.')
 
    @commands.command()
    async def color(self, ctx, help="permet d'assigner des rôles en fonction de la couleur choisie"):
          embed = (Embed(title="Choisis ton rôle! Réagis avec la couleur que tu désires !", description="Quelle couleur veux-tu être?")
                   .add_field(name=":blue_heart:", value="Team Bleue", inline = False)
                   .add_field(name=":heart:", value="Team Rouge", inline = False)
                   .add_field(name=":green_heart:", value="Team Vert", inline = False)
                   .set_footer(text=f'Made by {ctx.author.display_name}'))
 
          message = await ctx.send(embed=embed)
          emojis = ['????', '❤️', '????']
          for emoji in emojis:
                await message.add_reaction(emoji)
 
    @commands.Cog.listener()
    async def on_raw_reaction_add(self, payload):
        member = payload.member
        if member.bot:
            return

        guild = self.bot.get_guild(payload.guild_id)
        role = discord.utils.get(guild.roles, name="TeamBleue")
        member = guild.get_member(payload.user_id)

        if str(payload.emoji) == '????':
            await member.add_roles(role, reason="TeamBleue")
        
 
    @color.error
    async def color_error(self, ctx, error):
        if isinstance(error, commands.NotOwner):
            await ctx.send('''Désolé, tu n'as pas le droit de faire ceci :)''', delete_after=3)
            await ctx.message.delete(delay=3)

def setup(bot):
    bot.add_cog(color(bot))

【问题讨论】:

  • 你能添加你的回溯吗?
  • 我怎样才能拥有它? :o
  • 您尝试添加角色时的控制台输出。
  • "忽略 on_raw_reaction_add Traceback 中的异常(最近一次调用最后一次):文件“/home/ubuntu/.local/lib/python3.8/site-packages/discord/client.py”,第 333 行, 在 _run_event await coro(*args, **kwargs) File "/home/ubuntu/axel/cogs/color.py", line 35, in on_raw_reaction_add guild = bot.get_guild(payload.guild_id) NameError: name 'bot'未定义”
  • 对不起,不知道为什么我之前什么都没有

标签: python discord.py roles


【解决方案1】:

我们必须使用“str(emoji)”作为经典表情符号:)

【讨论】:

    【解决方案2】:

    这听起来可能有点奇怪,但你必须用payload.emoji.name 来做。修订:

    import discord
    from discord import Embed
    from discord.utils import get
    from discord.utils import find
    from discord.ext import commands
     
     
    class color(commands.Cog):
        def __init__(self, bot):
            self.bot = bot
     
        @commands.Cog.listener()
        async def on_ready(self):
            print('Module "Color" prêt.')
     
        @commands.command()
        async def color(self, ctx, help="permet d'assigner des rôles en fonction de la couleur choisie"):
              embed = (Embed(title="Choisis ton rôle! Réagis avec la couleur que tu désires !", description="Quelle couleur veux-tu être?")
                       .add_field(name=":blue_heart:", value="Team Bleue", inline = False)
                       .add_field(name=":heart:", value="Team Rouge", inline = False)
                       .add_field(name=":green_heart:", value="Team Vert", inline = False)
                       .set_footer(text=f'Made by {ctx.author.display_name}'))
     
              message = await ctx.send(embed=embed)
              emojis = ['?', '❤️', '?']
              for emoji in emojis:
                    await message.add_reaction(emoji)
     
        @commands.Cog.listener()
        async def on_raw_reaction_add(self, payload):
            member = payload.member
            if member.bot:
                return
    
            guild = self.bot.get_guild(payload.guild_id)
            role = discord.utils.get(guild.roles, name="TeamBleue")
            member = guild.get_member(payload.user_id)
    
            if payload.emoji.name == '?':
                await member.add_roles(role, reason="TeamBleue")
            
     
        @color.error
        async def color_error(self, ctx, error):
            if isinstance(error, commands.NotOwner):
                await ctx.send('''Désolé, tu n'as pas le droit de faire ceci :)''', delete_after=3)
                await ctx.message.delete(delay=3)
    
    def setup(bot):
        bot.add_cog(color(bot))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-26
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 2021-02-25
      • 1970-01-01
      • 2021-05-18
      相关资源
      最近更新 更多