【プログラミング解説】あなたもbotマニアさんになろう①

技術系

こんにちは、kajiです。

今回はディスコードで自作botを作る方法について解説します。

少し前に2 1さんがROM専について触れていたのでその二番煎じみたいな感じです(笑)。

直弼みたいな高性能botは無理かもしれませんが、簡易的なbotならわりとたやすい知識、そして低スペックパソコンでもほぼなんとかなりますよ!

botを使うために必要なもの

VScode
→コード自体はメモ帳に書いても問題ありませんが、簡単なbotでもコードが煩雑になって、黒一色ではわかりにくいケースがあるためほぼ必須です。

Node.js
→VScodeはコードを書く作業台みたいなものですが、そのコードを実行するためにこのソフトがあるという認識でだいたいOKです(詳しく言うと常駐プロセスなりなんなり…いろいろ理由はあるが)。

この二つはインストールする必要があります。

【Node.js入門】Node.jsのインストール方法をOS別に解説(Win/Mac/Linux)
JavaScriptでWebサイトの開発を行なったことがある方は、「Node.js」 という名前を一度は目にしたことがあるかもしれません。 その手軽さと柔軟性の高さから、便利で幅広く活用されている Node.jsですが、中には Node.j

また、これらのほかに、botを入れる鯖を選択し、作成しましょう。

ここでは話が長くなるため割愛しますが、BOTのトークンがゲットできて、BOTに返信権限を持たせていればOKです。

あいさつbotを導入してみよう

誰かが「こんにちは」というと「こんにちは!今日もいい日になぁれ」と返信してくれるbotをまずは作ってみましょう。


const { Client, GatewayIntentBits } = require("discord.js");

const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent
  ]
});

client.on("ready", () => {
  console.log("Bot起動完了");
});

client.on("messageCreate", (message) => {
  if (message.author.bot) return;

  if (message.content === "こんにちは") {
    message.channel.send("こんにちは!今日もいい日になぁれ");
  }
});

client.login("ここにBotトークン");

????…となるでしょう、というか私も4割ぐらいしかわかりませんし、重要でない知識の部分はAIに説明してもらっています。

ただし、残念ながらプログラミングというのは指示が一つ残らず正しくないと起動しないものです。

まぁどんどん新たな機能を発案してAIにお願いし、そのコードを模写していったらなんとか身についていけるものです。

VScodeがあれば、どこがエラーかを発見するものやコード補完などのシステムがありますから大丈夫です。なんとかなります。

自分の鯖に導入し、作動するかチェックしながらテストをしていき、完成したときは楽しいですよ。

長~い前置きはこの辺にしておいて、コードの解説ですね。

前半の解説

ここらへんは、ほぼ固定の呪文みたいなものなので飛ばしてもらってもかまいません。
なんなら僕でもほぼわかっていない

require(“discord.js”)は
ディスコードのいろんな情報のおおまかな全体を指します。

constは、自分の文字の定義を決めるという感じです。

const A = "こんにちは"
console.log(A)

と打つと、コンソールという場所で、「こんにちは」という表示がされます。

プログラミングにおいては頻繁に言葉を用いる場面が多いため、(省略)キンのように名前をつけましょうねってことです。

const { Client, GatewayIntentBits } = require("discord.js");

この正体は、「ディスコードのすべての情報からClientとGatewayIntenBitsの情報を引っ張り出す」ことを意味しています。
(詳しく言うと分割代入とかいう専門用語あるらしいけど気にしない気にしない)

ほんとたった20行程度のコードにも隠された情報がいっぱいいっぱいです。

とりあえずconstは自分で省略名をつけちゃうぜってことだけ覚えといてください。

後半の解説

client.on("ready", () => {
  console.log("Bot起動完了");
});

まずclient.onは、イメージでいうとインターホンだと思っていてください。

問題はその次。

“ready”はディスコードのbotが使えるようになった瞬間を表しています。

また、() => {…}は、今後も多用されるであろうアロー関数です。

()がさっきみたいな省略名づけマシーンで、{…}が今後行う処理の内容って感じです。

つまり、botが使えるようになったらコンソール上にbot起動完了というメッセージを送ってね、ということです。

client.on("messageCreate", (msg) => {
  if (msg.author.bot) return;

  if (msg.content === "こんにちは") {
    msg.channel.send("こんにちは!今日もいい日になぁれ");
  }
});

“messageCreate”はその名の通りメッセージが作られたというイベント。

コード全体は、誰かがメッセージを発信したら以下の処理が実行されます…ということ。

まずはbotに影響されないようにしましょう
(botが延々と挨拶を繰り返す永久機関となりますのでこれ必須です。)

if (msg.author.bot) return;

これでメッセージを送った人がbotなら何もしないようにします(returnのあとにすぐ;をうつことで何もしないことになる)。

  if (msg.content === "こんにちは") {
    msg.channel.send("こんにちは!今日もいい日になぁれ");
  }

“===”は、文字通りイコールの意味ですがJavaScriptでは3つ使う必要があります。

送られたメッセージが”こんにちは”と一致するなら、返信しましょうってことです。

起動方法

まずプロジェクトのフォルダをデスクトップから新規作成します。

そしてその場所のアドレスをコピーします。

次にNode.jsを開き

cd "アドレスのコピー"

を打つことでそのフォルダの場所まで行けます。

そして

npm init -y

と打ち込んでください(一番最初の初期化設定みたいなものです)。

また、ディスコードのライブラリを読み込むために

npm install discord.js

を打ち込みます。

ここまでは最初だけで構いません。

先ほどのフォルダに書いたコードを入れて

node index.js

と打ち込めばbotは動きます。

終わりに

最後まで読んでくれた人どこまでいるのかな…かなり不安ですが少しでもプログラミングに興味を持ってくれればうれしい限りです。

ところどころ端折ってるのもありますので、詳しく知りたい方はググるかAIに聞くなり頑張ってください(責任放棄)。

また今回紹介したものはNode.jsを閉じてしまうと再度node index.jsと打ち込まないとダメなのでそこは注意してください。

コメント

タイトルとURLをコピーしました