diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc index bec6fdf..547b72d 100644 Binary files a/__pycache__/main.cpython-312.pyc and b/__pycache__/main.cpython-312.pyc differ diff --git a/main.py b/main.py index 9acbee2..feaf612 100644 --- a/main.py +++ b/main.py @@ -80,7 +80,6 @@ class MyPlugin(Star): paystu text not null, paybox text not null, payqd text not null - ) ''' ) @@ -94,6 +93,67 @@ class MyPlugin(Star): self.sqllitaa.close() else: self.sqllitaa = sqlite3.connect(f"{self.data_path}/zhangdan.db") + + + # 帮助 + @filter.command("zdhelp") + async def mchelp(self, event: AstrMessageEvent): + logger.info(" 开始执行 zdhelp 命令 ") + helptxt = """ """ + yield event.plain_result(f"{helptxt}") + + # 获取解压密码冰进行下载解压 + @filter.command("mm") + async def wxmm(self, event: AstrMessageEvent, wxmm: str,zfbmm: str): + # # 登录邮箱 下载文件 + yield event.plain_result(f"{self.emaillog()}") + logger.info("开始解压文件") + # # 解压文件 self.data_path + file_list = os.listdir(self.data_path ) + logger.info(f"{file_list}") + for aac in file_list: + self.jzip(filename=aac,mima=wxmm) + self.jzip(filename=aac,mima=zfbmm) + # 解析文件 + file_list = os.listdir(f"{self.data_path}/zhangdan") + yield event.plain_result(f"解压后文件列表:{file_list}") + self.sqllitaa = sqlite3.connect(f"{self.data_path}/zhangdan.db") + cur = self.sqllitaa.cursor() + try: + for aaa in file_list: + for icc in self.exceltt(filename=str(self.data_path)+"/zhangdan/"+aaa): + cur.execute(icc) + self.sqllitaa.commit() + cur.close() + self.sqllitaa.close() + yield event.plain_result("保存完成__使用/chazhang 查询最后10条记录") + except Exception as e: + yield event.plain_result(f"保存失败{e}") + logger.info(f"{e}") + cur.close() + self.sqllitaa.close() + + # 查账 + @filter.command("chazhang") + async def chazhang(self, event: AstrMessageEvent): + logger.info(" 开始执行 chazhang 命令 ") + self.sqllitaa = sqlite3.connect(f"{self.data_path}/zhangdan.db") + # 创建游标对象 + cursor = self.sqllitaa.cursor() + try: + cursor.execute('SELECT * FROM zhangdan ORDER BY id DESC LIMIT 10;') + jieg =cursor.fetchall() + self.sqllitaa.commit() + cursor.close() + self.sqllitaa.close() + yield event.plain_result(f"{jieg}") + except Exception as e: + yield event.plain_result(f"查询失败:{e}") + logger.info(f"查询失败{e}") + self.sqllitaa.commit() + cursor.close() + self.sqllitaa.close() + # 登录邮箱 下载文件 def emaillog(self): logger.info(f" 开始执行 登录邮箱 {self.email_usr} 命令 ") @@ -148,9 +208,6 @@ class MyPlugin(Star): for part in email_message.walk(): # 递归遍历邮件所有部分 if part.get_content_maintype() == "multipart": # 跳过multipart容器部分 continue - - # 检查是否为.zip附件 - # ================== filename = part.get_filename() # 获取附件文件名 # 获取正文 maildata = part.get_payload(decode=True) @@ -169,22 +226,11 @@ class MyPlugin(Star): filenames += self.download_file(urlt=urlt,filenamett=f"{from_header}{mail_date}") except Exception as e: logger.debug(f"URl 文件下载失败:{e}") - content_type = part.get_content_type() # 获取内容类型 - # 判断条件: - # 1. 文件名以.zip结尾,或 - # 2. 内容类型是Excel文件 - # if (filename and filename.lower().endswith(".zip")) or \ - # (content_type == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"): - - - # 处理无文件名的情况 # ================ if not filename: # 如果附件没有文件名 # 按日期发件人生成附件名 - filename = f"{from_header}{mail_date}.zip" - # 文件名处理 # ========= # 解码邮件头中的文件名 @@ -206,7 +252,6 @@ class MyPlugin(Star): new_filename = filename # 拼接完整的文件保存路径 filepath = os.path.join(StarTools.get_data_dir("astrbot_bdzxb_bill"), new_filename) - if new_filename not in self.no_file: # 附件保存处理 # =========== @@ -220,74 +265,8 @@ class MyPlugin(Star): with open(filepath, "wb") as f: f.write(part.get_payload(decode=True)) # 解码并写入附件内容 logger.info(f"附件已存在,覆盖: {new_filename}") - - - return "获取成功:"+filenames - # 查看白名单邮件 - # if from_header not in self.emcil_white: # 严格检查白名单 - # logger.debug(f"跳过非白名单发件人: {from_header}") - # except Exception as e: - # logger.error(f" 邮箱登陆失败 抛出异常:{e}") - # return "邮件搜索失败" - - # 帮助 - @filter.command("zdhelp") - async def mchelp(self, event: AstrMessageEvent): - logger.info(" 开始执行 zdhelp 命令 ") - helptxt = """ """ - yield event.plain_result(f"{helptxt}") - # 获取解压密码冰进行下载解压 - @filter.command("mm") - async def wxmm(self, event: AstrMessageEvent, wxmm: str,zfbmm: str): - # # 登录邮箱 下载文件 - self.emaillog() - logger.info("开始解压文件") - # # 解压文件 self.data_path - file_list = os.listdir(self.data_path ) - logger.info(f"{file_list}") - for aac in file_list: - self.jzip(filename=aac,mima=wxmm) - self.jzip(filename=aac,mima=zfbmm) - # 解析文件 - file_list = os.listdir(f"{self.data_path}/zhangdan") - self.sqllitaa = sqlite3.connect(f"{self.data_path}/zhangdan.db") - cur = self.sqllitaa.cursor() - try: - for aaa in file_list: - for icc in self.exceltt(filename=str(self.data_path)+"/zhangdan/"+aaa): - # logger.info(f"执行语句:{icc}") - cur.execute(icc) - self.sqllitaa.commit() - cur.close() - self.sqllitaa.close() - yield event.plain_result("保存完成__使用/chazhang 查询最后10条记录") - except Exception as e: - logger.info(f"{e}") - cur.close() - self.sqllitaa.close() - - # 查账 - @filter.command("chazhang") - async def chazhang(self, event: AstrMessageEvent): - logger.info(" 开始执行 chazhang 命令 ") - self.sqllitaa = sqlite3.connect(f"{self.data_path}/zhangdan.db") - # 创建游标对象 - cursor = self.sqllitaa.cursor() - try: - cursor.execute('SELECT * FROM zhangdan ORDER BY id DESC LIMIT 10;') - jieg =cursor.fetchall() - self.sqllitaa.commit() - cursor.close() - self.sqllitaa.close() - yield event.plain_result(f"{jieg}") - except Exception as e: - logger.info(f"查询失败{e}") - self.sqllitaa.commit() - cursor.close() - self.sqllitaa.close() - def exceltt(self,filename): yuju = [] try: