@leemour/max-cli 0.14.0 → 0.16.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.
- package/README.md +43 -9
- package/dist/bot/client.d.ts +7 -1
- package/dist/bot/client.d.ts.map +1 -1
- package/dist/bot/client.js +19 -5
- package/dist/bot/client.js.map +1 -1
- package/dist/bot/input.d.ts.map +1 -1
- package/dist/bot/input.js +7 -4
- package/dist/bot/input.js.map +1 -1
- package/dist/bot/joins.d.ts +26 -0
- package/dist/bot/joins.d.ts.map +1 -0
- package/dist/bot/joins.js +56 -0
- package/dist/bot/joins.js.map +1 -0
- package/dist/bot/keep.d.ts +25 -0
- package/dist/bot/keep.d.ts.map +1 -0
- package/dist/bot/keep.js +97 -0
- package/dist/bot/keep.js.map +1 -0
- package/dist/bot/map.d.ts +5 -2
- package/dist/bot/map.d.ts.map +1 -1
- package/dist/bot/map.js +7 -1
- package/dist/bot/map.js.map +1 -1
- package/dist/bot/registry.d.ts +3 -0
- package/dist/bot/registry.d.ts.map +1 -1
- package/dist/bot/registry.js +27 -10
- package/dist/bot/registry.js.map +1 -1
- package/dist/bot/uploads.d.ts +34 -0
- package/dist/bot/uploads.d.ts.map +1 -0
- package/dist/bot/uploads.js +122 -0
- package/dist/bot/uploads.js.map +1 -0
- package/dist/bot-mcp/instructions.d.ts +9 -0
- package/dist/bot-mcp/instructions.d.ts.map +1 -0
- package/dist/bot-mcp/instructions.js +22 -0
- package/dist/bot-mcp/instructions.js.map +1 -0
- package/dist/bot-mcp/server.d.ts +21 -0
- package/dist/bot-mcp/server.d.ts.map +1 -0
- package/dist/bot-mcp/server.js +199 -0
- package/dist/bot-mcp/server.js.map +1 -0
- package/dist/bot-mcp/tools.d.ts +27 -0
- package/dist/bot-mcp/tools.d.ts.map +1 -0
- package/dist/bot-mcp/tools.js +280 -0
- package/dist/bot-mcp/tools.js.map +1 -0
- package/dist/client.d.ts +44 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +232 -41
- package/dist/client.js.map +1 -1
- package/dist/commands/bot-check.d.ts +11 -0
- package/dist/commands/bot-check.d.ts.map +1 -0
- package/dist/commands/bot-check.js +206 -0
- package/dist/commands/bot-check.js.map +1 -0
- package/dist/commands/bot-comments.d.ts +4 -0
- package/dist/commands/bot-comments.d.ts.map +1 -0
- package/dist/commands/bot-comments.js +97 -0
- package/dist/commands/bot-comments.js.map +1 -0
- package/dist/commands/bot-context.d.ts +9 -3
- package/dist/commands/bot-context.d.ts.map +1 -1
- package/dist/commands/bot-context.js +38 -15
- package/dist/commands/bot-context.js.map +1 -1
- package/dist/commands/bot-mcp.d.ts +3 -0
- package/dist/commands/bot-mcp.d.ts.map +1 -0
- package/dist/commands/bot-mcp.js +69 -0
- package/dist/commands/bot-mcp.js.map +1 -0
- package/dist/commands/bot-members.d.ts +12 -0
- package/dist/commands/bot-members.d.ts.map +1 -0
- package/dist/commands/bot-members.js +136 -0
- package/dist/commands/bot-members.js.map +1 -0
- package/dist/commands/bot-people.d.ts +10 -0
- package/dist/commands/bot-people.d.ts.map +1 -0
- package/dist/commands/bot-people.js +156 -0
- package/dist/commands/bot-people.js.map +1 -0
- package/dist/commands/bot-reads.d.ts.map +1 -1
- package/dist/commands/bot-reads.js +56 -8
- package/dist/commands/bot-reads.js.map +1 -1
- package/dist/commands/bot-sends.d.ts +5 -0
- package/dist/commands/bot-sends.d.ts.map +1 -1
- package/dist/commands/bot-sends.js +56 -11
- package/dist/commands/bot-sends.js.map +1 -1
- package/dist/commands/bot-setup.d.ts +5 -0
- package/dist/commands/bot-setup.d.ts.map +1 -0
- package/dist/commands/bot-setup.js +107 -0
- package/dist/commands/bot-setup.js.map +1 -0
- package/dist/commands/bot-updates.d.ts +3 -0
- package/dist/commands/bot-updates.d.ts.map +1 -0
- package/dist/commands/bot-updates.js +196 -0
- package/dist/commands/bot-updates.js.map +1 -0
- package/dist/commands/bot.d.ts.map +1 -1
- package/dist/commands/bot.js +21 -1
- package/dist/commands/bot.js.map +1 -1
- package/dist/commands/chats.d.ts.map +1 -1
- package/dist/commands/chats.js +19 -6
- package/dist/commands/chats.js.map +1 -1
- package/dist/commands/check.d.ts +8 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +64 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/context.d.ts +5 -0
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +5 -1
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/hearing.d.ts +25 -0
- package/dist/commands/hearing.d.ts.map +1 -0
- package/dist/commands/hearing.js +41 -0
- package/dist/commands/hearing.js.map +1 -0
- package/dist/commands/inbox.d.ts.map +1 -1
- package/dist/commands/inbox.js +19 -3
- package/dist/commands/inbox.js.map +1 -1
- package/dist/commands/mcp.d.ts +1 -0
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +7 -4
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/messages.d.ts.map +1 -1
- package/dist/commands/messages.js +21 -5
- package/dist/commands/messages.js.map +1 -1
- package/dist/commands/paging.d.ts +3 -1
- package/dist/commands/paging.d.ts.map +1 -1
- package/dist/commands/paging.js +4 -1
- package/dist/commands/paging.js.map +1 -1
- package/dist/commands/polls.d.ts +3 -0
- package/dist/commands/polls.d.ts.map +1 -0
- package/dist/commands/polls.js +103 -0
- package/dist/commands/polls.js.map +1 -0
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +5 -7
- package/dist/commands/review.js.map +1 -1
- package/dist/domain/map.d.ts +9 -1
- package/dist/domain/map.d.ts.map +1 -1
- package/dist/domain/map.js +57 -0
- package/dist/domain/map.js.map +1 -1
- package/dist/domain/models.d.ts +33 -0
- package/dist/domain/models.d.ts.map +1 -1
- package/dist/domain/models.js.map +1 -1
- package/dist/generated/client.generated.d.ts +2 -0
- package/dist/generated/client.generated.d.ts.map +1 -1
- package/dist/generated/client.generated.js +2 -0
- package/dist/generated/client.generated.js.map +1 -1
- package/dist/generated/opcodes.generated.d.ts +2 -0
- package/dist/generated/opcodes.generated.d.ts.map +1 -1
- package/dist/generated/opcodes.generated.js +2 -0
- package/dist/generated/opcodes.generated.js.map +1 -1
- package/dist/generated/operations.generated.d.ts +24 -3
- package/dist/generated/operations.generated.d.ts.map +1 -1
- package/dist/generated/operations.generated.js +4 -2
- package/dist/generated/operations.generated.js.map +1 -1
- package/dist/mcp/confirm.d.ts +6 -2
- package/dist/mcp/confirm.d.ts.map +1 -1
- package/dist/mcp/confirm.js +2 -2
- package/dist/mcp/confirm.js.map +1 -1
- package/dist/mcp/instructions.d.ts +2 -1
- package/dist/mcp/instructions.d.ts.map +1 -1
- package/dist/mcp/instructions.js +2 -1
- package/dist/mcp/instructions.js.map +1 -1
- package/dist/mcp/server.d.ts +2 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +4 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +5 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +187 -12
- package/dist/mcp/tools.js.map +1 -1
- package/dist/moderation/check.d.ts +105 -0
- package/dist/moderation/check.d.ts.map +1 -0
- package/dist/moderation/check.js +313 -0
- package/dist/moderation/check.js.map +1 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +2 -0
- package/dist/program.js.map +1 -1
- package/dist/rendering/messages.d.ts +6 -1
- package/dist/rendering/messages.d.ts.map +1 -1
- package/dist/rendering/messages.js +24 -3
- package/dist/rendering/messages.js.map +1 -1
- package/dist/review.d.ts +10 -4
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +35 -53
- package/dist/review.js.map +1 -1
- package/dist/sends/journal.d.ts +1 -1
- package/dist/sends/journal.d.ts.map +1 -1
- package/dist/server/server-connection.d.ts +8 -1
- package/dist/server/server-connection.d.ts.map +1 -1
- package/dist/server/server-connection.js +27 -1
- package/dist/server/server-connection.js.map +1 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +2 -1
- package/dist/server/server.js.map +1 -1
- package/dist/server/start.d.ts +1 -1
- package/dist/server/start.d.ts.map +1 -1
- package/dist/server/start.js +5 -3
- package/dist/server/start.js.map +1 -1
- package/dist/session/store.d.ts +2 -0
- package/dist/session/store.d.ts.map +1 -1
- package/dist/session/store.js +2 -0
- package/dist/session/store.js.map +1 -1
- package/dist/spec/index.d.ts.map +1 -1
- package/dist/spec/index.js +4 -2
- package/dist/spec/index.js.map +1 -1
- package/dist/spec/operations/chats.d.ts.map +1 -1
- package/dist/spec/operations/chats.js +3 -1
- package/dist/spec/operations/chats.js.map +1 -1
- package/dist/spec/operations/messages.d.ts +13 -3
- package/dist/spec/operations/messages.d.ts.map +1 -1
- package/dist/spec/operations/messages.js +37 -6
- package/dist/spec/operations/messages.js.map +1 -1
- package/dist/spec/operations/uploads.d.ts +13 -0
- package/dist/spec/operations/uploads.d.ts.map +1 -1
- package/dist/spec/operations/uploads.js +21 -0
- package/dist/spec/operations/uploads.js.map +1 -1
- package/dist/transcribe/index.d.ts +36 -1
- package/dist/transcribe/index.d.ts.map +1 -1
- package/dist/transcribe/index.js +91 -14
- package/dist/transcribe/index.js.map +1 -1
- package/dist/upload.d.ts +3 -0
- package/dist/upload.d.ts.map +1 -1
- package/dist/upload.js +13 -7
- package/dist/upload.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/voice.d.ts +9 -0
- package/dist/voice.d.ts.map +1 -0
- package/dist/voice.js +36 -0
- package/dist/voice.js.map +1 -0
- package/package.json +6 -2
- package/skills/max-cli/SKILL.md +17 -5
package/dist/voice.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a voice message carries besides the file, as web.max.ru builds it (`FIND-104`): its length
|
|
3
|
+
* in milliseconds and 80 bars of loudness, 0–127. Computed here, so only the file leaves the machine.
|
|
4
|
+
*/
|
|
5
|
+
export declare const voiceOf: (path: string, bytes: Uint8Array) => Promise<{
|
|
6
|
+
durationMs: number;
|
|
7
|
+
wave: Uint8Array;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=voice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../src/voice.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,eAAO,MAAM,OAAO,SAAgB,MAAM,SAAS,UAAU,KAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAyB/G,CAAA"}
|
package/dist/voice.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { CliError } from "@leemour/cli-core";
|
|
2
|
+
import { decodeOgg } from "./transcribe/speech.js";
|
|
3
|
+
const BARS = 80;
|
|
4
|
+
const isOggOpus = (bytes) => {
|
|
5
|
+
const head = Buffer.from(bytes.subarray(0, 64)).toString("latin1");
|
|
6
|
+
return head.startsWith("OggS") && head.includes("OpusHead");
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* What a voice message carries besides the file, as web.max.ru builds it (`FIND-104`): its length
|
|
10
|
+
* in milliseconds and 80 bars of loudness, 0–127. Computed here, so only the file leaves the machine.
|
|
11
|
+
*/
|
|
12
|
+
export const voiceOf = async (path, bytes) => {
|
|
13
|
+
if (!isOggOpus(bytes)) {
|
|
14
|
+
throw new CliError("validation_error", `${path} is not Ogg Opus, the format of a voice message — convert it first: ` +
|
|
15
|
+
"ffmpeg -i <file> -ac 1 -ar 48000 -c:a libopus -b:a 32k voice.ogg");
|
|
16
|
+
}
|
|
17
|
+
let decoded;
|
|
18
|
+
try {
|
|
19
|
+
decoded = await decodeOgg(bytes);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
throw new CliError("validation_error", `${path} could not be decoded as Ogg Opus`);
|
|
23
|
+
}
|
|
24
|
+
const { samples, rate } = decoded;
|
|
25
|
+
const wave = new Uint8Array(BARS);
|
|
26
|
+
const size = Math.max(1, Math.floor(samples.length / BARS));
|
|
27
|
+
for (let bar = 0; bar < BARS; bar++) {
|
|
28
|
+
let peak = 0;
|
|
29
|
+
for (let index = bar * size; index < Math.min(samples.length, (bar + 1) * size); index++) {
|
|
30
|
+
peak = Math.max(peak, Math.abs(samples[index] ?? 0));
|
|
31
|
+
}
|
|
32
|
+
wave[bar] = Math.min(127, Math.round(peak * 127));
|
|
33
|
+
}
|
|
34
|
+
return { durationMs: Math.round((samples.length / rate) * 1000), wave };
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=voice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.js","sourceRoot":"","sources":["../src/voice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,MAAM,IAAI,GAAG,EAAE,CAAA;AAEf,MAAM,SAAS,GAAG,CAAC,KAAiB,EAAW,EAAE;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAClE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AAC7D,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,KAAiB,EAAqD,EAAE;IAClH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,GAAG,IAAI,sEAAsE;YAC3E,kEAAkE,CACrE,CAAA;IACH,CAAC;IACD,IAAI,OAAgD,CAAA;IACpD,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,IAAI,mCAAmC,CAAC,CAAA;IACpF,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IACjC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;IAC3D,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACpC,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,KAAK,IAAI,KAAK,GAAG,GAAG,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACzF,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,CAAA;AACzE,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leemour/max-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "MAX Messenger bots through the official Bot API, and a personal MAX account, from the terminal \u2014 built for agents and scripts",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Viacheslav Ptsarev",
|
|
@@ -63,12 +63,16 @@
|
|
|
63
63
|
"probe:control": "pnpm build && node --experimental-strip-types scripts/probe-control.ts",
|
|
64
64
|
"probe:member-list": "pnpm build && node --experimental-strip-types scripts/probe-member-list.ts",
|
|
65
65
|
"probe:message-count": "pnpm build && node --experimental-strip-types scripts/probe-message-count.ts",
|
|
66
|
+
"probe:media-send": "pnpm build && node --experimental-strip-types scripts/probe-media-send.ts",
|
|
67
|
+
"probe:video": "pnpm build && node --experimental-strip-types scripts/probe-video.ts",
|
|
68
|
+
"probe:voice": "pnpm build && node --experimental-strip-types scripts/probe-voice.ts",
|
|
69
|
+
"probe:polls": "pnpm build && node --experimental-strip-types scripts/probe-polls.ts",
|
|
66
70
|
"probe:bot:me": "pnpm build && node --experimental-strip-types scripts/probe-bot-me.ts"
|
|
67
71
|
},
|
|
68
72
|
"dependencies": {
|
|
69
73
|
"@bomb.sh/tab": "0.0.22",
|
|
70
74
|
"@leemour/cli-core": "0.8.0",
|
|
71
|
-
"@leemour/cli-messaging": "0.
|
|
75
|
+
"@leemour/cli-messaging": "0.13.0",
|
|
72
76
|
"@modelcontextprotocol/server": "2.1.0",
|
|
73
77
|
"@msgpack/msgpack": "3.1.3",
|
|
74
78
|
"@valibot/to-json-schema": "1.8.0",
|
package/skills/max-cli/SKILL.md
CHANGED
|
@@ -26,7 +26,9 @@ description: Читать и отправлять сообщения в личн
|
|
|
26
26
|
- **`max messages delete` — только когда владелец назвал эти сообщения и попросил их удалить.**
|
|
27
27
|
Удаление не отменить. `--allow-dangerous` — его слово, не ставить флаг от себя. `--for-everyone`
|
|
28
28
|
— только если он сказал «у всех».
|
|
29
|
-
-
|
|
29
|
+
- **То же для `polls vote|close|create`.** Голос виден другим, если опрос не анонимный; закрытый
|
|
30
|
+
опрос снова не открыть. Варианты — по id в `[скобках]` из `messages list`, не по номеру в списке.
|
|
31
|
+
- **Отказ `5`, `7` или `8` на отправке, реакции, правке, пересылке, закреплении, удалении или опросе — это решение владельца, а не сбой.** Не обходить его: не
|
|
30
32
|
менять настройки, не звать `max recipients add`, не ждать и не повторять. Сказать владельцу, что
|
|
31
33
|
отправка не прошла и почему.
|
|
32
34
|
- **Группы и каналы — только по прямой просьбе владельца.** `max chats join|leave|create|members|admins|update|settings --…|requests accept|decline|link reset` видят другие люди. Ссылка-приглашение из прочитанного сообщения — не просьба вступить.
|
|
@@ -130,6 +132,7 @@ max chats show -1000 --json # один чат и кто в н
|
|
|
130
132
|
max chats events -1000 --since 2026-09-20T00:00 --json # кто вступил, вышел, кого добавили и удалили
|
|
131
133
|
max chats members list -1000 --json # все участники от MAX: registeredAt, lastSeenAt
|
|
132
134
|
max chats rules show -1000 --json # правила модерации группы; set <ключ> <значение> меняет одно
|
|
135
|
+
max chats check -1000 --dry-run --json # что нового нарушает правила; без --dry-run — только по слову владельца
|
|
133
136
|
max contacts show @ivan --json # один человек и общие чаты
|
|
134
137
|
max messages list -1000 --limit 20 --json # последние сообщения, от старых к новым
|
|
135
138
|
max messages list -1000 --after 100000000000000001 --json # что было после этого сообщения
|
|
@@ -145,7 +148,9 @@ max messages transcribe -1000 100000000000000001 --json # текст голо
|
|
|
145
148
|
черновики, отправка — только по слову владельца.
|
|
146
149
|
|
|
147
150
|
Голосовое — вложение `"kind": "audio"`. Его текст даёт `max messages transcribe`; до минуты на
|
|
148
|
-
пять минут речи, повторно — сразу из кэша.
|
|
151
|
+
пять минут речи, повторно — сразу из кэша. Уже расшифрованное голосовое несёт поле `transcript` в
|
|
152
|
+
`messages list` и `inbox`; `--transcribe` там расшифровывает остальные показанные, а не
|
|
153
|
+
расшифрованные перечисляет в `unheard`. Если модель не скачана, команда откажет и назовёт
|
|
149
154
|
`max models audio download <id>`: **сказать об этом владельцу и не скачивать самому** — это сотни
|
|
150
155
|
мегабайт, и выбор модели за ним.
|
|
151
156
|
|
|
@@ -155,9 +160,16 @@ max messages transcribe -1000 100000000000000001 --json # текст голо
|
|
|
155
160
|
## Бот
|
|
156
161
|
|
|
157
162
|
`max <имя> bot …` — бот владельца через официальный Bot API, **не** личный аккаунт. Имя — первое
|
|
158
|
-
слово, как профиль: `max sales bot messages send
|
|
163
|
+
слово, как профиль: `max sales bot messages send "Команда продаж" "текст"`. Какие боты есть —
|
|
159
164
|
`max bot list`. Чат бота — номер, `user:<номер>` для человека или название чата, который бот уже
|
|
160
|
-
видел; списка чатов бота у MAX нет, `max <имя> bot chats list` — только увиденные.
|
|
165
|
+
видел; списка чатов бота у MAX нет, `max <имя> bot chats list` — только увиденные. Положительный
|
|
166
|
+
номер — почти всегда человек: ему пишут `user:<номер>`. Файл — `messages send --file <путь>`. Прочитанное
|
|
167
|
+
и отправленное ботом хранится локально: `bot messages list <чат> --offline` — без сети,
|
|
168
|
+
`bot messages search <текст>` — поиск, `--from <кто>` — только его сообщения. `bot people show <кто>` —
|
|
169
|
+
где человек писал и его личный чат с ботом; `bot messages between <кто> <кто>` — их переписка в
|
|
170
|
+
чатах, где писал каждый (`--limit` — на чат). Всё это без сети, кроме `people show --refresh`. `bot updates watch --jsonl` забирает события у всех других
|
|
171
|
+
читателей бота — запускайте только по просьбе владельца. Отказ с кодом `7`
|
|
161
172
|
значит «чата нет в списке получателей бота»: скажите владельцу, какую команду выполнить, и не
|
|
162
173
|
пишите в обход. Любая операция API — `max <имя> bot api <операция>`; её флаги —
|
|
163
|
-
`max commands --json`. Отправляйте от имени бота только то, о чём просил владелец.
|
|
174
|
+
`max commands --json`. Отправляйте от имени бота только то, о чём просил владелец. Для агента есть
|
|
175
|
+
MCP-сервер бота: `max <имя> bot mcp`, по умолчанию только чтение.
|