import json import lark_oapi as lark from lark_oapi.api.im.v1 import * from config import CONFIG from logger_config import setup_logger # 设置日志记录器 logger = setup_logger('send_filemsg') def main(): logger.info("=" * 50) logger.info("开始执行文件未找到的飞书提醒消息发送") logger.info("=" * 50) Local_openid = CONFIG['open_id'] logger.info(f"目标接收者数量: {len(Local_openid)}") logger.info(f"接收者open_id列表: {Local_openid}") # 创建client logger.info("正在创建飞书客户端...") try: client = lark.Client.builder() \ .app_id(CONFIG['app_id']) \ .app_secret(CONFIG['app_secret']) \ .log_level(lark.LogLevel.DEBUG) \ .build() logger.info("飞书客户端创建成功") except Exception as e: logger.error(f"飞书客户端创建失败: {str(e)}") logger.error(f"错误类型: {type(e).__name__}") return success_count = 0 fail_count = 0 for i, local_openid in enumerate(Local_openid): logger.info(f"正在处理第 {i+1}/{len(Local_openid)} 个接收者: {local_openid}") try: # 构造请求对象 request: CreateMessageRequest = CreateMessageRequest.builder() \ .receive_id_type("open_id") \ .request_body(CreateMessageRequestBody.builder() .receive_id(local_openid) .msg_type("text") .content("{\"text\":\"未找到指定图片,请手动发送\"}") .build()) \ .build() logger.info("请求对象构造成功") logger.info(f"请求内容: 未找到指定图片,请手动发送") # 发起请求 logger.info("正在发送飞书消息...") response: CreateMessageResponse = client.im.v1.message.create(request) # 处理失败返回 if not response.success(): logger.error(f"消息发送失败 - 接收者: {local_openid}") logger.error(f"错误代码: {response.code}") logger.error(f"错误信息: {response.msg}") logger.error(f"日志ID: {response.get_log_id()}") logger.error(f"响应内容: {json.dumps(json.loads(response.raw.content), indent=4, ensure_ascii=False)}") fail_count += 1 else: logger.info(f"消息发送成功 - 接收者: {local_openid}") logger.info(f"响应数据: {lark.JSON.marshal(response.data, indent=4)}") success_count += 1 except Exception as e: logger.error(f"处理接收者 {local_openid} 时出现异常: {str(e)}") logger.error(f"异常类型: {type(e).__name__}") import traceback logger.error(f"异常堆栈: {traceback.format_exc()}") fail_count += 1 # 总结报告 logger.info("=" * 50) logger.info("文件未找到的飞书提醒消息发送完成") logger.info(f"成功发送: {success_count} 条") logger.info(f"发送失败: {fail_count} 条") logger.info(f"总计处理: {len(Local_openid)} 个接收者") logger.info("=" * 50) if __name__ == "__main__": try: main() logger.info("程序执行完成") except Exception as e: logger.error(f"程序执行过程中出现未捕获的异常: {str(e)}") logger.error(f"异常类型: {type(e).__name__}") import traceback logger.error(f"异常堆栈: {traceback.format_exc()}") exit(1)