Telegram定时消息Bot

Telegram定时消息Bot


python telegram bot

项目简介

本项目通过Python脚本,结合pyrogramschedule库,实现了每天定时向指定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账号,向目标群组发送签到消息。
  • 日志记录:所有操作和异常均写入日志文件,便于后续排查。
  • 信号处理:支持优雅退出,保证程序安全关闭。

运行方式

  1. 配置好api_idapi_hashphone_numbertarget_chat
  2. 安装依赖:
    pip install pyrogram schedule
    
  3. 运行脚本:
    python checkin_bot.py
    

注意事项

  • 需提前在my.telegram.org获取api_idapi_hash
  • target_chat为群组ID,获取方式可参考官方文档.
  • 首次运行时,pyrogram会要求输入验证码进行登录。

常见问题

  • Q: 如何获取群组ID? A: 可通过@userinfobot等工具获取。
  • Q: 程序未按时发送消息? A: 检查服务器时间、依赖安装、网络连接及日志文件。

如有问题欢迎留言交流。

© 2025 帅宁