from nonebot.exception import FinishedException from nonebot.permission import GROUP from nonebot.typing import Bot, Event from src.utils.commands import get_command_help from src.utils.helpers import strtobool from .config import plugin_config from .fflogs_api import fflogs from .gate import get_direction from .news import news ff14 = CommandGroup('ff14', block=True) #region 藏宝选门 gate_cmd = ff14.command('gate', aliases={'gate'}) gate_cmd.__doc__ = """ ff14.gate gate 最终幻想XIV 藏宝选门 选择门的数量 /gate 2 /gate 3 """ @gate_cmd.args_parser async def _(bot: Bot, event: Event, state: dict): args = str(event.message).strip()
**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] if state[state["_current_key"]] == '取消': await luck.finish('操作已取消') @luck.handle() async def handle_first_receive(bot: Bot, event: GroupMessageEvent, state: T_State):
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] if state[state["_current_key"]] == '取消': await deck.finish('操作已取消') @deck.handle() async def handle_first_receive(bot: Bot, event: GroupMessageEvent, state: T_State):
from nonebot.params import ArgPlainText, CommandArg, Depends from src.utils.helpers import strtobool from ..help.commands import get_command_help from .config import DATA, global_config, plugin_config from .fflogs_api import fflogs from .fflogs_data import FFLOGS_DATA from .gate import get_direction from .nuannuan import get_latest_nuannuan from .universalis_api import get_item_price ff14 = CommandGroup("ff14") # region 藏宝选门 gate_cmd = ff14.command("gate", aliases={"gate"}) gate_cmd.__doc__ = """ 最终幻想XIV 藏宝选门 选择门的数量 /gate 2 /gate 3 """ async def get_door_number(door_number: str = ArgPlainText()) -> int: """获取门的数量""" if not door_number: await gate_cmd.reject("你什么都不输入我怎么知道呢,请告诉我有几个门!") if not door_number.isdigit():
参考 https://github.com/pcrbot/yobot """ from nonebot import CommandGroup from nonebot.typing import Bot, Event from src.utils.helpers import strtobool from .calender import calender from .config import plugin_config from .news import news pcr = CommandGroup('pcr', block=True) #region 新闻推送 news_cmd = pcr.command('news') news_cmd.__doc__ = """ pcr.news 公主连结Re:Dive 新闻推送 当前新闻推送状态 /pcr.news 开启推送 /pcr.news on 关闭推送 /pcr.news off """ @news_cmd.handle()
from .scheduler import * from .types import Target from .utils import parse_text common_platform = [ p.platform_name for p in filter( lambda platform: platform.enabled and platform.is_common, platform_manager.values(), ) ] sub = CommandGroup("sub") # region 添加订阅 add_sub_cmd = sub.command("add", aliases={"添加订阅"}, permission=GROUP_ADMIN | GROUP_OWNER | SUPERUSER) add_sub_cmd.__doc__ = """ 订阅 仅允许群主与管理员操作 /添加订阅 """ @add_sub_cmd.handle() async def init_promote(event: GroupMessageEvent, state: T_State): state["_prompt"] = ("请输入想要订阅的平台,目前支持:\n" + "".join([ "{}:{}\n".format(platform_name, platform_manager[platform_name].name) for platform_name in common_platform ]) + '要查看全部平台请输入:"全部"')
# endregion # region 复读 repeat_message = on_message( rule=need_repeat, permission=GROUP, priority=5, block=True, ) @repeat_message.handle() async def repeat_message_handle(event: GroupMessageEvent): await repeat_message.finish(event.message) repeat_cmd = repeat.command("basic", aliases={"repeat", "复读"}, permission=GROUP) repeat_cmd.__doc__ = """ 复读 查看当前群是否启用复读功能 /repeat 启用复读功能 /repeat on 关闭复读功能 /repeat off """ @repeat_cmd.handle() async def repeat_handle(event: GroupMessageEvent, arg: Message = CommandArg()): args = arg.extract_plain_text()
P = register('flexperm') cg = CommandGroup('flexperm') def h(x): return x.handle() def plaintext(_b, e, _s): return all(seg.is_text() for seg in e.get_message()) @h(cg.command('help', permission=P('edit.perm.group'))) async def _(bot: Bot, event: Event): help_msg = f"添加权限:/flexperm.add 权限描述\n" \ f"移除权限:/flexperm.remove 权限描述\n" \ f"可设置权限的插件列表:\n" help_msg += '\n'.join(plugins.keys()) await bot.send(event, help_msg) @h(cg.command('reload', permission=P('reload'))) async def _(bot: Bot, event: Event): core.reload() await bot.send(event, '重新加载权限配置') @h(cg.command('save', permission=P('reload')))
async def mimikko_sign_in_auto(): bot = get_bots()[config.bot_id] sign_data, energy_info_data, energy_reward_data, sign_info, sign_history = mimikko(app_id, authorization) res = "Sign Data:\n" res += f"获得成长值Reward:{sign_data['body']['Reward']}\n" res += f"获得硬币GetCoin:{sign_data['body']['GetCoin']}\n" if sign_data["code"] == "0": res += f"[CQ:image,file=file:///{drawSigncard(sign_data)}]\n" res += "================\nSign History:\n" day_list = [] for item in sign_history["body"]["signLogs"]: rex_data = re.search("(?P<月>.*)月(?P<日>.*)日", timeStamp2time(item["signDate"])) if rex_data.group("月") == re.search( "(?P<月>.*)月(?P<日>.*)日", timeStamp2time(sign_history["body"]["startTime"]) ).group("月"): day_list.append(rex_data.group("日")) img_path = drawMonth(datetime.datetime.now().month, day_list, plugin_path) res += f"[CQ:image,file=file:///{plugin_path}/{img_path}]" await bot.send_group_msg(group_id=group_id, message=Message(res)) # 1. mimikko sign: 梦梦奈签到 # 2. mimikko energy: 领取能量值 # 3. mimikko check: 检查签到状态 # 4. 自动签到任务 mimikko_com = CommandGroup("mimikko") bots = mimikko_com.command("sign", handlers=[mimikko_sign]) matchers = mimikko_com.command("energy", handlers=[mimikko_energy]) event = mimikko_com.command("check", handlers=[mimikko_check]) scheduler.add_job(mimikko_sign_in_auto, "cron", hour="12")
""" 公主连结Re:Dive 日程推送和查询 参考 https://github.com/pcrbot/yobot """ from nonebot import CommandGroup from .data import calendar pcr = CommandGroup("pcr") # region 日程表 calendar_cmd = pcr.command("calendar", aliases={("pcr", "日程表"), ("pcr", "日程")}) calendar_cmd.__doc__ = """ 公主连结Re:Dive 日程表 获取一周日程表 /pcr.calendar """ @calendar_cmd.handle() async def calendar_handle(): await calendar_cmd.finish(await calendar.get_week_events()) # endregion
""" from nonebot import CommandGroup from nonebot.adapters.onebot.v11 import Message, MessageEvent, PrivateMessageEvent from nonebot.adapters.onebot.v11.permission import PRIVATE from nonebot.matcher import Matcher from nonebot.params import ArgPlainText, CommandArg from .api import Genshin from .config import get_cookie, set_cookie genshin = CommandGroup("ys") # region 绑定账号 bind_cmd = genshin.command( "bind", aliases={("原神", "绑定"), ("原神", "绑定账号")}, permission=PRIVATE, ) bind_cmd.__doc__ = """ 原神 绑定账号 /ys.bind 绑定账号(直接附带 Cookie) /ys.bind cookie=1234567890 获取 Cookie 的方法详见: https://github.com/Womsxd/YuanShen_User_Info """