# Custom plugin usage text __plugin_name__ = '求签' __plugin_usage__ = r'''【求签】 求签, 求运势, 包括且不限于抽卡、吃饭、睡懒觉、DD 每个人每天求同一个东西的结果是一样的啦! 不要不信邪重新抽啦! **Permission** Command & Lv.10 **Usage** /求签 [所求之事] /DD老黄历''' # Init plugin export init_export(export(), __plugin_name__, __plugin_usage__) # 注册事件响应器 Maybe = CommandGroup('maybe', rule=has_command_permission() & permission_level(level=10), permission=GROUP, priority=10, block=True) luck = Maybe.command('luck', aliases={'求签'}) # 修改默认参数处理 @luck.args_parser async def parse(bot: Bot, event: GroupMessageEvent, state: T_State): args = str(event.get_plaintext()).strip().lower().split() if not args: await luck.reject('你似乎没有发送有效的参数呢QAQ, 请重新发送:') state[state["_current_key"]] = args[0]
from pathlib import Path import nonebot from .data_source import user_cache_dir, user_config_dir, user_data_dir BASE_CACHE_DIR = Path(user_cache_dir("nonebot2")).resolve() BASE_CONFIG_DIR = Path(user_config_dir("nonebot2")).resolve() BASE_DATA_DIR = Path(user_data_dir("nonebot2")).resolve() export = nonebot.export() @export def get_cache_dir(plugin_name: str) -> str: return str(BASE_CACHE_DIR / plugin_name) @export def get_cache_file(plugin_name: str, filename: str) -> str: return str(BASE_CACHE_DIR / plugin_name / filename) @export def get_config_dir(plugin_name: str) -> str: return str(BASE_CONFIG_DIR / plugin_name) @export def get_config_file(plugin_name: str, filename: str) -> str: return str(BASE_CONFIG_DIR / plugin_name / filename)
**SuperUser Only** /图库统计 /导入图库''' # 声明本插件可配置的权限节点 __plugin_auth_node__ = [PluginCoolDown.skip_auth_node, 'setu', 'moepic'] # 声明本插件的冷却时间配置 __plugin_cool_down__ = [ PluginCoolDown(__plugin_raw_name__, 'user', 10), PluginCoolDown(__plugin_raw_name__, 'group', 2) ] # Init plugin export init_export(export(), __plugin_name__, __plugin_usage__, __plugin_auth_node__, __plugin_cool_down__) # 注册事件响应器 setu = on_command('来点涩图', rule=has_command_permission() & has_level_or_node(50, __plugin_raw_name__, 'setu'), permission=GROUP, priority=20, block=True) @setu.handle() async def handle_first_receive(bot: Bot, event: GroupMessageEvent, state: T_State): args = set(str(event.get_plaintext()).strip().split())
**Usage** /抽卡 [卡组]''' # 声明本插件可配置的权限节点 __plugin_auth_node__ = [ PluginCoolDown.skip_auth_node ] # 声明本插件的冷却时间配置 __plugin_cool_down__ = [ PluginCoolDown(__plugin_raw_name__, 'user', 1) ] # Init plugin export init_export(export(), __plugin_name__, __plugin_usage__, __plugin_auth_node__, __plugin_cool_down__) # 注册事件响应器 Draw = CommandGroup('draw', rule=has_command_permission() & permission_level(level=10), permission=GROUP, priority=10, block=True) deck = Draw.command('deck', aliases={'抽卡'}) # 修改默认参数处理 @deck.args_parser async def parse(bot: Bot, event: GroupMessageEvent, state: T_State): args = str(event.get_plaintext()).strip().lower().split() if not args: await deck.reject('你似乎没有发送有效的参数呢QAQ, 请重新发送:') state[state["_current_key"]] = args[0]
""" Nonebot 2 Dice Plugin Author: XZhouQD Since: 16 May 2021 """ from pathlib import Path import nonebot from .handler import dice # store all subplugins _sub_plugins = set() # load sub plugins _sub_plugins |= nonebot.load_plugins( str((Path(__file__).parent / "plugins").resolve())) default_start = list(nonebot.get_driver().config.command_start)[0] __usage__ = f'掷x个y面骰,为每个骰子增加附加值a,增加总和附加值b,使用{default_start}roll xdy+aSb' __help_version__ = '0.1.0' __help_plugin_name__ = "XZhouQD's Dice" nonebot.export().roll = dice
import logging from nonebot import get_driver, export from nonebot.log import logger, LoguruHandler from apscheduler.schedulers.asyncio import AsyncIOScheduler from .config import Config driver = get_driver() global_config = driver.config plugin_config = Config(**global_config.dict()) scheduler = AsyncIOScheduler() export().scheduler = scheduler async def _start_scheduler(): if not scheduler.running: scheduler.configure(plugin_config.apscheduler_config) scheduler.start() logger.opt(colors=True).info("<y>Scheduler Started</y>") if plugin_config.apscheduler_autostart: driver.on_startup(_start_scheduler) aps_logger = logging.getLogger("apscheduler") aps_logger.setLevel(plugin_config.apscheduler_log_level) aps_logger.handlers.clear() aps_logger.addHandler(LoguruHandler())
from nonebot import export from nonebot import get_driver from nonebot.adapters.cqhttp import Bot, Event, GroupMessageEvent from nonebot.rule import T_State from .config import Config global_config = get_driver().config config = Config(**global_config.dict()) export = export() async def separate_trigger(bot: Bot, event: Event, state: T_State): """ 群里事件与私人事件分离 并且群与群之间分离 """ if "event" not in state: state["event"] = event else: if state["event"] is not event: return False if isinstance(event, GroupMessageEvent): if "group_id" not in state: state["group_id"] = event.group_id return state["group_id"] == event.group_id return True export.separate_trigger = separate_trigger
"""风格化字符串管理""" import nonebot from nonebot import export from . import config as conf from .styledstr import Styledstr driver = nonebot.get_driver() config = conf.Config(**driver.config.dict()) # 导出解析器对象 export().parser = Styledstr(config)
from pathlib import Path import json from .Service import * from nonebot import export, get_driver, on_command from nonebot.rule import to_me from nonebot.log import logger from nonebot.typing import T_State from nonebot.adapters.cqhttp import Bot, Event # Initialization driver = get_driver() export().Service = Service plugins = list() cfg = Path(__file__).parent / '_services' / 'gcfg.json' def _init(): if Path.is_file(cfg): Path.unlink(cfg) async def _get_plugins(): if not Path.is_file(cfg): return with open(cfg, 'r', encoding='UTF-8') as f: global plugins try: plugins = list(json.load(f).get('plugins')) logger.info('成功添加%d个插件于分群管理' % len(plugins))
"""冷却事件插件""" from nonebot import export from . import cooldown, rule export().cooldown = cooldown export().rule = rule