You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改现有Telegram Bot定时任务代码以使用job_queue.run_repeated

Telegram Bot单次定时任务改重复执行修改方案

核心修改说明

  • 将原代码中调用的context.job_queue.run_once方法替换为context.job_queue.run_repeating即可实现重复定时任务
  • 可根据需求调整首次执行的延迟时间:默认首次任务会立即执行,若需要首次也等待对应间隔时间后再执行,可指定first参数值和间隔时间一致
  • 同步修改命令提示文案,明确输入的秒数为重复执行的间隔时长

修改后完整代码

def set_timer(update: Update, context: CallbackContext) -> None:
    """Add a repeated job to the queue."""
    chat_id = update.message.chat_id
    try:
        # args[0] 为重复执行的间隔时间,单位秒
        interval = int(context.args[0])
        if interval < 0:
            update.message.reply_text('抱歉,不能设置负的时间间隔!')
            return

        job_removed = remove_job_if_exists(str(chat_id), context)
        # 用法1:添加后立即执行第一次,之后每interval秒重复执行
        context.job_queue.run_repeating(alarm, interval=interval, context=chat_id, name=str(chat_id))
        
        # 如果你需要首次执行也等待interval秒,之后再按间隔重复,就用下面这行替换上面的run_repeating调用
        # context.job_queue.run_repeating(alarm, interval=interval, first=interval, context=chat_id, name=str(chat_id))

        text = '重复定时任务设置成功!'
        if job_removed:
            text += ' 已移除之前设置的旧任务。'
        update.message.reply_text(text)

    except (IndexError, ValueError):
        update.message.reply_text('用法:/set <间隔秒数>')

方法参数说明

run_repeating核心参数含义:

  • 第一个参数:任务触发时执行的回调函数,和原run_once一致,保留原来的alarm即可
  • interval:两次任务执行的间隔秒数
  • first:可选参数,首次执行任务的延迟秒数,不填默认立即执行首次任务
  • context、name参数和原run_once用法完全一致,不需要调整

内容的提问来源于stack exchange,提问作者Luiio01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:45:02