diff --git a/src/channels/adapter.ts b/src/channels/adapter.ts index de95700..d8859c9 100644 --- a/src/channels/adapter.ts +++ b/src/channels/adapter.ts @@ -20,7 +20,11 @@ export interface ChannelSetup { conversations: ConversationConfig[]; /** Called when an inbound message arrives from the platform. */ - onInbound(platformId: string, threadId: string | null, message: InboundMessage): void; + onInbound( + platformId: string, + threadId: string | null, + message: InboundMessage, + ): void | Promise; /** Called when the adapter discovers metadata about a conversation. */ onMetadata(platformId: string, name?: string, isGroup?: boolean): void; diff --git a/src/channels/chat-sdk-bridge.ts b/src/channels/chat-sdk-bridge.ts index 727a942..ed3a781 100644 --- a/src/channels/chat-sdk-bridge.ts +++ b/src/channels/chat-sdk-bridge.ts @@ -165,20 +165,20 @@ export function createChatSdkBridge(config: ChatSdkBridgeConfig): ChannelAdapter // Subscribed threads — forward all messages chat.onSubscribedMessage(async (thread, message) => { const channelId = adapter.channelIdFromThreadId(thread.id); - setupConfig.onInbound(channelId, thread.id, await messageToInbound(message)); + await setupConfig.onInbound(channelId, thread.id, await messageToInbound(message)); }); // @mention in unsubscribed thread — forward + subscribe chat.onNewMention(async (thread, message) => { const channelId = adapter.channelIdFromThreadId(thread.id); - setupConfig.onInbound(channelId, thread.id, await messageToInbound(message)); + await setupConfig.onInbound(channelId, thread.id, await messageToInbound(message)); await thread.subscribe(); }); // DMs — always forward + subscribe chat.onDirectMessage(async (thread, message) => { const channelId = adapter.channelIdFromThreadId(thread.id); - setupConfig.onInbound(channelId, null, await messageToInbound(message)); + await setupConfig.onInbound(channelId, null, await messageToInbound(message)); await thread.subscribe(); }); diff --git a/src/channels/telegram.ts b/src/channels/telegram.ts index 72bb5c0..a974ca8 100644 --- a/src/channels/telegram.ts +++ b/src/channels/telegram.ts @@ -115,8 +115,8 @@ function createPairingInterceptor( hostOnInbound: ChannelSetup['onInbound'], token: string, ): ChannelSetup['onInbound'] { - return (platformId, threadId, message) => { - void (async () => { + return async (platformId, threadId, message) => { + try { const botUsername = await botUsernamePromise; if (!botUsername) { hostOnInbound(platformId, threadId, message); @@ -187,11 +187,11 @@ function createPairingInterceptor( }); await sendPairingConfirmation(token, platformId); - })().catch((err) => { + } catch (err) { log.error('Telegram pairing interceptor error', { err }); // Fail open: pass through so a pairing bug doesn't break normal traffic. hostOnInbound(platformId, threadId, message); - }); + } }; }