mirror of
https://github.com/chrononeko/chronocat.git
synced 2024-11-16 12:51:39 +00:00
feat(shell): satori: add types
This commit is contained in:
parent
d05928ddba
commit
bf0c5da545
2
packages/shell/src/satori/types/index.ts
Normal file
2
packages/shell/src/satori/types/index.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export * from './satoriEntity'
|
||||
export * from './satoriPayloadRich'
|
283
packages/shell/src/satori/types/satoriEntity.ts
Normal file
283
packages/shell/src/satori/types/satoriEntity.ts
Normal file
@ -0,0 +1,283 @@
|
||||
export enum Op {
|
||||
Event = 0,
|
||||
Ping = 1,
|
||||
Pong = 2,
|
||||
Identify = 3,
|
||||
Ready = 4,
|
||||
}
|
||||
|
||||
export interface Event {
|
||||
/**
|
||||
* 事件 ID
|
||||
*/
|
||||
id: number
|
||||
|
||||
/**
|
||||
* 事件类型
|
||||
*/
|
||||
type: string
|
||||
|
||||
/**
|
||||
* 接收者的平台名称
|
||||
*/
|
||||
platform: string
|
||||
|
||||
/**
|
||||
* 接收者的平台账号
|
||||
*/
|
||||
self_id: string
|
||||
|
||||
/**
|
||||
* 事件的时间戳
|
||||
*/
|
||||
timestamp: number
|
||||
|
||||
/**
|
||||
* 事件所属的频道
|
||||
*/
|
||||
channel?: Channel
|
||||
|
||||
/**
|
||||
* 事件所属的群组
|
||||
*/
|
||||
guild?: Guild
|
||||
|
||||
/**
|
||||
* 事件的登录信息
|
||||
*/
|
||||
login?: Login
|
||||
|
||||
/**
|
||||
* 事件的目标成员
|
||||
*/
|
||||
member?: GuildMember
|
||||
|
||||
/**
|
||||
* 事件的消息
|
||||
*/
|
||||
message?: Message
|
||||
|
||||
/**
|
||||
* 事件的操作者
|
||||
*/
|
||||
operator?: User
|
||||
|
||||
/**
|
||||
* 事件的目标角色
|
||||
*/
|
||||
role?: GuildRole
|
||||
|
||||
/**
|
||||
* 事件的目标用户
|
||||
*/
|
||||
user?: User
|
||||
}
|
||||
|
||||
export interface Channel {
|
||||
/**
|
||||
* 频道 ID
|
||||
*/
|
||||
id: string
|
||||
|
||||
/**
|
||||
* 频道名称
|
||||
*/
|
||||
name?: string
|
||||
|
||||
/**
|
||||
* 频道类型
|
||||
*/
|
||||
type: ChannelType
|
||||
|
||||
/**
|
||||
* 父频道 ID
|
||||
*/
|
||||
parent_id?: string
|
||||
|
||||
/**
|
||||
* 不安全的频道头像
|
||||
*/
|
||||
avatar: string
|
||||
}
|
||||
|
||||
export enum ChannelType {
|
||||
/**
|
||||
* 文本频道
|
||||
*/
|
||||
TEXT = 0,
|
||||
|
||||
/**
|
||||
* 私聊频道
|
||||
*/
|
||||
DIRECT = 1,
|
||||
|
||||
/**
|
||||
* 分类频道
|
||||
*/
|
||||
CATEGORY = 2,
|
||||
|
||||
/**
|
||||
* 语音频道
|
||||
*/
|
||||
VOICE = 3,
|
||||
}
|
||||
|
||||
export interface Guild {
|
||||
/**
|
||||
* 群组 ID
|
||||
*/
|
||||
id: string
|
||||
|
||||
/**
|
||||
* 群组名称
|
||||
*/
|
||||
name: string
|
||||
|
||||
/**
|
||||
* 不安全的群组头像
|
||||
*/
|
||||
avatar: string
|
||||
}
|
||||
|
||||
export interface Login {
|
||||
/**
|
||||
* 用户对象
|
||||
*/
|
||||
user?: User
|
||||
|
||||
/**
|
||||
* 平台账号
|
||||
*/
|
||||
self_id?: string
|
||||
|
||||
/**
|
||||
* 平台名称
|
||||
*/
|
||||
platform?: string
|
||||
|
||||
/**
|
||||
* 在线状态
|
||||
*/
|
||||
status: LoginStatus
|
||||
}
|
||||
|
||||
export enum LoginStatus {
|
||||
/**
|
||||
* 离线
|
||||
*/
|
||||
OFFLINE = 0,
|
||||
|
||||
/**
|
||||
* 在线
|
||||
*/
|
||||
ONLINE = 1,
|
||||
|
||||
/**
|
||||
* 连接中
|
||||
*/
|
||||
CONNECT = 2,
|
||||
|
||||
/**
|
||||
* 断开连接
|
||||
*/
|
||||
DISCONNECT = 3,
|
||||
|
||||
/**
|
||||
* 重新连接
|
||||
*/
|
||||
RECONNECT = 4,
|
||||
}
|
||||
|
||||
export interface GuildMember {
|
||||
/**
|
||||
* 用户对象
|
||||
*/
|
||||
user?: User
|
||||
|
||||
/**
|
||||
* 用户在群组中的名称
|
||||
*/
|
||||
nick?: string
|
||||
|
||||
/**
|
||||
* 用户在群组中的头像
|
||||
*/
|
||||
avatar?: string
|
||||
}
|
||||
|
||||
export interface Message {
|
||||
/**
|
||||
* 消息 ID
|
||||
*/
|
||||
id: string
|
||||
|
||||
/**
|
||||
* 消息内容
|
||||
*/
|
||||
content: string
|
||||
|
||||
/**
|
||||
* 频道对象
|
||||
*/
|
||||
channel?: Channel
|
||||
|
||||
/**
|
||||
* 群组对象
|
||||
*/
|
||||
guild?: Guild
|
||||
|
||||
/**
|
||||
* 成员对象
|
||||
*/
|
||||
member?: GuildMember
|
||||
|
||||
/**
|
||||
* 用户对象
|
||||
*/
|
||||
user?: User
|
||||
|
||||
/**
|
||||
* 消息发送的时间戳
|
||||
*/
|
||||
created_at?: number
|
||||
|
||||
/**
|
||||
* 消息修改的时间戳
|
||||
*/
|
||||
updated_at?: number
|
||||
}
|
||||
|
||||
export interface User {
|
||||
/**
|
||||
* 用户 ID
|
||||
*/
|
||||
id: string
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
name?: string
|
||||
/**
|
||||
* 用户昵称
|
||||
*/
|
||||
nick?: string
|
||||
/**
|
||||
* 用户头像
|
||||
*/
|
||||
avatar?: string
|
||||
/**
|
||||
* 是否为机器人
|
||||
*/
|
||||
is_bot?: boolean
|
||||
}
|
||||
|
||||
export interface GuildRole {
|
||||
/**
|
||||
* 角色 ID
|
||||
*/
|
||||
id: string
|
||||
|
||||
/**
|
||||
* 角色名称
|
||||
*/
|
||||
name?: string
|
||||
}
|
122
packages/shell/src/satori/types/satoriPayloadEntity.ts
Normal file
122
packages/shell/src/satori/types/satoriPayloadEntity.ts
Normal file
@ -0,0 +1,122 @@
|
||||
import type { Guild, GuildMember, User } from './satoriEntity'
|
||||
|
||||
export interface Next {
|
||||
/**
|
||||
* @title 分页令牌
|
||||
*
|
||||
* @description 获取下一页时提供的分页令牌,获取第一页时为空。
|
||||
*/
|
||||
next?: string
|
||||
}
|
||||
|
||||
export interface MessageCreatePayload {
|
||||
/**
|
||||
* @title 目标频道
|
||||
*
|
||||
* @description 消息要发送到的频道。
|
||||
*
|
||||
* 在 Chronocat,群聊对应的频道为群号,
|
||||
* 私聊对应的频道为 private: 后跟 QQ 号。
|
||||
*/
|
||||
channel_id: string
|
||||
|
||||
/**
|
||||
* @title 消息内容
|
||||
*
|
||||
* @description 消息的内容。
|
||||
*
|
||||
* 格式为 Satori 消息元素字符串。
|
||||
*/
|
||||
content: string
|
||||
}
|
||||
|
||||
export interface ApprovePayload {
|
||||
/**
|
||||
* 请求 ID
|
||||
*/
|
||||
message_id: string
|
||||
|
||||
/**
|
||||
* 是否通过请求
|
||||
*/
|
||||
approve: boolean
|
||||
|
||||
/**
|
||||
* 备注信息
|
||||
*/
|
||||
comment: string | undefined
|
||||
}
|
||||
|
||||
export interface FriendListResponse extends Next {
|
||||
data: User[]
|
||||
}
|
||||
|
||||
export interface GuildListResponse extends Next {
|
||||
data: Guild[]
|
||||
}
|
||||
|
||||
export interface UserPayload {
|
||||
user_id: string
|
||||
|
||||
// 仅限 Chronocat,此处无需 guild_id。
|
||||
}
|
||||
|
||||
export interface GuildMemberListPayload extends Next {
|
||||
guild_id: string
|
||||
}
|
||||
|
||||
export interface GuildMemberListResponse extends Next {
|
||||
data: GuildMember[]
|
||||
}
|
||||
|
||||
export interface GuildRemovePayload {
|
||||
guild_id: string
|
||||
}
|
||||
|
||||
export interface MessageDeletePayload {
|
||||
channel_id: string
|
||||
message_id: string
|
||||
}
|
||||
|
||||
export interface MessageGetPayload {
|
||||
channel_id: string
|
||||
message_id: string
|
||||
}
|
||||
|
||||
export interface ChannelMutePayload {
|
||||
channel_id: string
|
||||
enable: boolean
|
||||
}
|
||||
|
||||
export interface ChannelMemberMutePayload {
|
||||
channel_id: string
|
||||
user_id: string
|
||||
duration: number
|
||||
}
|
||||
|
||||
export interface ChannelListPayload extends Next {
|
||||
guild_id: string
|
||||
}
|
||||
|
||||
export interface ChannelGetPayload {
|
||||
channel_id: string
|
||||
}
|
||||
|
||||
export interface GuildGetPayload {
|
||||
guild_id: string
|
||||
}
|
||||
|
||||
export interface UserGetPayload {
|
||||
user_id: string
|
||||
}
|
||||
|
||||
export interface GuildMemberGetPayload {
|
||||
guild_id: string
|
||||
user_id: string
|
||||
}
|
||||
|
||||
export interface GuildMemberKickPayload {
|
||||
guild_id: string
|
||||
user_id: string
|
||||
permanent?: boolean
|
||||
}
|
36
packages/shell/src/satori/types/satoriPayloadRich.ts
Normal file
36
packages/shell/src/satori/types/satoriPayloadRich.ts
Normal file
@ -0,0 +1,36 @@
|
||||
import type h from '@satorijs/element'
|
||||
import type { Op } from './satoriEntity'
|
||||
|
||||
export type {
|
||||
ApprovePayload,
|
||||
FriendListResponse,
|
||||
GuildListResponse,
|
||||
GuildMemberListPayload,
|
||||
GuildMemberListResponse,
|
||||
GuildRemovePayload,
|
||||
MessageDeletePayload,
|
||||
MessageGetPayload,
|
||||
Next,
|
||||
UserPayload,
|
||||
} from './satoriPayloadEntity'
|
||||
|
||||
export type WebSocketIncomingMessage =
|
||||
| WebSocketIncomingHeartbeatMessage
|
||||
| WebSocketIncomingVerifyMessage
|
||||
|
||||
export interface WebSocketIncomingHeartbeatMessage {
|
||||
op: Op.Ping
|
||||
body: never
|
||||
}
|
||||
|
||||
export interface WebSocketIncomingVerifyMessage {
|
||||
op: Op.Identify
|
||||
body?: {
|
||||
token?: string
|
||||
}
|
||||
}
|
||||
|
||||
export interface MessageCreatePayload {
|
||||
channel_id: string
|
||||
content: h.Fragment
|
||||
}
|
Loading…
Reference in New Issue
Block a user