|
import argparse |
|
import json |
|
from typing import Dict, List, Optional, Union |
|
|
|
import requests |
|
|
|
|
|
class LarkReporter: |
|
|
|
def __init__(self, url: str): |
|
self.url = url |
|
|
|
def post(self, |
|
content: Union[str, List[List[Dict]]], |
|
title: Optional[str] = None): |
|
"""Post a message to Lark. |
|
|
|
When title is None, message must be a str. |
|
otherwise msg can be in rich text format (see |
|
https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/im-v1/message/create_json#45e0953e |
|
for details). |
|
""" |
|
if title is None: |
|
assert isinstance(content, str) |
|
msg = {'msg_type': 'text', 'content': {'text': content}} |
|
else: |
|
if isinstance(content, str): |
|
content = [[{'tag': 'text', 'text': content}]] |
|
msg = { |
|
'msg_type': 'post', |
|
'content': { |
|
'post': { |
|
'zh_cn': { |
|
'title': title, |
|
'content': content |
|
} |
|
} |
|
} |
|
} |
|
requests.post(self.url, data=json.dumps(msg)) |
|
|
|
|
|
def parse_args(): |
|
parser = argparse.ArgumentParser(description='Lark bot reporter') |
|
parser.add_argument('url', help='Lark bot url') |
|
parser.add_argument('content', type=str, help='Content') |
|
parser.add_argument('--title', type=str, help='Title', default=None) |
|
args = parser.parse_args() |
|
return args |
|
|
|
|
|
if __name__ == '__main__': |
|
args = parse_args() |
|
lark = LarkReporter(args.url) |
|
if args.title: |
|
lark.post(args.content, args.title) |
|
else: |
|
lark.post(args.content) |
|
|