diff --git a/packages/plugin-teach/src/database/mongo.ts b/packages/plugin-teach/src/database/mongo.ts index 8236fc5c51..d2a57421d8 100644 --- a/packages/plugin-teach/src/database/mongo.ts +++ b/packages/plugin-teach/src/database/mongo.ts @@ -2,7 +2,7 @@ import { Context, extendDatabase } from 'koishi-core' import { clone, defineProperty, Observed, pick } from 'koishi-utils' import { FilterQuery } from 'mongodb' import MongoDatabase from 'koishi-plugin-mongo/dist/database' -import { Dialogue, DialogueTest } from '../utils' +import { Dialogue, DialogueTest, equal } from '../utils' declare module 'koishi-core/dist/context' { interface EventMap { @@ -31,7 +31,10 @@ extendDatabase('koishi-plugin-mongo', { return dialogues.filter(value => { if (value.flag & Dialogue.Flag.regexp) { const regex = new RegExp(value.question, 'i') - return regex.test(test.question) || regex.test(test.original) + if (!(regex.test(test.question) || regex.test(test.original))) return false + } + if (test.groups && !test.partial) { + return !(value.flag & Dialogue.Flag.complement) === test.reversed || !equal(test.groups, value.groups) } return true })