mirror of
https://github.com/LiteyukiStudio/LiteyukiBot.git
synced 2024-11-25 03:05:05 +08:00
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Copyright (C) 2020-2024 LiteyukiStudio. All Rights Reserved
|
|
|
|
@Time : 2024/8/19 下午10:52
|
|
@Author : snowykami
|
|
@Email : snowykami@outlook.com
|
|
@File : on.py
|
|
@Software: PyCharm
|
|
"""
|
|
|
|
from queue import Queue
|
|
|
|
from liteyuki.session.event import MessageEvent
|
|
from liteyuki.session.matcher import Matcher
|
|
from liteyuki.session.rule import Rule, empty_rule
|
|
|
|
_matcher_list: list[Matcher] = []
|
|
_queue: Queue = Queue()
|
|
|
|
def add_matcher(matcher: Matcher):
|
|
for i, m in enumerate(_matcher_list):
|
|
if m.priority < matcher.priority:
|
|
_matcher_list.insert(i, matcher)
|
|
break
|
|
else:
|
|
_matcher_list.append(matcher)
|
|
|
|
|
|
def on_message(rule: Rule = empty_rule, priority: int = 0, block: bool = False) -> Matcher:
|
|
matcher = Matcher(rule, priority, block)
|
|
# 按照优先级插入
|
|
add_matcher(matcher)
|
|
return matcher
|
|
|
|
|
|
def on_keywords(keywords: list[str], rule=empty_rule, priority: int = 0, block: bool = False) -> Matcher:
|
|
@Rule
|
|
async def on_keywords_rule(event: MessageEvent):
|
|
return any(keyword in event.raw_message for keyword in keywords)
|
|
|
|
return on_message(on_keywords_rule & rule, priority, block)
|