koishi-plugin-adapter-matrix
Version:
Matrix Adapter for koishi
386 lines (385 loc) • 10.2 kB
TypeScript
/// <reference types="node" />
import { Dict } from '@satorijs/satori';
import { MatrixBot } from './bot';
export interface Transaction {
txnId: string;
events: ClientEvent[];
}
export interface ClientEvent {
content: EventContent;
event_id: string;
origin_server_ts: number;
redacts?: string;
room_id: string;
sender: string;
state_key?: string;
type: string;
unsigned?: UnsignedData;
}
export interface UnsignedData {
age?: number;
prev_content?: EventContent;
redacted_because?: ClientEvent;
transaction_id?: string;
}
export interface PreviousRoom {
event_id: string;
room_id: string;
}
export interface AllowCondition {
room_id?: string;
type: 'm.room_membership';
}
export interface Invite {
display_name: string;
signed: Signed;
}
export interface Signed {
mxid: string;
signatures: any;
token: string;
}
export interface Notifications {
room?: number;
}
export interface ThumbnailInfo {
h?: number;
mimetype?: string;
size?: number;
w?: number;
}
export interface ImageInfo {
h?: number;
mimetype?: string;
size?: number;
thumbnail_file?: any;
thumbnail_info?: ThumbnailInfo;
thumbnail_url?: string;
w?: number;
}
export interface FileInfo {
mimetype?: string;
size?: number;
thumbnail_file?: any;
thumbnail_info?: ThumbnailInfo;
thumbnail_url?: string;
}
export interface AudioInfo {
duration?: number;
mimetype?: string;
size?: number;
}
export interface LocationInfo {
thumbnail_file?: any;
thumbnail_info?: ThumbnailInfo;
thumbnail_url?: string;
}
export interface VideoInfo {
duration?: number;
h?: number;
mimetype?: string;
size?: number;
thumbnail_file?: any;
thumbnail_info?: ThumbnailInfo;
thumbnail_url?: string;
w?: number;
}
export interface PublicKeys {
key_validity_url?: string;
public_key: string;
}
export interface Profile {
avatar_url?: string;
displayname?: string;
}
export interface User {
access_token?: string;
device_id?: string;
user_id?: string;
}
export interface RoomId {
room_id: string;
}
export interface Sync {
account_data?: AccountData;
next_batch: string;
presence?: Presence;
rooms?: Rooms;
}
export interface AccountData {
events?: ClientEvent[];
}
export interface Presence {
events?: ClientEvent[];
}
export interface Rooms {
invite?: Dict<InvitedRoom>;
join?: Dict<JoinedRoom>;
knock?: Dict<KnockedRoom>;
leave?: Dict<LeftRoom>;
}
export interface InvitedRoom {
invite_state?: InviteState;
}
export interface InviteState {
events?: ClientEvent[];
}
export interface JoinedRoom {
account_data?: AccountData;
ephemeral?: Ephemeral;
state?: State;
summary?: RoomSummary;
timeline?: Timeline;
unread_notifications?: UnreadNotificationCounts;
unread_thread_notifications?: Dict<ThreadNotificationCounts>;
}
export interface Ephemeral {
events?: ClientEvent[];
}
export interface State {
events?: ClientEvent[];
}
export interface RoomSummary {
'm.heroes'?: string[];
'm.invited_member_count'?: number;
'm.joined_member_count'?: number;
}
export interface Timeline {
events: ClientEvent[];
limited?: boolean;
prev_batch?: string;
}
export interface UnreadNotificationCounts {
highlight_count?: number;
notification_count?: number;
}
export interface ThreadNotificationCounts {
highlight_count?: number;
notification_count?: number;
}
export interface KnockedRoom {
knock_state?: KnockState;
}
export interface KnockState {
events?: ClientEvent[];
}
export interface LeftRoom {
account_data?: AccountData;
state?: State;
timeline?: Timeline;
}
export interface EventContent {
}
export interface Relation {
event_id?: string;
rel_type?: string;
'm.in_reply_to'?: {
event_id: string;
};
}
export interface M_ROOM_CANONICAL_ALIAS extends EventContent {
alias?: string;
alt_aliases?: string[];
}
export interface M_ROOM_CREATE extends EventContent {
creator: string;
'm.federate'?: boolean;
predecessor?: PreviousRoom;
room_version?: string;
type?: string;
}
export interface M_ROOM_JOIN_RULES extends EventContent {
allow?: AllowCondition[];
join_rule?: 'public' | 'knock' | 'invite' | 'private' | 'restricted';
}
export interface M_ROOM_MEMBER extends EventContent {
avatar_url?: string;
displayname?: string[];
is_direct?: boolean;
join_authorised_via_users_server?: string;
membership?: 'invite' | 'join' | 'knock' | 'leave' | 'ban';
reason?: string;
third_party_invite?: Invite;
}
export interface M_ROOM_POWER_LEVELS extends EventContent {
ban?: number;
events?: Record<string, number>;
events_default?: number;
invite?: number;
kick?: number;
notifications?: Notifications;
redact?: number;
state_default?: number;
users?: Record<string, number>;
users_default?: number;
}
export interface M_ROOM_REDACTION extends EventContent {
reason?: string;
}
export interface M_ROOM_MESSAGE extends EventContent {
body: string;
msgtype: string;
'm.relates_to'?: Relation;
'm.new_content'?: M_ROOM_MESSAGE;
}
export interface M_ROOM_MESSAGE_FEEDBACK extends EventContent {
target_event_id: string;
type: 'delivered' | 'read';
}
export interface M_ROOM_NAME extends EventContent {
name: string;
}
export interface M_ROOM_TOPIC extends EventContent {
topic: string;
}
export interface M_ROOM_AVATAR extends EventContent {
info?: ImageInfo;
url: string;
}
export interface M_ROOM_PINNED_EVENTS extends EventContent {
pinned: string[];
}
export interface M_TEXT extends M_ROOM_MESSAGE {
body: string;
format?: 'org.matrix.custom.html';
formatted_body?: string;
msgtype: 'm.text';
}
export interface M_EMOTE extends M_ROOM_MESSAGE {
body: string;
format?: 'org.matrix.custom.html';
formatted_body?: string;
msgtype: 'm.emote';
}
export interface M_NOTICE extends M_ROOM_MESSAGE {
body: string;
format?: 'org.matrix.custom.html';
formatted_body?: string;
msgtype: 'm.notice';
}
export interface M_IMAGE extends M_ROOM_MESSAGE {
body: string;
file?: any;
info?: ImageInfo;
msgtype: 'm.image';
url?: string;
}
export interface M_FILE extends M_ROOM_MESSAGE {
body: string;
file?: any;
filename?: string;
info?: FileInfo;
msgtype: 'm.file';
url?: string;
}
export interface M_AUDIO extends M_ROOM_MESSAGE {
body: string;
file?: any;
filename?: string;
info?: AudioInfo;
msgtype: 'm.audio';
url?: string;
}
export interface M_LOCATION extends M_ROOM_MESSAGE {
body: string;
geo_uri: string;
info?: LocationInfo;
msgtype: 'm.location';
}
export interface M_VIDEO extends M_ROOM_MESSAGE {
body: string;
file?: any;
info?: VideoInfo;
msgtype: 'm.video';
url?: string;
}
export interface M_TYPING extends EventContent {
user_ids: string[];
}
export interface M_RECEIPT extends EventContent {
}
export interface M_FULLY_READ extends EventContent {
event_id: string;
}
export interface M_PRESENCE extends EventContent {
avatar_url?: string;
currently_actice?: boolean;
displayname?: string;
last_active_ago?: number;
presence?: 'online' | 'offline' | 'unavailable';
status_msg?: string;
}
export interface M_ROOM_HISTORY_VISIBILITY extends EventContent {
history_visibility: 'invited' | 'joined' | 'shared' | 'world_readable';
}
export interface M_ROOM_THIRD_PATRY_INVITE extends EventContent {
display_name: string;
key_validity_url: string;
public_key: string;
public_keys: PublicKeys[];
}
export interface M_ROOM_GUEST_ACCESS extends EventContent {
guest_access: 'can_join' | 'forbidden';
}
export interface M_IGNORED_USER_LIST extends EventContent {
ignored_users: Record<string, any>;
}
export interface M_STICKER extends EventContent {
body: string;
info: ImageInfo;
url: string;
}
export interface M_ROOM_SERVER_ACL extends EventContent {
allow?: string[];
allow_ip_literals?: boolean;
deny?: string[];
}
export interface M_ROOM_TOMBSTONE extends EventContent {
body: string;
replacement_room: string;
}
export interface M_POLICY_RULE_USER extends EventContent {
entity: string;
reason: string;
recommendation: string;
}
export interface M_POLICY_RULE_ROOM extends EventContent {
entity: string;
reason: string;
recommendation: string;
}
export interface M_POLICY_RULE_SERVER extends EventContent {
entity: string;
reason: string;
recommendation: string;
}
export interface M_SPACE_CHILD extends EventContent {
order?: string;
suggested?: boolean;
via?: string[];
}
export interface M_SPACE_PARENT extends EventContent {
canonical?: boolean;
via?: string[];
}
export declare class Internal {
bot: MatrixBot;
private txnId;
constructor(bot: MatrixBot);
uploadFile(filename: string, buffer: Buffer, mimetype?: string): Promise<string>;
sendTextMessage(roomId: string, userId: string, content: string, reply?: string): Promise<string>;
sendMediaMessage(roomId: string, userId: string, type: 'file' | 'image' | 'video' | 'audio', buffer: Buffer, reply?: string, mimetype?: string, filename?: string): Promise<string>;
getEvent(roomId: string, eventId: string): Promise<ClientEvent>;
redactEvent(roomId: string, eventId: string, reason?: string): Promise<string>;
getProfile(userId: string): Promise<Profile>;
setDisplayName(userId: string, displayname: string): Promise<void>;
setAvatar(userId: string, buffer: Buffer, mimetype: string): Promise<void>;
joinRoom(roomId: string, reason?: string): Promise<RoomId>;
leaveRoom(roomId: string, reason?: string): Promise<RoomId>;
sync(fullSstate?: boolean): Promise<Sync>;
getState(roomId: string): Promise<ClientEvent[]>;
getJoinedRooms(): Promise<string[]>;
register(username: string, asToken: string): Promise<User>;
login(username: string, asToken: string): Promise<User>;
getAssetUrl(mxc: string): string;
}