|
|
@@ -77,7 +77,7 @@ class PatternCog(BaseCog, name='Pattern Matching'):
|
|
77
|
77
|
return
|
|
78
|
78
|
|
|
79
|
79
|
patterns = self.__get_patterns(message.guild)
|
|
80
|
|
- for statement in patterns.values():
|
|
|
80
|
+ for statement in sorted(patterns.values(), key=lambda s : s.priority, reverse=True):
|
|
81
|
81
|
if statement.expression.matches(message):
|
|
82
|
82
|
await self.__trigger_actions(message, statement)
|
|
83
|
83
|
break
|
|
|
@@ -231,5 +231,28 @@ class PatternCog(BaseCog, name='Pattern Matching'):
|
|
231
|
231
|
return
|
|
232
|
232
|
msg = ''
|
|
233
|
233
|
for name, statement in sorted(patterns.items()):
|
|
234
|
|
- msg += f'Pattern `{name}`:\n```\n{statement.original}\n```\n'
|
|
|
234
|
+ msg += f'Pattern `{name}` (priority={statement.priority}):\n```\n{statement.original}\n```\n'
|
|
235
|
235
|
await context.message.reply(msg, mention_author=False)
|
|
|
236
|
+
|
|
|
237
|
+ @pattern.command(
|
|
|
238
|
+ brief='Sets a pattern\'s priority level',
|
|
|
239
|
+ description='Sets the priority for a pattern. Messages are checked ' +
|
|
|
240
|
+ 'against patterns with the highest priority first. Patterns with ' +
|
|
|
241
|
+ 'the same priority may be checked in arbitrary order. Default ' +
|
|
|
242
|
+ 'priority is 100.',
|
|
|
243
|
+ )
|
|
|
244
|
+ async def setpriority(self, context: commands.Context, name: str, priority: int) -> None:
|
|
|
245
|
+ 'Command handler'
|
|
|
246
|
+ patterns = self.__get_patterns(context.guild)
|
|
|
247
|
+ statement = patterns.get(name)
|
|
|
248
|
+ if statement is None:
|
|
|
249
|
+ await context.message.reply(
|
|
|
250
|
+ f'{CONFIG["failure_emoji"]} No such pattern `{name}`',
|
|
|
251
|
+ mention_author=False)
|
|
|
252
|
+ return
|
|
|
253
|
+ statement.priority = priority
|
|
|
254
|
+ self.__save_patterns(context.guild, patterns)
|
|
|
255
|
+ await context.message.reply(
|
|
|
256
|
+ f'{CONFIG["success_emoji"]} Priority for pattern `{name}` ' + \
|
|
|
257
|
+ f'updated to `{priority}`.',
|
|
|
258
|
+ mention_author=False)
|