ElectronアプリからDiscordにメッセージを送信

Electron で作ったアプリから Discord へ投稿するというのをやったのでメモです。

ちなみに Discord は最近ゲーマーを中心に人気のあるメッセージ&VCツールです。

普通にIDとパスワードでもログイン出来るのですが、今回は WebHook を利用してメッセージを送るようにしてみました。WebHook を使う場合は、メッセージを送信するサーバーのチャンネル設定権限を持っているか、管理者に WebHook を発行してもらう必要があります。

Webhook

私も覚えたばかりなのですが WebHook は API でアクセストークンを使って WebHook に認証するみたいな感じだと思います。GitHub などで使用されています。サービスによっては Basic 認証 も出来るようなのですがまた今度試してみようと思います(•ө•)ノ

Discord の WebHook の仕様はこちら

Webhooksは、Discordのチャンネルにメッセージを投稿するための手間のかからない方法です。ボットのユーザや認証の使用を必要としません。

モジュールのインストール

使用したモジュール

discord.js (GitHub)

$ npm install discord.js --save

DiscordからWebhookを作成

Discord のアプリを起動してメッセージを送信したいテキストチャンネルの横にある設定アイコンをクリック。一番下の「Webhook」を選び「CreateWebhook」で新しく WebHook を作成します。WebHook の場合は投稿主はここで作った Bot になるので、適当に投稿主用の名前を設定。

https://discordapp.com/api/webhooks/[WebhookID]/[トークン]

というURLが作成されるので、この [WebhookID] と [トークン] を使用します。
自分だけがメッセージを送れるようにしたい場合は、この URL やトークンは誰かに知られることがないようにします。アプリの利用者ならあとで入力するとか。

送信するアプリ側の設定

基本コードは省略しますが、だいたいこんな感じでメインウィンドウを作成しておきます。

main.js

app.on('ready', () => {
  win = new BrowserWindow({width:800,height:600});
  win.loadURL('file://' + __dirname + '/index.html');
});

discord_bot.js

// モジュールを読み込み
const Discord = require('discord.js');
// WebhookでClientを作成
const hook = new Discord.WebhookClient('[WebhookID]', '[トークン]');
function sendMessage() {
  hook.sendMessage('自動メッセージのテスト');
}

index.htmlで上記のjsファイルを読み込んで送信ボタンも作成。

index.html

<script src="./discord_bot.js"></script>
<button type="button" onclick="sendMessage()">メッセージを送信</button>

アプリを起動し「メッセージを送信」ボタンを押すと、Discord にメッセージが送信されます。

自分を投稿主にしたい場合は、普通の「client」を使用して処理します。

const client = new Discord.Client();
client.login('[自分のID]','[自分のパス]');
Edited on 2017.02.16 Created on 2016.11.14 JavaScript Electron Discord WebHook