HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
1205
T-glusDiscordのWebhookにpostする方法を教えて下さい8解決


T-glus

リンク

2020/12/5(Sat) 22:10:43|NO.91873

HSP言語でDiscordのWebhookに送信したいんですが、
どうすればいいでしょうか。



この記事に返信する


CantRunRiver

リンク

2020/12/6(Sun) 08:56:31|NO.91874

DiscordのWebhook(API)は「Content-Type」がほとんど「application/json」で使われている(と思います)ので、
netrequest_post命令のパラメーターにJSON(ただし、文字列)を入れればいけると思います。

参考になったスレッド
http://hsp.tv/play/pforum.php?mode=pastwch&num=66462



T-glus

リンク

2020/12/7(Mon) 11:44:20|NO.91876

ご返信ありがとうございます。
そのページの方のプログラムを参考にして、そのページに書いてあったdllを使用し、
以下のプログラムを作ってみたのですが、

#include "hspinets.as"
netinit
neturl "https://discord.com/api/webhooks/781073988251418674/DMC8yaKjwQ7KnZZ6Qpzzj3Zq_U6sGzsZLmw-I5KYb1f_dKNAeVD4FuGfWFyg24OMazmS/"
netheader "Content-Type: application/json"
a="aaa"
netrequest_post "username",a
netrequest_post "content",a
dialog stat
end

エラーは出ないのですが、discordのほうで全く反応がありません。。。
どなたか教えて下さい。。。



zakki

リンク

2020/12/7(Mon) 18:01:32|NO.91878

単純に"aaa"という文字列を引数にpostを2回してますが、そうではなくてAPI仕様通りのJSON文字列を作成してpostする必要あるのでは
https://discord.com/developers/docs/resources/webhook#execute-webhook



T-glus

リンク

2020/12/7(Mon) 19:29:12|NO.91880

ご返信ありがとうございます。

やってみます。



T-glus

リンク

2020/12/10(Thu) 16:16:07|NO.91901

すみません。
そのサイトを見ましても、
DiscordのAPI仕様通りのJSON文字列というものがどんなものなのかわかりません。



TOMATO

リンク

2020/12/10(Thu) 22:40:29|NO.91906

正直あまり詳しくはないですし、試してもいませんが…

JSONは以下のような文字列フォーマットを指しています。一般的なWeb用語なのでググってください。
(改行やスペースは見やすくしているだけなので、なくても大丈夫)


{ "content": "Hello from Webhook" }

つまり、
netrequest_post のp1にJSON文字列をそのまま流し込めば動くのでは思います。
(hspinetにJSONを操作するための命令はありますが、直接生成したほうが最初はわかりやすいかと)

例:

#include "hspinet.as" netinit neturl "https://discord.com/api/webhooks/781073988251418674/DMC8yaKjwQ7KnZZ6Qpzzj3Zq_U6sGzsZLmw-I5KYb1f_dKNAeVD4FuGfWFyg24OMazmS/" netheader "Content-Type: application/json" a="{\"content\": \"Hello from Webhook\"}" netrequest_post "",a dialog stat

ちなみにhspinetはHSP3.5でHTTPSに標準対応しているので、hspinetsは使う必要はないです。

ここまで解説しましたが、
hspinetはDiscordで使用されているPATCHメソッドやDELETEメソッドに対応していないため、
一部機能が正しく動かないことが容易に予想されます。投稿系は大丈夫っぽいですが。
https://discord.com/developers/docs/resources/webhook#modify-webhook-with-token

---
参考:DiscordにWebhookでいろいろ投稿する
https://qiita.com/Eai/items/1165d08dce9f183eac74



Velgail

リンク

2020/12/11(Fri) 00:24:24|NO.91907

横から完成形を投下してみます。


#include "hspinet.as" #include "hsp3utf.as" netinit neturl "https://discordapp.com/api/webhooks/" netheader "Content-Type: application/json" a="{\"content\": \"Hello from Webhook\\n改行は\\\\\\\\\\\\\\\\nで送るらしいですよ。\"}" netrequest_post "hooks/key", a //以下sample/hspinet/test7.hspのアレ 結果は何も表示されない で正解。 mes "DOWNLOAD 開始" *main ; 結果待ちのためのループ netexec res if res > 0 : goto *comp if res < 0 : goto *bad await 50 goto *main *bad ; エラー neterror estr mes "ERROR "+estr stop *comp ; 完了 mes "DOWNLOAD 完了" netgetv buf mesbox buf,640,400,1 stop

hsp3utf.asを入れる(≒UTF-8で文字列を処理する、encode.asなどでUTF-8に変換する)を行わないとASCII外の文字があるとエラーを吐かれます。

改行は\\nで書くというちょっと気持ち悪い事象で、Discordで\\nと表示するにはバックスラッシュ16連+nというとんでもないことになる模様。

これが通れば後は実用の試行錯誤で済みますね。



T-glus

リンク

2020/12/11(Fri) 10:52:03|NO.91908

皆様ご返信ありがとうございます
Velgail様のプログラムを少し変えて、

netrequest_post "hooks/key", a

の部分のhooks/keyを消すと無事実行できました

皆様本当にありがとうございました



ONION software Copyright 1997-2023(c) All rights reserved.