1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GASを使ってDiscord Botを手軽に作成する(おまけ:定期投稿まで)

Last updated at Posted at 2024-05-12

はじめに

discordのチャンネルにメッセージを通知してくれるbotを作ってみたかったので、GASを利用し通知botを作成してみました。
本記事はGASを利用してdiscordのbotを作り方を紹介したものになります。

目次

前提

  • Botを追加したいサーバーにテキストチャンネルを準備
  • GASを使用するためのGoogleアカウントを準備

Discord側の準備

テキストチャンネルを右クリック > チャンネルの編集 > 連携サービス > ウェブフック から「新しいウェブフック」を選択。

image.png

その後「ウェブフックURLコピー」をクリックし、URLをコピーしておきます。

image.png

GAS側の準備

GASを使用するGoogleアカウントにログイン後、Googleドライブを開きます。
必要な場合は作業フォルダも合わせて作成しておいて下さい。
画面を右クリック > その他 > Google App Script を選択しApp Script側に移動します。

image.png

ソースの準備

ソースの詳細はコメントアウトの通りです。

main.gs
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);
}

動かしてみる

ここまで出来たら実際に関数を動かしてみます。
画面上部のバーにおいて動かす対象の関数を選択し、「実行」ボタンをクリックします。

image.png

実行するとDiscord botがチャンネルにメッセージを投稿しているのが確認できます!

image.png

おまけ:定期実行に対応させる

GASではトリガーを使用し、プログラムを定期実行させることができます。
画面左の時計マーク(トリガー)をクリックします。

image.png

今回は試しに毎月15日のAM:10~11時に対象の関数を実行するようにトリガーを追加します。

image.png

実行する関数を選択:動かしたい関数を選択(今回はcalculatePercentageOfYearで設定)
実行するデプロイを選択:Head
イベントのソースを選択:時間主導型
時間ベースのトリガーのタイプを選択:月ベースのタイマー
日を選択:15日
時刻を選択:午前10時~11時

以上の設定を保存すると毎月15日のAM10時~11時にプログラムが実行され、botがDiscordのチャンネルに自動でメッセージを投稿してくれます。

終わりに

めんどい作業もGASを使って自動化していきたいです。

  • 今回のソース

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?