chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,166 @@
|
||||
// WeChat Work (企业微信) protocol type definitions
|
||||
// Extracted from the ClawBot WeChat plugin API
|
||||
|
||||
// ── Enums ──────────────────────────────────────────────────────────────────
|
||||
|
||||
export enum MessageType {
|
||||
USER = 1,
|
||||
BOT = 2,
|
||||
}
|
||||
|
||||
export enum MessageItemType {
|
||||
TEXT = 1,
|
||||
IMAGE = 2,
|
||||
VOICE = 3,
|
||||
FILE = 4,
|
||||
VIDEO = 5,
|
||||
}
|
||||
|
||||
export enum MessageState {
|
||||
NEW = 0,
|
||||
GENERATING = 1,
|
||||
FINISH = 2,
|
||||
}
|
||||
|
||||
// ── Media ──────────────────────────────────────────────────────────────────
|
||||
|
||||
export interface CDNMedia {
|
||||
aes_key: string;
|
||||
encrypt_query_param: string;
|
||||
cdn_url?: string;
|
||||
}
|
||||
|
||||
// ── Message Items ───────────────────────────────────────────────────────────
|
||||
|
||||
export interface TextItem {
|
||||
text: string;
|
||||
}
|
||||
|
||||
export interface ImageItem {
|
||||
cdn_media?: CDNMedia;
|
||||
/** Alternative field name used by some API versions */
|
||||
aeskey?: string;
|
||||
media?: { encrypt_query_param: string; aes_key?: string; encrypt_type?: number };
|
||||
url?: string;
|
||||
mid_size?: number;
|
||||
hd_size?: number;
|
||||
}
|
||||
|
||||
export interface VoiceItem {
|
||||
media?: CDNMedia;
|
||||
/** 语音转文字内容 */
|
||||
text?: string;
|
||||
}
|
||||
|
||||
export interface FileItem {
|
||||
cdn_media?: CDNMedia;
|
||||
media?: { encrypt_query_param: string; aes_key?: string; encrypt_type?: number };
|
||||
file_name?: string;
|
||||
len?: string;
|
||||
}
|
||||
|
||||
export interface VideoItem {
|
||||
cdn_media: CDNMedia;
|
||||
}
|
||||
|
||||
export interface MessageItem {
|
||||
type: MessageItemType;
|
||||
text_item?: TextItem;
|
||||
image_item?: ImageItem;
|
||||
voice_item?: VoiceItem;
|
||||
file_item?: FileItem;
|
||||
video_item?: VideoItem;
|
||||
}
|
||||
|
||||
// ── Weixin Message ──────────────────────────────────────────────────────────
|
||||
|
||||
export interface WeixinMessage {
|
||||
seq?: number;
|
||||
message_id?: number;
|
||||
from_user_id?: string;
|
||||
to_user_id?: string;
|
||||
create_time_ms?: number;
|
||||
message_type?: MessageType;
|
||||
message_state?: MessageState;
|
||||
item_list?: MessageItem[];
|
||||
context_token?: string;
|
||||
}
|
||||
|
||||
// ── GetUpdates API ──────────────────────────────────────────────────────────
|
||||
|
||||
export interface GetUpdatesReq {
|
||||
get_updates_buf?: string;
|
||||
}
|
||||
|
||||
export interface GetUpdatesResp {
|
||||
ret?: number;
|
||||
retmsg?: string;
|
||||
sync_buf: string;
|
||||
get_updates_buf: string;
|
||||
msgs?: WeixinMessage[];
|
||||
}
|
||||
|
||||
// ── SendMessage API ─────────────────────────────────────────────────────────
|
||||
|
||||
export interface OutboundMessage {
|
||||
from_user_id: string;
|
||||
to_user_id: string;
|
||||
client_id: string;
|
||||
message_type: MessageType;
|
||||
message_state: MessageState;
|
||||
context_token: string;
|
||||
item_list: MessageItem[];
|
||||
}
|
||||
|
||||
export interface SendMessageReq {
|
||||
msg: OutboundMessage;
|
||||
}
|
||||
|
||||
// ── Typing API ──────────────────────────────────────────────────────────────
|
||||
|
||||
export const TypingStatus = {
|
||||
TYPING: 1,
|
||||
CANCEL: 2,
|
||||
} as const;
|
||||
|
||||
export interface SendTypingReq {
|
||||
ilink_user_id: string;
|
||||
typing_ticket: string;
|
||||
status: number;
|
||||
}
|
||||
|
||||
export interface GetConfigResp {
|
||||
ret?: number;
|
||||
errmsg?: string;
|
||||
typing_ticket?: string;
|
||||
}
|
||||
|
||||
// ── GetUploadUrl API ────────────────────────────────────────────────────────
|
||||
|
||||
export const UploadMediaType = {
|
||||
IMAGE: 1,
|
||||
VIDEO: 2,
|
||||
FILE: 3,
|
||||
VOICE: 4,
|
||||
} as const;
|
||||
|
||||
export interface GetUploadUrlReq {
|
||||
filekey: string;
|
||||
media_type: number;
|
||||
to_user_id: string;
|
||||
rawsize: number;
|
||||
rawfilemd5: string;
|
||||
filesize: number;
|
||||
no_need_thumb: boolean;
|
||||
aeskey: string;
|
||||
base_info: {
|
||||
channel_version: string;
|
||||
bot_agent: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface GetUploadUrlResp {
|
||||
ret?: number;
|
||||
upload_param?: string;
|
||||
upload_full_url?: string;
|
||||
}
|
||||
Reference in New Issue
Block a user