Exemple #1
0
async def morning_handle(event: GroupMessageEvent,
                         arg: Message = CommandArg()):
    args = arg.extract_plain_text()

    group_id = event.group_id

    if args == "today":
        await morning_cmd.finish(await get_moring_message())

    if args == "update":
        await HOLIDAYS_DATA.update()
        await morning_cmd.finish("节假日数据更新成功")

    if args and group_id:
        if strtobool(args):
            plugin_config.morning_group_id += [group_id]
            await morning_cmd.finish("已在本群开启每日早安功能")
        else:
            plugin_config.morning_group_id = [
                n for n in plugin_config.morning_group_id if n != group_id
            ]
            await morning_cmd.finish("已在本群关闭每日早安功能")
    else:
        if group_id in plugin_config.morning_group_id:
            await morning_cmd.finish("每日早安功能开启中")
        else:
            await morning_cmd.finish("每日早安功能关闭中")
Exemple #2
0
async def price_handle(event: MessageEvent, args: Message = CommandArg()):
    """查价"""
    argv = args.extract_plain_text().split()

    if len(argv) == 0:
        await price_cmd.finish(get_command_help("ff14.price"))

    if len(argv) == 1 and argv[0] == "默认值":
        world_or_dc = DATA.config.get(f"price-default-{event.user_id}", "猫小胖")
        await price_cmd.finish(f"当前设置的默认值为:{world_or_dc}")

    if len(argv) == 2 and argv[0] == "默认值":
        DATA.config.set(f"price-default-{event.user_id}", argv[1])
        await price_cmd.finish("查询区域默认值设置成功!")

    if len(argv) > 0:
        name = argv[0]
        if len(argv) >= 2:
            world_or_dc = argv[1]
        else:
            world_or_dc = DATA.config.get(f"price-default-{event.user_id}",
                                          "猫小胖")

        try:
            reply = await get_item_price(name, world_or_dc)
        except httpx.HTTPError:
            reply = "抱歉,网络出错,请稍后再试。"

        await price_cmd.finish(reply)
Exemple #3
0
async def _(arg: Message = CommandArg()):
    msg = arg.extract_plain_text().strip()
    if not msg:
        await mc.finish()
    if msg.startswith("status"):
        addr = msg.replace("status", "", 1).strip()
        if addr:
            status = await get_mcstatus(addr)
            if status:
                await mc.finish(status)
            else:
                await mc.finish("出错了,请稍后再试")
    else:
        types = ["avatar", "head", "body", "skin", "cape", "model"]
        for t in types:
            if msg.startswith(t):
                username = msg.replace(t, "", 1).strip()
                if username:
                    uuid = await get_mc_uuid(username)
                    if not uuid:
                        await mc.finish("出错了,请稍后再试")
                    if uuid == "none":
                        await mc.finish("找不到该用户")
                    if t == "model":
                        await mc.send("生成中,请耐心等待。。。")
                        result = await get_mcmodel(uuid)
                    else:
                        result = await get_crafatar(t, uuid)
                    if result:
                        await mc.finish(MessageSegment.image(result))
                    else:
                        await mc.finish("出错了,请稍后再试")
    await mc.finish()
Exemple #4
0
async def _(msg: Message = CommandArg()):
    text = msg.extract_plain_text().strip()
    if not text:
        await md2pic.finish()

    img = await m2p(text)
    if img:
        await md2pic.finish(MessageSegment.image(img))
Exemple #5
0
async def handle(matcher: Type[Matcher], msg: Message, r18=False):
    keyword = msg.extract_plain_text().strip()
    res = await get_setu(keyword=keyword, r18=r18)
    if not res:
        await matcher.finish("出错了,请稍后再试")
    if isinstance(res, str):
        await matcher.finish(res)
    else:
        await matcher.finish(MessageSegment.image(res))
Exemple #6
0
async def roll_handle_first_receive(matcher: Matcher,
                                    arg: Message = CommandArg()):
    input = arg.extract_plain_text()

    # 如果有输入,则直接检查,出错就直接提示并结束对话
    if input and not check_roll_syntax(input):
        await roll_cmd.finish("请输入正确的参数 ~>_<~")
    if input:
        matcher.set_arg("input", arg)
Exemple #7
0
async def _(msg: Message = CommandArg()):
    equation = msg.extract_plain_text().strip().strip("$")
    if not equation:
        await tex.finish()

    image = await tex2pic(equation)
    if image:
        await tex.finish(MessageSegment.image(image))
    else:
        await tex.finish("出错了,请检查公式或稍后再试")
