#python #discord.py
#python #discord.py
Вопрос:
Я хочу, чтобы бот отправлял сообщение каждый день в 1 час дня. Вот мой код:
@tasks.loop(hours=24)
async def called_every_day():
channel = client.get_channel(800476409587171369)
print(f"Got channel {channel}")
await channel.send("Your message")
@called_every_day.before_loop
async def before():
await client.wait_until_ready()
print("Finished waiting")
called_every_day.start()
Это работает, если я запускаю бота в 1 час дня. Однако каждый раз, когда я редактирую код и перезапускаю бота, он перезапускает цикл. Я хочу предотвратить это, как мне это сделать? Я новичок в программировании, поэтому буду признателен за любую информацию.
Комментарии:
1. Вы видели API расписания ? Может быть, это может вам помочь
Ответ №1:
Вы можете использовать APScheduler
и Cron
планировать отправку своих команд в определенное время, например, в 12:00
Документы: https://apscheduler.readthedocs.io/en/stable/, https://apscheduler.readthedocs.io/en/stable/modules/triggers/cron.html
Вот пример:
# Async scheduler so it does not block other events
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.cron import CronTrigger
from discord.ext import commands
import discord
bot = commands.Bot(command_prefix="!")
async def func():
await bot.wait_until_ready()
c = bot.get_channel(800476409587171369)
await c.send("Your Message")
@bot.event
async def on_ready():
print("Ready")
# Initializing scheduler
scheduler = AsyncIOScheduler()
# Executes your function at 24:00 (Local Time)
scheduler.add_job(func, CronTrigger(hour="24", minute="0", second="0"))
# Starting the scheduler
scheduler.start()