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,2 @@
1
+ export declare function addBotCommand(configPath: string): Promise<void>;
2
+ //# sourceMappingURL=add-bot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-bot.d.ts","sourceRoot":"","sources":["../../src/cli/add-bot.ts"],"names":[],"mappings":"AAwBA,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsJrE"}
@@ -0,0 +1,138 @@
1
+ // ============================================================
2
+ // CLI: openclaw rocketchat add-bot
3
+ // 创建 RC 机器人 + 读取已有 Agent 列表绑定 + 自动建立 DM + 写入配置
4
+ // ============================================================
5
+ import { RocketChatRestClient } from "../rc-api/rest-client.js";
6
+ import { ConfigWriter } from "../config/writer.js";
7
+ import { loadAdminCredentials, saveBotCredentials, generatePassword, loadUserRecords, } from "../config/credentials.js";
8
+ import { ask, select, heading, step, success, error, warn, info, } from "./prompts.js";
9
+ export async function addBotCommand(configPath) {
10
+ heading("添加 Rocket.Chat 机器人");
11
+ // ----------------------------------------------------------
12
+ // 1. 加载凭据和配置
13
+ // ----------------------------------------------------------
14
+ const adminCreds = await loadAdminCredentials();
15
+ if (!adminCreds) {
16
+ error("未找到管理员凭据!请先运行: openclaw rocketchat setup");
17
+ return;
18
+ }
19
+ const configWriter = new ConfigWriter(configPath);
20
+ await configWriter.readConfig();
21
+ const rcConfig = configWriter.getRocketchatConfig();
22
+ if (!rcConfig?.serverUrl) {
23
+ error("未找到 Rocket.Chat 配置!请先运行: openclaw rocketchat setup");
24
+ return;
25
+ }
26
+ // 连接 RC
27
+ const rc = new RocketChatRestClient(rcConfig.serverUrl);
28
+ rc.setAuth(adminCreds.userId, adminCreds.authToken);
29
+ // ----------------------------------------------------------
30
+ // 2. 读取 Agent 列表
31
+ // ----------------------------------------------------------
32
+ const agents = configWriter.getAgentsList();
33
+ if (agents.length === 0) {
34
+ error("没有找到任何 Agent!");
35
+ info("请先创建 Agent: openclaw agents add <名称>");
36
+ info("");
37
+ info("Agent 是 OpenClaw 中的 AI 大脑,不同 Agent 有不同的人设和能力。");
38
+ info("每个机器人需要绑定到一个 Agent 才能工作。");
39
+ return;
40
+ }
41
+ // ----------------------------------------------------------
42
+ // 3. 用户输入
43
+ // ----------------------------------------------------------
44
+ const botUsername = await ask("机器人用户名\n (机器人在聊天中显示的 ID,建议用英文,如 molty、my-bot)");
45
+ if (!botUsername) {
46
+ error("用户名不能为空!");
47
+ return;
48
+ }
49
+ if (!/^[a-zA-Z0-9._-]+$/.test(botUsername)) {
50
+ error("用户名只能包含英文字母、数字、点、下划线和连字符!");
51
+ return;
52
+ }
53
+ // 检查是否已存在
54
+ const existing = rcConfig.accounts?.[botUsername];
55
+ if (existing) {
56
+ warn(`机器人 ${botUsername} 已经存在!`);
57
+ return;
58
+ }
59
+ const displayName = await ask("显示昵称\n (机器人在聊天中显示的名字,可以用中文,如 小龙虾、工作助手)", botUsername);
60
+ // 选择 Agent
61
+ const agentOptions = agents.map((a) => ({
62
+ label: `${a.id}${a.default ? " (默认)" : ""}${a.name ? ` - ${a.name}` : ""}`,
63
+ value: a.id,
64
+ }));
65
+ info("");
66
+ info("绑定到哪个 Agent?");
67
+ info("(Agent 是 OpenClaw 中的 AI 大脑,不同 Agent 有不同的人设和能力。");
68
+ info(" 如果你还没有创建,先退出,运行: openclaw agents add <名称>)");
69
+ const agentId = await select("当前 Agent", agentOptions);
70
+ // ----------------------------------------------------------
71
+ // 4. 创建机器人
72
+ // ----------------------------------------------------------
73
+ console.log("");
74
+ step(`创建机器人用户 ${botUsername}...`);
75
+ const botPassword = generatePassword();
76
+ try {
77
+ const botUser = await rc.createUser({
78
+ name: displayName,
79
+ email: `${botUsername}@openclaw.local`,
80
+ password: botPassword,
81
+ username: botUsername,
82
+ roles: ["bot"],
83
+ joinDefaultChannels: false,
84
+ verified: true,
85
+ requirePasswordChange: false,
86
+ });
87
+ await saveBotCredentials(botUsername, botUser._id, botPassword);
88
+ success(`机器人用户 ${botUsername} 已创建`);
89
+ }
90
+ catch (err) {
91
+ error(`机器人创建失败: ${err.message}`);
92
+ return;
93
+ }
94
+ // ----------------------------------------------------------
95
+ // 5. 为所有已有用户建立 DM 私聊
96
+ // ----------------------------------------------------------
97
+ const users = await loadUserRecords();
98
+ if (users.length > 0) {
99
+ for (const user of users) {
100
+ // 只读用户不创建 DM
101
+ if (user.permission === "readonly") {
102
+ info(`${user.username} 是只读用户,跳过 DM 创建`);
103
+ continue;
104
+ }
105
+ step(`建立 ${user.username} 与 ${botUsername} 的私聊通道...`);
106
+ try {
107
+ await rc.createDirectMessage([user.username, botUsername]);
108
+ success(`${user.username} <-> ${botUsername} DM 已就绪`);
109
+ }
110
+ catch (err) {
111
+ warn(`${user.username} DM 创建失败: ${err.message}`);
112
+ }
113
+ }
114
+ }
115
+ // ----------------------------------------------------------
116
+ // 6. 写入配置
117
+ // ----------------------------------------------------------
118
+ step("写入配置 + 绑定...");
119
+ configWriter.addBotAccount(botUsername, botUsername, displayName);
120
+ configWriter.addBinding(agentId, botUsername);
121
+ await configWriter.saveAndReload();
122
+ success("配置已更新");
123
+ // ----------------------------------------------------------
124
+ // 7. 完成提示
125
+ // ----------------------------------------------------------
126
+ console.log("");
127
+ success(`机器人 ${botUsername} (${displayName}) 已创建`);
128
+ info(` 绑定到 Agent: ${agentId}`);
129
+ info(" DM 私聊已就绪");
130
+ console.log("");
131
+ info("📱 打开 Rocket.Chat App 即可看到机器人,直接发消息开聊!");
132
+ console.log("");
133
+ info("💡 更多操作:");
134
+ info(" 创建多机器人群组: openclaw rocketchat add-group");
135
+ info(" 创建新 Agent: openclaw agents add <name>");
136
+ console.log("");
137
+ }
138
+ //# sourceMappingURL=add-bot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-bot.js","sourceRoot":"","sources":["../../src/cli/add-bot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function addGroupCommand(configPath: string): Promise<void>;
2
+ //# sourceMappingURL=add-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-group.d.ts","sourceRoot":"","sources":["../../src/cli/add-group.ts"],"names":[],"mappings":"AAsBA,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsKvE"}
@@ -0,0 +1,145 @@
1
+ // ============================================================
2
+ // CLI: openclaw rocketchat add-group
3
+ // 创建私有频道 + 选择机器人和用户加入 + 设置角色 + 写入配置
4
+ // ============================================================
5
+ import { RocketChatRestClient } from "../rc-api/rest-client.js";
6
+ import { ConfigWriter } from "../config/writer.js";
7
+ import { loadAdminCredentials, loadUserRecords, } from "../config/credentials.js";
8
+ import { ask, confirm, multiSelect, heading, step, success, error, info, } from "./prompts.js";
9
+ export async function addGroupCommand(configPath) {
10
+ heading("创建 Rocket.Chat 私有频道");
11
+ // ----------------------------------------------------------
12
+ // 1. 加载凭据和配置
13
+ // ----------------------------------------------------------
14
+ const adminCreds = await loadAdminCredentials();
15
+ if (!adminCreds) {
16
+ error("未找到管理员凭据!请先运行: openclaw rocketchat setup");
17
+ return;
18
+ }
19
+ const configWriter = new ConfigWriter(configPath);
20
+ await configWriter.readConfig();
21
+ const rcConfig = configWriter.getRocketchatConfig();
22
+ if (!rcConfig?.serverUrl) {
23
+ error("未找到 Rocket.Chat 配置!请先运行: openclaw rocketchat setup");
24
+ return;
25
+ }
26
+ // 检查是否有机器人
27
+ const accounts = rcConfig.accounts || {};
28
+ const botList = Object.entries(accounts);
29
+ if (botList.length === 0) {
30
+ error("没有找到任何机器人!");
31
+ info("请先添加机器人: openclaw rocketchat add-bot");
32
+ return;
33
+ }
34
+ const rc = new RocketChatRestClient(rcConfig.serverUrl);
35
+ rc.setAuth(adminCreds.userId, adminCreds.authToken);
36
+ // ----------------------------------------------------------
37
+ // 2. 用户输入
38
+ // ----------------------------------------------------------
39
+ const groupName = await ask("频道名称");
40
+ if (!groupName) {
41
+ error("频道名称不能为空!");
42
+ return;
43
+ }
44
+ // 检查频道是否已存在
45
+ if (rcConfig.groups?.[groupName]) {
46
+ error(`频道「${groupName}」已存在!`);
47
+ return;
48
+ }
49
+ // 选择机器人
50
+ const bindings = configWriter.getRocketchatBindings();
51
+ const botOptions = botList.map(([id, bot]) => {
52
+ const binding = bindings.find((b) => b.match?.accountId === id);
53
+ const agentInfo = binding ? ` -> Agent: ${binding.agentId}` : "";
54
+ return {
55
+ label: `${bot.botUsername}${bot.botDisplayName ? ` (${bot.botDisplayName})` : ""}${agentInfo}`,
56
+ value: bot.botUsername,
57
+ };
58
+ });
59
+ const selectedBots = await multiSelect("添加哪些机器人?", botOptions);
60
+ if (selectedBots.length === 0) {
61
+ error("至少选择一个机器人!");
62
+ return;
63
+ }
64
+ // 选择用户
65
+ const users = await loadUserRecords();
66
+ let selectedUsers = [];
67
+ if (users.length > 0) {
68
+ const userOptions = users.map((u) => ({
69
+ label: u.username,
70
+ value: u.username,
71
+ }));
72
+ selectedUsers = await multiSelect("添加哪些用户?\n (回车默认添加全部用户)", userOptions, true);
73
+ // 如果没有选择,默认全部
74
+ if (selectedUsers.length === 0) {
75
+ selectedUsers = users.map((u) => u.username);
76
+ }
77
+ }
78
+ // requireMention
79
+ const requireMention = await confirm("群内需要 @机器人名 才响应?\n (选 N:群里所有消息机器人都会回复,适合单机器人群组。\n 选 Y:只有 @机器人名 的消息才回复,适合多机器人群组避免抢答。)", selectedBots.length > 1);
80
+ // ----------------------------------------------------------
81
+ // 3. 创建频道
82
+ // ----------------------------------------------------------
83
+ console.log("");
84
+ const allMembers = [...selectedUsers, ...selectedBots];
85
+ step(`创建私有频道「${groupName}」...`);
86
+ try {
87
+ const group = await rc.createGroup(groupName, allMembers);
88
+ // 设置第一个用户为 Owner
89
+ if (selectedUsers.length > 0) {
90
+ step(`设置 ${selectedUsers[0]} 为频道 Owner...`);
91
+ try {
92
+ const userInfo = await rc.getUserInfo(selectedUsers[0]);
93
+ if (userInfo) {
94
+ await rc.groupAddOwner(group._id, userInfo._id);
95
+ }
96
+ }
97
+ catch {
98
+ // 不影响主流程
99
+ }
100
+ }
101
+ // 只读用户自动禁言
102
+ const userRecords = await loadUserRecords();
103
+ for (const username of selectedUsers) {
104
+ const record = userRecords.find((u) => u.username === username);
105
+ if (record?.permission === "readonly") {
106
+ try {
107
+ const userInfo = await rc.getUserInfo(username);
108
+ if (userInfo) {
109
+ await rc.muteUserInRoom(group._id, userInfo._id);
110
+ info(` ${username} 已在频道中设为只读`);
111
+ }
112
+ }
113
+ catch {
114
+ // 禁言失败不影响主流程
115
+ }
116
+ }
117
+ }
118
+ success(`频道「${groupName}」已创建`);
119
+ }
120
+ catch (err) {
121
+ error(`频道创建失败: ${err.message}`);
122
+ return;
123
+ }
124
+ // ----------------------------------------------------------
125
+ // 4. 写入配置
126
+ // ----------------------------------------------------------
127
+ step("写入配置...");
128
+ configWriter.addGroup(groupName, selectedBots, requireMention);
129
+ await configWriter.saveAndReload();
130
+ success("配置已更新");
131
+ // ----------------------------------------------------------
132
+ // 5. 完成提示
133
+ // ----------------------------------------------------------
134
+ console.log("");
135
+ success(`私有频道「${groupName}」已创建`);
136
+ if (selectedUsers.length > 0) {
137
+ info(` Owner: ${selectedUsers[0]}`);
138
+ }
139
+ info(` 成员: ${allMembers.join(", ")}`);
140
+ info(` @提及响应: ${requireMention ? "是" : "否"}`);
141
+ console.log("");
142
+ info("📱 打开 Rocket.Chat App 即可看到频道,开始群聊!");
143
+ console.log("");
144
+ }
145
+ //# sourceMappingURL=add-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-group.js","sourceRoot":"","sources":["../../src/cli/add-group.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function addUserCommand(configPath: string): Promise<void>;
2
+ //# sourceMappingURL=add-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-user.d.ts","sourceRoot":"","sources":["../../src/cli/add-user.ts"],"names":[],"mappings":"AAwBA,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsMtE"}
@@ -0,0 +1,186 @@
1
+ // ============================================================
2
+ // CLI: openclaw rocketchat add-user
3
+ // 添加手机登录用户 + 选择加入群组 + 设置权限
4
+ // ============================================================
5
+ import { RocketChatRestClient } from "../rc-api/rest-client.js";
6
+ import { ConfigWriter } from "../config/writer.js";
7
+ import { loadAdminCredentials, saveUserRecord, } from "../config/credentials.js";
8
+ import { ask, askPassword, select, multiSelect, heading, step, success, error, info, warn, } from "./prompts.js";
9
+ export async function addUserCommand(configPath) {
10
+ heading("添加手机登录用户");
11
+ // ----------------------------------------------------------
12
+ // 1. 加载凭据和配置
13
+ // ----------------------------------------------------------
14
+ const adminCreds = await loadAdminCredentials();
15
+ if (!adminCreds) {
16
+ error("未找到管理员凭据!请先运行: openclaw rocketchat setup");
17
+ return;
18
+ }
19
+ const configWriter = new ConfigWriter(configPath);
20
+ await configWriter.readConfig();
21
+ const rcConfig = configWriter.getRocketchatConfig();
22
+ if (!rcConfig?.serverUrl) {
23
+ error("未找到 Rocket.Chat 配置!请先运行: openclaw rocketchat setup");
24
+ return;
25
+ }
26
+ const rc = new RocketChatRestClient(rcConfig.serverUrl);
27
+ rc.setAuth(adminCreds.userId, adminCreds.authToken);
28
+ // ----------------------------------------------------------
29
+ // 2. 用户输入
30
+ // ----------------------------------------------------------
31
+ const username = await ask("用户名");
32
+ if (!username) {
33
+ error("用户名不能为空!");
34
+ return;
35
+ }
36
+ if (!/^[a-zA-Z0-9._-]+$/.test(username)) {
37
+ error("用户名只能包含英文字母、数字、点、下划线和连字符!");
38
+ return;
39
+ }
40
+ // 检查用户是否已存在
41
+ const existingUser = await rc.getUserInfo(username);
42
+ if (existingUser) {
43
+ error(`用户 ${username} 已存在!`);
44
+ return;
45
+ }
46
+ const password = await askPassword("密码");
47
+ if (!password || password.length < 6) {
48
+ error("密码至少 6 个字符!");
49
+ return;
50
+ }
51
+ const confirmPwd = await askPassword("确认密码");
52
+ if (password !== confirmPwd) {
53
+ error("两次密码不一致!");
54
+ return;
55
+ }
56
+ // ----------------------------------------------------------
57
+ // 3. 选择权限
58
+ // ----------------------------------------------------------
59
+ const permission = await select("用户权限", [
60
+ {
61
+ label: "全功能 —— 可以在群里发消息、私聊机器人",
62
+ value: "full",
63
+ },
64
+ {
65
+ label: "只读 —— 只能查看群消息,不能发言也不能私聊",
66
+ value: "readonly",
67
+ },
68
+ ]);
69
+ if (permission === "readonly") {
70
+ info("只读用户可以查看所有群聊消息,但不能发言也不能私聊机器人。");
71
+ info("适合旁听、审计、老板查看工作进度等场景。");
72
+ }
73
+ // ----------------------------------------------------------
74
+ // 4. 选择加入的群组
75
+ // ----------------------------------------------------------
76
+ const groups = rcConfig.groups || {};
77
+ const groupList = Object.keys(groups);
78
+ let selectedGroups = [];
79
+ if (groupList.length > 0) {
80
+ const groupOptions = groupList.map((name) => ({
81
+ label: `${name} (机器人: ${groups[name].bots?.join(", ") || "无"})`,
82
+ value: name,
83
+ }));
84
+ selectedGroups = await multiSelect("加入哪些已有群组?", groupOptions, true);
85
+ }
86
+ // ----------------------------------------------------------
87
+ // 5. 创建用户
88
+ // ----------------------------------------------------------
89
+ console.log("");
90
+ step(`创建用户 ${username}...`);
91
+ try {
92
+ await rc.createUser({
93
+ name: username,
94
+ email: `${username}@openclaw.local`,
95
+ password: password,
96
+ username: username,
97
+ roles: ["user"],
98
+ joinDefaultChannels: false,
99
+ verified: true,
100
+ requirePasswordChange: false,
101
+ });
102
+ await saveUserRecord(username, permission);
103
+ success(`用户 ${username} 已创建(${permission === "readonly" ? "只读" : "全功能"})`);
104
+ }
105
+ catch (err) {
106
+ error(`用户创建失败: ${err.message}`);
107
+ return;
108
+ }
109
+ // 获取创建后的用户 ID(后续需要用到)
110
+ const createdUser = await rc.getUserInfo(username);
111
+ if (!createdUser) {
112
+ error("用户创建后无法获取用户信息!");
113
+ return;
114
+ }
115
+ // ----------------------------------------------------------
116
+ // 6. 加入群组
117
+ // ----------------------------------------------------------
118
+ for (const groupName of selectedGroups) {
119
+ step(`将 ${username} 加入「${groupName}」...`);
120
+ try {
121
+ const groupInfo = await rc.getGroupInfo(undefined, groupName);
122
+ if (groupInfo) {
123
+ await rc.groupInvite(groupInfo._id, createdUser._id);
124
+ success(`已加入「${groupName}」`);
125
+ // 只读用户:在群组中禁言
126
+ if (permission === "readonly") {
127
+ try {
128
+ await rc.muteUserInRoom(groupInfo._id, createdUser._id);
129
+ info(` 已在「${groupName}」中设为只读`);
130
+ }
131
+ catch (muteErr) {
132
+ warn(` 禁言设置失败: ${muteErr.message}`);
133
+ }
134
+ }
135
+ }
136
+ }
137
+ catch (err) {
138
+ error(`加入群组失败: ${err.message}`);
139
+ }
140
+ }
141
+ // ----------------------------------------------------------
142
+ // 7. 为全功能用户创建与所有机器人的 DM
143
+ // ----------------------------------------------------------
144
+ if (permission === "full") {
145
+ const accounts = rcConfig.accounts || {};
146
+ for (const [, bot] of Object.entries(accounts)) {
147
+ try {
148
+ await rc.createDirectMessage([username, bot.botUsername]);
149
+ }
150
+ catch {
151
+ // DM 创建失败不影响主流程
152
+ }
153
+ }
154
+ }
155
+ else {
156
+ info("只读用户不创建机器人私聊通道");
157
+ }
158
+ // ----------------------------------------------------------
159
+ // 8. 完成提示
160
+ // ----------------------------------------------------------
161
+ const hostIp = rcConfig.serverUrl || "";
162
+ console.log("");
163
+ success(`用户 ${username} 已创建`);
164
+ info(` 权限: ${permission === "readonly" ? "🔒 只读" : "✅ 全功能"}`);
165
+ if (selectedGroups.length > 0) {
166
+ info(` 已加入: ${selectedGroups.join(", ")}`);
167
+ }
168
+ info(` 登录: ${hostIp} / 用户名: ${username}`);
169
+ console.log("");
170
+ info(`📱 告诉 ${username} 下载 Rocket.Chat App,服务器填 ${hostIp}`);
171
+ info(` 用上面的用户名密码登录后,即可:`);
172
+ if (permission === "readonly") {
173
+ if (selectedGroups.length > 0) {
174
+ info(` - 在「${selectedGroups.join("」「")}」里查看 AI 对话记录`);
175
+ }
176
+ info(` - (只读模式,无法发送消息)`);
177
+ }
178
+ else {
179
+ if (selectedGroups.length > 0) {
180
+ info(` - 在「${selectedGroups.join("」「")}」里和团队一起跟 AI 讨论`);
181
+ }
182
+ info(` - 直接私聊任意机器人,进行一对一 AI 对话`);
183
+ }
184
+ console.log("");
185
+ }
186
+ //# sourceMappingURL=add-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-user.js","sourceRoot":"","sources":["../../src/cli/add-user.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function inviteCommand(configPath: string): Promise<void>;
2
+ //# sourceMappingURL=invite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../../src/cli/invite.ts"],"names":[],"mappings":"AAqBA,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6MrE"}