Ошибка в aiogram - TypeError: Message.answer() missing 1 required positional argument: 'self'.?
Начал изучение планировщика задач:
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:
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'
Ответы (1 шт):
Автор решения: Deniska SosiSka
→ Ссылка
Вам нужно отправлять в планировщик экземпляр класса, а не сам класс.
В строке
schedule.add_job(send_message_time, trigger='date', run_date=datetime.now() + timedelta(seconds=5), kwargs={'message': types.Message})
замените types.Message
на message