众所周知,Telegram是一款非常优秀的即时通信工具,可比那个不知名的绿色图标的软件好多了。Telegram不仅使用更安全,应用程序也很小,还支持多客户端登录,消息跨平台无限制同步。
尽管Telegram这么棒,但是对于中国用户来说,最致命的一个缺点就是搜索。这一点对不是用分词的CJK用户来说也是一样的。想要搜索点什么东西,那简直就是要了命了,必须要输入整个句子。
有啥办法可以解决这个问题吗?
一个最常见的方法是,使用Telegram Desktop,注意是Telegram Desktop,用C++写的那个,导出聊天记录为json,然后搜索。
可这样也太繁琐了吧!有没有什么更好的方案呢……
一个方法是魔改Telegram的客户端,反正也是开源的,能搜本地数据库就搜本地的吧,至于需要请求服务器搜索的,那大概率是没救了。可惜我既不会swift也不会c++,更何况我估计以我的小脑瓜我也看不懂他们的代码……
另一个方法就是自己保存一份!还记得Telegram支持多客户端登录吗,那我们如果拿来一个client用来把文字消息保存到数据库中,后续再从数据库中查询,那不就有了嘛!
说干就干!
技术选型
需要用MTProto协议,那么最好就是用纯Python实现的pyrogram了,用TDLib什么的太麻烦了。
数据库就用ElasticSearch吧,全文检索更方便。 算了算了,ES惹不起,用MongoDB吧
一个client,登录账号,把收和发的消息保存到数据库中。
一个bot,用于从数据库中检索数据。
加上一些身份验证之类的。
使用截图
详细功能说明可以移步GitHub
从此以后CJK再无烦恼😂
总计代码也就400多行!
由于这种操作涉及到个人聊天记录,是非常敏感且重要的信息,因此不提供任何公开bot,需要自己部署一份。
看这ES跑得多欢快,就像脱缰的野马一样,配合上kibana这个劝退的工具简直天生一对😠
开源地址
https://github.com/tgbot-collection/SearchGram
放到了这里,😂还打算做 chat history import的功能,就是今天太累了……蹲一个PR吧。
具体部署方法在那边也有,写的应该比较详细了。这里就不复述了。
能用就行,从此再也不怕搜不到聊天记录了.jpg
--本评论由Telegram Bot回复~❤️