# -*- coding: utf-8 -*-
"""
@File : qy_message.py
@Time : 2023/3/13 14:04
@Author : geekbing
@LastEditTime : -
@LastEditors : -
@Description : 企微机器人发送消息
"""
import logging
import json
from typing import Dict, Union
import requests
from django.conf import settings
from lunarlink.utils.message_template import parse_message, qy_msg_template
logger = logging.getLogger(__name__)
def send_message(summary: Union[Dict, str], webhook: str, **kwargs):
"""
发送企业微信消息
:param summary:
:param webhook:
:param kwargs:
:return:
"""
header = {"Content-Type": "application/json"}
webhooks = webhook.split("\n") # 多个机器人,换行分隔
for webhook in webhooks:
parsed_data = parse_message(summary=summary, **kwargs)
message = qy_msg_template(**parsed_data)
res = requests.post(
url=webhook, headers=header, data=json.dumps(message).encode("utf-8")
).json()
if res.get("errcode") == 0:
logger.info(f"发送通知成功,请求的webhook是: {webhook}")
else:
logger.error(f"发送通知失败,请求的webhook是: {webhook}, 响应是:{res}")
def send(msg: Dict, mentioned_list=None, mentioned_mobile_list=None):
""" """
if mentioned_mobile_list is None:
mentioned_mobile_list = []
if mentioned_list is None:
mentioned_list = []
webhook = settings.QY_WEB_HOOK
header = {"Content-Type": "application/json"}
content = f"""**LunarLink平台预警** \n
>url: {msg.get("url")}
>msg: {msg.get("msg")}
>traceback: {msg.get("traceback")}"""
data = {
"msgtype": "markdown",
"markdown": {
"content": content,
"mentioned_list": mentioned_list,
"mentioned_mobile_list": mentioned_mobile_list,
},
}
res = requests.post(url=webhook, headers=header, json=data).json()
if res.get("errcode") == 0:
logger.info(f"发送通知成功,请求的webhook是: {webhook}")
else:
logger.error(f"发送通知失败,请求的webhook是: {webhook}, 响应是:{res}")