Telegram定时消息Bot
python telegram bot
项目简介
本项目通过Python脚本,结合pyrogram和schedule库,实现了每天定时向指定Telegram群组自动发送签到消息。适用于需要定时提醒、自动打卡等场景。
依赖环境
安装依赖:
pip install pyrogram schedule
核心代码
import schedule
import time
import logging
import signal
import sys
from pyrogram import Client
from datetime import datetime
# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('日志文件'),
logging.StreamHandler()
]
)
api_id =
api_hash = ""
phone_number = "+86"
target_chat = ""
app = Client("my_account", api_id, api_hash, phone_number=phone_number)
# 注册信号处理器
def send_checkin():
"""发送签到消息"""
try:
with app:
app.send_message(target_chat, "签到")
logging.info("✅ 签到成功")
except Exception as e:
logging.error(f"❌ 签到失败: {e}")
def signal_handler(sig, frame):
"""处理退出信号"""
logging.info("👋 收到退出信号,程序正在安全退出...")
sys.exit(0)
# 注册信号处理器
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
# 设置定时任务
schedule.every().day.at("10:20").do(send_checkin)
logging.info("🤖 定时签到程序已启动")
logging.info(f"📅 签到时间: 每天 10:20")
logging.info(f"📄 日志文件: ")
# 主循环
try:
while True:
schedule.run_pending()
time.sleep(60)
# 每6小时报告一次状态
current_time = datetime.now()
if current_time.minute == 0 and current_time.hour % 6 == 0:
logging.info(f"⏰ 程序运行正常 - {current_time.strftime('%Y-%m-%d %H:%M')}")
except Exception as e:
logging.error(f"💥 程序异常: {e}")
主要功能说明
- 定时任务:通过
schedule库设定每天10:20自动执行签到。 - 消息发送:利用
pyrogram库登录Telegram账号,向目标群组发送签到消息。 - 日志记录:所有操作和异常均写入日志文件,便于后续排查。
- 信号处理:支持优雅退出,保证程序安全关闭。
运行方式
- 配置好
api_id、api_hash、phone_number和target_chat。 - 安装依赖:
pip install pyrogram schedule - 运行脚本:
python checkin_bot.py
注意事项
- 需提前在my.telegram.org获取
api_id和api_hash。 target_chat为群组ID,获取方式可参考官方文档.- 首次运行时,
pyrogram会要求输入验证码进行登录。
常见问题
- Q: 如何获取群组ID?
A: 可通过
@userinfobot等工具获取。 - Q: 程序未按时发送消息? A: 检查服务器时间、依赖安装、网络连接及日志文件。
如有问题欢迎留言交流。