feat: 支持同时运行多个平台适配器

This commit is contained in:
RockChinQ
2024-02-11 23:07:38 +08:00
parent f951625025
commit 9cad94e961
22 changed files with 148 additions and 74 deletions

View File

@@ -47,7 +47,7 @@ class GroupRespondRuleCheckStage(stage.PipelineStage):
use_rule = use_rule[str(query.launcher_id)]
for rule_matcher in self.rule_matchers: # 任意一个匹配就放行
res = await rule_matcher.match(str(query.message_chain), query.message_chain, use_rule)
res = await rule_matcher.match(str(query.message_chain), query.message_chain, use_rule, query)
if res.matching:
query.message_chain = res.replacement

View File

@@ -3,7 +3,7 @@ import abc
import mirai
from ...core import app
from ...core import app, entities as core_entities
from . import entities
@@ -24,7 +24,8 @@ class GroupRespondRule(metaclass=abc.ABCMeta):
self,
message_text: str,
message_chain: mirai.MessageChain,
rule_dict: dict
rule_dict: dict,
query: core_entities.Query
) -> entities.RuleJudgeResult:
"""判断消息是否匹配规则
"""

View File

@@ -4,6 +4,7 @@ import mirai
from .. import rule as rule_model
from .. import entities
from ....core import entities as core_entities
class AtBotRule(rule_model.GroupRespondRule):
@@ -12,11 +13,12 @@ class AtBotRule(rule_model.GroupRespondRule):
self,
message_text: str,
message_chain: mirai.MessageChain,
rule_dict: dict
rule_dict: dict,
query: core_entities.Query
) -> entities.RuleJudgeResult:
if message_chain.has(mirai.At(self.ap.im_mgr.bot_account_id)) and rule_dict['at']:
message_chain.remove(mirai.At(self.ap.im_mgr.bot_account_id))
if message_chain.has(mirai.At(query.adapter.bot_account_id)) and rule_dict['at']:
message_chain.remove(mirai.At(query.adapter.bot_account_id))
return entities.RuleJudgeResult(
matching=True,
replacement=message_chain,

View File

@@ -2,6 +2,7 @@ import mirai
from .. import rule as rule_model
from .. import entities
from ....core import entities as core_entities
class PrefixRule(rule_model.GroupRespondRule):
@@ -10,7 +11,8 @@ class PrefixRule(rule_model.GroupRespondRule):
self,
message_text: str,
message_chain: mirai.MessageChain,
rule_dict: dict
rule_dict: dict,
query: core_entities.Query
) -> entities.RuleJudgeResult:
prefixes = rule_dict['prefix']

View File

@@ -4,6 +4,7 @@ import mirai
from .. import rule as rule_model
from .. import entities
from ....core import entities as core_entities
class RandomRespRule(rule_model.GroupRespondRule):

View File

@@ -4,6 +4,7 @@ import mirai
from .. import rule as rule_model
from .. import entities
from ....core import entities as core_entities
class RegExpRule(rule_model.GroupRespondRule):