def on_regex(pattern: str, flags: Union[int, re.RegexFlag] = 0, rule: Optional[Rule] = None, permission: Permission = Permission(), **kwargs) -> Type[Matcher]: return on_message(regex(pattern, flags) & rule, permission, **kwargs) if rule else on_message( regex(pattern, flags), permission, **kwargs)
def on_regex( pattern: str, flags: Union[int, re.RegexFlag] = 0, rule: Optional[Union[Rule, T_RuleChecker]] = None, _depth: int = 0, **kwargs, ) -> Type[Matcher]: """ :说明: 注册一个消息事件响应器,并且当消息匹配正则表达式时响应。 命令匹配规则参考: `正则匹配 <rule.md#regex-regex-flags-0>`_ :参数: * ``pattern: str``: 正则表达式 * ``flags: Union[int, re.RegexFlag]``: 正则匹配标志 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限 * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表 * ``temp: bool``: 是否为临时事件响应器(仅执行一次) * ``priority: int``: 事件响应器优先级 * ``block: bool``: 是否阻止事件向更低优先级传递 * ``state: Optional[T_State]``: 默认 state :返回: - ``Type[Matcher]`` """ return on_message(regex(pattern, flags) & rule, **kwargs, _depth=_depth + 1)
def on_regex( pattern: str, flags: Union[int, re.RegexFlag] = 0, rule: Optional[Union[Rule, T_RuleChecker]] = None, _depth: int = 0, **kwargs, ) -> Type[Matcher]: """ 注册一个消息事件响应器,并且当消息匹配正则表达式时响应。 命令匹配规则参考: `正则匹配 <rule.md#regex-regex-flags-0>`_ 参数: pattern: 正则表达式 flags: 正则匹配标志 rule: 事件响应规则 permission: 事件响应权限 handlers: 事件处理函数列表 temp: 是否为临时事件响应器(仅执行一次) priority: 事件响应器优先级 block: 是否阻止事件向更低优先级传递 state: 默认 state """ return on_message(regex(pattern, flags) & rule, **kwargs, _depth=_depth + 1)
def on_regex(self, pattern: str, flags: Union[int, re.RegexFlag] = 0, rule: Optional[Rule] = None, **kwargs) -> Type[Matcher]: """ :说明: 注册一个消息事件响应器,并且当消息匹配正则表达式时响应。 命令匹配规则参考: `正则匹配 <rule.html#regex-regex-flags-0>`_ :参数: * ``pattern: str``: 正则表达式 * ``flags: Union[int, re.RegexFlag]``: 正则匹配标志 * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则 * ``permission: Optional[Permission]``: 事件响应权限 * ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表 * ``temp: bool``: 是否为临时事件响应器(仅执行一次) * ``priority: int``: 事件响应器优先级 * ``block: bool``: 是否阻止事件向更低优先级传递 * ``state: Optional[T_State]``: 默认 state * ``state_factory: Optional[T_StateFactory]``: 默认 state 的工厂函数 :返回: - ``Type[Matcher]`` """ return self.on_message(rule=regex(pattern, flags) & rule, **kwargs)
def on_regex( self, pattern: str, docs: str, flags: Union[int, re.RegexFlag] = 0, rule: Optional[Union[Rule, T_RuleChecker]] = None, **kwargs, ) -> Type[Matcher]: _type = "regex" if not rule: rule = self.rule cmd_list = self._load_cmds() cmd_list[pattern] = CommandInfo(type=_type, docs=docs, aliases=list()).dict() self._save_cmds(cmd_list) return self.on_message(rule=regex(pattern, flags) & rule, **kwargs)
from nonebot.rule import regex from epicteller.bot.controller import base from epicteller.core.controller import message as message_ctl from epicteller.core.controller import episode as episode_ctl from epicteller.core.controller import room as room_ctl from epicteller.core.model.character import Character from epicteller.core.model.episode import Episode from epicteller.core.model.message import TextMessageContent, ImageMessageContent, MessageContent from epicteller.core.util import imghosting from epicteller.core.util.enum import MessageType, ExternalType VALID_MESSAGE_REGEX_PATTERN = r'^[^()()]' VALID_MESSAGE_REGEX = re.compile(VALID_MESSAGE_REGEX_PATTERN) say = on_message(rule=regex(VALID_MESSAGE_REGEX_PATTERN), permission=permission.GROUP, priority=99999) @say.handle() async def _(bot: Bot, event: MessageEvent, state: dict): await prepare(bot, event, state) episode: Episode = state.get('episode') character: Character = state.get('character') message_type: MessageType = state.get('message_type') content: MessageContent = state.get('content') is_gm: bool = state.get('is_gm') message = await message_ctl.create_message(episode, character, message_type, content, is_gm)
from loguru import logger from nonebot import on_command from nonebot.adapters.cqhttp import Bot, Event, unescape from .utils import searchPic, pixivicurl, auth, sauce, ascii2d import Pbot.cq as cq from nonebot.rule import regex import re st = on_command("st", rule=regex("^st")) @st.handle() async def _(bot: Bot, event: Event, state: dict): msg = str(event.message).strip() if msg: state["keyword"] = msg @st.got("keyword", prompt="发送你想搜的图吧!") async def _(bot: Bot, event: Event, state: dict): msg = event.current_arg_images if len(msg) > 0: state["pic"] = msg[0] return msg = str(event.message).strip() if msg: state["keyword"] = msg else: await st.reject("输入为空哦!!")
return except error.combat.CombatOrderEmptyError: await combat_cmd.finish('❌ 先攻列表为空,无法进入下一行动轮。') return async def combat_end(bot: Bot, event: MessageEvent, state: dict): combat: Combat = state['combat'] try: await combat_ctl.end_combat(combat) except error.combat.CombatEndedError: await combat_cmd.finish('❌ 当前战斗已结束。') return next_token = on_message(rule=regex(r'^\s*(回合结束|行动结束)\s*$'), permission=permission.GROUP, priority=99998, block=True) @next_token.handle() async def _(bot: Bot, event: MessageEvent, state: dict): await prepare_combat_context(next_token, bot, event, state) combat: Combat = state['combat'] if not combat or combat.state != CombatState.RUNNING: return is_gm: bool = state['is_gm'] character: Optional[Character] = state['character'] if not is_gm: if not character:
from nonebot.rule import regex from epicteller.bot.controller import base from epicteller.core import error from epicteller.core.config import Config from epicteller.core.controller import combat as combat_ctl from epicteller.core.controller import dice as dice_ctl from epicteller.core.controller import message as message_ctl from epicteller.core.model.character import Character from epicteller.core.model.combat import CombatToken from epicteller.core.model.episode import Episode from epicteller.core.model.message import DiceMessageContent from epicteller.core.model.room import Room from epicteller.core.util.enum import DiceType, MessageType, CombatState dice = on_message(rule=regex(r'^[##::]|^(\.r)')) @dice.handle() async def _(bot: Bot, event: MessageEvent, state: dict): await prepare(bot, event, state) is_prepared = await base.prepare_context(dice, bot, event, state) result, reason = await must_get_dice_result(bot, event, state) value = result.value reason_clause = f"以「{reason}」的名义" if reason else '' msg = f"🎲 {get_operator_name(event)}{reason_clause}掷出了" if isinstance(value, Iterable): dice_type = DiceType.ARRAY msg += f"一串骰子,分别是 {', '.join(map(str, value))} 点。\n" elif isinstance(value, bool): dice_type = DiceType.CHECK
from loguru import logger from nonebot import on_command from nonebot.adapters.cqhttp import Bot, Event, unescape from Pbot.utils import cksafe from .utils import searchPic, pixivicurl, auth, sauce, ascii2d, getSetuHigh import Pbot.cq as cq from nonebot.rule import regex import re st = on_command("st", rule=regex("^st(?: |$)")) @st.handle() async def _(bot: Bot, event: Event, state: dict): msg = str(event.message).strip() if msg: state["keyword"] = msg @st.got("keyword", prompt="发送你想搜的图吧!") async def _(bot: Bot, event: Event, state: dict): msg = event.current_arg_images if len(msg) > 0: state["pic"] = msg[0] return msg = str(event.message).strip() if msg: state["keyword"] = msg else: await st.reject("输入为空哦!!")