如何在电报机器人中正确发送每日消息?

2024-03-28 15:59:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用job_队列和在我的电报机器人中运行每日消息时遇到问题。我已经阅读并尝试了在stack overflow和online中找到的每一个答案,但不知何故什么都不起作用,我也不知道出了什么问题。 我想每天发送一条消息,但只能在/start命令之后发送,并且我想用/stop命令关闭bot和预定的消息。我使用的是13.5版。以下是目前的代码:

import logging, os, random, sys, random, datetime
from telegram import ParseMode, Update
from telegram.ext import Updater, CommandHandler, CallbackContext

...

def callback_daily(context: CallbackContext):
    context.bot.send_message(
        text="DAILY TEXT",
        parse_mode=ParseMode.HTML
    )

def start_handler(update: Update, context: CallbackContext):   

    context.bot.run_daily(callback_daily, 
        days=(0,1,2,3,4,5,6),
        time=datetime.time(hour=20, minute=00, tzinfo=pytz.timezone("Europe/Rome")),
        context=update.message.chat_id
    )
    
    update.message.reply_text(
        "STARTED"
    )


if __name__ == '__main__':

    logger.info("### Starting Bot ###")

    updater = Updater(TOKEN, use_context=True)

    updater.dispatcher.add_error_handler(CommandHandler("error", error_handler))
    updater.dispatcher.add_handler(CommandHandler("start", start_handler, pass_job_queue=True))
    updater.dispatcher.add_handler(CommandHandler("help", help_handler))
    
    ...

    run(updater)
    logger.info("### Bot Started ###")

我现在得到的是:

 AttributeError: 'Bot' object has no attribute 'run_daily'

我还尝试了Stackoveflow中的许多其他方法,很多方法我都记不起来了,不知何故,每个答案都显示了运行计划消息的不同方法(目前甚至没有一种方法有效)

我做错了什么


Tags: 方法runimport消息messagebotcontextupdate