MENU

开源了一个基于人工智能用于反垃圾信息的telegram机器人

August 1, 2024 • • 阅读设置

大概在前年的时候,由于自己Telegram的开源交流群快1万人了。

对于这种”大群“而言,早已被各大垃圾广告脚本列入群发名单了,所以经常能看到很多群发垃圾信息广告。

管理员多次跟我抱怨“广告垃圾太多了,根本删不完,有的还会偷偷趁管理都睡了进来发,防不胜防”,

当时就在计划写一个反广告的机器人,

最开始的设想很简单,找一批违禁词做基础数据源,然后在根据用户的发言做关键词拆分

如果用户发言里面包含的关键词命中n个以后,就代表是垃圾信息,立马对用户进行封禁操作

但是上线后发现以下几个弊端:

  • 1.违禁词库不够大,能找到的很多都是一些旧数据了,导致命中率很低
  • 2.只能识别文字信息,如果对方在消息里插入符号、特殊字符、emoji等来混淆信息,就根本无法识别了
  • 3.无法识别图片和表情
  • 4.如果违禁词出现更新和变种,那么还得管理员经常去做词库更新,累之~

再运行一段时间发现以上缺点后,我就开始失望了,因为我没有精力和时间去做更多的手段完善识别率

只能祈祷用爱发电的管理员们多多关注群消息,手动删除。

我也尝试过许多第三方的机器人,但是效果可能都不太如尽人意。

但是在上个星期,一位好友突然让我尝试一个机器人,说识别率很高,我就去扫了一眼。

发现它是基于chatgpt去做识别的,

这次发现突然给了我灵感,对啊,为什么我没想的用AI去做识别呢?
iShot_2024-08-01_10.55.48.png

iShot_2024-08-01_10.56.32.png

我这人有个缺点,就是了解原理以后,喜欢自己造轮子,命运得握在自己手上不是?

这里也非常感谢@ZUOLUOTV_AI_BOT机器人以及它的作者提供的灵感,

当然使用AI还有个好处就是,现在很多AI接口的中转站,价格相较于官方会便宜很多很多,

而且AI是支持多语言交互的,不仅仅局限于反中文垃圾消息,随着模型的成熟,它能理解并判断更多的语言。

说干就干,IDEA启动!

这里简单可以描述群发广告机器人的原理:

1. 广告脚本控制的telegram账号其实都是`协议号`,这种号是活不久的,用完就换,几乎是一次性的
2. 已知这种账号如果活不久的话,程序在控制它们的时候肯定会尽快发挥价值,说不定一个号在短时间内会加很多群然后发垃圾广告信息
3. 广告号一般特征非常明显,会在昵称和简介里包含垃圾信息

好了,现在我们了解了的原理了,接下来我们开始实现

的实现原理如下:

1. 机器人监听新用户加群事件,将用户的信息存在本地数据库中
2. 机器人监听新用户发言事件,将用户的发言次数存在本地数据库中
3. 判断条件:如果一个新用户在加入群后的`n`天内发言,并且`n`次发言内容都没问题,则后续这个用户将直接放入白名单,不再验证

这样做的理由是什么:

  • 1.由于大群内发言人数非常多,为了钱包考虑,永远不可能每次发言都交给AI做判断,对正常用户来说这样做是没意义的,造成无意义的成本消耗
  • 2.根据上述原理我们得知,广告号的存活时间非常短暂,telegram官方也会做封禁,所以大部分的广告号特征就是新加入群,马上就开始发垃圾广告,这样识别起来成功率非常高!
  • 3.当然如果一个用户在一定时间内的发言都没问题的话,后续也不需要在验证了,节约钱包

剩下的事情就简单多了,只需要预先设置好AI的prompt,然后把用户发言的内容交给它判断就行了。

暂时我只实现了Openai的接口,目前看来足够使用,其他模型等后续有时间再做。

我们来看一下效果:
preview.png

iShot_2024-07-31_11.59.20-tuya.png

这里我在线上测试了几天,发现识别效果还是不错的,当然速度的话还是取决于你的服务器和AI的接口。

所以我将它开源了出来,有需求或者对Telegram机器人开发感兴趣的话可以看看。

项目地址:https://github.com/assimon/ai-anti-bot

Archives QR Code
QR Code for this page
Tipping QR Code
Leave a Comment

已有 1 条评论
  1. NoMoney NoMoney

    谢谢开源,很好,但么钱卖服务器,KEY。