Игнорирование исключения в command None: discord.ext.commands.errors .CommandNotFound: Ошибка команды «memechannel» не найдена (discord.py )

#python #python-3.x #discord #bots #discord.py

#python #python-3.x #Discord #боты #discord.py

Вопрос:

Хорошо, итак, я создал бота Discord, который берет мемы из reddit и отправляет их на указанный пользователем канал каждые 5 минут, для этого мне пришлось создать cog

 #imports
import discord
...
...
#Automemer
class Automemer(commands.Cog):
    def __init__(self, client):
....

#used to loop the task of posting memes
    @tasks.loop(minutes=5.0)
    async def automemer(self):
        all_subs = []
...
#start of formating embed for task loop
            name = random_sub.title
            url = random_sub.url
            em = discord.Embed(title = name)
            em.set_image(url = url)
            em.color = 0xff0000
em.set_footer(text=f'Memes from r/AmongUsMemes')
            #used to post the memes where the user does the command am.memechannel
            @commands.command()
            async def memechannel(self, ctx):
                channel_id = ctx.channel.id
                await ctx.send('Memes will now be sent in this channel')
                memeChannel = ctx.guild.get_channel(channel_id)
                if memeChannel:
                    emoji1 = ':arrow_up:'
                    emoji2 = ':arrow_down:'
                    msg = await ctx.send(embed=em)
                    await msg.add_reaction(emoji1)
                    await msg.add_reaction(emoji2)
                    await ctx.send(embed=em)

  

Error = Ignoring exception in command None: discord.ext.commands.errors.CommandNotFound: Command "memechannel" is not found

Ошибка возникает всякий раз, когда я запускаю команду am.memechannel.

Было бы здорово, если бы кто-нибудь сказал мне, как исправить эту ошибку. Это последняя функция бота, и это будет мой первый в истории Discord бот, выпущенный для широкой публики! 🙂

Ответ №1:

Вы определили команды внутри цикла задачи, ваш отступ испорчен. Предполагается, что вы должны поместить команду под цикл, а не внутри него.

 @tasks.loop(minutes=5.0)
...

@commands.command()
...
  

Имейте в виду, что ваша em переменная видна только в вашей задаче, поэтому вам придется найти способ обойти это, иначе вы не сможете использовать ее в своей команде. Примером является добавление его в качестве переменной класса вместо этого.

 def __init__(self, client):
    self.em = discord.Embed()
  

А затем просто перезаписывайте эту переменную по мере продвижения.

 self.em = discord.Embed(title=name)
...