Exemple #1
0
 def set_pages(self, *args: str or r.RTextBase):
     """设置书页"""
     self.data['pages'] = []
     for page in args:
         if self.item_id == 'minecraft:written_book':
             self.data['pages'].append(r.RTextList(page).to_json_str())
         elif self.item_id == 'minecraft:writable_book':
             self.data['pages'].append(r.RTextList(page).to_plain_text())
     return self
Exemple #2
0
def on_info(server, info):
    if info.is_user:
        if info.content.startswith(cp):
            if info.content.startswith(cp + "blbl"):
                args = info.content.split(" ")
                del (args[0])
                on_command(server, info.player, args)
        else:
            vid = get_video_id(info.content)
            if vid is not None:
                message_checked = rtext.RText(
                    "检测到您发送的信息是bilibili视频链接,是否要解析视频内容?",
                    color=rtext.RColor.green)
                message_yes = rtext.RText("[是]",
                                          color=rtext.RColor.aqua,
                                          styles=[rtext.RStyle.bold])
                message_yes.set_click_event(rtext.RAction.run_command,
                                            cp + "blbl video " + info.content)
                message_yes.set_hover_text("点击执行命令" + cp + "blbl video " +
                                           info.content)
                server.reply(
                    info,
                    rtext.RTextList(message_checked, rtext.RText(" "),
                                    message_yes))
