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

Python开发Telegram Bot:如何在infinity-polling启动前执行函数

在Telegram机器人的Infinity Polling启动前执行函数的方案

针对python-telegram-bot库(主流Telegram机器人开发库),分版本提供两种核心方案,满足「每次Polling启动(包括重启)前执行函数」的需求:

方案1:注册Startup回调(推荐,支持重启触发)

无论Polling是首次启动还是因网络异常断开后自动重启,都会触发该回调函数,适合需要每次启动都初始化的场景。

适用于v20+版本(当前主流)

from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

# 定义要在Polling启动前执行的函数
async def pre_polling_init():
    print("执行Polling前的初始化操作:加载配置、连接数据库...")
    # 这里编写你的业务逻辑

async def start_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("机器人已就绪!")

async def main():
    # 构建Application实例
    app = ApplicationBuilder().token("你的机器人Token").build()

    # 注册Startup回调,每次Polling启动时自动执行
    app.add_startup_callback(pre_polling_init)

    # 添加业务处理器
    app.add_handler(CommandHandler("start", start_cmd))

    # 启动无限Polling
    await app.run_polling()

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

适用于v13及以下版本

from telegram.ext import Updater, CommandHandler

# 定义初始化函数
def pre_polling_init():
    print("执行Polling前的初始化操作:加载配置、连接数据库...")

def start_cmd(update, context):
    update.message.reply_text("机器人已就绪!")

def main():
    updater = Updater("你的机器人Token")

    # 注册Startup回调
    updater.dispatcher.add_startup(pre_polling_init)

    updater.dispatcher.add_handler(CommandHandler("start", start_cmd))

    # 启动无限Polling
    updater.start_polling()
    updater.idle()

if __name__ == "__main__":
    main()

方案2:手动前置调用(仅首次启动触发)

如果只需要在Polling第一次启动前执行函数,直接在启动代码前手动调用即可,逻辑更简单:

async def main():
    # 先执行初始化函数
    await pre_polling_init()
    
    # 再构建并启动机器人
    app = ApplicationBuilder().token("你的机器人Token").build()
    app.add_handler(CommandHandler("start", start_cmd))
    await app.run_polling()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:22:18