fix: only skip /chatid and /ping, let other / messages through
Previously all messages starting with / were silently dropped. This prevented NanoClaw-level commands like /remote-control from reaching the onMessage callback. Now only Telegram bot commands (/chatid, /ping) are skipped; everything else flows through as a regular message. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -295,16 +295,29 @@ describe('TelegramChannel', () => {
|
||||
expect(opts.onMessage).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('skips command messages (starting with /)', async () => {
|
||||
it('skips bot commands (/chatid, /ping) but passes other / messages through', async () => {
|
||||
const opts = createTestOpts();
|
||||
const channel = new TelegramChannel('test-token', opts);
|
||||
await channel.connect();
|
||||
|
||||
const ctx = createTextCtx({ text: '/start' });
|
||||
await triggerTextMessage(ctx);
|
||||
|
||||
// Bot commands should be skipped
|
||||
const ctx1 = createTextCtx({ text: '/chatid' });
|
||||
await triggerTextMessage(ctx1);
|
||||
expect(opts.onMessage).not.toHaveBeenCalled();
|
||||
expect(opts.onChatMetadata).not.toHaveBeenCalled();
|
||||
|
||||
const ctx2 = createTextCtx({ text: '/ping' });
|
||||
await triggerTextMessage(ctx2);
|
||||
expect(opts.onMessage).not.toHaveBeenCalled();
|
||||
|
||||
// Non-bot /commands should flow through
|
||||
const ctx3 = createTextCtx({ text: '/remote-control' });
|
||||
await triggerTextMessage(ctx3);
|
||||
expect(opts.onMessage).toHaveBeenCalledTimes(1);
|
||||
expect(opts.onMessage).toHaveBeenCalledWith(
|
||||
'tg:100200300',
|
||||
expect.objectContaining({ content: '/remote-control' }),
|
||||
);
|
||||
});
|
||||
|
||||
it('extracts sender name from first_name', async () => {
|
||||
|
||||
Reference in New Issue
Block a user