From 0a30b468471c4989783a0867c96525fcfaf744db Mon Sep 17 00:00:00 2001 From: bdzxb <1443103348@qq.com> Date: Fri, 15 May 2026 09:13:04 +0800 Subject: [PATCH] modified: __pycache__/main.cpython-312.pyc modified: main.py --- __pycache__/main.cpython-312.pyc | Bin 20549 -> 20864 bytes main.py | 143 +++++++++++++------------------ 2 files changed, 61 insertions(+), 82 deletions(-) diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc index bec6fdf20f8a41390a897e02ee2d6dcabe56fed3..547b72db6dea7630704df07a8ed5cb92650fcac7 100644 GIT binary patch delta 3759 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 ZD0fUnW%^j)7Kt{*bgYKnWKkzN>R;*FZz2Ey 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: