Я пытался сделать / команду у себя в боте используя коги

Ошибка:

An exception has occurred while executing command `info`:
Traceback (most recent call last):
  File "C:\Users\fun\VirtualEnvDs\lib\site-packages\discord_slash\client.py", line 1353, in invoke_command
    await func.invoke(ctx, **args)
  File "C:\Users\fun\VirtualEnvDs\lib\site-packages\discord_slash\model.py", line 210, in invoke
    return await self.func(*args, **kwargs)
TypeError: polina_moderator.info() missing 1 required positional argument: 'ctx'

Я к сожалению без понятия как это исправить Код самой команды:

@slash.slash(name="info",
                 description="Команда для поиска информации о пользователе",
                 options=[
                     create_option(
                         name="member",
                         description="Напишите пользователя",
                         option_type=6,
                         # check out the docs (link is provided in readme.md file) to know more about different types of options
                         required=True
                     )
                 ])
    async def info(self, ctx, member: discord.Member = None):
        await ctx.message.delete()
        if member == None:
            emb = discord.Embed(title="Информация о пользователе", color=ctx.message.author.color)
            emb.add_field(name="Имя:", value=ctx.message.author.display_name, inline=False)
            emb.add_field(name="Айди пользователя:", value=ctx.message.author.id, inline=False)
            t = ctx.message.author.status
            if t == discord.Status.online:
                d = " В сети"

            t = ctx.message.author.status
            if t == discord.Status.offline:
                d = "⚪ Не в сети"

            t = ctx.message.author.status
            if t == discord.Status.idle:
                d = " Не активен"

            t = ctx.message.author.status
            if t == discord.Status.dnd:
                d = " Не беспокоить"

            emb.add_field(name="Активность:", value=d, inline=False)
            emb.add_field(name="Статус:", value=ctx.message.author.activity, inline=False)
            emb.add_field(name="Роль на сервере:", value=f"{ctx.message.author.top_role.mention}", inline=False)
            emb.add_field(name="Акаунт был создан:",
                          value=ctx.message.author.created_at.strftime("%a, %#d %B %Y, %I:%M %p UTC"), inline=False)
            emb.set_thumbnail(url=ctx.message.author.avatar_url)
            await ctx.send(embed=emb)
        else:
            emb = discord.Embed(title="Информация о пользователе", color=member.color)
            emb.add_field(name="Имя:", value=member.display_name, inline=False)
            emb.add_field(name="Айди пользователя:", value=member.id, inline=False)
            t = member.status
            if t == discord.Status.online:
                d = " В сети"

            t = member.status
            if t == discord.Status.offline:
                d = "⚪ Не в сети"

            t = member.status
            if t == discord.Status.idle:
                d = " Не активен"

            t = member.status
            if t == discord.Status.dnd:
                d = " Не беспокоить"
            emb.add_field(name="Активность:", value=d, inline=False)
            emb.add_field(name="Статус:", value=member.activity, inline=False)
            emb.add_field(name="Роль на сервере:", value=f"{member.top_role.mention}", inline=False)
            emb.add_field(name="Акаунт был создан:", value=member.created_at.strftime("%a, %#d %B %Y, %I:%M %p UTC"),
                          inline=False)
            await ctx.send(embed=emb)

Я использовал вот эти библиотеки:

  • import discord
  • from discord.ext import commands
  • from discord_slash.utils.manage_commands import create_option, create_choice
  • from bot_polina import slash
slash = SlashCommand(bot, sync_commands=True, sync_on_cog_reload=True)

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

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

Я не понял, что за 11 строк в начале кода, заменил их на @bot.command и у меня всё работало... Кстати немного оптимизировал проверки в коде

@commands.command()
async def info(self, ctx, member: discord.Member = None):
    await ctx.message.delete()
    if member == None:
        emb = discord.Embed(title="Информация о пользователе", color=ctx.message.author.color)
        emb.add_field(name="Имя:", value=ctx.message.author.display_name, inline=False)
        emb.add_field(name="Айди пользователя:", value=ctx.message.author.id, inline=False)
        t = ctx.message.author.status
        if t == discord.Status.online:
            d = " В сети"
        elif t == discord.Status.offline:
            d = "⚪ Не в сети"
        elif t == discord.Status.idle:
            d = " Не активен"
        elif t == discord.Status.dnd:
            d = " Не беспокоить"

        emb.add_field(name="Активность:", value=d, inline=False)
        emb.add_field(name="Статус:", value=ctx.message.author.activity, inline=False)
        emb.add_field(name="Роль на сервере:", value=f"{ctx.message.author.top_role.mention}", inline=False)
        emb.add_field(name="Акаунт был создан:", value=ctx.message.author.created_at.strftime("%a, %#d %B %Y, %I:%M %p UTC"), inline=False)
        emb.set_thumbnail(url=ctx.message.author.avatar_url)
        await ctx.send(embed=emb)
    else:
        emb = discord.Embed(title="Информация о пользователе", color=member.color)
        emb.add_field(name="Имя:", value=member.display_name, inline=False)
        emb.add_field(name="Айди пользователя:", value=member.id, inline=False)
        t = member.status
        if t == discord.Status.online:
            d = " В сети"
        elif t == discord.Status.offline:
            d = "⚪ Не в сети"
        elif t == discord.Status.idle:
            d = " Не активен"
        elif t == discord.Status.dnd:
            d = " Не беспокоить"
        emb.add_field(name="Активность:", value=d, inline=False)
        emb.add_field(name="Статус:", value=member.activity, inline=False)
        emb.add_field(name="Роль на сервере:", value=f"{member.top_role.mention}", inline=False)
        emb.add_field(name="Акаунт был создан:", value=member.created_at.strftime("%a, %#d %B %Y, %I:%M %p UTC"), inline=False)
        emb.set_thumbnail(url=ctx.message.author.avatar_url)
        await ctx.send(embed=emb)
→ Ссылка