如何用Python结合Slack消息格式通过Discord Webhook向Slack发送多URL列表
解决Discord Webhook发送多URL的Slack格式消息问题
嘿,我明白你现在的需求——要通过Python用Discord Webhook发送多个URL,而且用Slack的消息格式对吧?其实核心很简单:每个URL对应一个attachment对象,把所有这些对象放到attachments列表里就行。
我给你写个完整的示例,你可以直接套用:
import requests from urllib.parse import urlparse # 你的Discord Webhook地址 WEBHOOK_URL = "你的Webhook链接" # 你要发送的URL列表 urls = [ "https://www.google.se", "https://stackoverflow.com", "https://github.com" ] # 构建多个附件,每个URL对应一个附件 attachments = [] for url in urls: # 解析URL的域名,让消息更友好(可选,你也可以直接用完整URL) parsed_url = urlparse(url) domain_name = parsed_url.netloc if parsed_url.netloc else parsed_url.path.split('/')[0] # 为当前URL创建一个attachment字典 attachment = { "author_name": domain_name, "color": "#00ff00", "text": "*Press the link above!*", "title": domain_name, "title_link": url } attachments.append(attachment) # 构造完整的payload payload = { "username": "Link Sender Bot", "attachments": attachments } # 发送请求到Discord Webhook try: response = requests.post(WEBHOOK_URL, json=payload) response.raise_for_status() # 如果请求失败会抛出异常 print("消息发送成功!") except requests.exceptions.RequestException as e: print(f"发送失败: {e}")
关键说明:
- 循环遍历你的URL列表,为每个URL生成独立的
attachment字典,然后把它们全部加入attachments列表。 title_link字段就是你要跳转的URL,title是显示的文本(这里用了域名,你也可以改成自定义文本)。- 如果你不需要解析域名,直接把
title设为url也完全没问题,能简化代码。 - Discord完全支持这种多附件的Slack格式payload,发送后每个URL会以独立的卡片形式展示在消息里。
这样改完之后,你就能一次性发送所有URL啦!
内容的提问来源于stack exchange,提问作者CDNthe2nd




