#python #discord.py
#python #discord.py
Вопрос:
Я уже целую вечность пытаюсь исправить эту ошибку. Итак, в основном я пытаюсь выполнить задачу цикла с помощью 3 разных способов, и это самое близкое, что я получил, но не могу понять, почему возникает эта ошибка
Обратная трассировка (последний последний вызов): Файл «/home/jupe/.local/lib/python3.8/site-packages/discord/ext/commands/bot.py «, строка 607, в файле _load_from_module_spec spec.loader.exec_module(lib) «», строка 779, в файле exec_module «», строка 916, в файле get_code «», строка 846, в файле source_to_code «», строка 219в файле _call_with_frames_removed «/home/jupe/bot/modules/task.py «, строка 25 def setup(bot): ^ SyntaxError: недопустимый синтаксис Приведенное выше исключение было прямой причиной следующего исключения: Трассировка (последний последний вызов): Файл «main.py «, строка 12, в файле bot.load_extension(f’modules.{имя файла[:-3]}’) File «/home/jupe/.local/lib/python3.8/site-packages/discord/ext/commands/bot.py «, строка 664, в файле load_extension self._load_from_module_spec(спецификация, имя) «/home/jupe/.local/lib/python3.8/site-packages/discord/ext/commands/bot.py «, строка 610, в _load_from_module_spec вызывает ошибки.Сбой расширения (ключ, e) из e discord.ext.commands.errors.Сбой расширения: расширение ‘modules.task’ выдало ошибку: ошибка синтаксиса: недопустимый синтаксис (task.py , строка 25)
эта ошибка возникает в этом коде, который должен работать идеально
import discord
from discord.ext import commands
import asyncio
import os
class CogBackground(commands.Cog):
def __init__(self, bot):
self.bot = bot
async def scan(path):
for file in os.listdir(path):
x=os.stat(file)
Result=(time.time()-x.st_mtime)
print("The age of the given file is: ",Result)
async def task(self, ctx):
self.scan("imgs/")
await asyncio.sleep(15)
@commands.Cog.listener()
async def on_ready(self, ctx):
self.bot.loop.create_task(self.task(ctx)
def setup(bot):
bot.add_cog(CogBackground(bot))
Комментарии:
1. Вы не закрыли скобку в функции on_ready . Кроме того, я не могу найти ничего о функции «create_task» нигде в документах, поэтому я не думаю, что она должна работать идеально. discordpy.readthedocs.io/en/latest/search.html?q=create_task
2. это все еще как-то работало, прежде чем я переместил его в Cog, но я закрою скобку, спасибо
Ответ №1:
У вас есть синтаксическая ошибка в первой строке кода on_ready
события, также scan
функция является сопрограммой, поэтому вам нужно ее дождаться.
await self.scan('./imgs')
Лучшей альтернативой этому является использование встроенного discord.ext.tasks
расширения, это просто лучшая альтернатива
from discord.ext import tasks
# In the cog
@tasks.loop(seconds=15.0)
async def task(self):
await self.scan('./imgs')
@commands.Cog.listener()
async def on_ready(self):
self.task.start()