TwT-6's picture
Upload 2667 files
256a159 verified
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)