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?

More than 1 year has passed since last update.

【Discord.js v14】DiscordのBotサンプル【TypeScript】

Posted at

イントロダクション

 本記事では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と同一階層、または親階層としてください。

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);
.env
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を製作していきましょう。

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?