#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)
...