独自のDiscordボットを作成する方法
Discordには、カスタムボットを作成するための優れたAPIと、非常に活発なボットコミュニティがあります。今日は、自分で作り始める方法を見ていきます。
ボットをコーディングするにはプログラミングの知識が少し必要になるため、すべての人に適しているわけではありませんが、幸いなことに、非常に簡単に実行できる人気のある言語用のモジュールがいくつかあります。最も人気のあるdiscord.jsを使用します。
関連:Discordサーバーを作成、設定、管理する方法
入門
Discordのボットポータルにアクセスして、新しいアプリケーションを作成します。
クライアントIDとシークレットをメモしておく必要があります(もちろん、シークレットを保持する必要があります)。ただし、これはボットではなく、単なる「アプリケーション」です。「ボット」タブの下にボットを追加する必要があります。
このトークンもメモし、秘密にしてください。いかなる状況でも、このキーをGithubにコミットしないでください。ボットはほぼ即座にハッキングされます。
Node.jsをインストールしてコーディングを取得する
Webページの外部でJavascriptコードを実行するには、Nodeが必要です。ダウンロードしてインストールし、ターミナル(またはコマンドプロンプト)で機能することを確認します。これらはすべてWindowsシステムで機能するはずです。デフォルトのコマンドは「ノード」です。
nodemonツールをインストールすることもお勧めします。これは、ボットのコードを監視し、変更があれば自動的に再起動するコマンドラインアプリです。次のコマンドを実行してインストールできます。
npm i -g nodemon
テキストエディタが必要です。メモ帳を使用することもできますが、AtomまたはVSCのいずれかをお勧めします。
これが私たちの「HelloWorld」です。
const Discord = require( 'discord.js'); const client = new Discord.Client(); client.on( 'ready'、()=> {console.log( `Logged in as $ {client.user.tag}!`);}); client.on( 'message'、msg => {if(msg.content === 'ping'){msg.reply( 'pong');}}); client.login( 'token');
このコードはdiscord.jsの例から取られています。分解してみましょう。
- 最初の2行は、クライアントを構成するためのものです。1行目はモジュールを「Discord」というオブジェクトにインポートし、2行目はクライアントオブジェクトを初期化します。
client.on('ready')
ボットは、起動時にブロックが発生します。ここでは、その名前を端末に記録するように構成されています。- この
client.on('message')
ブロックは、新しいメッセージがいずれかのチャネルに投稿されるたびに発生します。もちろん、メッセージの内容を確認する必要があり、それがif
ブロックの機能です。メッセージに「ping」とだけ表示されている場合は、「Pong!」と返信されます。 - 最後の行は、ボットポータルからのトークンを使用してログインします。明らかに、ここのスクリーンショットのトークンは偽物です。トークンをインターネットに投稿しないでください。
このコードをコピーし、下部にトークンを貼り付け index.js
て、専用フォルダーに保存します。
ボットを実行する方法
ターミナルに移動し、次のコマンドを実行します。
nodemon --inspect index.js
これにより、スクリプトが起動し、Chromeデバッガーも起動します。このデバッガーには、chrome://inspect/
ChromeのOmnibarと入力し、「Node専用のdevtools」を開くことでアクセスできます。
これで、「Logged in as」と表示されるはずですが、ここに、コンソールに受信したすべてのメッセージオブジェクトをログに記録する行を追加しました。
では、このメッセージオブジェクトは何で構成されているのでしょうか。実際にはたくさんのものがあります:
最も注目すべきは、作成者情報とチャネル情報があり、これらはmsg.authorとmsg.channelでアクセスできます。オブジェクトをChromeノードのdevtoolsに記録し、それが機能する理由を確認するために、この方法をお勧めします。あなたは何か面白いものを見つけるかもしれません。ここでは、たとえば、ボットはその応答をコンソールに記録するため、ボットの応答がトリガーされclient.on('message')
ます。だから、私はスパムボットを作りました:
注:再帰を実際に処理したくないので、これには注意してください。
ボットをサーバーに追加する方法
この部分は本来よりも難しいです。このURLを取得する必要があります:
//discordapp.com/oauth2/authorize?client_id=CLIENTID&scope=bot
And replace CLIENTID with your bot’s client ID, found on the general information tab of the application page. Once this is done though, you can give the link to your friends to have them add the bot to their servers as well.
Alright, So What Else Can I Do?
Beyond basic setup, anything else is entirely up to you. But, this wouldn’t be much of a tutorial if we stopped at hello world, so let’s go over some of the documentation, so you have a better idea of what’s possible. I suggest you read through as much as you can, as it’s very well documented.
I would recommend adding console.log(client)
to the start of your code, and taking a look at the client object in the console:
From here, you can learn a lot. Since you can add a bot to multiple servers at once, servers are part of the Guilds
map object. In that object are the individual Guilds (which is the API’s name for “server”) and those guild objects have channel lists that contain all the info and lists of messages. The API is very deep, and may take a while to learn, but at least it’s easy to set up and get started learning.