























@@ -72,6 +72,65 @@ describe("bot-native-command-menu", () => {
7272});
7373});
747475+it("does not let aliases consume command slots before canonical commands", () => {
76+const canonicalCommands = Array.from({ length: 100 }, (_, i) => ({
77+command: `cmd_${i}`,
78+description: `Command ${i}`,
79+}));
80+const allCommands = [
81+ ...canonicalCommands.slice(0, 99),
82+{ command: "side", description: "Alias", isAlias: true },
83+canonicalCommands[99],
84+];
85+86+const result = buildCappedTelegramMenuCommands({ allCommands });
87+88+expect(result.commandsToRegister).toEqual(canonicalCommands);
89+expect(result.totalCommands).toBe(101);
90+expect(result.overflowCount).toBe(1);
91+});
92+93+it("preserves alias order when the Telegram command cap is not exceeded", () => {
94+const allCommands = [
95+{ command: "btw", description: "Ask a side question" },
96+{ command: "side", description: "Alias", isAlias: true },
97+{ command: "plugin_command", description: "Plugin command" },
98+];
99+100+const result = buildCappedTelegramMenuCommands({ allCommands });
101+102+expect(result.commandsToRegister).toEqual([
103+{ command: "btw", description: "Ask a side question" },
104+{ command: "side", description: "Alias" },
105+{ command: "plugin_command", description: "Plugin command" },
106+]);
107+expect(result.totalCommands).toBe(3);
108+expect(result.overflowCount).toBe(0);
109+});
110+111+it("counts aliases dropped by the Telegram command cap", () => {
112+const canonicalCommands = Array.from({ length: 99 }, (_, i) => ({
113+command: `cmd_${i}`,
114+description: `Command ${i}`,
115+}));
116+const aliasCommands = Array.from({ length: 5 }, (_, i) => ({
117+command: `alias_${i}`,
118+description: `Alias ${i}`,
119+isAlias: true,
120+}));
121+122+const result = buildCappedTelegramMenuCommands({
123+allCommands: [...canonicalCommands, ...aliasCommands],
124+});
125+126+expect(result.commandsToRegister).toEqual([
127+ ...canonicalCommands,
128+{ command: "alias_0", description: "Alias 0" },
129+]);
130+expect(result.totalCommands).toBe(104);
131+expect(result.overflowCount).toBe(4);
132+});
133+75134it("shortens descriptions before dropping commands to fit Telegram payload budget", () => {
76135const allCommands = Array.from({ length: 92 }, (_, i) => ({
77136command: `cmd_${i}`,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。