📣 tgmk-cn

tgmk-cn 后台

{{ loginErr }}

📊 数据概览 — 全局数据统计,实时查看用户、链接、推送效果

{{ dash.total_users || 0 }}
总用户数
{{ dash.active_users || 0 }}
活跃用户(24h)
{{ dash.blocked_users || 0 }}
已拉黑
{{ dash.today_new || 0 }}
今日新增
{{ linkStats.reduce((a,s)=>a+(s.start_count||0),0) }}
总点击次数
{{ linkStats.reduce((a,s)=>a+(s.user_count||0),0) }}
总新增用户
{{ linkStats.reduce((a,s)=>a+(s.today_new||0),0) }}
当日新增
{{ dash.total_users ? ((dash.blocked_users||0)*100/dash.total_users).toFixed(1)+'%' : '0%' }}
拉黑率
📊 渠道用户分布
{{ s.name || s.code }}{{ s.user_count || 0 }} 人
暂无数据
邀请链接统计
链接名称Code点击次数新增用户当日新增
{{ s.name }}{{ s.code }}{{ s.start_count }}{{ s.user_count || 0 }}{{ s.today_new || 0 }}
🤖 各机器人用户统计
机器人总用户今日新增活跃(24h)已拉黑
@{{ bs.bot_username || '未知' }} ({{ bs.bot_name }}) {{ bs.total_users || 0 }} {{ bs.today_new || 0 }} {{ bs.active_users || 0 }} {{ bs.blocked_users || 0 }}

🤖 机器人管理 — 添加和管理 Telegram Bot,支持多 Bot 同时运行

ID名称用户名Token状态创建时间操作
{{ b.id }}{{ b.name }}@{{ b.username }} {{ b.token.substring(0,15) }}... {{ b.is_active?'启用':'停用' }} {{ fmtTime(b.created_at) }}
暂无机器人,请点击"添加机器人"
💡 说明
  • 添加机器人后需要重启服务才能生效(新 Bot 需要启动 polling)
  • Token 从 @BotFather 获取,用户名填 Bot 的 username(不含 @)
  • 停用机器人后,该 Bot 不再接收消息,但已有用户数据保留

👥 用户管理 — 查看所有通过 Bot 注册的用户,支持按渠道筛选和搜索

IDTelegram ID用户名姓名所属机器人来源状态注册时间
{{ u.id }}{{ u.telegram_id }}{{ str(u.username) || '-' }} {{ str(u.first_name) }} {{ str(u.last_name) }} {{ getBotName(u.bot_id) }} {{ str(u.invite_link_code) || str(u.start_param) || '直接' }} {{ u.is_blocked?'已屏蔽':'正常' }} {{ fmtTime(u.created_at) }}

🔗 邀请链接 — 创建推广链接,关联欢迎流程,追踪每个渠道的转化效果

ID名称Code机器人链接点击次数新增用户当日新增状态操作
{{ l.id }}{{ l.name }}{{ l.code }} {{ getBotName(l.bot_id) }} https://t.me/{{ getBotUsername(l.bot_id) }}?start={{ l.code }} {{ l.start_count }}{{ l.user_count }} {{ (linkStats.find(s=>s.id===l.id)||{}).today_new || 0 }} {{ l.is_active?'启用':'停用' }}

🤖 欢迎流程

ID名称状态创建时间操作
{{ f.id }}{{ f.name }} {{ f.is_active?'启用':'停用' }} {{ fmtTime(f.created_at) }}

📨 推送任务 — 批量发送消息,支持全部用户/按渠道/指定ID,可分组随机内容

ID 名称 类型 目标 机器人 状态 成功 失败 创建时间 发送时间 操作
{{ t.id }} {{ t.name }} {{ t.content_mode==='welcome_flow' ? '欢迎流程' : t.content_type }} {{ {all:'全部用户',invite_link:'按链接',user_ids:'指定用户'}[t.target_type] || t.target_type }} {{ getTaskBotNames(t.bot_ids) }} {{ {draft:'草稿',pending:'待执行',running:'执行中',completed:'已完成',failed:'失败',cancelled:'已取消'}[t.status] || t.status }} {{ t.success_count || 0 }} {{ t.fail_count || 0 }} {{ fmtTime(t.created_at) }} {{ t.started_at && t.started_at.Valid ? fmtTime(t.started_at.Time) : '-' }}

📋 操作日志 — 记录所有后台操作,便于审计追溯

ID管理员操作目标类型目标IDIP时间
{{ l.id }}{{ l.admin_id }}{{ {create:'创建',update:'更新',delete:'删除',login:'登录',start:'执行',toggle:'切换状态'}[l.action] || l.action }} {{ {push_task:'推送任务',invite_link:'邀请链接',welcome_flow:'欢迎流程',material:'素材',material_group:'素材分组',admin:'管理员',user:'用户'}[l.target_type] || l.target_type }}{{ l.target_id }}{{ l.ip }} {{ fmtTime(l.created_at) }}

📦 素材库

素材分组
全部 {{ g.name }} ({{ {text:'文字',photo:'图片',video:'视频',button:'按钮'}[g.type] || g.type }}) ✏️
ID名称类型分组内容预览创建时间操作
{{ m.id }} {{ str(m.name) || '-' }} {{ {text:'文字',photo:'图片',video:'视频',button:'按钮'}[m.type] }} {{ getGroupName(m.group_id) }} {{ str(m.content).substring(0,50) }} {{ str(m.button_text) }} → {{ str(m.button_url) }} 🎬 {{ str(m.media_url) ? '已上传' : '无' }} {{ fmtTime(m.created_at) }}