Exemple #8
0
async def _(msg: Message = CommandArg()):
    text = msg.extract_plain_text().strip()
    if not text:
        await speak.finish()

    voice = await get_voice(text)
    if voice:
        await speak.finish(MessageSegment.record(voice))
    else:
        await speak.finish("出错了,请稍后再试")
Exemple #9
0
async def _(msg: Message = CommandArg()):
    keyword = msg.extract_plain_text().strip()
    if not keyword:
        await baike.finish()

    res = await get_content(keyword)
    if res:
        await baike.finish(res)
    else:
        await baike.finish("找不到相关的条目")
Exemple #10
0
async def ban_handle_first_receive(state: T_State,
                                   bot: Bot,
                                   arg: Message = CommandArg()):
    """获取需要的参数"""
    # 如果没有获取机器人在群中的职位,则获取
    if not _bot_role:
        await refresh_bot_role(bot)

    plaintext = arg.extract_plain_text()
    if plaintext and plaintext.isdigit():
        state["duration"] = int(plaintext)
Exemple #11
0
async def _(msg: Message = CommandArg()):
    keyword = msg.extract_plain_text().strip()
    if not keyword:
        await nbnhhsh.finish()
    if not re.fullmatch(r"[a-zA-Z]+", keyword):
        await nbnhhsh.finish()

    res = await get_content(keyword, sources=["nbnhhsh"])
    if res:
        await nbnhhsh.finish(res)
    else:
        await nbnhhsh.finish("找不到相关的缩写")
Exemple #12
0
async def history_handle_first_receive(state: T_State, arg: Message = CommandArg()):
    match = re.match(r"^(\d+)(?:\-(\d+)(?:\-(\d+))?)?$", arg.extract_plain_text())
    if match:
        year = match.group(1)
        month = match.group(2)
        day = match.group(3)
        if year:
            state["year"] = int(year)
        if month:
            state["month"] = int(month)
        if day:
            state["day"] = int(day)
Exemple #13
0
async def _(msg: Message = CommandArg(), tome: bool = EventToMe()):
    keyword = msg.extract_plain_text().strip()
    if not keyword:
        await pixiv.finish()

    if not keyword.isdigit() and keyword not in ["日榜", "周榜", "月榜"]:
        if not tome:
            await pixiv.finish()

    res = await get_pixiv(keyword)
    if not res:
        await pixiv.finish("出错了,请稍后再试")
    await pixiv.finish(res)
Exemple #14
0
async def help_handle(arg: Message = CommandArg()):
    args = arg.extract_plain_text()

    if args == "all":
        commands = get_commands()
        docs = "命令(别名)列表:\n"
        docs += "\n".join(sorted(map(format_name_aliases, commands)))
        await help_cmd.finish(docs)
    elif args:
        command_help = get_command_help(args)
        if command_help:
            await help_cmd.finish(command_help)
        await help_cmd.finish("请输入支持的命令")
    else:
        await help_cmd.finish(get_command_help("help"))
Exemple #15
0
async def hello_handle(event: GroupMessageEvent, arg: Message = CommandArg()):
    args = arg.extract_plain_text()

    group_id = event.group_id

    if args and group_id:
        if strtobool(args):
            plugin_config.hello_group_id += [group_id]
            await hello_cmd.finish("已在本群开启启动问候功能")
        else:
            plugin_config.hello_group_id = [
                n for n in plugin_config.hello_group_id if n != group_id
            ]
            await hello_cmd.finish("已在本群关闭启动问候功能")
    else:
        if group_id in plugin_config.hello_group_id:
            await hello_cmd.finish("启动问候功能开启中")
        else:
            await hello_cmd.finish("启动问候功能关闭中")
Exemple #16
0
async def repeat_handle(event: GroupMessageEvent, arg: Message = CommandArg()):
    args = arg.extract_plain_text()

    group_id = event.group_id

    if args and group_id:
        if strtobool(args):
            plugin_config.group_id += [group_id]
            recorder_obj.add_new_group()
            await repeat_cmd.finish("已在本群开启复读功能")
        else:
            plugin_config.group_id = [
                n for n in plugin_config.group_id if n != group_id
            ]
            await repeat_cmd.finish("已在本群关闭复读功能")
    else:
        if group_id in plugin_config.group_id:
            await repeat_cmd.finish("复读功能开启中")
        else:
            await repeat_cmd.finish("复读功能关闭中")
