大概在前年的时候,由于自己Telegram
的开源交流群快1万人了。
对于这种”大群“而言,早已被各大垃圾广告脚本列入群发名单了,所以经常能看到很多群发垃圾信息广告。
管理员多次跟我抱怨“广告垃圾太多了,根本删不完,有的还会偷偷趁管理都睡了进来发,防不胜防”,
当时就在计划写一个反广告
的机器人,
最开始的设想很简单,找一批违禁词
做基础数据源,然后在根据用户的发言做关键词拆分
,
如果用户发言里面包含的关键词命中n个
以后,就代表是垃圾信息,立马对用户进行封禁操作
。
但是上线后发现以下几个弊端:
- 1.违禁词库不够大,能找到的很多都是一些旧数据了,导致命中率很低
- 2.只能识别文字信息,如果对方在消息里插入符号、特殊字符、emoji等来混淆信息,就根本无法识别了
- 3.无法识别图片和表情
- 4.如果
违禁词
出现更新和变种,那么还得管理员经常去做词库更新,累之~
再运行一段时间发现以上缺点后,我就开始失望了,因为我没有精力和时间去做更多的手段完善识别率
,
只能祈祷用爱发电的管理员们多多关注群消息,手动删除。
我也尝试过许多第三方的机器人,但是效果可能都不太如尽人意。
但是在上个星期,一位好友突然让我尝试一个机器人,说识别率很高,我就去扫了一眼。
发现它是基于chatgpt去做识别的,
这次发现突然给了我灵感,对啊,为什么我没想的用AI
去做识别呢?
我这人有个缺点,就是了解原理以后,喜欢自己造轮子,命运得握在自己手上不是?
这里也非常感谢@ZUOLUOTV_AI_BOT机器人以及它的作者提供的灵感,
当然使用AI
还有个好处就是,现在很多AI
接口的中转站,价格相较于官方会便宜很多很多,
而且AI
是支持多语言交互的
,不仅仅局限于反中文垃圾消息
,随着模型的成熟,它能理解并判断更多的语言。
说干就干,IDEA
启动!
这里简单可以描述群发广告机器人的原理:
1. 广告脚本控制的telegram账号其实都是`协议号`,这种号是活不久的,用完就换,几乎是一次性的
2. 已知这种账号如果活不久的话,程序在控制它们的时候肯定会尽快发挥价值,说不定一个号在短时间内会加很多群然后发垃圾广告信息
3. 广告号一般特征非常明显,会在昵称和简介里包含垃圾信息
好了,现在我们了解了茅
的原理了,接下来我们开始实现盾
盾
的实现原理如下:
1. 机器人监听新用户加群事件,将用户的信息存在本地数据库中
2. 机器人监听新用户发言事件,将用户的发言次数存在本地数据库中
3. 判断条件:如果一个新用户在加入群后的`n`天内发言,并且`n`次发言内容都没问题,则后续这个用户将直接放入白名单,不再验证
这样做的理由是什么:
- 1.由于大群内发言人数非常多,为了钱包考虑,永远不可能每次发言都交给
AI
做判断,对正常用户来说这样做是没意义的,造成无意义的成本消耗 - 2.根据上述原理我们得知,广告号的存活时间非常短暂,telegram官方也会做封禁,所以大部分的广告号特征就是新加入群,马上就开始发垃圾广告,这样识别起来成功率非常高!
- 3.当然如果一个用户在一定时间内的发言都没问题的话,后续也不需要在验证了,节约钱包
剩下的事情就简单多了,只需要预先设置好AI的prompt
,然后把用户发言的内容交给它判断就行了。
暂时我只实现了Openai
的接口,目前看来足够使用,其他模型等后续有时间再做。
我们来看一下效果:
谢谢开源,很好,但么钱卖服务器,KEY。