将电报消息缓存到本地,解决中文、日文、韩文搜索困难的问题。其使用Meilisearch为数据库,Redis缓存,由python构建而成,由原项目SearchGram修改而来,可以在性能较弱的机器上运行。 问题来源已久
- 同步历史消息
- 关键词搜索,模糊搜索,群组内搜索
- 申请Telegram API 实测需家宽IP,最好美国。与手机号无关
- 从@BotFather申请telegram机器人
- Python 3.7+
- Redis
- MeiliSearch
-
克隆仓库:
git clone https://github.com/clionertr/SearchGram.git cd SearchGram -
创建并激活虚拟环境:
python -m venv venv source venv/bin/activate # Windows 上使用 `venv\Scripts\activate` -
安装所需包:
pip install -r requirements.txt -
设置您的配置:
- 将
config.py.example重命名为config.py - 填写的 Telegram API 凭证和其他必要信息
- 设置必要的权限,sysnc.ini可读写,bot.py可执行命令
- 将
-
初始化数据库和搜索引擎: 创建session文件夹并设置权限
python client.py按照提示进行 获取session文件后使用
CTRL+C退出脚本 如遇报错可忽视
0.Linux可使用screen挂起
1.激活虚拟环境:
python -m venv venv
source venv/bin/activate # Windows 上使用 `venv\Scripts\activate`
-
启动机器人:
python bot.py -
启动客户端进行消息同步(可选,可用bot命令启动client.py):
python client.py -
在 Telegram 中,与您的机器人开始对话,并使用
/help命令查看可用选项。
/start:启动机器人/help:显示帮助信息/ping:检查机器人和数据库状态/delete:删除消息(可选择全部、特定聊天或特定用户)/start_client、/stop_client、/restart_client:管理客户端脚本/add_sync、/remove_sync、/list_sync:管理同步的聊天/view_log: 查看client.py的日志文件,默认关闭
sync.ini配置同步 接受ID与用户名或群组名
[sync] : 下载包含群组/用户的所有历史消息 白名单 :只获取白名单内群组/用户消息
黑名单 :不获取其中白名单内群组/用户消息
在我的1CPU 1G内存(+1G swap,vm.swappiness=10)的VPS上,同步30w历史消息期间花费约30小时。74w消息的数据大小为2.5GiB。一般状态下仅需考虑占用内存大小。 如果你的机子性能实在不行,可使用meilisearch官方数据库或使用性能较好的机器部署,同步完成后将数据库复制到你的机子上
下图前半段为同步7w历史消息时的性能状况,后半段为同步完成的性能状况
假装这里有个一键脚本
感谢开源 感谢Claude3.5


