diff --git a/assistant/src/config/bundled-skills/messaging/tools/shared.ts b/assistant/src/config/bundled-skills/messaging/tools/shared.ts index fd4b8689cc6..d9289fa96d0 100644 --- a/assistant/src/config/bundled-skills/messaging/tools/shared.ts +++ b/assistant/src/config/bundled-skills/messaging/tools/shared.ts @@ -37,11 +37,16 @@ export function resolveProvider(platformInput?: string): MessagingProvider { /** * Execute a callback with a valid OAuth token for the given provider. + * Providers that manage their own auth (e.g. Telegram with a bot token) + * expose isConnected() and don't need an OAuth access_token lookup. */ export async function withProviderToken( provider: MessagingProvider, fn: (token: string) => Promise, ): Promise { + if (provider.isConnected?.()) { + return fn(''); + } return withValidToken(provider.credentialService, fn); } diff --git a/assistant/src/messaging/providers/telegram-bot/adapter.ts b/assistant/src/messaging/providers/telegram-bot/adapter.ts index cb293a36915..93d7cc2cd7f 100644 --- a/assistant/src/messaging/providers/telegram-bot/adapter.ts +++ b/assistant/src/messaging/providers/telegram-bot/adapter.ts @@ -74,26 +74,35 @@ export const telegramBotMessagingProvider: MessagingProvider = { }; } - const resp = await telegram.getMe(botToken); - if (!resp.ok || !resp.result) { + try { + const resp = await telegram.getMe(botToken); + if (!resp.ok || !resp.result) { + return { + connected: false, + user: 'unknown', + platform: 'telegram', + metadata: { error: resp.description ?? 'getMe failed' }, + }; + } + + return { + connected: true, + user: resp.result.username ?? resp.result.first_name, + platform: 'telegram', + metadata: { + botId: resp.result.id, + botUsername: resp.result.username, + botName: resp.result.first_name, + }, + }; + } catch (e) { return { connected: false, user: 'unknown', platform: 'telegram', - metadata: { error: resp.description ?? 'getMe failed' }, + metadata: { error: e instanceof Error ? e.message : 'getMe failed' }, }; } - - return { - connected: true, - user: resp.result.username ?? resp.result.first_name, - platform: 'telegram', - metadata: { - botId: resp.result.id, - botUsername: resp.result.username, - botName: resp.result.first_name, - }, - }; }, async sendMessage(_token: string, conversationId: string, text: string, _options?: SendOptions): Promise {