发送 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)
有没有办法在 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
, orfile
.
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)