📊 游戏大厅概览

{{ gDash.stats?.total_games||0 }}
游戏总数
{{ gDash.stats?.online_games||0 }}
已上架
{{ gDash.stats?.offline_games||0 }}
已下架
{{ gDash.stats?.total_categories||0 }}
分类数
{{ gDash.stats?.today_visits||0 }}
今日访问
{{ gDash.stats?.active_users_7d||0 }}
7日活跃
🔥 热门游戏 TOP10(近7天)
#游戏访问次数
{{ i+1 }}{{ g.game_icon }} {{ g.game_name }}{{ g.visit_count }}
暂无数据

📂 分类管理

ID图标名称排序状态操作
{{ c.id }}{{ c.icon }}{{ c.name }}{{ c.sort }} {{ c.status===1?'启用':'禁用' }}

🕹️ 游戏管理

ID图标名称分类类型推荐热门新游排序状态浏览操作
{{ g.id }}{{ g.icon&&g.icon.startsWith('http')?'🖼️':g.icon||'🎮' }}{{ g.name }}
{{ g.subtitle }}
{{ gCatName(g.category_id) }}{{ g.open_type }} {{ g.is_recommend?'✅':'' }}{{ g.is_hot?'🔥':''}}{{ g.is_new?'🆕':''}} {{ g.sort }}{{ g.status===1?'上架':'下架' }} {{ g.view_count }}
共 {{ gGameTotal }} 条

🖼️ Banner管理

ID标题图片跳转类型跳转目标排序状态操作
{{ b.id }}{{ b.title }} - {{ b.jump_type }}{{ b.jump_target }} {{ b.sort }}{{ b.status===1?'启用':'禁用' }}

👁️ 访问记录

ID用户ID游戏ID来源时间
{{ v.id }}{{ v.user_id }}{{ v.game_id }}{{ v.source }}{{ fmtTime(v.created_at) }}
暂无记录
共 {{ gVisitTotal }} 条

⚙️ 游戏大厅配置

🔗 WebApp 链接

将以下链接设置为 Telegram Bot 的 Menu Button 或 Inline Button:

❓ 使用帮助

📋 快速上手流程
  1. 创建素材 → 素材库中添加文字/图片/视频/按钮素材,按分组管理
  2. 创建欢迎流程 → 设置用户进入后收到的消息(支持多步骤、延迟发送、分组随机)
  3. 创建邀请链接 → 生成专属推广链接,关联对应的欢迎流程
  4. 分发链接 → 将 https://t.me/Bot用户名?start=链接Code 分发到各渠道
  5. 查看数据 → 在数据概览和邀请链接的用户日志中追踪效果
📦 素材库

素材是欢迎流程和推送任务的内容来源,分为四种类型:

  • 文字素材 — 支持 MarkdownV2 格式和 {emoji:贴纸包名:序号} 自定义表情
  • 图片素材 — 支持上传本地文件或填写 URL
  • 视频素材 — 同图片,支持上传或 URL
  • 按钮素材 — 内联按钮(文字 + 链接),点击后跳转 URL

素材按分组管理。分组用于"分组随机"功能 — 每次发送时从分组内随机抽取一个素材。

🤖 欢迎流程

用户点击邀请链接或发送 /start 后,Bot 自动发送的消息序列。

  • 多步骤 — 一个流程可以包含多条消息,按顺序发送
  • 延迟发送 — 每个步骤可设置延迟秒数(第一条立即发送)
  • 内容来源 — 每个步骤的文字/图片/按钮支持三种模式:
    • 手动输入 — 直接填写内容
    • 指定素材 — 从素材库选择固定素材
    • 分组随机 — 从素材分组中随机抽取,每次不同
  • 随机流程 — 未关联流程的链接或直接 /start 会随机选取一个启用的流程
  • 启用/停用 — 停用的流程不会被随机选中

⚠️ 确保至少有一个启用的流程且有步骤,这是兜底保障。

🔗 邀请链接

每个邀请链接对应一个推广渠道,生成格式:https://t.me/Bot用户名?start=Code

  • 关联欢迎流程 — 每个链接可关联不同的欢迎流程,实现千人千面
  • 用户日志 — 点击"用户日志"查看每次点击记录、发送状态、错误信息
  • 统计 — 自动统计点击次数和新增用户数
  • 停用/删除 — 停用或删除的链接,用户点击后会随机收到一个启用的欢迎流程
📨 推送任务

向用户批量发送消息,支持多种目标和内容模式。

  • 目标类型:全部用户 / 按邀请链接 / 指定用户ID
  • 内容模式:手动输入 / 指定素材 / 分组随机
  • 执行 — 创建后点"执行"开始发送,支持查看发送详情和成功/失败统计
🚨 报警机制

以下情况会自动给管理员 Telegram 私聊发送报警通知:

  • 欢迎流程查找失败
  • 流程没有步骤(会随机 fallback 到其他启用的流程)
  • 消息发送失败(自动重试一次后仍失败)
  • 所有步骤全部发送失败
💡 常见问题

Q: 用户点击链接没收到消息?

A: 检查邀请链接是否关联了欢迎流程,流程是否已启用,流程是否有步骤。查看用户日志确认发送状态。

Q: 分组随机没效果?

A: 确认素材分组内有素材,且步骤选择了正确的分组。

Q: 图片发送失败?

A: 检查图片 URL 是否可访问,或上传的文件是否存在。Telegram 对图片大小有 10MB 限制。