Files
tg-shuttle-score/.env.example
T
JianMiauandClaude Fable 5 0386c94546 記分板新增隨機配對、計分人權限與換人計分,調整按鈕排法
根本原因:
每打完一輪都要人工決定誰上場、誰搭誰、誰負責記分,記分板也沒有「兩隊對換」和退回選先發球的操作,現場排場地或換人都得重開記分板。

影響:
/記分 多一顆 🎲 隨機配對:勾選出席者(預設全選)後,依 tg_members.skill 與今天的 history 戰績排 2、3 號場地(休息最久優先、搭檔與對手不重複、實力平衡),預覽後一鍵推出各場地記分板;每場從休息者抽一位計分人(SCORER_EXCLUDE 不抽),只有他和管理員能按,休息人不夠則不鎖權限;開局可 🙋 換人計分、🔃 🅰️🅱️ 對換;計分鍵盤改為左欄 🅰️+1/🅱️+1,拿掉「重新開始」,0:0 時上一步可退回選先發球。

修法:
- 新增 src/pairing.js:移植 badminton-match-hub V2 的配對規則,改成一次只排下一輪、以「休息輪數」取代平均場數;assignScorers 從休息者抽計分人
- history.js 新增 loadTodayGames 讀今日戰績;signup.js attendees() 帶 skill 與 user_id(權限靠 TG id 比對)
- scoreboard.js 以 phase(pick → roster → paired)管理同一則訊息的選人/勾選/預覽流程,推出的記分板 ownerId 指向計分人;新增換人計分(ho / hoN / hoany / hocancel),候選排除場上、現任計分人與 SCORER_EXCLUDE
- match.js 新增 swapTeams,setFirstServer 記入 history 讓 undo 可退回開局;render.js 重排鍵盤並新增勾選、預覽、換人面板與場地標題
- config 新增 SCORER_EXCLUDE;README、.env.example 與 37 個測試同步更新

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 22:24:16 +08:00

28 lines
932 B
Bash

# 從 @BotFather 取得的 Bot Token
BOT_TOKEN=123456789:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 白名單聊天(逗號分隔 chat_id);不在名單的聊天指令與按鈕都會被擋
ALLOWED_CHAT_IDS=-1002488036686,-4679836160
# 每週自動發報名(cron 語法,時區 Asia/Taipei);留空則不排程
SIGNUP_CRON=0 10 * * 1
SIGNUP_CRON_CHAT_ID=-4679836160
# 記分板預設目標分數
TARGET_SCORE=21
# 隨機配對時不會被抽去當計分人的名字(逗號分隔,對 attendance.nickname);留空則所有休息的人都可能被抽到
SCORER_EXCLUDE=景涵
# 記分板狀態持久化檔案
DATA_FILE=./data/matches.json
# MariaDB / MySQL(與 badminton-scoreboard 共用)
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_DATABASE=badminton
DB_HISTORY_TABLE=history
# Node-RED(舊版報名流程切換用)
NODERED_URL=http://192.168.5.45:1880