• Дискорд бот на python отказывается работать?

    @itsNF Автор вопроса
    Да, работает! Спасибо большое! Только теперь вопрос, как мне его интегрировать в другого бота (выдает роли по нажатии на реакцию). Постоянно ошибки. Фикшу онду, появляется другая. В конечном итоге работает очистка сообщений, но бот не выдает роли. Вот весь код бота
    import discord
    from discord import utils
    from discord.ext import commands
    
    import config
    
    client = commands.Bot( command_prefix = '!', intents = discord.Intents.all())
    
    @client.event
    async def on_ready():
      print('bot start')
    
    @client.event
    async def on_raw_reaction_add(self, payload):
      if payload.message_id == config.POST_ID:
        channel = self.get_channel(payload.channel_id) # получаем объект канала
        message = await channel.fetch_message(payload.message_id) # получаем объект сообщения
        member = utils.get(message.guild.members, id=payload.user_id) # получаем объект пользователя который поставил реакцию
    
        try:
          emoji = str(payload.emoji) # эмоджик который выбрал юзер
          role = utils.get(message.guild.roles, id=config.ROLES[emoji]) # объект выбранной роли (если есть)
        
          if(len([i for i in member.roles if i and i.id not in config.EXCROLES]) <= config.MAX_ROLES_PER_USER):
            await member.add_roles(role)
            print('[SUCCESS] User {0.display_name} has been granted with role {1.name}'.format(member, role))
          else:
            await message.remove_reaction(payload.emoji, member)
            print('[ERROR] Too many roles for user {0.display_name}'.format(member))
        
        except KeyError as e:
          print('[ERROR] KeyError, no role found for ' + emoji)
        except Exception as e:
          print(repr(e))
    
    @client.event
    async def on_raw_reaction_remove(self, payload):
      channel = self.get_channel(payload.channel_id) # получаем объект канала
      message = await channel.fetch_message(payload.message_id) # получаем объект сообщения
      member = utils.get(message.guild.members, id=payload.user_id) # получаем объект пользователя который поставил реакцию
    
      try:
        emoji = str(payload.emoji) # эмоджик который выбрал юзер
        role = utils.get(message.guild.roles, id=config.ROLES[emoji]) # объект выбранной роли (если есть)
    
        await member.remove_roles(role)
        print('[SUCCESS] Role {1.name} has been remove for user {0.display_name}'.format(member, role))
    
      except KeyError as e:
        print('[ERROR] KeyError, no role found for ' + emoji)
      except Exception as e:
        print(repr(e))
    
    @client.command()
    async def clear(ctx, amount = 100):
      await ctx.channel.purge(limit = amount)
      await ctx.send(':mechanic:', delete_after=4)
    
    # RUN
    client.run(config.TOKEN)