Discor.py. Можно ли выполнять команду каждый час?
Используются коги, пытался найти в документации подходящий класс под эту задачу, но безуспешно. Создать фоновую задачу не выходит, самый рабочий метод был:
import os
import discord
import asyncio
from discord.ext import tasks
from utils import default
from utils.data import Bot, HelpFormat
config = default.config()
print("Logging in...")
bot = Bot(
command_prefix=config["prefix"], prefix=config["prefix"],
owner_ids=config["owners"], command_attrs=dict(hidden=True), help_command=HelpFormat(),
intents=discord.Intents( # kwargs found at https://discordpy.readthedocs.io/en/latest/api.html?highlight=intents#discord.Intents
guilds=True, members=True, messages=True, reactions=True, presences=True
)
)
async def background_task():
time = 5
await asyncio.sleep(time)
print('background_task are working')
for file in os.listdir("cogs"):
if file.endswith(".py"):
name = file[:-3]
bot.load_extension(f"cogs.{name}")
try:
bot.loop.create_task(background_task())
bot.run(config["token"])
except Exception as e:
print(f'Error when logging in: {e}')
Но этот код выполнял поставленную задачу 1 раз.
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Так зацикли
async def background_task():
while True:
time = 5
await asyncio.sleep(time)
print('background_task are working')