将数据发送到 Discord webhook

Posted

技术标签:

【中文标题】将数据发送到 Discord webhook【英文标题】:Send data to a Discord webhook 【发布时间】:2018-09-11 09:33:04 【问题描述】:

如果不使用 requests 模块,我如何向 Discord webhook 发送消息? 我试过以下代码:

import urllib2
import json

url = 'webhook url'
values = "username": "Bot", "text": "This is a test message."

data = json.dumps(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()

这会返回以下错误:

urllib2.HTTPError: HTTP Error 403: Forbidden

【问题讨论】:

这意味着您使用的应用未经授权可以制作任何 webhook。您可能需要在发出任何请求之前获取令牌。 我在制作 webhook 时唯一由 Discord 提供的是 webhook url @SubhrajyotiDas 您尝试的网址是什么? 这是一个不和谐的 webhook url,格式为 discordapp.com/api/webhooks/<server ID>/<...> 【参考方案1】:

您的数据不正确 - 根据Discord API documentation,它应该是这样的:

values = 
    'username': 'Bot',
    'content': 'your message here'

请注意contentfileembeds 之一是必需的。否则 API 将不会接受您的请求。

【讨论】:

【参考方案2】:

我的第一个建议是以下步骤:

    在所需的 Discord 频道中创建一个 webhook。 使用 discord.Webhook.from_url 方法从 Discord 提供给您的 URL 中获取 Webhook 对象。 使用discord.Webhook.send方法发送消息。

另一种选择是像这样使用 discord.py (v2):

from discord import SyncWebhook

webhook = SyncWebhook.from_url("url-here")
webhook.send("Hello World")

【讨论】:

【参考方案3】:

您可以将消息发送到 Discord webhook。

    用这个tutorial创建一个不和谐的网络钩子。

    然后,使用 discord.Webhook.from_url 方法从 Discord 提供的 URL 中获取 Webhook 对象。

    使用discord.Webhook.send 方法使用webhook 发送消息。

如果你使用的是 discord.py 的第 2 版,这个 sn-p 将为你工作:

from discord import SyncWebhook

webhook = SyncWebhook.from_url("your-url")
webhook.send("Hello")

如果你不使用版本 2,你可以使用这个 sn-p:

import requests
from discord import Webhook, RequestsWebhookAdapter

webhook = Webhook.from_url("youre-url", adapter=RequestsWebhookAdapter())
webhook.send("Hello")

【讨论】:

以上是关于将数据发送到 Discord webhook的主要内容,如果未能解决你的问题,请参考以下文章

使用 XHR 请求将 Discord 嵌入发送到 Webhook

从画布正确获取信息并通过带有 node-fetch 的 webhook 将信息发送到 discord 时出现问题

如何通过 webhook 将 heroku 日志发送到不和谐?

如何向 Discord Webhooks C# 发送 POST 请求

Python discord Bot 处理来自一个用户的消息并在 webhook 中发送它们

使用 Swift 向 Discord Webhook 发送 HTTP POST 请求会导致响应错误