Пример #1
0
async def rm_banner(app: Mirai, group: Group, member: Member,
                    cp: CommandParser):
    if member.id in conf.get("permission", "operator"):
        pa = cp.parse_with_valid(["String", ("Int", "At")])
        if isinstance(pa, str):
            return await app.sendGroupMessage(
                group, [At(member.id), Plain(pa)])
        elif not pa:
            return await app.sendGroupMessage(
                group, [At(member.id), Plain("参数不能为空")])
        if pa[0][1] == "group":
            target = "group_id"
        elif pa[0][1] == "member":
            target = "qq_id"
        else:
            return await app.sendGroupMessage(
                group, [At(member.id), Plain("类型错误")])
        if pa[1][1] not in conf.get("banner", target):
            return await app.sendGroupMessage(
                group, [At(member.id), Plain("还不在清单里")])
        conf.get("banner", target).remove(pa[1][1])
        await app.sendGroupMessage(
            group, [At(member.id), Plain(f"移除{pa[1][1]}成功")])
    else:
        await app.sendGroupMessage(group, [At(member.id), Plain("权限不足")])
Пример #2
0
async def edit_config(app: Mirai, group: Group, member: Member,
                      message: MessageChain):
    if member.id in conf.get("permission", "operator"):
        try:
            _, segment, block, method, value = message.toString().split(" ")
        except ValueError:
            await app.sendGroupMessage(group, [At(member.id), Plain("参数不足")])
            return
        try:
            data = json.loads(value)
        except json.decoder.JSONDecodeError:
            data = value
        try:
            if method == "replace":
                conf.set(segment, block, data)
            elif method == "update":
                c = conf.get(segment, block)
                if isinstance(c, (list, tuple)):
                    c.append(data)
                elif isinstance(c, dict):
                    c.update(data)
            else:
                await app.sendGroupMessage(
                    group,
                    [At(member.id), Plain(f"未知方法:{method}")])
                return
            await app.sendGroupMessage(group, [At(member.id), Plain("修改成功")])
        except ValueError as e:
            await app.sendGroupMessage(
                group,
                [At(member.id), Plain(f"修改配置时发生错误:\n{e}")])
Пример #3
0
async def set_active(app: Mirai, group: Group, member: Member,
                     message: MessageChain):
    if message.toString().find(conf.get("basic", "command_head") + "cs") == 0:
        if group.id in conf.get("banner", "group_id"):
            return
        conf.get("active", "group_id").append(group.id)
        msg = await app.sendGroupMessage(group, [At(member.id), Plain("启用")])
        call_later(10, app.revokeMessage, msg.messageId)
Пример #4
0
async def set_active(app: Mirai, group: Group, member: Member,
                     message: MessageChain):
    if message.toString().find(conf.get("basic", "command_head") + "cs") == 0:
        if group.id in conf.get("banner", "group_id"):
            return
        conf.get("active", "group_id").append(group.id)
        await app.sendGroupMessage(
            group, [At(member.id), Plain("激活成功,输入 !help 获取帮助")])
Пример #5
0
async def get_list(app: Mirai, group: Group, member: Member):
    if member.id in conf.get("permission", "operator"):
        await app.sendGroupMessage(group, [
            At(member.id),
            Plain("模块列表:"),
            Plain(json.dumps(conf.get("plugins", "active"), indent=2))
        ])
    else:
        await app.sendGroupMessage(group, [At(member.id), Plain("权限不足")])
Пример #6
0
async def rm_modules(app: Mirai, group: Group, member: Member,
                     message: MessageChain):
    if member.id in conf.get("permission", "operator"):
        mp = message.toString().split(" ", 1)[1]
        conf.get("plugins", "active").remove(mp)
        await app.sendGroupMessage(
            group, [At(member.id), Plain("删除模块成功,将在下次重载生效")])
    else:
        await app.sendGroupMessage(group, [At(member.id), Plain("权限不足")])
Пример #7
0
async def active_list(app: Mirai, group: Group, member: Member):
    if member.id not in conf.get("permission", "operator"):
        await app.sendGroupMessage(group, [At(member.id), Plain("权限不足")])
        return
    await app.sendGroupMessage(group, [
        At(member.id),
        Plain("已激活群组:"),
        Plain(json.dumps(conf.get("active", "group_id"), indent=2))
    ])
Пример #8
0
async def testjson(app: Mirai, group: Group, member: Member):
    if member.id in conf.get("permission", "operator"):
        return await app.sendGroupMessage(
            group,
            JsonMessage(
                json={
                    "app": "com.tencent.gamecenter.gameshare",
                    "desc": "",
                    "view": "noDataView",
                    "ver": "0.0.0.0",
                    "prompt": "英雄分享:影流之主",
                    "meta": {
                        "shareData": {
                            "scene": "SCENE_SHARE_VIDEO",
                            "jumpUrl": "https://url.cn/5VN4uaZ",
                            "type": "video",
                            "url": "http:\/\/t.cn\/A6wslkFS"
                        }
                    },
                    "config": {
                        "forward": 1
                    }
                }))
    else:
        return await app.sendGroupMessage(group, Plain("功能暂未开放"))
