【Discord.js v12】repl.itとuptimerobotで24時間起動Discord Botの作り方!

こんにちは!今回はrepl.itとuptimerobotを使って24時間稼働するDiscord.jsでのDiscord Botの作り方、解説をしていこうと思います。

Contents

repl.itとは

repl.itは50種類以上の言語に対応したブラウザだけで完結するクラウドIDEです、複数人で共同開発もできGithubの連携にも対応しています。

チーム内チャットも備わっており便利です。

アカウント登録

アカウントを作成してない人は右上のSignupから作成します。

メールアドレス、Google アカウント、Github、Facebookに対応しています、皆さんのお好みでアカウントを作っちゃってください。

Botを作成する

プロジェクトのコピー

事前にテンプレートを作成しましたのでご自由にお使いください。

サイトを開いたらForkを押してプロジェクトをコピーします。

トークンを入れればすぐに起動するようになっています。コードの内容は後程解説します。

トークンを入れる

トークンとはBotを動かすための鍵のようなもので誰かに容易に教えてはいけないものです、Repl.itではプライベート設定をしない限りユーザー名が分かれば誰でもプロジェクトを覗くことができるため誰かに見られてはいけないものは全てenvファイルという環境変数に保存します。
プロジェクトを開いたら左の🔓マークを押します。
するとシステム環境変数の説明が出てきて「この機能を使用すると、パスワードなどの秘密情報を非表示にしながら、それらをreplで使用することができます。」とありますので折角なので活用しましょう。
青ボタンのGot itを押します。
key: TOKEN
value: Discord Token
を入力してAdd new secratを押すと追加されます。
envに書いた変数は process.env.{key名}で使うことができます。
例:
client.login(process.env.TOKEN);

起動する

トークンを入れたら中央上にあるRunを押して起動します。右下のコンソールにReadyと表示されたら無事起動できました!

もしトークンが入っていなかったり無効なトークンだった場合はコンソールに上のようなエラーがでます、TOKENのスペルミスなど注意深く確認してみてください。

テンプレートのコード内容

無事起動できたらコードの内容を上から解説していきます。

const http = require('http');
http.createServer(function (req, res) {
  res.write("online");
  res.end();
}).listen(8080);

これはBotを24時間起動するためにWebページを作成しているコードなので特に触れなくて大丈夫です。

client.on('ready', () => {
  console.log('ready');
})

Botが起動した時などに実行されるコードです、実行時にコンソールにreadyと表示されます。

client.on('message', message => {
  if(message.author.bot) return;
  if(message.content === '!ping'){
    message.channel.send('pong');
  }
  if(message.content === '!pong'){
    message.channel.send('ping');
  }
})

メッセージが送信された時に実行されるコードです、2行目はメッセージを送信したユーザーがbotだった場合、returnでイベントを終了するコードです。

メッセージが!pingだった場合Botがpongを返す。

メッセージが!pongだった場合pingを返すコードになっています。

コマンドを増やす際にメッセージイベントを複数用意する人がいますがあまりいい書き方ではありません、上のコードのようにif文の下にif文を書くように一つのイベントの中で済ますようにしましょう。switch文を使うのもありです。
client.login(process.env.TOKEN);

ログインするためのコードです、カッコ内にトークンを入れます。

トークンは絶対に漏れてはいけない為、他のユーザーには見えないenvで管理します。

process.env.名前 で名前のところのenvを取得することができます。

uptimerobotで24時間起動する

このままではタブを閉じると数分でBotはオフラインになってしまうためuptimerobotでpingを送ります。

アカウントを作成してない人はアカウントを作成しましょう、中央のStart monitoring in 30 secs又は右上のRegister for FREEを押してアカウントを作成します。

ダッシュボードに移動したら左上のAdd New Monitorを押して新規モニターを作成します。

Monitor Type *はHTTP(s)にします。

Friendly Name *は何でもいいのでわかりやすい名前にします。

URL (or IP) *はreplに戻りコンソール上にあるURLにします。

Monitoring Interval *は5分のままにします。

このような感じになりました、右下のCreate Monitorを押せば完了です

もし何かトラブルが起きBotが止まった場合は右側のメールアドレスのチェックを入れればメールで通知してくれるようになります。

最後に

Botは起動できましたか?

もしわからないことや質問したいことなどがありましたらサポートサーバーでいつでも聞いてください!

コメント一覧
  1. りむ より:

    URL (or IP) *はreplに戻りコンソール上にあるURLにします。
    ↑これ表示されないんですが・・・

    • fudzuki より:

      コメントありがとうございます!
      URLが表示されないとのことですが緑色のRunを押してBotを起動していただくと表示されるかと思います。
      また一部端末ではレイアウト崩れが起きる可能性があるので、もしRunを押しても表示されなかった場合Disbot公式サーバーまで来ていただけると幸いです。
      https://discord.gg/disbot

  2. Sea より:

    少し前にGlitchでUptimerobotが禁止された際に、Uptimerobotが使える同じようなWeb上のIDEがなかなか見つからなくて大変助かりました。
    役に立つ情報ありがとうございます!

  3. peru より:

    助かりましたありがとうございます
    間違えて送ったリクエストは無視して頂いて大丈夫です@ta***1001**ri@gmail

  4. Taku より:

    Repl.itアプデで.envファイルが作れなくなっています
    横に🔒マークのSecretsっていうところがあるのでそこで

    Key: TOKEN
    value: [ここにトーケンをコピペ]

    で"Add new secret"を押すと保存できます。

  5. 匿名 より:

    他のユーザーからのメンションの方法はありますか?

  6. white rose より:

    Error: ENOENT: no such file or directory, open '/home/runner/TerriblePrevailingSweepsoftware/index.js'

    ここから進めないんですが・・

コメントを残す

関連キーワード
Bot開発, Discord.jsの関連記事

Twitterでフォローしよう

おすすめの記事