如何将Python脚本获取的状态结果发送至Discord Webhook?
如何通过Discord Webhook发送爬取到的Contabo状态结果
要把你爬取到的status和status2结果发送到Discord,核心是通过POST请求向Discord Webhook URL发送JSON格式的消息 payload。以下是具体实现步骤:
1. 获取Discord Webhook URL
在Discord服务器中创建一个Webhook:
- 打开服务器设置 → 选择「集成」→ 点击「Webhooks」→ 新建Webhook
- 设置Webhook的名称、发送频道,然后复制生成的Webhook URL(格式类似
https://discord.com/api/webhooks/[ID]/[TOKEN])
2. 安装依赖库
Discord Webhook需要用requests库发送HTTP请求,先安装:
pip install requests
3. 修改你的爬取脚本
在现有爬取逻辑后添加发送消息的代码,以下是完整示例(假设你已经完成爬取并得到status和status2变量):
import requests from datetime import datetime # --- 你的爬取代码开始 --- # 这里替换成你实际的爬取逻辑,最终得到status和status2的值 status = "所有服务正常运行" status2 = "存储节点性能优化中" # --- 你的爬取代码结束 --- # 替换为你自己的Discord Webhook URL WEBHOOK_URL = "https://discord.com/api/webhooks/你的ID/你的TOKEN" # 构造美观的Embed消息(Discord支持的富文本格式) payload = { "embeds": [ { "title": "Contabo 状态更新", # 根据主状态动态设置颜色:正常为绿色(0x00ff00),异常为红色(0xff0000) "color": 0x00ff00 if "正常" in status else 0xff0000, "fields": [ { "name": "主服务状态", "value": status, "inline": True }, { "name": "次要服务状态", "value": status2, "inline": True } ], # 添加当前UTC时间戳 "timestamp": datetime.utcnow().isoformat() + "Z", "footer": { "text": "Contabo状态监控脚本" } } ] } # 发送请求到Discord Webhook try: response = requests.post(WEBHOOK_URL, json=payload, timeout=10) # Discord返回200或204表示成功 if response.status_code in (200, 204): print("状态消息已成功发送到Discord") else: print(f"发送失败,状态码: {response.status_code},响应: {response.text}") except requests.exceptions.RequestException as e: print(f"网络请求出错: {str(e)}")
可选:简化消息格式
如果不需要富文本Embed,也可以用纯文本消息:
payload = { "content": f"📊 Contabo状态更新\n主服务状态: {status}\n次要服务状态: {status2}" }
注意事项
- 不要把Webhook URL硬编码到公开代码中,建议用环境变量存储(比如
os.getenv("DISCORD_WEBHOOK_URL")) - 可以添加异常处理逻辑,避免爬取失败时导致消息发送中断
- 如果状态内容包含特殊字符,确保已做转义处理(Discord会自动处理大部分常规字符)
内容的提问来源于stack exchange,提问作者eduu.vc
相关产品推荐
相关产品推荐

