Skip to content

Commit

Permalink
opcode and event
Browse files Browse the repository at this point in the history
  • Loading branch information
shigma committed Sep 22, 2023
1 parent f5073c0 commit ab5496d
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 23 deletions.
41 changes: 36 additions & 5 deletions zh-CN/protocol/events.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,27 @@

Satori 协议规定了两套事件服务,分别基于 WebSocket 和 WebHook。你可以根据自己的需要进行选择。

## 类型定义

### Event

| 字段 | 类型 | 描述 |
| --- | --- | --- |
| `id` | number | 事件 ID |
| `type` | string | 事件类型 |
| `platform` | string | 事件触发者的平台名称 |
| `self_id` | string | 事件触发者的平台账号 |
| `timestamp` | number | 事件触发的时间戳 |
| `channel` | [Channel](../resources/channel.md)? | 事件所属的频道 |
| `guild` | [Guild](../resources/guild.md)? | 事件所属的群组 |
| `member` | [Member](../resources/member.md)? | 事件的目标成员 |
| `message` | [Message](../resources/message.md)? | 事件的消息 |
| `operator` | [User](../resources/user.md)? | 事件的操作者 |
| `role` | [Role](../resources/role.md)? | 事件的目标角色 |
| `user` | [User](../resources/user.md)? | 事件的目标用户 |

事件中的各属性遵循 [资源提升](./index.md) 的规则。

## WebSocket

WebSocket 服务用于在 Satori 客户端与服务器之间维护一个持久的、有状态的链接。通过这个链接,Satori 客户端可以实时接收服务器推送的事件。
Expand All @@ -14,17 +35,27 @@ WebSocket 服务的地址为 `/{version}/events`。其中,`version` 为 API

总的来说,Satori 的客户端需要在连接后遵循以下步骤:

1. 连接建立后,与服务端每隔 10s 发送一次 `heartbeat` 信令<br>服务端收到后会回复一个 `heartbeat` 信令
2. 连接建立后, 10s 内发送一个 `identify` 信令,用于鉴权和恢复会话<br>服务端收到后会回复一个 `ready` 信令,并开启事件推送
3. 客户端持续接收来自服务端的 `dispatch` 信令,用于接收事件
1. 连接建立后, 10s 内发送一个 `IDENTIFY` 信令,用于鉴权和恢复会话;<br>服务端收到后会回复一个 `READY` 信令,并开启事件推送;
1. 连接建立后,与服务端每隔 10s 发送一次 `PING` 信令<br>服务端收到后会回复一个 `PONG` 信令
1. 客户端持续接收来自服务端的 `EVENT` 信令,用于接收事件

信令的数据结构如下:

| 字段 | 类型 | 描述 |
| ---- | ---- | ---- |
| `op` | string | 信令类型 |
| --- | --- | --- |
| `op` | number | 信令类型 |
| `body` | object | 信令数据 |

信令类型如下:

| 名称 || 描述 |
| --- | --- | --- |
| EVENT | 0 | 事件 |
| PING | 1 | 心跳 |
| PONG | 2 | 心跳回复 |
| IDENTIFY | 3 | 鉴权 |
| READY | 4 | 鉴权回复 |

## WebHook

::: danger
Expand Down
6 changes: 1 addition & 5 deletions zh-CN/resources/channel.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

### Channel.Type

| 常量 || 描述 |
| 名称 || 描述 |
| --- | --- | --- |
| TEXT | 0 | 文本频道 |
| VOICE | 1 | 语音频道 |
Expand Down Expand Up @@ -42,7 +42,3 @@
| next | string | 分页令牌 |

获取群组中的全部频道。返回一个 [Channel](#channel)[分页列表](../protocol/api.md#分页)

## 事件

### 频道可见
6 changes: 3 additions & 3 deletions zh-CN/resources/guild.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@

### guild-added

加入群组时触发。包含一个 [Guild](#guild) 对象。
加入群组时触发。

### guild-updated

群组被修改时触发。包含一个 [Guild](#guild) 对象。
群组被修改时触发。

### guild-removed

退出群组时触发。包含一个 [Guild](#guild) 对象,部分属性可能缺失。
退出群组时触发。
6 changes: 3 additions & 3 deletions zh-CN/resources/member.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,12 @@

### guild-member-added

群组成员增加时触发。包含一个 [Member](#member) 对象。
群组成员增加时触发。

### guild-member-updated

群组成员增加时触发。包含一个 [Member](#member) 对象。
群组成员增加时触发。

### guild-member-removed

群组成员增加时触发。包含一个 [Member](#member) 对象,部分属性可能缺失。
群组成员增加时触发。
6 changes: 3 additions & 3 deletions zh-CN/resources/message.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,12 @@

### message-created

当消息被创建时触发。包含一个 [Message](#message) 对象。
当消息被创建时触发。

### message-updated

当消息被编辑时触发。包含一个 [Message](#message) 对象。
当消息被编辑时触发。

### message-deleted

当消息被删除时触发。包含一个 [Message](#message) 对象,部分属性可能缺失。
当消息被删除时触发。
6 changes: 3 additions & 3 deletions zh-CN/resources/role.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,12 @@

### guild-role-created

群组角色被创建时触发。包含一个 [Role](#role) 对象。
群组角色被创建时触发。

### guild-role-updated

群组角色被修改时触发。包含一个 [Role](#role) 对象。
群组角色被修改时触发。

### guild-role-deleted

群组角色被删除时触发。包含一个 [Role](#role) 对象,部分属性可能缺失。
群组角色被删除时触发。
2 changes: 1 addition & 1 deletion zh-CN/resources/user.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,4 @@
- **comment:** `string` 备注信息
- 返回值: `Promise<void>`

处理好友请求。
处理好友请求。

0 comments on commit ab5496d

Please sign in to comment.