openclaw-rocketchat 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +694 -0
  3. package/README.md +730 -0
  4. package/dist/cli/add-bot.d.ts +2 -0
  5. package/dist/cli/add-bot.d.ts.map +1 -0
  6. package/dist/cli/add-bot.js +138 -0
  7. package/dist/cli/add-bot.js.map +1 -0
  8. package/dist/cli/add-group.d.ts +2 -0
  9. package/dist/cli/add-group.d.ts.map +1 -0
  10. package/dist/cli/add-group.js +145 -0
  11. package/dist/cli/add-group.js.map +1 -0
  12. package/dist/cli/add-user.d.ts +2 -0
  13. package/dist/cli/add-user.d.ts.map +1 -0
  14. package/dist/cli/add-user.js +186 -0
  15. package/dist/cli/add-user.js.map +1 -0
  16. package/dist/cli/invite.d.ts +2 -0
  17. package/dist/cli/invite.d.ts.map +1 -0
  18. package/dist/cli/invite.js +194 -0
  19. package/dist/cli/invite.js.map +1 -0
  20. package/dist/cli/prompts.d.ts +24 -0
  21. package/dist/cli/prompts.d.ts.map +1 -0
  22. package/dist/cli/prompts.js +134 -0
  23. package/dist/cli/prompts.js.map +1 -0
  24. package/dist/cli/remove-user.d.ts +2 -0
  25. package/dist/cli/remove-user.d.ts.map +1 -0
  26. package/dist/cli/remove-user.js +108 -0
  27. package/dist/cli/remove-user.js.map +1 -0
  28. package/dist/cli/setup.d.ts +2 -0
  29. package/dist/cli/setup.d.ts.map +1 -0
  30. package/dist/cli/setup.js +446 -0
  31. package/dist/cli/setup.js.map +1 -0
  32. package/dist/cli/status.d.ts +2 -0
  33. package/dist/cli/status.d.ts.map +1 -0
  34. package/dist/cli/status.js +161 -0
  35. package/dist/cli/status.js.map +1 -0
  36. package/dist/cli/uninstall.d.ts +2 -0
  37. package/dist/cli/uninstall.d.ts.map +1 -0
  38. package/dist/cli/uninstall.js +81 -0
  39. package/dist/cli/uninstall.js.map +1 -0
  40. package/dist/config/credentials.d.ts +26 -0
  41. package/dist/config/credentials.d.ts.map +1 -0
  42. package/dist/config/credentials.js +169 -0
  43. package/dist/config/credentials.js.map +1 -0
  44. package/dist/config/writer.d.ts +52 -0
  45. package/dist/config/writer.d.ts.map +1 -0
  46. package/dist/config/writer.js +170 -0
  47. package/dist/config/writer.js.map +1 -0
  48. package/dist/docker/compose.d.ts +10 -0
  49. package/dist/docker/compose.d.ts.map +1 -0
  50. package/dist/docker/compose.js +56 -0
  51. package/dist/docker/compose.js.map +1 -0
  52. package/dist/docker/manager.d.ts +38 -0
  53. package/dist/docker/manager.d.ts.map +1 -0
  54. package/dist/docker/manager.js +219 -0
  55. package/dist/docker/manager.js.map +1 -0
  56. package/dist/index.d.ts +5 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +203 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/rc-api/rest-client.d.ts +64 -0
  61. package/dist/rc-api/rest-client.d.ts.map +1 -0
  62. package/dist/rc-api/rest-client.js +268 -0
  63. package/dist/rc-api/rest-client.js.map +1 -0
  64. package/dist/rc-api/types.d.ts +158 -0
  65. package/dist/rc-api/types.d.ts.map +1 -0
  66. package/dist/rc-api/types.js +5 -0
  67. package/dist/rc-api/types.js.map +1 -0
  68. package/dist/rc-api/ws-client.d.ts +47 -0
  69. package/dist/rc-api/ws-client.d.ts.map +1 -0
  70. package/dist/rc-api/ws-client.js +308 -0
  71. package/dist/rc-api/ws-client.js.map +1 -0
  72. package/dist/service/bot-manager.d.ts +34 -0
  73. package/dist/service/bot-manager.d.ts.map +1 -0
  74. package/dist/service/bot-manager.js +156 -0
  75. package/dist/service/bot-manager.js.map +1 -0
  76. package/dist/service/channel.d.ts +35 -0
  77. package/dist/service/channel.d.ts.map +1 -0
  78. package/dist/service/channel.js +157 -0
  79. package/dist/service/channel.js.map +1 -0
  80. package/dist/service/message-handler.d.ts +45 -0
  81. package/dist/service/message-handler.d.ts.map +1 -0
  82. package/dist/service/message-handler.js +207 -0
  83. package/dist/service/message-handler.js.map +1 -0
  84. package/openclaw.plugin.json +45 -0
  85. package/package.json +61 -0
