fix(bot): silence topic processor failure messages unless explicitly mentioned

Previously, the bot would reply with a 'Zzz...' message to every message in a topic if the topic processor failed or was missing. This change ensures the bot remains silent unless it is explicitly mentioned by the user.
This commit is contained in:
2026-03-14 14:33:29 +04:00
parent f38ee499ae
commit b44b3bde93
2 changed files with 60 additions and 39 deletions

View File

@@ -635,18 +635,22 @@ export function registerConfiguredPaymentTopicIngestion(
engagementAssessment: conversationContext.engagement
})
// Handle processor failure
// Handle processor failure - only if explicitly mentioned
if (!processorResult) {
const { botSleepsMessage } = await import('./topic-processor')
await replyToPaymentMessage(
ctx,
botSleepsMessage(locale === 'ru' ? 'ru' : 'en'),
undefined,
{
repository: options.historyRepository,
record
}
)
if (conversationContext.explicitMention) {
const { botSleepsMessage } = await import('./topic-processor')
await replyToPaymentMessage(
ctx,
botSleepsMessage(locale === 'ru' ? 'ru' : 'en'),
undefined,
{
repository: options.historyRepository,
record
}
)
} else {
await next()
}
return
}
@@ -856,12 +860,21 @@ export function registerConfiguredPaymentTopicIngestion(
}
}
// No topic processor available - bot sleeps
const { botSleepsMessage } = await import('./topic-processor')
await replyToPaymentMessage(ctx, botSleepsMessage(locale === 'ru' ? 'ru' : 'en'), undefined, {
repository: options.historyRepository,
record
})
// No topic processor available
if (stripExplicitBotMention(ctx) !== null) {
const { botSleepsMessage } = await import('./topic-processor')
await replyToPaymentMessage(
ctx,
botSleepsMessage(locale === 'ru' ? 'ru' : 'en'),
undefined,
{
repository: options.historyRepository,
record
}
)
} else {
await next()
}
} catch (error) {
options.logger?.error(
{

View File

@@ -2476,18 +2476,22 @@ export function registerConfiguredPurchaseTopicIngestion(
engagementAssessment: conversationContext.engagement
})
// Handle processor failure - fun "bot sleeps" message
// Handle processor failure - fun "bot sleeps" message only if explicitly mentioned
if (!processorResult) {
const { botSleepsMessage } = await import('./topic-processor')
await replyToPurchaseMessage(
ctx,
botSleepsMessage(householdContext.locale === 'ru' ? 'ru' : 'en'),
undefined,
{
repository: options.historyRepository,
record
}
)
if (conversationContext.explicitMention) {
const { botSleepsMessage } = await import('./topic-processor')
await replyToPurchaseMessage(
ctx,
botSleepsMessage(householdContext.locale === 'ru' ? 'ru' : 'en'),
undefined,
{
repository: options.historyRepository,
record
}
)
} else {
await next()
}
return
}
@@ -2586,17 +2590,21 @@ export function registerConfiguredPurchaseTopicIngestion(
}
}
// No topic processor available - bot sleeps
const { botSleepsMessage } = await import('./topic-processor')
await replyToPurchaseMessage(
ctx,
botSleepsMessage(householdContext.locale === 'ru' ? 'ru' : 'en'),
undefined,
{
repository: options.historyRepository,
record
}
)
// No topic processor available
if (conversationContext.explicitMention) {
const { botSleepsMessage } = await import('./topic-processor')
await replyToPurchaseMessage(
ctx,
botSleepsMessage(householdContext.locale === 'ru' ? 'ru' : 'en'),
undefined,
{
repository: options.historyRepository,
record
}
)
} else {
await next()
}
} catch (error) {
options.logger?.error(
{