diff --git a/bots/discord/config.schema.ts b/bots/discord/config.schema.ts index 300d11d..b20e9f1 100644 --- a/bots/discord/config.schema.ts +++ b/bots/discord/config.schema.ts @@ -72,7 +72,7 @@ export type ConfigMessageScanResponse = { } filterOverride?: NonNullable['filter'] response: ConfigMessageScanResponseMessage - respondToReply?: boolean + respondToReply?: boolean | 'only_regex' | 'only_labeled' } export type ConfigMessageScanResponseLabelConfig = { diff --git a/bots/discord/src/events/discord/messageCreate/messageScan.ts b/bots/discord/src/events/discord/messageCreate/messageScan.ts index 4e2dd5e..f9653bc 100644 --- a/bots/discord/src/events/discord/messageCreate/messageScan.ts +++ b/bots/discord/src/events/discord/messageCreate/messageScan.ts @@ -33,7 +33,15 @@ withContext(on, 'messageCreate', async (context, msg) => { if (response) { logger.debug('Response found') - const toReply = respondToReply ? (msg.reference?.messageId ? await msg.fetchReference() : msg) : msg + const toReply = ( + respondToReply === true + ? true + : (respondToReply === 'only_labeled' && label !== undefined) || + (respondToReply === 'only_regex' && label === undefined) + ) + ? await msg.fetchReference() + : msg + const reply = await toReply.reply({ ...response, embeds: response.embeds?.map(createMessageScanResponseEmbed),