资讯动态

社群自动化实战:用 Python + 微信 API 搞定关键词自动踢人与违规撤回

发布时间:2026/10/23 19:39:34 来源:尧图企业网站定制
群规的自动化执行比发欢迎语难——要先撤回再踢人、要分级警告、要留违规证据、要防止误踢。这篇按执行顺序走一遍每个环节说清为什么要这么做。一、执行顺序先撤回再踢人收到违规关键词正确的动作顺序是撤回消息 → 发警告 → 踢人。直接踢不撤回违规内容还留在群里其他人都能看到。撤回和踢人之间要有一个时间差让撤回生效再踢。不是所有违规都要踢人。建议分级第一次违规只警告、连续两次再踢、严重违规广告链接、辱骂直接踢。分级规则做成配置改规则不用改代码。二、关键词匹配别只做精确匹配精确匹配关键词容易漏——用户打个错别字、换个写法就逃过去了。做法是精确匹配加模糊匹配加正则精确匹配管最直接的违规词模糊匹配管变体正则管格式类违规比如手机号、二维码、广告 URL。关键词库建议按类型分组广告类、辱骂类、链接类、政治类每组可以配不同的处理级别。三、违规证据留痕备查每一次处罚都要留证据违规者的 wxid、群 ID、消息内容、命中的关键词、触发的规则、执行的动作、执行时间。记录要持久化别只放内存防止进程重启后丢失。证据的价值有两个一是群管理员可能会问为什么踢拿得出记录二是误踢了可以反向定位是哪条规则触发的。四、白名单和灰度别误踢自己人群主和管理员应该在白名单里永远不会被自动处罚。还有一些正常业务场景可能会包含违规关键词的变体——比如活动群里允许发活动的邀请链接那就把这个群加入灰度组链接类规则在这个群里跳过。群规执行对照步骤做什么关键点常见坑匹配精确模糊正则关键词库分组漏匹配变体分级警告/踢人/禁言可配置一刀切全踢执行先撤回再踢人时间差让撤回生效踢了没撤回证据全字段记录持久化误踢无据可查白名单群主/管理员免处理按群配置误踢自己人群规执行实现import time, json from collections import defaultdict class GroupEnforcer: def __init__(self, api, store, rules): self.api api self.store store self.rules rules # 关键词组 - 级别 self.warn_count defaultdict(int) # (group_id, wxid) - 警告次数 self.admin_set set() # 白名单 def check(self, group_id, wxid, content, mid): # 白名单跳过 if wxid in self.admin_set: return # 关键词匹配 hit_level None hit_kw None for level, patterns in self.rules.items(): for kw in patterns: if self._match(content, kw): hit_level level hit_kw kw break if hit_level: break if not hit_level: return # 执行分级处罚 key (group_id, wxid) count self.warn_count[key] if hit_level severe: self._execute(group_id, wxid, content, mid, hit_kw, direct_kick) elif count 1: self.warn_count[key] 1 self._execute(group_id, wxid, content, mid, hit_kw, warn) else: self._execute(group_id, wxid, content, mid, hit_kw, kick) self.warn_count[key] 0 # 重置 def _match(self, content, kw): if kw.startswith(regex:): import re return re.search(kw[6:], content) return kw in content def _execute(self, gid, wxid, content, mid, kw, action): # 先撤回再处罚 try: self.api.post(/group/recall, {group_id: gid, msg_id: mid}) except Exception: pass # 撤回失败不阻断后续 time.sleep(1) # 等撤回生效 record { group_id: gid, wxid: wxid, content: content, keyword: kw, action: action, ts: time.time(), } self.store.save(violation, record) if action warn: self.api.post(/send, { group_id: gid, content: f{wxid} 违规{kw}再犯将被踢出, }) elif action in (kick, direct_kick): self.api.post(/group/remove, { group_id: gid, wxid: wxid, }) time.sleep(3) def on_group_message(self, event): self.check( event[group_id], event[from], event[content], event[msg_id])落地建议执行顺序必须先撤回再踢人中间留 1 秒让撤回生效。分级处罚——第一次警告、连续两次踢人、严重违规直接踢分级做成配置不改代码。关键词匹配别只做精确加模糊和正则。所有处罚都留全字段证据并持久化防止误踢无据可查。群主和管理员加白名单永远跳过。微信侧的群消息、撤回、踢人接口由Eyun这类个人微信API平台 提供规则和执行在自建服务实现具体字段以平台开发文档为准。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