name: telegram-bot

# Telegram 机器人（轮询版）——无需服务器，仅靠 GitHub Actions cron。
#   1) 命令查询：/help /releases /release <tag> /issues /issue <编号>（私聊 / 群组均可）
#   2) 入群验证（反广告）：新成员需答对一道加法题才放行
#
# 启用（一次性）：
#   1) 已配置 telegram-notify 用到的 TELEGRAM_BOT_TOKEN（Secret）即可复用；
#   2) 仓库 Settings → Secrets and variables → Actions → Variables 新建
#        TELEGRAM_BOT_ENABLED = true     （未设为 true 则本工作流不运行，避免空跑）
#   3) 把机器人拉进群组 / 在私聊里 /start。
#
# 启用入群验证还需（缺一不可）：
#   a) 群组设为「新成员需管理员批准」（群设置 → 邀请链接勾选 Request Admin Approval）；
#   b) 机器人是群管理员且有 can_invite_users 权限 —— 否则收不到 chat_join_request 更新。
#   为什么这样就不怕 cron 有延迟：待批准的用户看不到群、也发不了消息，晚几分钟处理没有风险；
#   而 ChatJoinRequest.user_chat_id 允许机器人在 24 小时内私聊该用户，远大于 cron 延迟。
#
# 局限：cron 最小 5 分钟且可能再延后 → 命令与验证码送达非实时（安全性不受影响，只影响体验）；
# GitHub 会在仓库 60 天无活动时暂停定时任务。
# 想立即处理一次：Actions → telegram-bot → Run workflow（workflow_dispatch）。

on:
  schedule:
    - cron: '*/5 * * * *'
  workflow_dispatch: {}

permissions:
  contents: read
  issues: read

# 避免轮询任务并发重叠重复处理；新触发取消正在跑的（残留未确认更新下次重处理，无副作用）
concurrency:
  group: telegram-bot
  cancel-in-progress: true

jobs:
  poll:
    runs-on: ubuntu-latest
    if: ${{ vars.TELEGRAM_BOT_ENABLED == 'true' }}
    steps:
      - uses: actions/checkout@v4
      - name: Poll Telegram & handle commands
        env:
          TG_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          REPO: ${{ github.repository }}
        run: node .github/scripts/telegram-bot.mjs
