[Node.js request] Discord Webhookでテキスト/画像の送信

ググっても目的のもの(特に画像の送信)が出てこなかったので、作ったコードを公開しておく。


動作確認環境

・Mac OS X(10.14 Mojave)
・Node.js v8.8.0
・npm v5.5.1
・request v2.88.0


コード

例外処理ちゃんとしてない(考えてない)ので実運用時には各自で考慮してください。

const fs = require('fs');
const request = require('request');

class Discord {
  constructor (webhookUrl, user) {
    this.data = {username: user};
    this.session = request.defaults({
      url: webhookUrl,
    });
  }

  send (msg, fpath=null) {
    this.data["content"] = msg;
    if (fpath !== null) {
      this.data["file"] = fs.createReadStream(fpath);
    }
    let r = this.session.post({formData: this.data}, function (error, response, body) {
      // コールバック
    });
  }

  mention (msg, fpath=null) {
    this.send("@everyone\n" + msg, fpath);
  }
}


使用例

Webhook URL、Webhook使用時に発言させるユーザー名をインスタンス生成時に指定。sendとmentionはお好みで使い分け。

const DISCORD_URL = "YourDiscordWebhookURL";
const DISCORD_USER = "YourDiscordUserName";

discord = new Discord(DISCORD_URL, DISCORD_USER);
discord.send("hoge");
discord.send("fuga", "test.png");
discord.mention("hoge");
discord.mention("fuga", "test.png");


注意事項

sleep噛ませる時は、↓のツイートを参考にしてください


参考サイト


おわりに

有料(¥100)にしてるけど、これで内容は全部です。募金してくれる人がいれば、ジュース代としていただけると嬉しい。コードは、インデントくずれが起きたりするようなので、コピペ時には注意してください。


マガジン


コメント用


干し芋


ここから先は

0字

¥ 100

サポート頂けると励みになります BTC,BCH: 39kcicufyycWVf8gcGxgsFn2B8Nd7reNUA LTC: LUFGHgdx1qqashDw4WxDcSYQPzd9w9f3iL MONA: MJXExiB7T7FFXKYf9SLqykrtGYDFn3gnaM