mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-11 21:30:59 +00:00
feat: 群响应规则的扩展性
This commit is contained in:
@@ -21,15 +21,13 @@ class GroupRespondRuleCheckStage(stage.PipelineStage):
|
|||||||
async def initialize(self):
|
async def initialize(self):
|
||||||
"""初始化检查器
|
"""初始化检查器
|
||||||
"""
|
"""
|
||||||
self.rule_matchers = [
|
|
||||||
atbot.AtBotRule(self.ap),
|
|
||||||
prefix.PrefixRule(self.ap),
|
|
||||||
regexp.RegExpRule(self.ap),
|
|
||||||
random.RandomRespRule(self.ap),
|
|
||||||
]
|
|
||||||
|
|
||||||
for rule_matcher in self.rule_matchers:
|
self.rule_matchers = []
|
||||||
await rule_matcher.initialize()
|
|
||||||
|
for rule_matcher in rule.preregisetered_rules:
|
||||||
|
rule_inst = rule_matcher(self.ap)
|
||||||
|
await rule_inst.initialize()
|
||||||
|
self.rule_matchers.append(rule_inst)
|
||||||
|
|
||||||
async def process(self, query: core_entities.Query, stage_inst_name: str) -> entities.StageProcessResult:
|
async def process(self, query: core_entities.Query, stage_inst_name: str) -> entities.StageProcessResult:
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
import abc
|
import abc
|
||||||
|
import typing
|
||||||
|
|
||||||
import mirai
|
import mirai
|
||||||
|
|
||||||
@@ -7,9 +8,20 @@ from ...core import app, entities as core_entities
|
|||||||
from . import entities
|
from . import entities
|
||||||
|
|
||||||
|
|
||||||
|
preregisetered_rules: list[typing.Type[GroupRespondRule]] = []
|
||||||
|
|
||||||
|
def rule_class(name: str):
|
||||||
|
def decorator(cls: typing.Type[GroupRespondRule]) -> typing.Type[GroupRespondRule]:
|
||||||
|
cls.name = name
|
||||||
|
preregisetered_rules.append(cls)
|
||||||
|
return cls
|
||||||
|
return decorator
|
||||||
|
|
||||||
|
|
||||||
class GroupRespondRule(metaclass=abc.ABCMeta):
|
class GroupRespondRule(metaclass=abc.ABCMeta):
|
||||||
"""群组响应规则的抽象类
|
"""群组响应规则的抽象类
|
||||||
"""
|
"""
|
||||||
|
name: str
|
||||||
|
|
||||||
ap: app.Application
|
ap: app.Application
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from .. import entities
|
|||||||
from ....core import entities as core_entities
|
from ....core import entities as core_entities
|
||||||
|
|
||||||
|
|
||||||
|
@rule_model.rule_class("at-bot")
|
||||||
class AtBotRule(rule_model.GroupRespondRule):
|
class AtBotRule(rule_model.GroupRespondRule):
|
||||||
|
|
||||||
async def match(
|
async def match(
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from .. import entities
|
|||||||
from ....core import entities as core_entities
|
from ....core import entities as core_entities
|
||||||
|
|
||||||
|
|
||||||
|
@rule_model.rule_class("prefix")
|
||||||
class PrefixRule(rule_model.GroupRespondRule):
|
class PrefixRule(rule_model.GroupRespondRule):
|
||||||
|
|
||||||
async def match(
|
async def match(
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from .. import entities
|
|||||||
from ....core import entities as core_entities
|
from ....core import entities as core_entities
|
||||||
|
|
||||||
|
|
||||||
|
@rule_model.rule_class("random")
|
||||||
class RandomRespRule(rule_model.GroupRespondRule):
|
class RandomRespRule(rule_model.GroupRespondRule):
|
||||||
|
|
||||||
async def match(
|
async def match(
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from .. import entities
|
|||||||
from ....core import entities as core_entities
|
from ....core import entities as core_entities
|
||||||
|
|
||||||
|
|
||||||
|
@rule_model.rule_class("regexp")
|
||||||
class RegExpRule(rule_model.GroupRespondRule):
|
class RegExpRule(rule_model.GroupRespondRule):
|
||||||
|
|
||||||
async def match(
|
async def match(
|
||||||
|
|||||||
Reference in New Issue
Block a user