Делаю систему уровней в discord.py и ошибка

Вот мой отрывок кода:

import discord
from discord.ext import commands
from pymongo import MongoClient

bot_channel = 702341394014011425
talk_channels = [702341394014011425]

level = ["?Bronze?", "?Iron?", "?Gold?", "?Diamond?", "?Elite?"]
levelnum = [5, 10, 20, 30, 50]

cluster = MongoClient("mongodb+srv://<ss>:<12345>@cluster0.vraiu.mongodb.net/Cluster0?retryWrites=true&w=majority")

levelling = cluster["discord"]["levelling"]

class levelsys(commands.Cog):
  def __init__(self, client):
    self.client = client

  @commands.Cog.listener()
  async def on_ready(self):
    print("ready!")

  @commands.Cog.listener()
  async def on_message(self, message):
    if message.channel.id in talk_channels:
      stats = levelling.find_one({"id" : message.author.id})
      if not message.author.bot:
        if stats is None:
          newuser = {"id" : message.author.id, "xp" : 100}
          levelling.insert_one(newuser)
        else:
          xp = stats["xp"] + 5
          levelling.update_one({"id":message.author.id}, {"$set":{"xp":xp}})
          lvl = 0
          while True:
            if xp < ((50*(lvl**2))+(50*lvl)):
              break
            lvl += 1
          xp -= ((50*((lvl-1)**2))+(50*(lvl-1)))
          if xp == 0:
            await message.channel.send(f'У {message.author.mention} повысился уровень до **{lvl}**!')
            for i in range(len(level)):
              if lvl == levelnum[1]:
                await message.author.add_roles(discord.utils.get(message.author.guild.roles, name=level[1]))
                embed = discord.Embed(description=f"{message.author.mention} ты получил роль **{level[1]}**!")
                embed.set_thumbnail(url=message.author.avatar_url)
                await message.channel.send(embed=embed)

@commands.command()
async def ранг(self, ctx):
  if ctx.channel.id == bot_channel:
    stats = levelling.find_one({"id" : ctx.author.id})
    if stats is None:
      embed = discord.Embed(description="Вы не отправляли ни одного сообщения!")
      await ctx.channel.send(embed=embed)
    else:
      xp = stats["xp"]
      lvl = 0
      rank = 0
      while True:
            if xp < ((50*(lvl**2))+(50*lvl)):
              break
            lvl += 1
      xp -= ((50*((lvl-1)**2))+(50*(lvl-1)))
      boxes = int((xp/(200*((1/2) * lvl)))*20)
      rankings = levelling.find().sort("xp",-1)
      for x in rankings:
        rank += 1
        if stats["id"] == x["id"]:
          break
      embed = discord.Embed(title="{} статистика уровней".format(ctx.author.name))
      embed.add_field(name="Имя", value=ctx.author.mention, inline=True)
      embed.add_field(name="XP", value=f"{xp}/{int(200*((1/2)*lvl))}", inline=True)
      embed.add_field(name="Ранг", value=f"{rank}/{ctx.guild.member_count}", inline=True)
      embed.add_field(name="Progress Bar [lvl]", value=boxes * ":blue_square:" + (20-boxes) * ":white_large_square:", inline=False)
      embed.set_thumbnail(url=ctx.author.avatar_url)
      await ctx.channel.send(embed=embed)
  @commands.command()
  async def лидеры(self, ctx):
    if (ctx.channel.id == bot_channel):
      rankings = levelling.find().sort("xp",-1)
      i = 1
      embed = discord.Embed(title="Рейтинг участнков:")
      for x in rankings:
        try:
          temp = ctx.guild.get_member(x["id"])
          tempxp = x["xp"]
          embed.add_field(name=f"{i}: {temp.name}", value=f"Всего опыта: {tempxp}", inline=False)
          i += 1
        except:
          pass
        if i == 11:
          break
      await ctx.channel.send(embed=embed)

def setup(client):
  client.add_cog(levelsys(client))

Вот ошибка:

Traceback (most recent call last):
  File "main.py", line 194, in <module>
    client.run(os.getenv("TOKEN"))
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 723, in run
    return future.result()
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 702, in runner
    await self.start(*args, **kwargs)
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 666, in start
    await self.connect(reconnect=reconnect)
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/client.py", line 601, in connect
    raise PrivilegedIntentsRequired(exc.shard_id) from None
discord.errors.PrivilegedIntentsRequired: Shard ID None is requesting privileged intents that have not been explicitly enabled in the developer portal. It is recommended to go to https://discord.com/developers/applications/ and explicitly enable the privileged intents within your application's page. If this is not possible, then consider disabling the privileged intents instead.

Где я прокололся? Если что пишу на replit


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

Автор решения: RAINGM

Из ошибки понятно, что у вас не включены intents, чтобы включить их нужно: перейти на сайт discord.com, выбрать приложение, зайти во вкладку bot и переключить два свитчера:введите сюда описание изображения

→ Ссылка