Esempio n. 1
0
async def set_receive(bot: Bot, event: Event, state: dict):  # 功能设置接收
    true = ["True", "T", "true", "t"]
    false = ["False", "F", "false", "f"]
    args = str(event.get_message()).strip().split()
    state["key"] = args
    # logger.info(bot.__dict__)
    # logger.info(event.dict())
    # logger.info(state)
    mold = state["key"][0]
    info = setting.search(Q["group_id"] == event.dict()["group_id"])
    if info:
        if mold in true:
            info[0]["song"] = True
            setting.update(info, Q["group_id"] == event.dict()["group_id"])
            msg = "已开启自动下载功能"
            await bot.send(event=event,
                           message=Message(MessageSegment.text(msg)))
        elif mold in false:
            info[0]["song"] = False
            setting.update(info, Q["group_id"] == event.dict()["group_id"])
            msg = "已关闭自动下载功能"
            await bot.send(event=event,
                           message=Message(MessageSegment.text(msg)))
    else:
        setting.insert({"group_id": event.dict()["group_id"], "song": True})
Esempio n. 2
0
    async def change(bot: Bot, event: Event, state: T_State):
        """修改配置\r\n
        type:\r\n
        group\r\n
        private\r\n
        order:\r\n
        "setu_level"\r\n
        "original"\r\n
        "setu"\r\n
        "r18"\r\n
        "max_num"\r\n
        "revoke"\r\n
        "at"\r\n
        """
        key = state["key"]
        mold = event.dict()["message_type"]
        if mold == "group":
            config = group_config.search(
                Q["group_id"] == event.dict()['group_id'])[0]
            admins = config["admins"]
            admins.append(config["owner"])
            if int(event.get_user_id()) in admins or event.get_user_id(
            ) in hso_config.superusers:
                data = config
                before = str(config["group"][key[1]])
                if key[0] == "开启":
                    data["group"][key[1]] = True
                    after = "True"
                elif key[0] == "关闭":
                    data["group"][key[1]] = False
                    after = "False"
                else:
                    try:
                        data["group"][key[1]] = int(key[2])
                    except:
                        data["group"][key[1]] = key[2]
                    after = key[2]
                group_config.update(data,
                                    Q["group_id"] == event.dict()['group_id'])
                return await bot.send(event=event,
                                      message=Message(
                                          MessageSegment.text(
                                              '{}:{}-->{}'.format(
                                                  key[1], before, after))))
            else:
                return await bot.send(event=event,
                                      message=Message(
                                          MessageSegment.text('¿没权限还玩🐎¿')))

        elif mold == 'private':
            pass  # todo
Esempio n. 3
0
async def handle_Chat(bot: Bot, event: Event, state: dict):
    try:
        if event.group_id:
            group_id = event.group_id
    except:
        group_id = None
    # 临时解决串群问题
    if group_id != state['group_id']:
        if not group_id:
            await ELF_bot.reject('你在其他群组的会话未结束呢!')
        await ELF_bot.reject()
    msg = state["ELF_bot"]
    if re.search('再见', msg):
        await ELF_bot.send('下次再聊哟!')
        return
    # 百度
    try:
        baidu = state['BaiduBot']
        r_msg = await baidu.sendMsg(msg)
    except:
        r_msg = {}
        r_msg['code'] = '-1'
    if group_id is not None:
        res_messages = MessageSegment.at(event.user_id)
    else:
        res_messages = MessageSegment.text('')
    if str(r_msg['code']) != '0':
        # 如果出错转为调用腾讯
        logger.error(r_msg)
        try:
            tx = state['TXBot']
            r_msg = await tx.sendMsg(msg)
        except:
            app_id = nonebot.get_driver().config.dict()['tx_app_id']
            appkey = nonebot.get_driver().config.dict()['tx_appkey']
            session = str(event.user_id)
            if app_id == None or appkey == None:
                logger.error('腾讯闲聊配置出错!')
                await ELF_bot.send('腾讯、百度 闲聊配置出错!请正确配置1')
                return
            # 腾讯
            tx = txbot.TXBot(app_id=app_id, appkey=appkey, session=session)
            r_msg = await tx.sendMsg(msg)
        await ELF_bot.reject(res_messages +
                             MessageSegment.text(r_msg['answer']))
    else:
        await ELF_bot.reject(res_messages +
                             MessageSegment.text(r_msg['answer']))