Exemple #17
0
async def rank_handle_first_receive(state: T_State, arg: Message = CommandArg()):
    match = re.match(r"^(?:(\d+))?(?:n(\d+))?$", arg.extract_plain_text())
    if match:
        display_number = match.group(1)
        minimal_msg_number = match.group(2)
        display_total_number = False

        if display_number:
            display_number = int(display_number)
        else:
            display_number = 3

        if minimal_msg_number:
            minimal_msg_number = int(minimal_msg_number)
            display_total_number = True
        else:
            minimal_msg_number = 30

        state["display_number"] = display_number
        state["minimal_msg_number"] = minimal_msg_number
        state["display_total_number"] = display_total_number
Exemple #18
0
async def _(msg: Message = CommandArg()):
    text = msg.extract_plain_text().strip()

    plaintext = False
    pattern = [r"-p +.*?", r".*? +-p", r"--plaintext +.*?", r".*? +--plaintext"]
    for p in pattern:
        if re.fullmatch(p, text):
            plaintext = True
            break
    text = text.replace("-p", "").replace("--plaintext", "").strip()
    if not text:
        await wolfram.finish()

    if plaintext:
        res = await get_wolframalpha_text(text)
    else:
        res = await get_wolframalpha_simple(text)
    if not res:
        await wolfram.finish("出错了,请稍后再试")

    await wolfram.finish(res)
Exemple #19
0
async def _(event: MessageEvent, msg: Message = CommandArg()):
    keyword = msg.extract_plain_text().strip()
    if not keyword:
        return

    plugins = get_plugins(event)
    plugin = None
    for p in plugins[::-1]:
        if keyword.lower() in (p.name.lower(), p.short_name.lower()):
            plugin = p
            break
    if not plugin:
        await unblock.finish(f"插件 {keyword} 不存在!")

    plugin_manager = PluginManager()
    conv: Conv = get_conv(event)
    if conv["group"]:
        conv["user"] = []
    result = plugin_manager.unblock_plugin([plugin.name], conv)
    if result.get(plugin.name, False):
        res = f"插件 {plugin.short_name} 启用成功"
    else:
        res = f"插件 {plugin.short_name} 不存在或已关闭编辑权限!"
    await unblock.finish(res)
async def handle_first_receive(event: Event,
                               state: T_State,
                               args: Message = CommandArg()):
    # 通过是否为group判读信息结构
    global group
    group = True if event.get_event_name().find(
        "group") != -1 else plugin_config.same_message_structure
    args: list = args.extract_plain_text().strip().split()
    state["help"] = False
    state["redraw"] = False
    state["test"] = ""
    if args:
        if "help" in args:
            state["help"] = True
        elif ("r" in args) or ("重抽" in args) or ("redraw" in args):
            state["redraw"] = True
        elif "test" in args:
            state["test"] = args[1]

    else:
        await luck.send(await luck_daily(user_id=int(event.get_user_id()),
                                         redraw=False,
                                         group_message=group),
                        at_sender=group)
Exemple #21
0
async def weather_handle_first_receive(matcher: Matcher, arg: Message = CommandArg()):
    plain_text = arg.extract_plain_text()

    if plain_text:
        matcher.set_arg("location", arg)
Exemple #22
0
async def _(matcher: Matcher, msg: Message = CommandArg()):
    keyword = msg.extract_plain_text().strip()
    if not keyword:
        await cc98.finish()
    matcher.set_arg("keyword", Message(keyword))
Exemple #23
0
async def _(matcher: Matcher, msg: Message = CommandArg()):
    keyword = msg.extract_plain_text().strip()
    if keyword and keyword.isdigit():
        matcher.set_arg("topic_id", Message(keyword))
    else:
        await show.finish()
Exemple #24
0
async def rand_handle(arg: Message = CommandArg()):
    str_data = get_rand(arg.extract_plain_text())
    await rand_cmd.finish(str_data, at_sender=True)