Пример #9
0
def lock(name: int):
    if name not in lottery_lock:
        if name not in conf.get("permission", "operator"):
            lottery_lock.add(name)
            call_later(240, lottery_lock.remove, name)
        return True
    else:
        return False
Пример #10
0
async def reload_modules(app: Mirai, group: Group, member: Member):
    if member.id in conf.get("permission", "operator"):
        from core.loader import manager
        error = manager.reload_modules()
        await app.sendGroupMessage(group, [At(member.id), Plain("重载模块成功")])
        if error:
            await app.sendGroupMessage(group, [
                Plain("但在重载时,发生了一些错误:\n"),
                *[Plain(str(e) + "\n") for e in error]
            ])
    else:
        await app.sendGroupMessage(group, [At(member.id), Plain("权限不足")])
Пример #11
0
async def custom_trigger(app: Mirai, group: Group, member: Member,
                         message: MessageChain):
    if member.id in conf.get("banner", "qq_id"):
        return True
    elif message.toString().find("一言") == -1:
        return False
    async with aiohttp.request("GET", "https://v1.alapi.cn/api/soul") as req:
        data = await req.json()
    if data["code"] != 200:
        raise ValueError("Status Error:" +
                         str(data["code"] + ":" + data["msg"]))
    return await app.sendGroupMessage(
        group, [At(member.id), Plain(data["data"]["title"])])
Пример #12
0
async def edit_nick(app: Mirai, group: Group, member: Member,
                    cp: CommandParser):
    if member.id in conf.get("permission", "operator"):
        pa = cp.parse_with_valid([("Int", "String")])
        if isinstance(pa, str):
            return await app.sendGroupMessage(
                group, [At(member.id), Plain(pa)])
        elif not pa:
            return await app.sendGroupMessage(
                group, [At(member.id), Plain("参数不能为空")])
        info = await app.botMemberInfo(group)
        info.modify({"name": pa[0][1]})
        await app.changeMemberInfo(group, app.qq, info)
        await app.sendGroupMessage(group, [At(member.id), Plain("修改成功")])
    else:
        await app.sendGroupMessage(group, [At(member.id), Plain("权限不足")])
Пример #13
0
from mirai import Mirai, Group, Member, At, Plain
from core.helpers import CommandParser
from core.config import conf

admin = conf.get("permission", "operator")

cache_msg = {}

async def repeat(app: Mirai, group: Group, member: Member, cp: CommandParser):
    args = cp.parse_with_valid(("Int", ("Int", "String")))  # count, content
    if isinstance(args, str):
        return await app.sendGroupMessage(group, [At(member.id), Plain(args)])
    if member.id not in admin and args[0][1] > 3:
        return await app.sendGroupMessage(group, [At(member.id), Plain("次数不能大于3")])
    for _ in range(args[0][1]):
        await app.sendGroupMessage(group, [Plain(str(args[1][1]))])

export = {
    "command": {"rp": repeat}
}
Пример #14
0
async def save_config(app: Mirai, group: Group, member: Member):
    if member.id in conf.get("permission", "operator"):
        conf.save()
        await app.sendGroupMessage(group, [At(member.id), Plain("保存配置成功")])
    else:
        await app.sendGroupMessage(group, [At(member.id), Plain("权限不足")])
Пример #15
0
async def set_inactive(app: Mirai, group: Group, member: Member):
    conf.get("active", "group_id").remove(group.id)
    msg = await app.sendGroupMessage(group, [At(member.id), Plain("禁用")])
    call_later(10, app.revokeMessage, msg.messageId)
Пример #16
0
parser.add_argument("-r",
                    "--reload",
                    action="store_true",
                    help="restart server(Daemon)")

if __name__ == "__main__":
    args = parser.parse_args(sys.argv[1:])
    if args.reload:
        if os.path.isfile("server.pid"):
            with open("server.pid", "r") as f:
                os.kill(int(f.read()), 15)  # SIGTERM
        else:
            print("no pid file, pass")
    if args.develop:
        conf.set("server", "daemon", False)
        conf.set("server", "loop_debug", True)
        conf.set("logger", "save_log", False)
        conf.set("http", "rewrite_only", False)
    if args.log is not None:
        conf.set("logger", "level", args.log)
    from core.route import get_handler
    from core.server import FullAsyncServer
    if conf.get("server", "daemon") or args.daemon:
        from core.ext import daemon

        daemon.daemon("server.pid")
    try:
        FullAsyncServer(handler=get_handler()).run()
    except OSError as e:
        print(e)
Пример #17
0
async def testkick(app: Mirai, group: Group, member: Member):
    if member.id in conf.get("permission", "operator"):
        await app.sendGroupMessage(group, Plain("我滚了"))
        await app.quit(group)
    else:
        return await app.sendGroupMessage(group, Plain("功能暂未开放"))