V13対応版を書きました。
こちらからどうぞ。
こんちゃ、ryoです!
結構前ですが、Glitchがプロジェクトの稼働時間を制限しましたよね。
そのせいで、Botを常時稼働出来なくなってしまいました。ふざけんな
その事についてツイートしてたら、とあるサービスの公式アカウントさんからリプが来ました。
そのサービスの名前が “Repl.it” です!
正直、公式さんからリプもらうまでこのサービス知りませんでした()
という事で、Repl.itを使ってDiscordのBotを作ってみましょう!
アカウントを作成
Repl.itのトップページの「Sign up」からアカウントを登録しましょう。
Googleアカウント・GitHubアカウント・Facebookアカウントを使って登録もできます。
後は対話形式でいろいろ聞かれるので適当に答えていきましょう。
Replを作成
ログインした後のホーム画面の左側、「New repl」をクリックして新しいReplを作成しましょう。
言語と名前を設定します。今回はdiscord.jsを使うので「Node.js」にします。名前は適当。
あとは「Create repl」を押せば作成できます。
パッケージのインストール
Repl.itではクリック操作のみで簡単にパッケージをインストールすることができます。
エディター画面のサイドバーの箱アイコンをクリックし、検索窓に「discord.js」と入力。
一番上に出てくるはずなので、それをクリックし、+ボタンを押します。
コンソールに「+ discord.js@(バージョン)」が表示されれば成功です。
コードを書いていく
index.js
index.jsというファイルが既に作成されているので、そこにコードを書いていきましょう。
サンプルコードを用意しました。
// Response for Uptime Robot
/* https://glitch.com/~pumped-chopper からお借りしました */
const http = require('http');
http.createServer(function(request, response)
{
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Bot is online!');
}).listen(3000);
//色々読み込み
const Discord = require("discord.js");
const client = new Discord.Client();
//token設定(詳しくは後述します)
const token = process.env.DISCORD_BOT_SECRET;
client.on("ready", () => {
console.log(`Logged in as ${client.user.tag}!`);
client.user.setActivity("はろー!")
});
client.on("message", message => {
if (message.author.bot) return;
if (message.content === "!ping") {
message.channel.send("Pong!");
}
});
//Discordにログイン
client.login(token);
Discordのログイントークンをこのファイルに書いてはいけません。
Repl.itの仕様上、誰でも見れてしまうのでセキュリティなんて概念がないからです。
APIキーなども同様です。
なので、Tokenなどの大切な情報は .env ファイルに書いていきます。
.env
ファイル一覧から「Add file」をクリックし、.env と記入。
作成出来たら下の例のように記入してください。
トークンを””などで囲う必要はありません。
DISCORD_BOT_SECRET=NzQzMDkzMT......
アクセストークンは、Discord Developer Portalから取得できます。
やり方はググれば腐るほど出てきます(気が向いたらやり方書くかも)
.replit
先ほどのように「Add file」から、.replit というファイルを作成します。
そして中にこれを書いてください。
run = "node index.js"
これを書くことで、エディター上部のRunボタンが正常に動くようになります。
UptimeRobotの設定
このままでも動きますが、Repl.itでは何もしないと30分でプロセスが終了してしまいます。
Glitchの時にも使っていた、UptimeRobotを使いましょう。
アカウント作成をしてない方はサクッと済ませておいてください。
ログインしたら、「Add New Monitor」をクリックします。
それぞれ、次のように設定します。
- Monitor Type: HTTP(s)
- Friendly Name: (適当に名前を付けてください)
- URL: https://[Replの名前].[Repl.itのユーザー名].repl.co
- Monitoring Interval 5~30の間(20くらいがおすすめ)
URLに関しては、今回は「ryosan1210」というユーザーネームのアカウントが「djs-tsts-bot」という名前のReplを作ったので、「https://djs-tsts-bot.ryosan1210.repl.co」というURLになります。
アラート通知先は適当にチェックを入れておきましょう。
ここで設定した場所にダウンアラートが届きます。
Botを起動
Repl.itに戻ります。
エディター上部の「Run」を押しましょう。
このように表示されていれば成功です。
ちゃんとDiscordでも反応してますね!
まとめ
- Repl.itを使うこと絵GlitchのようにBotを作成できる
- 基本的にソースコードを公開することになるので、トークン等は.envファイルに入れる
- UptimeRobotを使うことで常時起動できる
今回のReplはこのページで公開しているので、良ければ参考にしてみてくださいね。
それでは。
.envが作成できないですどうすればよいですか?
.replitもできません
こんにちは!コメントありがとうございます。
.envは、Replitでは非推奨となっておりますので、
https://ayutsuki.net/introduction/discord-js-v13-replit/
を参考に、環境変数の設定をしてください。
.replitが作成できないのは…申し訳ありませんが分からないので、公式のフォーラム等を用いていただければと思います。
考えられる要因としては、スペルミスがあります。
(現時点では正常に作成されました。)
.replitは隠しファイルになっていますので、表示させる必要があると思います、
Files欄の、フォルダを追加するボタンの右側の点々を押すと「Show hidden files」と出てくるのでそれを押すと表示されるかと、、
既にやっておられたらすみません、、
左のロックのアイコン(Secrets)から似たようなことができます。