Доброго времени суток! Не судите строго, изучаю Python, боты и вот пришел к планировщикам задач.
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from config import TOKEN
from aiogram.contrib.fsm_storage.memory import MemoryStorage
import logging
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from datetime import datetime, timedelta
logging.basicConfig(level=logging.INFO)
bot = Bot(token=TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot = bot, storage=storage)
async def send_message_time(message: types.Message):
await message.answer(text='Это сообщение отправляется через несколько секунд после запуска бота')
@dp.message_handler(commands=['start'])
async def process_start_command(message: types.Message):
schedule = AsyncIOScheduler(timezone="Europe/Moscow")
schedule.add_job(send_message_time, trigger='date', run_date=datetime.now() + timedelta(seconds=5), kwargs={'message': types.Message})
schedule.start()
await message.answer("Здрасьте!")
if __name__ == '__main__':
logging.info("Starting bot...")
executor.start_polling(dp)
суть в том, что я пытаюсь реализовать запуск задачи при запуске бота "/start"
вроде логически верно построил но выходит ошибка:
TypeError: Message.answer() missing 1 required positional argument: 'self'
Т.е. он просит добавить какой то обязательный аргумент в Message.answer? До этого он говорил добавить аргумент text, хотя я не был уверен что это обязательно, в других скриптах у меня он не используется, я добавил аргумент text, сейчас просит еще какой то аргумент... перерыл интернет и все что я нашел, это добавить SELF в аргумент.. ну бред какой то.
полный Traceback:
spoiler
Traceback (most recent call last):
File "C:\Program Files\Python311\Lib\site-packages\apscheduler\executors\base_py3.py", line 30, in run_coroutine_job
retval = await job.func(*job.args, **job.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\*******\Desktop\*******************\********************\*****************\******************\************\tgbot3\bot.py", line 17, in send_message_time
await message.answer(text='Это сообщение отправляется через несколько секунд после запуска бота')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Message.answer() missing 1 required positional argument: 'self'