はじめに
discordのチャンネルにメッセージを通知してくれるbotを作ってみたかったので、GASを利用し通知botを作成してみました。
本記事はGASを利用してdiscordのbotを作り方を紹介したものになります。
目次
前提
- Botを追加したいサーバーにテキストチャンネルを準備
- GASを使用するためのGoogleアカウントを準備
Discord側の準備
テキストチャンネルを右クリック > チャンネルの編集 > 連携サービス > ウェブフック から「新しいウェブフック」を選択。
その後「ウェブフックURLコピー」をクリックし、URLをコピーしておきます。
GAS側の準備
GASを使用するGoogleアカウントにログイン後、Googleドライブを開きます。
必要な場合は作業フォルダも合わせて作成しておいて下さい。
画面を右クリック > その他 > Google App Script を選択しApp Script側に移動します。
ソースの準備
ソースの詳細はコメントアウトの通りです。
function calculatePercentageOfYear() {
const today = new Date();
const year = today.getFullYear();
// 1月1日の日付を取得
const startDate = new Date(year, 0, 1);
// 今日までの経過日数を計算
const daysPassed = Math.floor((today - startDate) / (1000 * 60 * 60 * 24));
// 今年の総日数を計算
const endDate = new Date(year, 11, 31);
const totalDays = Math.floor((endDate - startDate) / (1000 * 60 * 60 * 24));
// 進捗率を計算
const percentageFinished = (daysPassed / totalDays) * 100;
// 通知メッセージを作成
let message = year + " 年は全体のうち " + percentageFinished.toFixed(2) + "% が終了しました。";
// 通知を送信
sendNotification(message);
}
// Discord側に通知
function sendNotification(message) {
const webhookUrl = "Discord側コピーしたwebHookのURL"
const payload = {
"content": message
};
const options = {
"method": "POST",
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
UrlFetchApp.fetch(webhookUrl, options);
Logger.log(message);
}
動かしてみる
ここまで出来たら実際に関数を動かしてみます。
画面上部のバーにおいて動かす対象の関数を選択し、「実行」ボタンをクリックします。
実行するとDiscord botがチャンネルにメッセージを投稿しているのが確認できます!
おまけ:定期実行に対応させる
GASではトリガーを使用し、プログラムを定期実行させることができます。
画面左の時計マーク(トリガー)をクリックします。
今回は試しに毎月15日のAM:10~11時に対象の関数を実行するようにトリガーを追加します。
・実行する関数を選択
:動かしたい関数を選択(今回はcalculatePercentageOfYear
で設定)
・実行するデプロイを選択
:Head
・イベントのソースを選択
:時間主導型
・時間ベースのトリガーのタイプを選択
:月ベースのタイマー
・日を選択
:15日
・時刻を選択
:午前10時~11時
以上の設定を保存すると毎月15日のAM10時~11時にプログラムが実行され、botがDiscordのチャンネルに自動でメッセージを投稿してくれます。
終わりに
めんどい作業もGASを使って自動化していきたいです。
- 今回のソース