メモ:VBAからDiscordにメッセージを送信する

完全に見様見真似のメモ。

ほぼこちらの内容をVBAにしただけ。

アプリケーションからDiscordのチャンネルにメッセージを送る - Qiita

webhookのURLを取得

この辺から取得する。

設定 > テーマ > 詳細設定 >開発者モード のチェックが必要かも

f:id:imihito:20180127232758p:plain

当然ながら、自分がサーバー権限持ってないと取得できない。

ただ、簡単にサーバーは建てられるので、試すだけだけなら非常に楽。

メッセージ送信

MSXML2.XMLHTTPオブジェクトを作ってPOSTするだけ。

失敗した場合は、sendした後にresponseTextにエラーメッセージが入る。

また、openの第三引数varAsyncにTrueを指定しないと、sendで強制停止させられてエラーになる。

Sub SendDiscordMsgSample()
    
    Dim msg As String
    msg = "Hello Discord!!"
    
    Const WEBHOOK_URL = ' 上記で取得したURL文字列
    Dim xhr As Object 'As MSXML2.XMLHTTP60
    Set xhr = VBA.CreateObject("MSXML2.XMLHTTP")
    
    With xhr
        .open "POST", WEBHOOK_URL, True
        .setRequestHeader "Content-Type", "application/json"
        .send "{""content"":""" & msg & """}"
    End With 'xhr
    
End Sub

結果

f:id:imihito:20180127233503p:plain

参考

公式。ちゃんと理解していない。

Discord - Developer Documentation