不条理スラッシュコマンドボットを作成する


あなたはランダムなdiscordサーバー上のスラッシュコマンドボットを見ている可能性があります.これらのコマンドはスラッシュで始まる/ を実行し、あるアクションを実行する.
この記事は、これらのボットの1つを作成します/randomice ランダムマウスをコマンドで返します.何をしたのか😂).
一旦我々が終えるならば、ロボットはこのように見えます.


乱闘ボットを登録する
我々がする必要がある最初のものは、新しいdiscord botを登録することです.
このためには、我々はdiscord developer portal .
したら、右上隅にあるボタンをクリックして新しいアプリケーションを登録することができます.

この手順が完了すると、自動的に新しいアプリケーションを入力し、左側のボットセクションを参照してください.
これを押すと新しいボットを追加します.

次の画面で、このボットのトークンを保存場所にコピーします.我々は、1秒でこれを必要とします.

我々はまだ開発者ポータルにある間、我々はまた、これを使用する必要があるように、アプリケーションのIDをメモしましょう.


サーバーへのボットの追加
今私たちのボットが設定され、我々はサーバーにこのボットを追加することができます.
これを行うには、次のURL形式に従うことができます.
https://discord.com/oauth2/authorize?client_id={APPLICATION_ID}&scope=applications.commands
確認してくださいAPPLICATION_ID を返します.
このリンクを開き、目的のサーバーに追加する手順に従ってください.

それです.このボットは現在、サーバーにアクセスすることができますし、スラッシュコマンドで動作します.

スラッシュコマンドを登録する
このステップは、最初に私に明確ではなかったが、スラッシュのコマンドは、特定のアプリケーションに登録する必要があります!

Discords preferred way is to use guild commands, but we'll use a global one. (Downside: It can take an hour to refresh if you change commands)


curlリクエストを実行したり、コマンドを登録するスクリプトを作成したりできます.
私たちはdiscord.js パッケージなので、そこから登録パーツを活用できます.
すぐに新しいプロジェクトをセットアップしましょう.
# Create folder
mkdir discord-slash-bot && cd discord-slash-bot

# Initialise node
npm init

# Add packages
npm i discord.js @discordjs/rest discord-api-types dotenv
さあ、Aを作ろう.env 保存する場所に私たちの2つの秘密の要素を維持するファイル.
APP_ID={APPLICATION_ID}
TOKEN={YOUR_BOT_TOKEN}
そして新しいファイルを作りましょうregister.js . このファイルは不一致でコマンド登録を扱います.
const {REST} = require('@discordjs/rest');
const {Routes} = require('discord-api-types/v9');
const commands = [
  {
    name: 'randomice',
    description: 'Return a random mouse',
  },
];

const rest = new REST({version: '9'}).setToken(process.env.TOKEN);

(async () => {
  try {
    console.log('Started refreshing application (/) commands.');

    await rest.put(Routes.applicationCommands(process.env.APP_ID), {
      body: commands,
    });

    console.log('Successfully reloaded application (/) commands.');
  } catch (error) {
    console.error(error);
  }
})();
ご覧のように、名前と説明でコマンドを定義します.
それから、我々はPUT リクエストRoutes.applicationCommands そしてパスAPP_ID .
これは、このアプリの定義コマンドを登録します.
環境変数でこのコマンドをすばやく実行するための新しいスクリプトを追加しましょう.
以下を加えるpackage.json ファイル.
"scripts": {
    "register": "node -r dotenv/config register.js",
},
その後、実行することができますnpm run register , そして、このような出力が表示されるはずです.

Note: You can verify the registered commands by performing a GET request to this endpoint.


私はすぐに不眠症でこれをテストした.このようにURLを使用できます.
https://discord.com/api/v9/applications/{APP_ID}/commands
あなたはAuthorization ヘッダ
Authorization: Bot {TOKEN}


実際のスラッシュコマンドハンドラ
大丈夫、これまで、我々は我々のロボットのセットアップをして、我々の不和のサーバーに加えられて、我々は不協和で我々の命令を登録しました.
しかし、コマンドはまだ存在しません.
このために、私たちはindex.js ファイル.
のは、クライアントをロードして起動しましょう.
const {Client, Intents} = require('discord.js');
const client = new Client({intents: [Intents.FLAGS.GUILDS]});

Note: The intents flag is needed here to register a client.


それから、我々は聞くことができて、我々が接続されるとき、見ることができます.
client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
});
それから、私は進んで、ランダムなマウスものの配列をつくりました.
const options = [
  '🐭',
  'https://media.giphy.com/media/wJZTbXayokOgbCfyQe/giphy.gif',
  'https://media.giphy.com/media/QXh9XnIJetPi0/giphy.gif',
  '🐁',
];
次のステップは、すべての相互作用を聞いて、我々の行動が満たされるとき、イベントを発射することです.
client.on('interactionCreate', async (interaction) => {
  if (!interaction.isCommand()) return;

  if (interaction.commandName === 'randomice') {
    await interaction.reply(options[Math.floor(Math.random() * options.length)]);
  }
});
我々が打つならばrandomice コマンドは、ランダムな順序で我々のオプションのいずれかで返信することがわかります.
最後のステップは、ログインコマンドをBOTSトークンで呼び出すことです.
client.login(process.env.TOKEN);
それから、スクリプトを加えましょうpackage.json このファイルに対して.
"scripts": {
    "register": "node -r dotenv/config register.js",
    "start": "node -r dotenv/config index.js"
},
我々は今npm run start と私たちのボットをスプール.
そして、準備ができたら、我々は我々のコマンドを入力し始めることができます、そして、それは行動として現れなければなりません.

そして、それ!
我々は非常に独自のスラッシュコマンドの乱交ボットを作成しました.
あなたはcompleted project on GitHub .

読んでいただきありがとうございます、接続しましょう!
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or