Discord.js とは
Discord.js (以下d.js) とは、discordのbotを開発するときに使用するパッケージの1つです。
同様に、Discord.pyというものがあります。これはpythonで開発する場合のパッケージになります。
詳しくはこちらをごらんください!
今回の目標
メッセージの仕組みと、複数の送信方法を理解する。
いろんな種類があるので、できるだけわかりやすく簡単に説明します!
メッセージについて
送信方法は大きく分けて3つあります。
- チャンネルを探して、送信する
- メッセージに対して、返信する
- ユーザーを探して、ダイレクトメッセージ (DM) を送信する
それぞれ方法を簡単に説明します!
チャンネルを探して、送信する
チャンネルを探す とは
まず探す
ってどういうことでしょうか?
Botは、複数のサーバーに導入されます。
また、チャンネルにはそれぞれ唯一無二のidが紐づけられています。
大量のサーバーの、大量のチャンネルの中から1つのチャンネルを探し出さなくては、どこに送信したらいいかわからないのです。
そのため、探してから送信しなければいけません。
idの取得方法
チャンネルid以外にも、discordのありとあらゆるものにidがあります。
- ユーザーid
- サーバーid
- チャンネルid (カテゴリーid)
- ロールid
- メッセージid
- スレッドid
この様々なidを取得する方法は、以下のとおりです。
手順 | 説明 | 備考 |
---|---|---|
1 | discordのユーザー設定に移動します。 | |
2 | 左のメニューの下の方にある、「詳細設定」に移動します。 | |
3 | 「開発者モード」をon にします。 |
|
4 | 右クリック (スマホの場合は長押し) でidをコピーすることができるようになります。 |
メソッド
const channel = client.channels.cache.get("チャンネルid"); //チャンネルidからチャンネルを探す
if (!channel) return; //チャンネルが見つからなかった場合、処理を中止
await channel.send("チャンネルが見つかったので、メッセージを送信しました!"); //チャンネルに送信する
このメソッドを使用すれば、チャンネルにメッセージを送信することができます。
メッセージに対して、返信する
メッセージに対して返信するには、メッセージイベントを受け取ったときに、返信する必要があります。
今回はイベントについての説明は省きますので、こちらをごらんください。
メソッド
const { Client, GatewayIntentBits } = require('discord.js');
const { token } = require('./config.json');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent
]
});
client.on('messageCreate', async (message) => { //メッセージが送信されたとき
if (message.author.bot) return;
await message.reply("これは返信メッセージです!"); //返信メッセージを送信する
});
少し複雑ですが、メッセージが送信されたときに、そのメッセージに対して返信するようになっています。
ユーザーを探して、ダイレクトメッセージを送信する
メソッド
const guild = client.guilds.cache.get("サーバーのid"); //ユーザーが居るサーバーの取得
if (!guild) return; //サーバーが見つからなかったら処理を中止
const member = await guild.members.fetch("ユーザーのid"); //サーバーからユーザーの取得
if (!member) return; //ユーザーが見つからなかったら処理を中止
await member.send("ダイレクトメッセージを送信しました。");
これで、特定のユーザーにダイレクトメッセージを送信することができます。
終わりに
今回は、メッセージの送信方法についての説明をしました!
メッセージには、添付ファイルを送ったり、埋めこみというものを送信することができます。
また長くなってしまうので、それは別の記事に記載します!