训练营、共读会、内部考勤:群内发「打卡」自动记录,统计排行、定时提醒,全自动。
训练营、打卡营、企业内部晨会考勤,最繁琐的不是发通知,而是人工核对谁打了卡、谁没打卡——几十上百条消息翻下来,还要做表格排行。用第三方小程序?学员要先跳出微信去操作,参与率直接掉一截。
用微桥:Webhook 接收群消息自动识别「打卡」,记录到数据库,定时播报打卡排行与未打卡提醒。学员不需要学任何新工具,在群里说话就行。
微桥机器人拉进打卡群,后台配置 Webhook 地址,群里发送「开启接口」。
Webhook 收到群消息,判断是否包含「打卡」关键词,记录发送人。
按人累计打卡次数,生成当日排行与连续打卡天数。
每晚定时发打卡统计;对未打卡成员单独私聊提醒(走 S: 私聊会话)。
# pip install requests flask import requests, sqlite3, datetime from flask import Flask, request API_BASE = "https://api.webridge.cn" GROUP_SECRET = "wb_ss_打卡群send_secret" GROUP_ID = "R:16888573..." app = Flask(__name__) def send(content): requests.post(f"{API_BASE}/api/send", params={"secret": GROUP_SECRET, "conversation_id": GROUP_ID}, json={"msgtype": "text", "text": {"content": content}}) def init_db(): db = sqlite3.connect("checkin.db") db.execute("CREATE TABLE IF NOT EXISTS logs(" "uid TEXT, name TEXT, day TEXT, PRIMARY KEY(uid, day))") db.commit(); db.close() @app.post("/webhook") def on_message(): p = request.get_json() text = p["text"]["content"] if "打卡" in text: db = sqlite3.connect("checkin.db") db.execute("INSERT OR IGNORE INTO logs VALUES(?,?,?)", (p["sender"]["id"], p["sender"]["name"], datetime.date.today().isoformat())) db.commit(); db.close() send("✅ 打卡成功!") return "ok" # 定时任务(每天 21:00):播报今日打卡排行 def report(): db = sqlite3.connect("checkin.db") rows = db.execute( "SELECT name, COUNT(*) FROM logs " "GROUP BY uid ORDER BY COUNT(*) DESC LIMIT 10").fetchall() db.close() send("🏆 打卡排行\n" + "\n".join( f"{i+1}. {n}:{c} 次" for i, (n, c) in enumerate(rows)))
Webhook 推送给你的消息里带了 sender.id / sender.name 和会话信息,识别「谁在哪个群说了什么」不需要额外解析。未打卡提醒可遍历当天没记录的人,通过私聊会话(S: 前缀)单独发。
参考案例(知识付费训练营,真实客户反馈整理,上线前请替换为经确认的数据):