Exemple #25
0
async def fflogs_handle(event: MessageEvent, arg: Message = CommandArg()):
    argv = arg.extract_plain_text().split()
    if not argv:
        await fflogs_cmd.finish(get_command_help("ff14.dps"))

    user_id = event.user_id

    # 设置 Token
    if argv[0] == "token" and len(argv) == 2:
        # 检查是否是超级用户
        if user_id not in global_config.superusers:
            await fflogs_cmd.finish("抱歉,你没有权限修改 Token。")

        plugin_config.fflogs_token = argv[1]
        await fflogs_cmd.finish("Token 设置完成。")

    # 检查 Token 是否设置
    if not plugin_config.fflogs_token:
        await fflogs_cmd.finish(
            "对不起,Token 未设置,无法查询数据。\n请先使用命令\n/dps token <token>\n配置好 Token 后再尝试查询数据。"
        )

    if argv[0] == "token" and len(argv) == 1:
        # 检查是否是超级用户
        if user_id not in global_config.superusers:
            await fflogs_cmd.finish("抱歉,你没有权限查看 Token。")
        await fflogs_cmd.finish(f"当前的 Token 为 {plugin_config.fflogs_token}")

    if argv[0] == "update" and len(argv) == 1:
        await FFLOGS_DATA.update()
        await fflogs_cmd.finish("副本数据更新成功")

    # 缓存相关设置
    if argv[0] == "cache":
        # 检查是否是超级用户
        if user_id not in global_config.superusers:
            await fflogs_cmd.finish("抱歉,你没有权限设置缓存。")
        if len(argv) == 2:
            if strtobool(argv[1]):
                if not fflogs.is_cache_enabled:
                    fflogs.enable_cache()
                await fflogs_cmd.finish("已开始定时缓存")
            else:
                if fflogs.is_cache_enabled:
                    fflogs.disable_cache()
                await fflogs_cmd.finish("已停止定时缓存")
        else:
            if fflogs.is_cache_enabled:
                await fflogs_cmd.finish("定时缓存开启中")
            else:
                await fflogs_cmd.finish("定时缓存关闭中")

    if argv[0] == "me" and len(argv) == 1:
        if user_id not in fflogs.characters:
            await fflogs_cmd.finish(
                "抱歉,你没有绑定最终幻想14的角色。\n请使用\n/dps me 角色名 服务器名\n绑定自己的角色。")
        await fflogs_cmd.finish(
            f"你当前绑定的角色:\n角色:{fflogs.characters[user_id][0]}\n服务器:{fflogs.characters[user_id][1]}"
        )

    if "[CQ:at,qq=" in argv[0] and len(argv) == 1:
        user_id = int(argv[0][10:-1])
        if user_id not in fflogs.characters:
            await fflogs_cmd.finish("抱歉,该用户没有绑定最终幻想14的角色。")
        await fflogs_cmd.finish(
            f"[CQ:at,qq={user_id}] 当前绑定的角色:\n角色:{fflogs.characters[user_id][0]}\n服务器:{fflogs.characters[user_id][1]}"
        )

    if argv[0] == "me" and len(argv) == 3:
        fflogs.set_character(user_id, argv[1], argv[2])
        await fflogs_cmd.finish("角色绑定成功!")

    if argv[0] == "classes" and len(argv) == 1:
        reply = await fflogs.classes()
        await fflogs_cmd.finish(str(reply))

    if argv[0] == "zones" and len(argv) == 2:
        reply = await fflogs.zones()
        if reply:
            await fflogs_cmd.finish(str(reply[int(argv[1])]))

    # 判断查询排行是指个人还是特定职业
    if len(argv) == 2:
        # <BOSS名> me
        # <BOSS名> <@他人>
        # <BOSS名> <职业名>
        if argv[1].lower() == "me":
            reply = await get_character_dps_by_user_id(argv[0], user_id)
        elif "[CQ:at,qq=" in argv[1]:
            # @他人的格式
            # [CQ:at,qq=12345678]
            user_id = int(argv[1][10:-1])
            reply = await get_character_dps_by_user_id(argv[0], user_id)
        else:
            reply = await fflogs.dps(*argv)  # type:ignore
        await fflogs_cmd.finish(reply)

    if len(argv) == 3:
        # <BOSS名> <职业名> <DPS种类>
        # <BOSS名> <角色名> <服务器名>
        argv[2] = argv[2].lower()
        if argv[2] in ["adps", "rdps", "pdps"]:
            reply = await fflogs.dps(*argv)  # type:ignore
        else:
            reply = await fflogs.character_dps(*argv)  # type:ignore
        await fflogs_cmd.finish(reply)

    await fflogs_cmd.finish(get_command_help("ff14.dps"))
Exemple #26
0
async def gate_handle_first_receive(matcher: Matcher,
                                    arg: Message = CommandArg()):
    if arg.extract_plain_text():
        matcher.set_arg("door_number", arg)
Exemple #27
0
 async def handler(msg: Message = CommandArg()):
     text = msg.extract_plain_text().strip()
     await handle(matcher, type, text)
Exemple #28
0
async def music_handle_first_receive(matcher: Matcher,
                                     arg: Message = CommandArg()):
    if arg.extract_plain_text():
        matcher.set_arg("name", arg)