def operate_bot(server, info, args):
    global bot_dic, bot_list
    permission = server.get_permission_level(info)
    if len(args) == 1:
        # server.reply(info, help_msg)
        head = [help_head]
        body = [
            r.RText(f'{k} {v}\n').c(r.RAction.suggest_command,
                                    k.replace('§b', '')).h(v)
            for k, v in help_body.items()
        ]
        server.reply(info, r.RTextList(*(head + body)))

    elif len(args) == 2:
        if args[1] == "list":
            c = ['']
            for name, bot_info in bot_dic.items():
                if name in bot_list:
                    bot_msg = r.RTextList(
                        '\n'
                        f'§7----------- §6{name} §a在线 §7 -----------\n',
                        f'§7此假人用于:§6 {bot_info["nick"]}\n',
                        # f'§7Dimension:§6 {bot_info["dim"]}\n',
                        # r.RText(
                        #     f'§7Position:§6 {bot_info["pos"]}\n', ).c(
                        #     r.RAction.run_command,
                        #     '[x:{}, y:{}, z:{}, name:{}, dim{}]'.format(
                        #         *[int(i) for i in bot_info['pos']], name, bot_info['dim'])).h(
                        #     '点击显示可识别坐标点'),
                        # f'§7Facing:§6 {bot_info["facing"]}\n',
                        r.RText('§d[点击use]  ').c(
                            r.RAction.run_command,
                            f'{prefix_short} {name} use').h(f'§6{name}§7右键一次'),
                        r.RText('§d[点击下线]  ').c(
                            r.RAction.run_command,
                            f'{prefix_short} {name} kill ').h(f'下线§6{name}'),
                        r.RText('§d[查看详情]  ').c(
                            r.RAction.run_command,
                            f'{prefix_short} {name}').h(f'显示§6{name}§r的详细信息'))
                else:
                    bot_msg = r.RTextList(
                        '\n'
                        f'§7----------- §6{name} §4离线 §7 -----------\n',
                        f'§7此假人用于:§6 {bot_info["nick"]}\n',
                        # f'§7Dimension:§6 {bot_info["dim"]}\n',
                        # r.RText(
                        #     f'§7Position:§6 {bot_info["pos"]}\n', ).c(
                        #     r.RAction.run_command,
                        #     '[x:{}, y:{}, z:{}, name:{}, dim{}]'.format(
                        #         *[int(i) for i in bot_info['pos']], name, bot_info['dim'])).h(
                        #     '点击显示可识别坐标点'),
                        # f'§7Facing:§6 {bot_info["facing"]}\n',
                        r.RText('§d[点击召唤]  ').c(
                            r.RAction.run_command,
                            f'{prefix_short} {name} spawn').h(f'召唤§6{name}'),
                        r.RText('§d[点击use]  ').c(
                            r.RAction.run_command,
                            f'{prefix_short} {name} use ').h(
                                f'召唤§6{name}§r并右键一次'),
                        r.RText('§d[查看详情]  ').c(
                            r.RAction.run_command,
                            f'{prefix_short} {name}').h(f'显示§6{name}§r的详细信息'))
                c.append(bot_msg)
            server.reply(info, r.RTextList(*c))

        elif args[1] == "reload":
            try:
                read()
                server.say('§b[BotKikai]§a由玩家§d{}§a发起的BotKikai重载成功'.format(
                    info.player))
            except Exception as e:
                server.say('§b[BotKikai]§4由玩家§d{}§4发起的BotKikai重载失败:{}'.format(
                    info.player, e))

        elif search(args[1]):
            name = search(args[1])
            if name not in bot_list:
                msg = r.RTextList(
                    '\n'
                    f'§7----------- §6{name} §4离线 §7-----------\n',
                    f'§7此假人用于:§6 {bot_dic.get(name)["nick"]}\n',
                    f'§7维度:§6 {bot_dic.get(name)["dim"]}\n',
                    r.RText(f'§7坐标:§6 {bot_dic.get(name)["pos"]}\n', ).c(
                        r.RAction.run_command,
                        '[x:{}, y:{}, z:{}, name:{}, dim{}]'.format(
                            *[int(i) for i in bot_dic.get(name)['pos']], name,
                            bot_dic.get(name)['dim'])).h('点击显示可识别坐标点'),
                    f'§7朝向:§6 {bot_dic.get(name)["facing"]}\n',
                    r.RText('§d[点击召唤]  ').c(
                        r.RAction.run_command,
                        f'{prefix_short} {name} spawn').h(f'召唤§6{name}'),
                    r.RText('§d[点击use]  ').c(
                        r.RAction.run_command,
                        f'{prefix_short} {name} use ').h(f'召唤§6{name}并右键一次'))
            else:
                msg = r.RTextList(
                    '\n'
                    f'§7----------- §6{name} §a在线 §7-----------\n',
                    f'§7此假人用于:§6 {bot_dic.get(name)["nick"]}\n',
                    f'§7维度:§6 {bot_dic.get(name)["dim"]}\n',
                    r.RText(f'§7坐标:§6 {bot_dic.get(name)["pos"]}\n', ).c(
                        r.RAction.run_command,
                        '[x:{}, y:{}, z:{}, name:{}, dim{}]'.format(
                            *[int(i) for i in bot_dic.get(name)['pos']], name,
                            bot_dic.get(name)['dim'])).h('点击显示可识别坐标点'),
                    f'§7朝向:§6 {bot_dic.get(name)["facing"]}\n',
                    r.RText('§d[点击use]  ').c(
                        r.RAction.run_command,
                        f'{prefix_short} {name} use').h(f'§6{name}§7右键一次'),
                    r.RText('§d[点击下线]  ').c(
                        r.RAction.run_command,
                        f'{prefix_short} {name} kill ').h(f'下线§6{name}'))
            server.reply(info, msg)

        else:
            server.reply(info, f"§b[BotKikai]§4未查询到§d{args[1]}§4对应的假人")

    elif len(args) == 3:
        if args[1] == "del" and permission >= permission_list:
            name = search(args[2])
            if name:
                del bot_dic[name]
                bot_list.remove(name) if name in bot_list else bot_list
                save()
                server.reply(info, f'§b[BotKikai]§a已删除机器人{name}')
            else:
                server.reply(info, f"§b[BotKikai]§4未查询到§d{args[1]}§4对应的假人")

        else:
            name = search(args[1])
            if name:
                if args[2] == "spawn" and permission >= permission_bot:
                    if name not in bot_list:
                        server.execute(spawn(server, info, name))
                        server.reply(
                            info, f"§b[BotKikai]§a已创建假人§d{name}§6({args[1]})")
                    else:
                        server.reply(
                            info,
                            f"§b[BotKikai]§4假人§d{name}§6({args[1]})§4已经在线")

                elif args[2] == "kill" and permission >= permission_bot:
                    if name in bot_list:
                        server.execute(kill(name))
                        server.reply(
                            info,
                            f"§b[BotKikai]§a假人§d{name}§6({args[1]})§a已被下线")

                elif args[2] == "use" and permission >= permission_bot:
                    if name not in bot_list:
                        server.execute(spawn(server, info, name))
                        server.reply(
                            info,
                            f"§b[BotKikai]§a已自动创建假人§d{name}§6({args[1]})")
                        time.sleep(2)
                    server.execute(use(name))
                    server.reply(
                        info, f"§b[BotKikai]§a假人§d{name}§6({args[1]})§a右键一次")

                elif args[2] == "huse" and permission >= permission_bot:
                    if name not in bot_list:
                        server.execute(spawn(server, info, name))
                        server.reply(
                            info,
                            f"§b[BotKikai]§a已自动创建假人§d{name}§6({args[1]})")
                        time.sleep(2)
                    server.execute(hold_use(name))
                    server.reply(
                        info, f"§b[BotKikai]§a假人§d{name}§6({args[1]})§a持续右键")

                elif args[2] == "hatk" and permission >= permission_bot:
                    if name not in bot_list:
                        server.execute(spawn(server, info, name))
                        server.reply(
                            info,
                            f"§b[BotKikai]§a已自动创建假人§d{name}§6({args[1]})")
                        time.sleep(2)
                    server.execute(hold_attack(name))
                    server.reply(
                        info, f"§b[BotKikai]§a假人§d{name}§6({args[1]})§a持续左键")

                else:
                    server.reply(
                        info,
                        f"§b[BotKikai]§4参数输入错误,输入§6{prefix_short}§4查看帮助信息")
            else:
                server.reply(info, f"§b[BotKikai]§4未查询到§d{args[1]}§4对应的假人")

    elif len(args) == 4:
        if args[1] == 'add' and permission >= permission_list:
            nick_ls = [] if bot_dic.get(
                args[2], None) is None else bot_dic.get(args[2])['nick']
            if args[2] not in nick_ls:
                nick_ls.append(args[2])
            nick_ls.append(args[3]) if args[3] != args[2] else nick_ls
            pos, dim, facing = get_pos(server, info)
            bot_dic[args[2]] = {
                'nick': nick_ls,
                'dim': dim,
                'pos': pos,
                'facing': f'{facing[0]} {facing[1]}'
            }
            save()
            server.reply(info, f'§b[BotKikai]§a已添加假人{args[2]}')
        else:
            server.reply(info, '§b[BotKikai]§4命令格式不正确或权限不足')

    elif len(args) == 10:
        if args[1] == 'add' and permission >= permission_list:
            if args[4] in dimension_convert.keys():
                dim = dimension_convert[args[4]]
                pos = [int(i) for i in [args[5], args[6], args[7]]]
                facing = f'{args[8]} {args[9]}'
                nick_ls = [] if bot_dic.get(
                    args[2], None) is None else bot_dic.get(args[2])['nick']
                if args[2] not in nick_ls:
                    nick_ls.append(args[2])
                nick_ls.append(args[3]) if args[3] != args[2] else nick_ls
                bot_dic[args[2]] = {
                    'nick': nick_ls,
                    'dim': dim,
                    'pos': pos,
                    'facing': facing
                }
                save()
                server.reply(info, f'§b[BotKikai]§a已添加假人{args[2]}')
            else:
                server.reply(info, '§b[BotKikai]§4无法识别的维度')
        else:
            server.reply(info, '§b[BotKikai]§4命令格式不正确或权限不足')
