开始研究任务调度器:
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 (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'
您需要将类的实例发送到调度程序,而不是类本身。
排队
改成
types.Messagemessage