关于本项目
- 由道无涯i开发的一个基于 Lsposed(Non-Riru) 实现的Telegram机器人框架
- 目前并没有对外开放,毕竟机器人框架这种东西比较容易火,容易被黑灰产非法利用
- 接口文档已趋于完善,机器人框架正式开发完毕
如果你想拥有一个这样的机器人,但困于编程知识储备不足,可联系 道无涯 按需定制,具体可移步 软件|源码定制 页
Telegram交流群
待定,暂时没想好搞来干啥。
请求与响应
目前支持 GET 和 POST 两种请求方式
GET 请求
GET 请求的 URL 由以下部分组成:
http://<host>:<port>/<endpoint>?<params>
链接中的含义如下:
<host>
:IP 地址,例127.0.0.1
<port>
:API 端口,默认为5704
<endpoint>
:API 端点,例send_text_msg
<params>
:GET 请求的参数,例param1=value1¶m2=value2
POST 请求
POST 请求的 URL 由以下部分组成:
http://<host>:<port>/<endpoint>
链接中的含义如下:
<host>
:IP 地址,例127.0.0.1
<port>
:API 端口,默认为5704
<endpoint>
:API 端点,例send_text_msg
- POST请求的Content-type为application/json
{
"tgid": "111111",
"text": "你好,道无涯!"
}
响应
响应格式为 JSON
如果下面的接口是获取值的,那么返回值会放在message
字段里,没有返回值则返回常规提示性的字符串
{
"result": "success", // 状态,success 为成功,error为失败
"message": "文本消息发送成功!", // 返回结果示例
}
消息上报
上报时,插件将作为客户端,对接端作为服务器,插件向对接端发起POST请求进行数据传输
- 上报方式(method):
POST
- 上报链接(url):
http://ip:port/tgBot
,ip和port为对接端的 - 上报体(body):所有上报必定包含字段
post_type
用这个post_type
的值去区分各种事件与消息的上报类型,目前设定的post_type
值仅1种:
post_type | 说明 |
---|---|
message | 消息事件 |
message(消息事件)
- post_type为
message
时代表是消息事件 - 消息事件又以字段
message_type
作为区分,值分别有:
message_type | 说明 |
---|---|
channel | 频道消息 |
group | 群组消息 |
chat | 群聊消息 |
private | 私聊消息 |
channel(频道消息)
频道消息字段包含四种:
字段 | 说明 |
---|---|
channelId | 频道ID |
channelName | 频道名称 |
content | 消息内容 |
imagePath | 消息图片缓存的路径 |
如果是多篇文章的话,默认只发送第一篇文章的数据
group(群组消息)
群组消息字段包含六种:
字段 | 说明 |
---|---|
groupId | 群组ID |
groupName | 群组名称 |
userId | 发送者ID |
userName | 发送者昵称 |
content | 消息内容 |
imagePath | 消息图片缓存的路径 |
chat(群聊消息)
群聊消息字段包含五种:
字段 | 说明 |
---|---|
chatId | 群聊ID |
chatName | 群聊名称 |
userId | 发送者ID |
userName | 发送者昵称 |
content | 消息内容 |
private(私聊消息)
私聊消息字段包含三种:
字段 | 说明 |
---|---|
userId | 发送者ID |
userName | 发送者昵称 |
content | 消息内容 |
消息相关接口
发送文本消息
该接口用于发送文本消息。
API 端点(POST
)
/send_text_msg
参数
字段 | 类型 | 必须 | 说明 |
---|---|---|---|
tgid | string |
是 | Telegram ID |
text | string |
是 | 消息内容 |
发送图片消息
该接口用于发送图片消息。
API 端点(POST
)
/send_image_msg
参数
字段 | 类型 | 必须 | 说明 |
---|---|---|---|
tgid | string |
是 | Telegram ID |
image | string |
是 | 图片,可以是本地路径或者是url链接,如果是url则默认以jpg格式发送 |
withtext | string |
是 | 发图携带的文本,不携带可设置值 null 或 "" |
发送视频消息
该接口用于发送视频消息。
API 端点(POST
)
/send_video_msg
参数
字段 | 类型 | 必须 | 说明 |
---|---|---|---|
tgid | string |
是 | Telegram ID |
video | string |
是 | 视频,可以是本地路径或者是url链接,如果是url则默认以mp4格式发送 |
withtext | string |
是 | 发视频携带的文本,不携带可设置值 null 或 "" |
发送动图消息
该接口用于发送GIF动图消息。
API 端点(POST
)
/send_gif_msg
参数
字段 | 类型 | 必须 | 说明 |
---|---|---|---|
tgid | string |
是 | Telegram ID |
gif | string |
是 | GIF动图,可以是本地路径或者是url链接 |
withtext | string |
是 | 发动图携带的文本,不携带可设置值 null 或 "" |
发送文件消息
该接口用于发送文件消息。
API 端点(POST
)
/send_file_msg
参数
字段 | 类型 | 必须 | 说明 |
---|---|---|---|
tgid | string |
是 | Telegram ID |
file | string |
是 | 任意类型文件,可以是本地路径或者是url链接 |
withtext | string |
是 | 发文件携带的文本,不携带可设置值 null 或 "" |
ext | string |
是 | 文件后缀,例如.js 与.txt ,当file为本地路径时可设置值 null 或 "" |
发送语音消息
该接口用于发送语音消息。
API 端点(POST
)
/send_voice_msg
参数
字段 | 类型 | 必须 | 说明 |
---|---|---|---|
tgid | string |
是 | Telegram ID |
voice | string |
是 | 语音文件,可以是本地路径或者是url链接,必须为*.ogg 或者*.wav 类型文件 |
withtext | string |
是 | 发文件携带的文本,不携带可设置值 null 或 "" |
发送富文本消息
该接口用于发送富文本消息,消息可同时包含:文本、图片、超链接
API 端点(POST
)
/send_rich_msg
参数
字段 | 类型 | 必须 | 说明 |
---|---|---|---|
tgid | string |
是 | Telegram ID |
text | string |
是 | 消息内容 |
linkTexts | string [] |
是 | 超链接文本数组 |
links | string [] |
是 | 链接数组 |
images | string [] |
是 | 图片数组,可以是本地路径或者是url链接,如果是url则默认以jpg格式发送,如果不想携带图片可传入空数组[] |
HOOK自带的几大功能
机器人框架
- 上述列出的所有API接口服务
- 自动上报消息至服务器
聊天记录爬取
- 顾名思义,用来爬取聊天记录并缓存至本地,支持
图+文+链接
- 缓存文件地址:
/data/data/org.telegram.messenger/files/spyder.txt
- 实测5分钟内即可爬6500多条记录
- 触发方式:在任意聊天界面发送
爬#tgid
即可触发(tgid需要替换真实成ID),每爬200条触发一次toast提示
消息防删除
- 即使对方把聊天消息删除了,也能看得到
- 原理是阻止Telegram删除本地消息
tgid的获取
- 在聊天列表长按某个聊天消息即可触发toast输出和复制该消息的tgid
- 在聊天页面输入并发送
tgid
即可触发toast输出和复制该对话的tgid(消息会被拦截不会发过去)
结语
- 老早就想做一个Telegram相关的Hook机器人了,终于给加上了
- 目前接口不多,但是足够用了,暂时想不到其它啥接口,等后续用到了再开发新的其它接口