def on_info(server, info):
    if info.is_user:
        if info.content.startswith(prefix) or info.content.startswith(
                prefix_short):
            global bot_dic, bot_list
            read()
            args = info.content.split(' ')

            if len(args) == 1:
                # server.reply(info, help_msg)
                head = [help_head]
                body = [
                    r.RText(f'{k} {v}\n').c(r.RAction.suggest_command,
                                            k.replace('§b', '')).h(v)
                    for k, v in help_body.items()
                ]
                server.reply(info, r.RTextList(*(head + body)))

            elif len(args) == 2:
                if args[1] == "list":
                    msg = ['\n', f'当前共有{len(bot_list)}个假人在线']
                    for name in bot_list:
                        bot_info = r.RTextList(
                            '\n'
                            f'§7----------- §6{name}§7 -----------\n',
                            f'§7此假人存放:§6 {bot_dic.get(name, "没有索引")}\n',
                            # r.RText('§d[传送]  ').c(
                            #     r.RAction.run_command, f'{prefix_short} {name} here').h(f'§7将§6{name}§7传送至身边'),
                            r.RText('§d[罪人按钮]  ').c(
                                r.RAction.run_command,
                                f'{prefix_short} {name} here').h(
                                    f'§4使用此功能你就会变成罪人'),
                            r.RText('§d[扔出所有]  ').c(
                                r.RAction.run_command,
                                f'{prefix_short} {name} all').h(
                                    f'§6{name}§7扔出身上所有物品'),
                            r.RText('§d[扔出一个]  ').c(
                                r.RAction.run_command,
                                f'{prefix_short} {name} one').h(
                                    f'§6{name}§7扔出一个物品'),
                            r.RText('§d[扔出手中]  ').c(
                                r.RAction.run_command,
                                f'{prefix_short} {name} handall').h(
                                    f'§6{name}§7扔出手中物品'),
                            r.RText('§d[下线]  ').c(
                                r.RAction.run_command,
                                f'{prefix_short} {name} kill').h(
                                    f'§7干掉§6{name}'))
                        msg.append(bot_info)
                    server.reply(info, r.RTextList(*msg))

                elif args[1] == "reload":
                    try:
                        read()
                        server.say(
                            '§b[BotMono]§a由玩家§d{}§a发起的BotMono重载成功'.format(
                                info.player))
                    except Exception as e:
                        server.say(
                            '§b[BotMono]§4由玩家§d{}§4发起的BotMono重载失败:{}'.format(
                                info.player, e))

                elif search(args[1]):
                    if search(args[1]) not in bot_list:
                        server.execute(spawn(server, info, search(args[1])))
                        bot_list.append(search(args[1]))
                    else:
                        server.reply(
                            info,
                            f"§b[BotMono]§4假人§d{search(args[1])}§6({args[1]})§4已经在线"
                        )

                else:
                    server.reply(info, f"§b[BotMono]§4未查询到§d{args[1]}§4对应的假人")
            elif len(args) == 3:
                name = search(args[1])
                if name:
                    if args[2] == "spawn":
                        if name not in bot_list:
                            server.execute(spawn(server, info, name))
                            bot_list.append(name)
                        else:
                            server.reply(
                                info,
                                f"§b[Botmono]§4假人§d{name}§6({args[1]})§4已经在线")

                    elif args[2] == "kill":
                        if name in bot_list:
                            server.execute(kill(name))
                            bot_list.remove(name)
                            server.reply(
                                info,
                                f"§b[BotMono]§a假人§d{name}§6({args[1]})§a已被下线")

                    elif args[2] == "here":
                        if name in bot_list:
                            # server.execute(f"/tp {name} {info.player}")
                            server.reply(info, f"§b[BotMono]§4停用了,我可不想当罪人")
                        else:
                            server.reply(
                                info,
                                f"§b[BotMono]§4假人§d{name}§6({args[1]})§4不在线")

                    elif args[2] == "one":
                        if name not in bot_list:
                            server.execute(spawn(server, info, name))
                            bot_list.append(name)
                            server.reply(
                                info,
                                f"§b[BotMono]§a已自动创建假人§d{name}§6({args[1]})")
                            time.sleep(1)
                        server.execute(drop_one(name))
                        server.reply(
                            info,
                            f"§b[BotMono]§a假人§d{name}§6({args[1]})§a扔出1个物品")

                    elif args[2] == "all":
                        if name not in bot_list:
                            server.execute(spawn(server, info, name))
                            bot_list.append(name)
                            server.reply(
                                info,
                                f"§b[BotMono]§a已自动创建假人§d{name}§6({args[1]})")
                            time.sleep(1)
                        server.execute(drop_all(name))
                        server.reply(
                            info,
                            f"§b[BotMono]§a假人§d{name}§6({args[1]})§a扔出身上所有物品")

                    elif args[2] == "handall":
                        if name not in bot_list:
                            server.execute(spawn(server, info, name))
                            bot_list.append(name)
                            server.reply(
                                info,
                                f"§b[BotMono]§a已自动创建假人§d{name}§6({args[1]})")
                            time.sleep(1)
                        server.execute(drop_handall(name))
                        server.reply(
                            info,
                            f"§b[BotMono]§a假人§d{name}§6({args[1]})§a扔出手中所有物品")

                    else:
                        server.reply(
                            info,
                            f"§b[BotMono]§4参数输入错误,输入§6{prefix_short}§4查看帮助信息")

                else:
                    server.reply(info, f"§b[BotMono]§4未查询到§d{args[1]}§4对应的假人")
