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})
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
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']))
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('[图片出错]')
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})
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}")
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)
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))
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))))
def to_message(self): reason: str = '' if self.reason: reason = f" ({self.reason})" return MessageSegment.text( f"[骰子{reason}: {self.expression} = {self.value}]")
def to_message(self): return MessageSegment.text(self.text)