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?

Discord.js v14 botの作り方【基礎・メッセージ編】 (2024/5/22現在)

Last updated at Posted at 2024-05-22

Discord.js とは

Discord.js (以下d.js) とは、discordのbotを開発するときに使用するパッケージの1つです。
同様に、Discord.pyというものがあります。これはpythonで開発する場合のパッケージになります。
詳しくはこちらをごらんください!

今回の目標

メッセージの仕組みと、複数の送信方法を理解する。
いろんな種類があるので、できるだけわかりやすく簡単に説明します!

メッセージについて

送信方法は大きく分けて3つあります。

  1. チャンネルを探して、送信する
  2. メッセージに対して、返信する
  3. ユーザーを探して、ダイレクトメッセージ (DM) を送信する

それぞれ方法を簡単に説明します!

チャンネルを探して、送信する

チャンネルを探す とは

まず探すってどういうことでしょうか?
Botは、複数のサーバーに導入されます。
また、チャンネルにはそれぞれ唯一無二のidが紐づけられています。

大量のサーバーの、大量のチャンネルの中から1つのチャンネルを探し出さなくては、どこに送信したらいいかわからないのです。
そのため、探してから送信しなければいけません。

idの取得方法

チャンネルid以外にも、discordのありとあらゆるものにidがあります。

  • ユーザーid
  • サーバーid
  • チャンネルid (カテゴリーid)
  • ロールid
  • メッセージid
  • スレッドid
    この様々なidを取得する方法は、以下のとおりです。
手順 説明 備考
1 discordのユーザー設定に移動します。 image.png
2 左のメニューの下の方にある、「詳細設定」に移動します。 image.png
3 開発者モード」をonにします。 image.png
4 右クリック (スマホの場合は長押し) でidをコピーすることができるようになります。 image.png

メソッド

index.js
const channel = client.channels.cache.get("チャンネルid"); //チャンネルidからチャンネルを探す
if (!channel) return; //チャンネルが見つからなかった場合、処理を中止

await channel.send("チャンネルが見つかったので、メッセージを送信しました!"); //チャンネルに送信する

このメソッドを使用すれば、チャンネルにメッセージを送信することができます。

メッセージに対して、返信する

メッセージに対して返信するには、メッセージイベントを受け取ったときに、返信する必要があります。
今回はイベントについての説明は省きますので、こちらをごらんください。

メソッド

index.js
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("これは返信メッセージです!"); //返信メッセージを送信する
});

少し複雑ですが、メッセージが送信されたときに、そのメッセージに対して返信するようになっています。

ユーザーを探して、ダイレクトメッセージを送信する

メソッド

index.js
    const guild = client.guilds.cache.get("サーバーのid"); //ユーザーが居るサーバーの取得
    if (!guild) return; //サーバーが見つからなかったら処理を中止

    const member = await guild.members.fetch("ユーザーのid"); //サーバーからユーザーの取得
    if (!member) return; //ユーザーが見つからなかったら処理を中止

    await member.send("ダイレクトメッセージを送信しました。");

これで、特定のユーザーにダイレクトメッセージを送信することができます。

終わりに

今回は、メッセージの送信方法についての説明をしました!
メッセージには、添付ファイルを送ったり、埋めこみというものを送信することができます。
また長くなってしまうので、それは別の記事に記載します!

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?