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

Python实现Telegram Bot/start指令点击用户数统计与回复

Telegram 机器人/start触发用户总数统计实现
  • 采用本地SQLite存储触发记录,将用户ID设为唯一主键,同一用户多次触发/start不会重复计数,统计结果准确
  • 统计结果严格按照要求返回users: 总数量格式
  • 统计接口默认加管理员权限校验,仅配置的管理员可查询数据,避免信息泄露

前置准备

先安装依赖库:

pip install python-telegram-bot==20.7

完整代码

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

# 配置项 - 替换为你自己的参数
BOT_TOKEN = "你的Telegram机器人Token"
ADMIN_USER_ID = 123456789  # 替换为你自己的Telegram数字ID,用于权限校验
STATS_COMMAND = "count"  # 触发统计的指令,可自行修改

def init_database():
    """初始化存储数据库"""
    conn = sqlite3.connect("user_records.db")
    cursor = conn.cursor()
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS start_users (
            user_id INTEGER PRIMARY KEY UNIQUE
        )
    ''')
    conn.commit()
    conn.close()

async def start_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """处理/start指令,自动记录触发用户"""
    user_id = update.effective_user.id
    conn = sqlite3.connect("user_records.db")
    cursor = conn.cursor()
    # 已存在的用户ID自动忽略插入,避免重复计数
    cursor.execute("INSERT OR IGNORE INTO start_users (user_id) VALUES (?)", (user_id,))
    conn.commit()
    conn.close()
    # 可替换为你自己的/start欢迎语
    await update.message.reply_text("欢迎使用本机器人")

async def stats_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """处理统计查询指令,返回用户总数"""
    # 非管理员直接拦截
    if update.effective_user.id != ADMIN_USER_ID:
        await update.message.reply_text("无操作权限")
        return
    conn = sqlite3.connect("user_records.db")
    cursor = conn.cursor()
    cursor.execute("SELECT COUNT(*) FROM start_users")
    total_users = cursor.fetchone()[0]
    conn.close()
    # 严格按照要求格式返回结果
    await update.message.reply_text(f"users: {total_users}")

if __name__ == "__main__":
    init_database()
    application = ApplicationBuilder().token(BOT_TOKEN).build()
    # 注册指令处理器
    application.add_handler(CommandHandler("start", start_handler))
    application.add_handler(CommandHandler(STATS_COMMAND, stats_handler))
    print("机器人运行中")
    application.run_polling()

使用说明

  • 替换代码中配置项的机器人Token和管理员ID,直接运行脚本即可启动机器人
  • 所有用户触发/start时会自动去重记录,数据持久化存储在脚本同目录的user_records.db文件中,重启服务不会丢失
  • 管理员发送配置的统计指令(默认是/count),即可得到users: 数字格式的准确统计结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 16:45:15