@@ -0,0 +1,219 @@
1
+ // ============================================================
2
+ // Docker 容器生命周期管理
3
+ // ============================================================
4
+ import { execFile } from "node:child_process";
5
+ import { promisify } from "node:util";
6
+ import { writeFile, mkdir } from "node:fs/promises";
7
+ import { existsSync } from "node:fs";
8
+ import { join } from "node:path";
9
+ import { networkInterfaces } from "node:os";
10
+ import { createConnection } from "node:net";
11
+ import { generateComposeYaml, generateEnvFile } from "./compose.js";
12
+ const execFileAsync = promisify(execFile);
13
+ export class DockerManager {
14
+ composeDir;
15
+ constructor(composeDir) {
16
+ this.composeDir = composeDir;
17
+ }
18
+ // ----------------------------------------------------------
19
+ // 环境检测
20
+ // ----------------------------------------------------------
21
+ /** 检查 Docker 是否已安装 */
22
+ async isDockerInstalled() {
23
+ try {
24
+ const { stdout } = await execFileAsync("docker", ["--version"]);
25
+ const match = stdout.match(/Docker version ([\d.]+)/);
26
+ return { installed: true, version: match?.[1] };
27
+ }
28
+ catch {
29
+ return { installed: false };
30
+ }
31
+ }
32
+ /** 检查 Docker Compose 是否可用 */
33
+ async isComposeInstalled() {
34
+ try {
35
+ const { stdout } = await execFileAsync("docker", [
36
+ "compose",
37
+ "version",
38
+ ]);
39
+ const match = stdout.match(/v?([\d.]+)/);
40
+ return { installed: true, version: match?.[1] };
41
+ }
42
+ catch {
43
+ return { installed: false };
44
+ }
45
+ }
46
+ /** 检查端口是否可用 */
47
+ async isPortAvailable(port) {
48
+ return new Promise((resolve) => {
49
+ const socket = createConnection({ port, host: "127.0.0.1" });
50
+ socket.setTimeout(1000);
51
+ socket.on("connect", () => {
52
+ socket.destroy();
53
+ resolve(false); // 端口被占用
54
+ });
55
+ socket.on("timeout", () => {
56
+ socket.destroy();
57
+ resolve(true); // 连接超时 = 端口可用
58
+ });
59
+ socket.on("error", () => {
60
+ resolve(true); // 连接失败 = 端口可用
61
+ });
62
+ });
63
+ }
64
+ // ----------------------------------------------------------
65
+ // Compose 文件管理
66
+ // ----------------------------------------------------------
67
+ /** 生成 docker-compose.yml 和 .env 文件 */
68
+ async generateComposeFile(port) {
69
+ await mkdir(this.composeDir, { recursive: true });
70
+ await writeFile(join(this.composeDir, "docker-compose.yml"), generateComposeYaml(port), "utf-8");
71
+ await writeFile(join(this.composeDir, ".env"), generateEnvFile(port), "utf-8");
72
+ }
73
+ // ----------------------------------------------------------
74
+ // 容器生命周期
75
+ // ----------------------------------------------------------
76
+ /** 启动容器 */
77
+ async start() {
78
+ await this.compose(["up", "-d"]);
79
+ }
80
+ /** 停止容器 */
81
+ async stop() {
82
+ await this.compose(["down"]);
83
+ }
84
+ /** 移除容器(可选删除卷) */
85
+ async remove(deleteVolumes) {
86
+ const args = ["down"];
87
+ if (deleteVolumes) {
88
+ args.push("-v");
89
+ }
90
+ await this.compose(args);
91
+ }
92
+ /** 获取容器状态 */
93
+ async getStatus() {
94
+ try {
95
+ const { stdout } = await this.compose(["ps", "--format", "json"]);
96
+ const lines = stdout
97
+ .trim()
98
+ .split("\n")
99
+ .filter((l) => l.startsWith("{"));
100
+ let rcStatus = "not_found";
101
+ let mongoStatus = "not_found";
102
+ let uptime;
103
+ for (const line of lines) {
104
+ try {
105
+ const info = JSON.parse(line);
106
+ const name = (info.Service || info.Name || "").toLowerCase();
107
+ const state = (info.State || "").toLowerCase();
108
+ if (name.includes("rocketchat")) {
109
+ rcStatus = state === "running" ? "running" : "stopped";
110
+ if (info.Status) {
111
+ uptime = info.Status;
112
+ }
113
+ }
114
+ else if (name.includes("mongo")) {
115
+ mongoStatus = state === "running" ? "running" : "stopped";
116
+ }
117
+ }
118
+ catch {
119
+ // 跳过无法解析的行
120
+ }
121
+ }
122
+ return { rocketchat: rcStatus, mongodb: mongoStatus, uptime };
123
+ }
124
+ catch {
125
+ return { rocketchat: "not_found", mongodb: "not_found" };
126
+ }
127
+ }
128
+ /** 等待 Rocket.Chat 就绪(轮询 /api/v1/info) */
129
+ async waitForReady(port, timeoutMs = 120000, onProgress) {
130
+ const start = Date.now();
131
+ const url = `http://127.0.0.1:${port}/api/v1/info`;
132
+ while (Date.now() - start < timeoutMs) {
133
+ try {
134
+ const response = await fetch(url, { signal: AbortSignal.timeout(5000) });
135
+ if (response.ok) {
136
+ return;
137
+ }
138
+ }
139
+ catch {
140
+ // 服务还没就绪,继续等待
141
+ }
142
+ const elapsed = Math.floor((Date.now() - start) / 1000);
143
+ onProgress?.(`等待服务就绪... (${elapsed}s)`);
144
+ await new Promise((r) => setTimeout(r, 3000));
145
+ }
146
+ throw new Error(`Rocket.Chat 启动超时(${Math.floor(timeoutMs / 1000)}秒),请检查 Docker 日志:docker compose -f "${join(this.composeDir, "docker-compose.yml")}" logs`);
147
+ }
148
+ // ----------------------------------------------------------
149
+ // 网络工具
150
+ // ----------------------------------------------------------
151
+ /**
152
+ * 获取本机非 loopback IP 地址
153
+ * 优先物理网卡(en0/eth0/wlan0),跳过 Docker/VPN 等虚拟接口
154
+ */
155
+ getHostIp() {
156
+ const interfaces = networkInterfaces();
157
+ // 应跳过的虚拟接口名称模式
158
+ const skipPatterns = [
159
+ /^docker/i,
160
+ /^br-/,
161
+ /^veth/,
162
+ /^virbr/,
163
+ /^vmnet/,
164
+ /^vboxnet/,
165
+ /^tailscale/i,
166
+ /^utun/, // macOS VPN
167
+ /^tun/,
168
+ /^tap/,
169
+ ];
170
+ // 优先的物理接口名称模式(macOS: en0/en1, Linux: eth0/wlan0/ens*)
171
+ const preferredPatterns = [
172
+ /^en\d+$/, // macOS Ethernet/WiFi
173
+ /^eth\d+$/, // Linux Ethernet
174
+ /^ens\d+$/, // Linux systemd Ethernet
175
+ /^enp\d+/, // Linux PCI Ethernet
176
+ /^wlan\d+$/, // Linux WiFi
177
+ /^wlp\d+/, // Linux PCI WiFi
178
+ ];
179
+ let fallbackIp = null;
180
+ // 第一遍:找优先接口
181
+ for (const pattern of preferredPatterns) {
182
+ for (const name of Object.keys(interfaces)) {
183
+ if (!pattern.test(name))
184
+ continue;
185
+ for (const iface of interfaces[name] || []) {
186
+ if (iface.family === "IPv4" && !iface.internal) {
187
+ return iface.address;
188
+ }
189
+ }
190
+ }
191
+ }
192
+ // 第二遍:找任意非虚拟接口
193
+ for (const name of Object.keys(interfaces)) {
194
+ if (skipPatterns.some((p) => p.test(name)))
195
+ continue;
196
+ for (const iface of interfaces[name] || []) {
197
+ if (iface.family === "IPv4" && !iface.internal) {
198
+ if (!fallbackIp)
199
+ fallbackIp = iface.address;
200
+ }
201
+ }
202
+ }
203
+ return fallbackIp || "127.0.0.1";
204
+ }
205
+ /** 检查 compose 文件是否存在 */
206
+ composeFileExists() {
207
+ return existsSync(join(this.composeDir, "docker-compose.yml"));
208
+ }
209
+ // ----------------------------------------------------------
210
+ // 内部:执行 docker compose 命令
211
+ // ----------------------------------------------------------
212
+ async compose(args) {
213
+ return execFileAsync("docker", ["compose", "-f", join(this.composeDir, "docker-compose.yml"), ...args], {
214
+ cwd: this.composeDir,
215
+ timeout: 300000, // 5 分钟超时(拉镜像可能很慢)
216
+ });
217
+ }
218
+ }
219
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/docker/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 插件入口:注册到 OpenClaw
3
+ */
4
+ export default function register(api: any): void;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgCA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CA2M/C"}
package/dist/index.js ADDED
@@ -0,0 +1,203 @@
1
+ // ============================================================
2
+ // @openclaw-community/rocketchat 插件入口
3
+ // 注册频道、CLI 命令、后台服务
4
+ // ============================================================
5
+ import { resolve } from "node:path";
6
+ import { ChannelService } from "./service/channel.js";
7
+ import { setupCommand } from "./cli/setup.js";
8
+ import { addBotCommand } from "./cli/add-bot.js";
9
+ import { addGroupCommand } from "./cli/add-group.js";
10
+ import { addUserCommand } from "./cli/add-user.js";
11
+ import { removeUserCommand } from "./cli/remove-user.js";
12
+ import { inviteCommand } from "./cli/invite.js";
13
+ import { statusCommand } from "./cli/status.js";
14
+ import { uninstallCommand } from "./cli/uninstall.js";
15
+ /** OpenClaw 配置文件路径的缓存 */
16
+ let configFilePath = "";
17
+ /** 频道服务实例 */
18
+ let channelService = null;
19
+ /**
20
+ * 获取 openclaw.json 路径
21
+ * OpenClaw Gateway 运行在用户的工作区内,配置文件在当前工作目录下
22
+ */
23
+ function getConfigPath() {
24
+ if (configFilePath)
25
+ return configFilePath;
26
+ // 默认路径
27
+ return resolve(process.cwd(), "openclaw.json");
28
+ }
29
+ /**
30
+ * 插件入口:注册到 OpenClaw
31
+ */
32
+ export default function register(api) {
33
+ const logger = api.logger || {
34
+ info: (msg) => console.log(`[RC] ${msg}`),
35
+ error: (msg) => console.error(`[RC] ${msg}`),
36
+ };
37
+ logger.info("Rocket.Chat 插件已加载");
38
+ // ----------------------------------------------------------
39
+ // 1. 注册频道
40
+ // ----------------------------------------------------------
41
+ api.registerChannel({
42
+ plugin: {
43
+ id: "rocketchat",
44
+ meta: {
45
+ id: "rocketchat",
46
+ label: "Rocket.Chat",
47
+ selectionLabel: "Rocket.Chat (自托管)",
48
+ docsPath: "/channels/rocketchat",
49
+ blurb: "通过 Rocket.Chat App 与 OpenClaw 对话。自托管、数据自控,适合中国大陆用户。",
50
+ aliases: ["rc", "rocket"],
51
+ },
52
+ capabilities: {
53
+ chatTypes: ["direct", "group"],
54
+ },
55
+ config: {
56
+ /**
57
+ * 列出所有 account IDs(机器人用户名)
58
+ */
59
+ listAccountIds: (cfg) => {
60
+ const accounts = cfg?.accounts || {};
61
+ return Object.keys(accounts);
62
+ },
63
+ /**
64
+ * 解析 account 配置
65
+ */
66
+ resolveAccount: (cfg, accountId) => {
67
+ if (!accountId) {
68
+ const ids = Object.keys(cfg?.accounts || {});
69
+ accountId = ids[0];
70
+ }
71
+ return cfg?.accounts?.[accountId] || null;
72
+ },
73
+ },
74
+ outbound: {
75
+ deliveryMode: "direct",
76
+ /**
77
+ * Agent 回复 → 发送到 Rocket.Chat
78
+ */
79
+ sendText: async (params) => {
80
+ if (!channelService) {
81
+ logger.error("频道服务未启动");
82
+ return { ok: false };
83
+ }
84
+ const handler = channelService.getMessageHandler();
85
+ if (!handler) {
86
+ logger.error("消息处理器未初始化");
87
+ return { ok: false };
88
+ }
89
+ const botUsername = params.accountId || "";
90
+ const roomId = params.target || "";
91
+ if (!botUsername || !roomId) {
92
+ logger.error("缺少 accountId 或 target");
93
+ return { ok: false };
94
+ }
95
+ try {
96
+ await handler.handleOutbound(params.text, botUsername, roomId);
97
+ return { ok: true };
98
+ }
99
+ catch (err) {
100
+ logger.error(`发送失败: ${err.message}`);
101
+ return { ok: false };
102
+ }
103
+ },
104
+ },
105
+ },
106
+ });
107
+ // ----------------------------------------------------------
108
+ // 2. 注册 CLI 命令
109
+ // ----------------------------------------------------------
110
+ api.registerCli(({ program }) => {
111
+ const rc = program
112
+ .command("rocketchat")
113
+ .alias("rc")
114
+ .description("Rocket.Chat 频道管理");
115
+ rc.command("setup")
116
+ .description("部署 Rocket.Chat(Docker)+ 创建管理员 + 创建手机登录账号")
117
+ .action(async () => {
118
+ await setupCommand(getConfigPath());
119
+ });
120
+ rc.command("add-bot")
121
+ .description("添加机器人(自动绑定 Agent + 建立 DM 私聊)")
122
+ .action(async () => {
123
+ await addBotCommand(getConfigPath());
124
+ });
125
+ rc.command("add-group")
126
+ .description("创建私有频道(多机器人群组)")
127
+ .action(async () => {
128
+ await addGroupCommand(getConfigPath());
129
+ });
130
+ rc.command("add-user")
131
+ .description("添加手机登录用户")
132
+ .action(async () => {
133
+ await addUserCommand(getConfigPath());
134
+ });
135
+ rc.command("remove-user")
136
+ .description("删除手机登录用户")
137
+ .action(async () => {
138
+ await removeUserCommand(getConfigPath());
139
+ });
140
+ rc.command("invite")
141
+ .description("群组成员管理(邀请/移除/设管理员/设所有者)")
142
+ .action(async () => {
143
+ await inviteCommand(getConfigPath());
144
+ });
145
+ rc.command("status")
146
+ .description("查看 Rocket.Chat 运行状态")
147
+ .action(async () => {
148
+ await statusCommand(getConfigPath());
149
+ });
150
+ rc.command("uninstall")
151
+ .description("卸载 Rocket.Chat(停止容器、清理配置)")
152
+ .action(async () => {
153
+ await uninstallCommand(getConfigPath());
154
+ });
155
+ }, {
156
+ commands: [
157
+ "rocketchat",
158
+ "rocketchat setup",
159
+ "rocketchat add-bot",
160
+ "rocketchat add-group",
161
+ "rocketchat add-user",
162
+ "rocketchat remove-user",
163
+ "rocketchat invite",
164
+ "rocketchat status",
165
+ "rocketchat uninstall",
166
+ ],
167
+ });
168
+ // ----------------------------------------------------------
169
+ // 3. 注册后台服务
170
+ // ----------------------------------------------------------
171
+ api.registerService({
172
+ id: "rocketchat-channel",
173
+ start: async () => {
174
+ const pluginConfig = api.pluginConfig ?? {};
175
+ if (!pluginConfig.enabled) {
176
+ logger.info("Rocket.Chat 未启用,后台服务不启动");
177
+ return;
178
+ }
179
+ // 读取 bindings 传给服务,用于正确解析 agentId
180
+ const { ConfigWriter } = await import("./config/writer.js");
181
+ const cw = new ConfigWriter(getConfigPath());
182
+ await cw.readConfig();
183
+ const bindings = cw.getRocketchatBindings();
184
+ channelService = new ChannelService({
185
+ config: pluginConfig,
186
+ bindings,
187
+ logger,
188
+ });
189
+ try {
190
+ await channelService.start();
191
+ }
192
+ catch (err) {
193
+ logger.error(`后台服务启动失败: ${err.message}`);
194
+ }
195
+ },
196
+ stop: () => {
197
+ channelService?.stop();
198
+ channelService = null;
199
+ },
200
+ });
201
+ logger.info("Rocket.Chat 插件注册完成");
202
+ }
203
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { AuthResult, RcUser, RcRoom, RcMember, RcMessage, CreateUserParams, SendMessageOptions, ServerInfo } from "./types.js";
2
+ export declare class RocketChatRestClient {
3
+ private serverUrl;
4
+ private userId;
5
+ private authToken;
6
+ constructor(serverUrl: string);
7
+ private request;
8
+ private sleep;
9
+ /** 设置已有的认证信息(从凭据文件读取时使用) */
10
+ setAuth(userId: string, authToken: string): void;
11
+ /** 登录获取 token */
12
+ login(user: string, password: string): Promise<AuthResult>;
13
+ /** 创建用户 */
14
+ createUser(params: CreateUserParams): Promise<RcUser>;
15
+ /** 查询用户信息 */
16
+ getUserInfo(username: string): Promise<RcUser | null>;
17
+ /** 列出所有用户 */
18
+ listUsers(): Promise<RcUser[]>;
19
+ /** 删除用户 */
20
+ deleteUser(userId: string, confirmRelinquish?: boolean): Promise<void>;
21
+ /** 创建 DM 通道 */
22
+ createDirectMessage(usernames: string[]): Promise<RcRoom>;
23
+ /** 列出 DM */
24
+ listDirectMessages(): Promise<RcRoom[]>;
25
+ /** 创建私有频道 */
26
+ createGroup(name: string, members?: string[]): Promise<RcRoom>;
27
+ /** 查询频道信息 */
28
+ getGroupInfo(roomId?: string, roomName?: string): Promise<RcRoom | null>;
29
+ /** 列出所有私有频道 */
30
+ listGroups(): Promise<RcRoom[]>;
31
+ /** 列出频道成员 */
32
+ getGroupMembers(roomId: string): Promise<RcMember[]>;
33
+ /** 邀请用户进群 */
34
+ groupInvite(roomId: string, userId: string): Promise<void>;
35
+ /** 移除成员 */
36
+ groupKick(roomId: string, userId: string): Promise<void>;
37
+ /** 设为所有者 */
38
+ groupAddOwner(roomId: string, userId: string): Promise<void>;
39
+ /** 设为管理员 */
40
+ groupAddModerator(roomId: string, userId: string): Promise<void>;
41
+ /** 在房间中禁言用户 */
42
+ muteUserInRoom(roomId: string, userId: string): Promise<void>;
43
+ /** 在房间中取消禁言 */
44
+ unmuteUserInRoom(roomId: string, userId: string): Promise<void>;
45
+ /** 移除所有者 */
46
+ groupRemoveOwner(roomId: string, userId: string): Promise<void>;
47
+ /** 移除管理员 */
48
+ groupRemoveModerator(roomId: string, userId: string): Promise<void>;
49
+ /** 删除频道 */
50
+ deleteGroup(roomId: string): Promise<void>;
51
+ /** 发送消息 */
52
+ sendMessage(roomId: string, text: string, options?: SendMessageOptions): Promise<RcMessage>;
53
+ /** 上传文件到房间 */
54
+ uploadFile(roomId: string, fileBuffer: Buffer, filename: string, description?: string): Promise<void>;
55
+ /** 获取服务器信息(健康检查) */
56
+ serverInfo(): Promise<ServerInfo>;
57
+ /** 获取服务器版本号(连通性测试用) */
58
+ getServerVersion(): Promise<string>;
59
+ /** 获取当前服务器 URL */
60
+ getServerUrl(): string;
61
+ /** 获取当前认证的 userId */
62
+ getUserId(): string;
63
+ }
64
+ //# sourceMappingURL=rest-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest-client.d.ts","sourceRoot":"","sources":["../../src/rc-api/rest-client.ts"],"names":[],"mappings":"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"}