63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
#!/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
|
||
import json
|
||
import requests
|
||
import traceback
|
||
import datetime
|
||
from typing import Dict, Any, List, Optional, Union
|
||
|
||
class DiscordBot:
|
||
"""Discord Webhook机器人,用于发送分析结果到Discord频道"""
|
||
|
||
def __init__(self, webhook_url: str):
|
||
"""
|
||
初始化Discord Webhook机器人
|
||
|
||
Args:
|
||
webhook_url: Discord Webhook的URL
|
||
"""
|
||
self.webhook_url = webhook_url
|
||
|
||
def send_message(self, content: str, username: str = None, avatar_url: str = None) -> Dict[str, Any]:
|
||
"""
|
||
发送普通消息
|
||
|
||
Args:
|
||
content: 消息内容
|
||
username: 自定义机器人名称
|
||
avatar_url: 自定义机器人头像URL
|
||
|
||
Returns:
|
||
接口返回结果
|
||
"""
|
||
data = {"content": content}
|
||
|
||
if username:
|
||
data["username"] = username
|
||
|
||
if avatar_url:
|
||
data["avatar_url"] = avatar_url
|
||
|
||
return self._post(data)
|
||
|
||
def _post(self, data: Dict[str, Any]) -> Dict[str, Any]:
|
||
"""
|
||
发送数据到Discord Webhook
|
||
|
||
Args:
|
||
data: 要发送的数据
|
||
|
||
Returns:
|
||
接口返回结果
|
||
"""
|
||
try:
|
||
headers = {'Content-Type': 'application/json'}
|
||
response = requests.post(self.webhook_url, json=data, headers=headers)
|
||
if response.status_code == 204: # Discord返回成功时无内容
|
||
return {"success": True}
|
||
return response.json()
|
||
except Exception as e:
|
||
print(f"发送Discord消息时出错: {e}")
|
||
traceback.print_exc()
|
||
return {"success": False, "error": str(e)} |