weken.news
line-botredisvercel社群機制積分系統

用 LINE Bot 建立社群積分系統:wk-qa-bot 種子法則實作紀錄

直接回答

LINE Bot 積分系統可以用 Upstash Redis sorted set 實作,key 設計為 seeds:total 和 seeds:YYYY-MM,分別記錄全期間和每月積分。上傳觸發事件時 ZINCRBY 加分,ZRANGE 取排行,不需要額外資料庫。搭配公開排行榜頁面,夥伴可以即時看到名次。

週末哥 ·

WeKen 的夥伴每天在 LINE 群組上傳商品素材、分享感恩,但沒有任何機制記錄誰貢獻最多。

這就是種子法則的起點:讓每一個行動都被看見,並且可以累計。

設計規則很簡單:上傳一張照片或一支影片,得 1 顆種子。當天第一次感恩,得 1 顆種子。週末哥可以手動補發種子給特別貢獻的夥伴。

積分記在 Upstash Redis 的 sorted set 裡。兩個 key:seeds:total 記全期間,seeds:YYYY-MM 記每月。每次觸發 ZINCRBY 加分,取排行用 ZREVRANGE

加這個不需要額外的資料庫,LINE Bot 本來就在用 Redis 記驗證狀態。

排行榜頁面是靜態 HTML,放在 /public/leaderboard 由 Vercel 直接 serve。

fetch /api/leaderboard 拿資料,用品牌色渲染排名,前三名有王冠圖示,後面依序列出。夥伴可以切換本月和全期間,也可以往前看歷史月份。

不用登入,有連結就能看。週末哥在 LINE 群組分享連結,夥伴自己查名次。

後來又加了動態牆:所有上傳、感恩、手動種子事件都記一筆到 activity:feed,前台頁面可以看到最近的動態,知道誰在做什麼。

風向資訊(市場問答記錄)也進了動態牆,統一在一個地方瀏覽。

整套機制建好之後,上傳素材的頻率確實有變化。有人開始主動問「我現在幾顆種子」,這大概是積分系統有在運作的最直接指標。

常見問題

LINE Bot 積分系統怎麼用 Redis 實作?
用 Redis sorted set,member 是 LINE userId,score 是積分數。ZINCRBY seeds:total {userId} 1 加全期間分,ZINCRBY seeds:YYYY-MM {userId} 1 加當月分。取排行用 ZREVRANGE seeds:total 0 19 WITHSCORES,回傳前 20 名。
LINE Bot 能取得用戶名稱和頭像嗎?
可以。用 LINE Messaging API 的 GET /v2/bot/group/{groupId}/member/{userId} 取得群組成員資料,回傳 displayName 和 pictureUrl。需要有效的 LINE Channel Access Token 和群組 ID。
積分排行榜要怎麼做成公開頁面?
建一個 Vercel serverless function 讀取 Redis sorted set 資料,回傳 JSON。前端靜態頁面 fetch 這個 API,用 HTML/CSS 渲染排行榜。不需要登入,任何有連結的人都能看。
LINE Bot replyToken 只能用一次,怎麼處理多段回覆?
把所有要回覆的內容合併成一則訊息,用一次 replyToken 發出。LINE Messaging API 的 reply 支援 messages 陣列,最多 5 則訊息可以一次發送,不需要多次 replyToken。

週末哥

WeKen 創辦人 x 行銷顧問 × Meta廣告 x Google Ads x AI 自動化 × 快電商

Threads @wk.change