Exemple #5
0
def on_command(server, player, args):
    if len(args) == 0:
        server.execute("tellraw " + player + " {\"text\":\"参数错误,请使用 " + cp +
                       "blbl help 获取帮助\", \"color\":\"red\"}")
        return
    if args[0].lower() == "video":
        # 检查命令参数
        if len(args) != 2:
            server.execute("tellraw " + player + " {\"text\":\"参数错误,请使用 " +
                           cp + "blbl help 获取帮助\", \"color\":\"red\"}")
            return
        # 获取视频id
        vid = get_video_id(args[1])
        if vid is None:
            server.execute(
                "tellraw " + player +
                " {\"text\":\"这不是bilibili视频id或链接\", \"color\":\"red\"}")
            return
        if "bv" in vid.lower():
            response = requests.get(
                "https://api.bilibili.com/x/web-interface/view?byid=" + vid)
        else:
            response = requests.get(
                "https://api.bilibili.com/x/web-interface/view?aid=" + vid)
        # 判断是否成功获取
        if response.status_code != 200:
            server.execute("tellraw " + player +
                           " {\"text\":\"网络连接错误,请稍后重试,错误码: " +
                           str(response.status_code) +
                           "\", \"color\":\"red\"}")
            return
        result = response.json()
        if result["code"] == 0:
            # 获取的code为0冇表示问题
            message = rtext.RText("========视频信息获取成功========\n",
                                  color=rtext.RColor.green,
                                  styles=[rtext.RStyle.bold])
            # av bv号和打开链接
            message_avtitle = rtext.RText("AV号: ",
                                          color=rtext.RColor.blue,
                                          styles=[rtext.RStyle.bold])
            message_av = rtext.RText("av" + str(result["data"]["aid"]),
                                     color=rtext.RColor.green)
            message_avlink = rtext.RText("[打开链接]", color=rtext.RColor.aqua)
            message_avlink.set_click_event(
                rtext.RAction.open_url, "http://www.bilibili.com/video/av" +
                str(result["data"]["aid"]))
            message_avlink.set_hover_text(
                "打开链接: http://www.bilibili.com/video/av" +
                str(result["data"]["aid"]))
            message_bvtitle = rtext.RText("\nBV号: ",
                                          color=rtext.RColor.blue,
                                          styles=[rtext.RStyle.bold])
            message_bv = rtext.RText(result["data"]["bvid"],
                                     color=rtext.RColor.green)
            message_bvlink = rtext.RText("[打开链接]", color=rtext.RColor.aqua)
            message_bvlink.set_click_event(
                rtext.RAction.open_url,
                "http://www.bilibili.com/video/" + str(result["data"]["bvid"]))
            message_bvlink.set_hover_text(
                "打开链接: http://www.bilibili.com/video/" +
                str(result["data"]["bvid"]))
            message = rtext.RTextList(message, message_avtitle, message_av,
                                      message_avlink, message_bvtitle,
                                      message_bv, message_bvlink,
                                      rtext.RText("\n"))
            # 标题信息
            message = rtext.RTextList(
                message,
                rtext.RText("标题: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]))
            message = rtext.RTextList(
                message,
                rtext.RText(result["data"]["title"] + "\n",
                            color=rtext.RColor.green))
            # 封面信息
            message = rtext.RTextList(
                message,
                rtext.RText("封面: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]))
            message_pic = rtext.RText("[查看图片]" + "\n", color=rtext.RColor.aqua)
            message_pic.set_click_event(rtext.RAction.open_url,
                                        result["data"]["pic"])
            message_pic.set_hover_text("打开链接: " + result["data"]["pic"])
            message = rtext.RTextList(message, message_pic)
            # 发布日期
            message = rtext.RTextList(
                message,
                rtext.RText("发布日期: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]))
            message = rtext.RTextList(
                message,
                rtext.RText(
                    time.strftime("%Y-%m-%d %H:%M:%S",
                                  time.localtime(result["data"]["pubdate"])) +
                    "\n",
                    color=rtext.RColor.green))
            # 简介
            result["data"]["desc"] = result["data"]["desc"].replace(
                "\n", "      \n")
            if len(result["data"]["desc"]) <= 60:
                message_desc = rtext.RText(result["data"]["desc"] + "\n",
                                           color=rtext.RColor.green)
            else:
                message_desc = rtext.RText(result["data"]["desc"][0:59] + "……",
                                           color=rtext.RColor.green)
                message_show_full_desc = rtext.RText("[查看完整简介]\n",
                                                     color=rtext.RColor.aqua)
                message_show_full_desc.set_hover_text(result["data"]["desc"])
                message_desc = rtext.RTextList(message_desc,
                                               message_show_full_desc)
            message = rtext.RTextList(
                message,
                rtext.RText("简介: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]), message_desc)
            # 播放量
            message = rtext.RTextList(
                message,
                rtext.RText("播放量: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]))
            message = rtext.RTextList(
                message,
                rtext.RText(str(result["data"]["stat"]["view"]) + "\n",
                            color=rtext.RColor.green))
            # 弹幕总量
            message = rtext.RTextList(
                message,
                rtext.RText("弹幕总量: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]))
            message = rtext.RTextList(
                message,
                rtext.RText(str(result["data"]["stat"]["danmaku"]) + "\n",
                            color=rtext.RColor.green))
            # 点赞数量
            message = rtext.RTextList(
                message,
                rtext.RText("点赞数量: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]))
            message = rtext.RTextList(
                message,
                rtext.RText(str(result["data"]["stat"]["like"]) + "\n",
                            color=rtext.RColor.green))
            # 收获硬币
            message = rtext.RTextList(
                message,
                rtext.RText("收获硬币: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]))
            message = rtext.RTextList(
                message,
                rtext.RText(str(result["data"]["stat"]["coin"]) + "\n",
                            color=rtext.RColor.green))
            # 收藏数量
            message = rtext.RTextList(
                message,
                rtext.RText("收藏数量: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]))
            message = rtext.RTextList(
                message,
                rtext.RText(str(result["data"]["stat"]["favorite"]) + "\n",
                            color=rtext.RColor.green))
            # 转发数量
            message = rtext.RTextList(
                message,
                rtext.RText("转发数量: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]))
            message = rtext.RTextList(
                message,
                rtext.RText(str(result["data"]["stat"]["share"]) + "\n",
                            color=rtext.RColor.green))
            # 评论数量
            message = rtext.RTextList(
                message,
                rtext.RText("评论数量: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]))
            message = rtext.RTextList(
                message,
                rtext.RText(str(result["data"]["stat"]["reply"]) + "\n",
                            color=rtext.RColor.green))
            # 分part数量
            message = rtext.RTextList(
                message,
                rtext.RText("分part数量: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]))
            message = rtext.RTextList(
                message,
                rtext.RText(str(len(result["data"]["pages"])) + "\n",
                            color=rtext.RColor.green))
            # up主
            message = rtext.RTextList(
                message,
                rtext.RText("投稿人: ",
                            color=rtext.RColor.blue,
                            styles=[rtext.RStyle.bold]))
            message = rtext.RTextList(
                message,
                rtext.RText(result["data"]["owner"]["name"],
                            color=rtext.RColor.green))
            message_owner_link = rtext.RText("[打开个人主页]",
                                             color=rtext.RColor.aqua)
            message_owner_link.set_click_event(
                rtext.RAction.open_url, "http://space.bilibili.com/" +
                str(result["data"]["owner"]["mid"]))
            message_owner_link.set_hover_text(
                "打开链接: http://space.bilibili.com/" +
                str(result["data"]["owner"]["mid"]))
            message = rtext.RTextList(message, message_owner_link)
            server.say(message)
        else:
            server.execute("tellraw " + player +
                           " {\"text\":\"Error发生,错误信息: " +
                           result["message"].replace("\"", "\\\"") +
                           "\", \"color\":\"red\"}")
    elif args[0].lower() == "checkupdate":
        updateDetectionThread = updateDetection(server, player)
        updateDetectionThread.setDaemon(True)
        updateDetection.start(updateDetectionThread)
    elif args[0].lower() == "help":
        server.execute("tellraw " + player + " {\"text\":\"" +
                       helpmessage.replace("\"", "\\\"") + "\"}")
    else:
        server.execute("tellraw " + player + " {\"text\":\"参数错误,请使用 " + cp +
                       "blbl help 获取帮助\", \"color\":\"red\"}")
Exemple #6
0
def summon_bot(server, info, arg):
    global bot_list
    permission = server.get_permission_level(info)
    if len(arg) == 1:
        c = ['']
        for a, b in bot_list.items():
            bot_info = r.RTextList(
                '\n'
                f'§7----------- §6{a}§7 -----------\n',
                f'§7Dimension:§6 {b["dim"]}\n',
                r.RText(f'§7Position:§6 {b["pos"]}\n', ).c(
                    r.RAction.run_command,
                    '[x:{}, y:{}, z:{}, name:{}, dim{}]'.format(
                        *[int(i) for i in b['pos']], a,
                        b['dim'])).h('点击显示可识别坐标点'),
                f'§7Facing:§6 {b["facing"]}\n',
                r.RText('§d点击放置\n').c(r.RAction.run_command,
                                      f'!!bot spawn {a}').h(f'放置§6{a}'),
                r.RText('§d点击移除\n').c(r.RAction.run_command,
                                      f'!!bot kill {a}').h(f'移除§6{a}'))
            c.append(bot_info)
        server.reply(info, r.RTextList(*c))
    elif len(arg) == 2:
        if arg[1] == 'help':
            c = [
                r.RText(f'{a} {b}\n').c(r.RAction.suggest_command,
                                        a.replace('§6', '')).h(b)
                for a, b in help_msg.items()
            ]
            server.reply(info, r.RTextList(*c))
        elif arg[1] == 'reload' and permission >= 3:
            read()
            server.reply(info, '§a已从配置文件重新载入机器人列表')
        else:
            server.reply(info, '§c命令格式不正确或权限不足')
    elif len(arg) == 3:
        if arg[1] == 'spawn' and permission >= 1:
            if arg[2] in bot_list.keys():
                server.execute(spawn_command(arg[2]))
            else:
                server.reply(info, '§c机器人名称不正确')
        elif arg[1] == 'kill' and permission >= 1:
            if arg[2] in bot_list.keys():
                server.execute(f'player {arg[2]} kill')
            else:
                server.reply(info, '§c机器人名称不正确')
        elif arg[1] == 'remove' and permission >= 2:
            if arg[2] in bot_list.keys():
                del bot_list[arg[2]]
                save()
                server.reply(info, f'§a已删除机器人{arg[2]}')
            else:
                server.reply(info, '§c机器人名称不正确')
        else:
            server.reply(info, '§c命令格式不正确或权限不足')
    elif len(arg) == 9:
        if arg[1] == 'add' and permission >= 3:
            if arg[3] in dimension_convert.keys():
                dim = dimension_convert[arg[3]]
                pos = [int(i) for i in [arg[4], arg[5], arg[6]]]
                facing = f'{arg[7]} {arg[8]}'
                bot_list[arg[2]] = {'dim': dim, 'pos': pos, 'facing': facing}
                save()
                server.reply(info, f'§a已添加机器人{arg[2]}')
            else:
                server.reply(info, '§c无法识别的维度')
        else:
            server.reply(info, '§c命令格式不正确或权限不足')