Esempio n. 4
0
 def cqcode(self) -> MessageSegment:
     if cheru.config.RES_PROTOCOL == 'http':
         return MessageSegment.image(self.url)
     elif cheru.config.RES_PROTOCOL == 'file':
         return MessageSegment.image(f'file:///{os.path.abspath(self.path)}')
     else:
         try:
             return MessageSegment.image(helper.pic2b64(self.open()))
         except Exception as e:
             return MessageSegment.text('[图片出错]')
Esempio n. 5
0
async def music_receive(bot: Bot, event: Event, state: dict):
    # logger.info(event.get_type())
    if event.dict()["message_type"] == "private":
        return await bot.send(event=event,
                              message=Message(
                                  MessageSegment.text("私聊无法启用解析功能")))
    # logger.info(bot.__dict__)
    # logger.info(event.dict())
    # logger.info(state)
    info = setting.search(Q["group_id"] == event.dict()["group_id"])
    id = list(filter(None, state["_matched_groups"]))  # 去除None
    if info:
        if info[0]["song"]:
            msg = f"如需下载请回复该条消息\r\n歌曲ID:{id[0]}\r\n关闭解析请使用指令\r\n#ncm f"
            await bot.send(event=event,
                           message=Message(MessageSegment.text(msg)))
            await Ncm().download(ids=id)
    else:
        setting.insert({"group_id": event.dict()["group_id"], "song": True})
Esempio n. 6
0
async def search(bot: Bot, event: Event, state: T_State):
    images = get_message_image(event.json())
    if have_image(images):
        for image in images:
            logger.info(f"imgsearch: search -> \"{image}\"")

            logger.info(f"SauceNAO: searching...")
            res_sauce = await saucenao.search(image)
            if res_sauce.status_code // 100 == 2:
                logger.info(f"SauceNAO: hit on {res_sauce.content['rate']}")
                res_text = f"[ {res_sauce.content['index']} / {res_sauce.content['rate']} ]\n" + \
                    "\n".join(f"{k}: {v}"for k,
                              v in res_sauce.content['data'].items())
                message = MessageSegment.reply(
                    event.message_id) + MessageSegment.text(res_text)
                await bot.send(event, message)
            elif res_sauce.status_code // 100 == 3:
                logger.info("SauceNAO: not found")
                logger.info(f"Ascii2D: searching...")
                res_ascii = await ascii2d.search(image)
                if res_ascii.status_code // 100 == 2:
                    message = MessageSegment.reply(
                        event.message_id) + MessageSegment.text("\n".join(
                            f"{k}: {v}" for k, v in res_ascii.content.items()))
                    await bot.send(event, message)

                elif res_ascii.status_code // 100 == 3:
                    message_1 = MessageSegment.reply(event.message_id)+MessageSegment.text("\n".join(f"{k}: {v}"for k, v in res_ascii.content[0].items())) +\
                        MessageSegment.image(res_ascii.content[1])
                    message_2 = MessageSegment.reply(event.message_id)+MessageSegment.text("\n".join(f"{k}: {v}"for k, v in res_ascii.content[2].items())) +\
                        MessageSegment.image(res_ascii.content[3])
                    logger.info(f"Ascii2D: sending possible results...")
                    await bot.send(event, message_1)
                    await bot.send(event, message_2)
                elif res_ascii.status_code // 100 == 4:
                    logger.info(f"Ascii2D: {res_ascii.message}")

            elif res_sauce.status_code // 100 == 4:
                logger.error(f"SauceNAO: {res_sauce.message}")
