From 92f9b79ce1d417cbae14ff9a4364855d9798a2b8 Mon Sep 17 00:00:00 2001 From: Shigma <1700011071@pku.edu.cn> Date: Fri, 28 Aug 2020 23:51:51 +0800 Subject: [PATCH] core: replies should not be interpreted as command calls, fix #95 --- packages/koishi-core/src/app.ts | 4 ++-- packages/koishi-core/src/plugins/shortcut.ts | 4 ++-- packages/plugin-teach/src/index.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/koishi-core/src/app.ts b/packages/koishi-core/src/app.ts index b0423de718..bf8134d202 100644 --- a/packages/koishi-core/src/app.ts +++ b/packages/koishi-core/src/app.ts @@ -250,9 +250,9 @@ export class App extends Context { await session.$group?._update() } - private _parse(message: string, { $prefix, $appel, messageType }: Session, builtin: boolean, terminator = '') { + private _parse(message: string, { $reply, $prefix, $appel, messageType }: Session, builtin: boolean, terminator = '') { // group message should have prefix or appel to be interpreted as a command call - if (builtin && messageType !== 'private' && $prefix === null && !$appel) return + if (builtin && ($reply || messageType !== 'private' && $prefix === null && !$appel)) return terminator = escapeRegExp(terminator) const name = message.split(new RegExp(`[\\s${terminator}]`), 1)[0] const index = name.lastIndexOf('/') diff --git a/packages/koishi-core/src/plugins/shortcut.ts b/packages/koishi-core/src/plugins/shortcut.ts index 7fc897ab3c..4c322bea00 100644 --- a/packages/koishi-core/src/plugins/shortcut.ts +++ b/packages/koishi-core/src/plugins/shortcut.ts @@ -56,8 +56,8 @@ export default function apply(ctx: Context) { } }) - ctx.on('parse', (message, { $prefix, $appel }, builtin) => { - if (!builtin || $prefix) return + ctx.on('parse', (message, { $reply, $prefix, $appel }, builtin) => { + if (!builtin || $prefix || $reply) return for (const shortcut of ctx.app._shortcuts) { const { name, fuzzy, command, oneArg, prefix, options, args = [] } = shortcut if (prefix && !$appel) continue diff --git a/packages/plugin-teach/src/index.ts b/packages/plugin-teach/src/index.ts index e9f12963ec..26d74c1db2 100644 --- a/packages/plugin-teach/src/index.ts +++ b/packages/plugin-teach/src/index.ts @@ -107,7 +107,7 @@ function registerPrefix(ctx: Context, prefix: string) { // $1 $2 ctx.on('parse', (source, session, builtin) => { - if (builtin && session.$prefix) return + if (builtin && session.$prefix || session.$reply) return const capture = source.match(teachRegExp) if (!capture) return