- 修改config.py中的文件路径和定时发送时间 - 在各个脚本中添加日志记录功能,提升错误追踪和调试能力 - 更新README.md,详细说明程序功能和使用方法 - 重构scheduler.py、sendmsg.py、send_openmsg.py和send_filemsg.py,增强代码可读性和可维护性
94 lines
3.6 KiB
Python
94 lines
3.6 KiB
Python
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_openmsg')
|
|
|
|
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) |