发送 Discord webhook 是 VBS

Send Discord webhook is VBS

有没有办法在 VBS 中发送 Discord webhook? 我尝试过的:

Set oHTTP = CreateObject("Microsoft.XMLHTTP")
oHTTP.Open "POST", "(my webhook here)", False
oHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oHTTP.SetRequestHeader "Content-Length", Len("hello")
oHTTP.Send "test"
HTTPPost = oHTTP.ResponseText
MsgBox oHTTP.ResponseText

输出:

{"message": "Cannot send an empty message", "code": 50006}

尝试为您的 Content-Type 使用 application/json,并像这样发送正文:

{
    "content": "Test"
}

我知道您正在为您的 Content-Type 使用 application/x-www-form-urlencoded。如果我没记错的话,API 只允许 application/json 如果你只发送文本内容 and/or 嵌入数组,或者 multipart/form-data 如果你还发送一些文件.我怀疑是这样的。

然而,在另一种情况下,我不确定 oHTTP.Send 除了发送请求之外到底做了什么,但我假设它将纯文本数据 "Test" 附加到正文请求和 API 无法识别它,因为它不仅需要 属性 值,还需要 属性 名称。

您随时可以参考 their docs 以备将来参考。

请原谅两件事:首先,对于使用答案进行评论,由于缺乏声誉,我无法使用评论功能。其次,尽管我刚刚进行了快速研究,但我对使用 VBS 一点都不熟悉,尽管我对 Discord webhook 有点熟悉。

很明显from the documentation你可以发送基本表格POST。

Execute Webhook

POST/webhooks/{webhook.id}/{webhook.token}


Note that when sending a message, you must provide a value for at least one of content, embeds, or file.


Field Type Description
content string the message contents (up to 2000 characters)

要做到这一点,只需调整代码,以便您发送字符串键值对,例如field1=value1&field2=value2

'Set text value to send as a variable so you can use it to set the content-length header.
Dim content: content = "hello"
Dim oHttp: Set oHTTP = CreateObject("Microsoft.XMLHTTP")
oHTTP.Open "POST", "(my webhook here)", False
oHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oHTTP.SetRequestHeader "Content-Length", Len(content)
'Pass value as a form key value pair string.
oHTTP.Send "content=" & content
Dim response: response = oHTTP.ResponseText
Call MsgBox(response)