Python开发每日定时发消息Telegram Bot及运行持续性疑问
关于Telegram Bot定时任务运行的核心问题解答
核心结论
关闭运行代码的电脑后,你的Bot无法继续运行并按时发送消息。
原因说明
Telegram Bot本身只是Telegram服务器上的一个身份标识(通过你提供的TOKEN识别),但执行发送消息、定时触发这些逻辑的是你本地运行的Python代码——这些代码必须持续运行在一台开机且联网的设备上(比如你的电脑、树莓派、云服务器)。一旦设备关机、代码进程终止,定时任务就会完全失效。
你的现有代码补充
你当前的schedule代码只添加了任务,缺少持续检查任务的循环逻辑,需要补充才能正常工作:
import requests import schedule import time def send_message(): TOKEN = '你的真实TOKEN' # 替换为你的Bot Token GROUP_CHAT_ID = "你的真实群组ID" # 替换为目标群组ID post_text = "每日定时推送的消息内容" url = f"https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={GROUP_CHAT_ID}&text={post_text}" print(requests.get(url).json()) # 添加定时任务 schedule.every().day.at("00:01").do(send_message) # 持续运行任务检查循环 while True: schedule.run_pending() time.sleep(60) # 每分钟检查一次,降低资源占用
可行的长期运行方案
要让Bot稳定每日执行,你需要让代码持续运行在一个不关机的设备上,推荐几种方案:
- 云服务器托管:将代码部署到云服务器(如轻量应用服务器),通过
nohup python your_script.py &让代码后台运行,或者配置systemd服务实现开机自启、进程守护。 - 低功耗设备运行:用树莓派这类低功耗设备,常年开机运行代码,设置开机自启即可,适合家庭场景。
- 云函数定时触发:使用云函数,配置每日00:01的定时触发器,每次触发时执行发送消息的代码,无需自己维护服务器运行状态。
内容的提问来源于stack exchange,提问作者kalike5373
相关产品推荐
相关产品推荐