Esempio n. 7
0
 async def send(self,
                file: str = "",
                msg: str = "",
                at: bool = False):  # 发送图片或文字
     # if file[1:4] != "http" and file[1:4] != "":  # 本地文件
     #    file = "file:///" + file
     message_segment = list()
     if file:
         message_segment.append(MessageSegment.image(file=file))
     if msg:
         message_segment.append(MessageSegment.text(msg))
     if at:
         message_segment.append(
             MessageSegment.at(self.event.dict()["user_id"]))
     message = Message(message_segment)
     return await self.bot.send(event=self.event, message=message)
Esempio n. 8
0
async def _(bot: Bot, event: MessageEvent):
    city = get_msg(event.get_plaintext())
    if city is None:
        await weather.finish("地点是...空气吗?? >_<")
    data = await get_City_Weather(city)
    if type(data) is int:
        if data == 404:
            await weather.finish()
        else:
            await weather.finish(f"出错了! 错误代码={data}")
    img = draw(data) if data else None
    b64 = img_to_b64(img) if img else None
    if data["warning"]:
        warning = data["warning"]["warning"]
        text = ""
        for i in range(len(warning)):
            text = f'\n{warning[i]["text"]}'
        await weather.finish(
            MessageSegment.image(b64) + MessageSegment.text(text))
    else:
        await weather.finish(MessageSegment.image(b64))
Esempio n. 9
0
    async def change(bot: Bot, event: Event, state: T_State):
        """修改配置\r\n
        type:\r\n
        group\r\n
        private\r\n
        order:\r\n
        "setu_level"\r\n
        "original"\r\n
        "setu"\r\n
        "r18"\r\n
        "max_num"\r\n
        "revoke"\r\n
        "at"\r\n
        """
        key = state["key"]
        mold = event.dict()["message_type"]
        if mold == "group":
            config = group_config.search(
                Q["group_id"] == event.dict()["group_id"])[0]
            admins = config["admins"]
            admins.append(config["owner"])
            user_id = event.get_user_id()
            data = config
            key1 = key[0]
            before = str(config["group"][key1])
            true = ["True", "T", "true", "t"]
            false = ["False", "F", "false", "f"]
            if key[1] in true:
                data["group"][key1] = True
                after = "True"
                if key1 == "r18":
                    data["group"]["setu_level"] = 2
            elif key[1] in false:
                data["group"][key1] = False
                after = "False"
                if key1 == "r18":
                    data["group"]["setu_level"] = 1
            else:
                after: str = key[1]
                try:
                    data["group"][key1] = int(after)
                except:
                    data["group"][key1] = after
            if int(user_id) in admins or user_id in hso_config.superusers:
                group_config.update(data,
                                    Q["group_id"] == event.dict()["group_id"])
                return await bot.send(event=event,
                                      message=Message(
                                          MessageSegment.text(
                                              "{}:{}-->{}".format(
                                                  key1, before, after))))
            else:
                return await bot.send(event=event,
                                      message=Message(
                                          MessageSegment.text("¿没权限还玩🐎¿")))

        elif mold == "private":
            user_id = event.get_user_id()
            config = group_config.search(Q["user_id"] == user_id)[0]
            data = config
            key1 = key[0]
            before = str(config[key1])
            true = ["True", "T", "true", "t"]
            false = ["False", "F", "false", "f"]
            if key[1] in true:
                data[key1] = True
                after = "True"
                if key1 == "r18":
                    data["setu_level"] = 2
            elif key[1] in false:
                data[key1] = False
                after = "False"
                if key1 == "r18":
                    data["setu_level"] = 1
            else:
                after: str = key[1]
                try:
                    data[key1] = int(after)
                except:
                    data[key1] = after
            group_config.update(data, Q["user_id"] == user_id)
            return await bot.send(event=event,
                                  message=Message(
                                      MessageSegment.text("{}:{}-->{}".format(
                                          key1, before, after))))
Esempio n. 10
0
 def to_message(self):
     reason: str = ''
     if self.reason:
         reason = f" ({self.reason})"
     return MessageSegment.text(
         f"[骰子{reason}: {self.expression} = {self.value}]")
Esempio n. 11
0
 def to_message(self):
     return MessageSegment.text(self.text)