イントロダクション
本記事ではDiscord.jsとTypescriptを利用したBotを作成していきます。とにかく動くものを作りたいという方はぜひご覧ください。Discord.jsには様々なバージョンがありますが、本記事で利用するものはv14(v14.7.1)とします。なお筆者はQiita初投稿につき拙い文章となりますが、参考となれば幸いです。
前提事項
- Discord.js,TypeScriptを導入している
- Botに必要な”トークン”を持っている
- DiscordのサーバーにBotを参加させている
※本記事では解説よりも動作するコードを提示することを目的としているため、詳細な解説は省きます。その他情報については他記事に頼ることとしますので検索ください。
筆者環境
環境 | Version |
---|---|
Node.js | v16.18.0 |
TypeScript | v4.9.4 |
discord.js | v14.7.1 |
dotenv | v16.0.3 |
Visual Studio Code | v1.75.1 |
dotenvパッケージを導入してください。Botのトークンを保存する目的で利用します。なお本記事ではnpmを利用してパッケージの導入を行います。discord.jsとdotenvは以下のコマンドで導入してください。
npm install discord.js dotenv
フォルダ構造
本記事では以下のようにファイルが存在するとしています。コンパイル時のコマンドに入力するパスは適宜読み替えてください。なお筆者の環境ではtsconfig.jsonの"outDir"は"./build"としています。
コンパイル前にbuild/index.jsは存在しません。フォルダだけ用意してください。
.
├─ build
| └─index.js
├─ node_modules
├─ src
| └─index.ts
├─ .env
└─ etc...
サンプルコードの説明
Botが参加しているDiscordサーバー内のテキストチャンネルで
!ping
で始まる文字列を送信すると
Pong!
と返信するプログラムです。
サンプルコード本体
.envファイルを必ず追加し、Botのトークンを入力してください。
.envファイルの位置はindex.tsと同一階層、または親階層としてください。
import { Message, Client, Events, GatewayIntentBits } from 'discord.js'
import dotenv from 'dotenv'
dotenv.config();
const client: Client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMembers,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent
],
});
client.once(Events.ClientReady, (c: Client) => {
console.log(`Ready! Logged in as ${c.user?.tag}`);
});
client.on(Events.MessageCreate, async (message: Message) => {
if (message.author.bot) {
return;
}
if (message.content.startsWith('!ping')) {
message.reply('Pong!');
}
});
client.login(process.env.TOKEN);
TOKEN='YOUR_BOT_TOKEN'
Botの実行
まずはindex.tsをコンパイルします。
tsc -p .
コンパイルに成功するとindex.jsが生成されます。筆者環境ではbuildフォルダに出力するよう設定しました。
以下のコマンドでBotを実行します。
node build/index.js
ターミナルに次のメッセージが表示されれば、Botが正常に起動した証拠です。
Ready! Logged in as YourBotName#1234
YourBotName#1234は例です。
実際にはあなたのBotの名前とディスクリミネータ(#以降の番号のこと)が表示されます。
それではDiscordのサーバーで!ping
と入力して送信してみてください。
そうするとBotからPong!
と返信が来るはずです。
まとめ
本記事では簡単なDiscordのBotを作成しました。一部を端折っていますが必須の部分は記載できていると思います。これをスタートに自分のBotを製作していきましょう。