0
0

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での権限設定、確認

Posted at

りょうです。
今回はdjs v14の権限の設定、確認とうについての記事です。
それではれっつごー👍

PermissionsBitField

discord.js v13で使われていたPermissionsがv14でPermissionsBitFieldに変更されました。

- const { Permissions } = require('discord.js');
+ const { PermissionsBitField } = require('discord.js');

内容的には特に変更はありません。

よく使われる奴ら置いときます。
この形で使うようにしてください。↓

Permissions.BitField.Flages.権限名
権限名 内容
Administrator 管理者
KickMembers メンバーのキック
BanMembers メンバーのBAN
ViewChannels チャンネルの閲覧
SendMessages メッセージの送信
ManageMessages メッセージ管理(削除等)
ManageChannels チャンネル管理(作成、削除)
ManageRoles ロールの管理(作成、削除)
ManageWebhooks ウェブフックの管理(作成、削除)
ReadMessageHistory メッセージ履歴の閲覧
Connect VCへの接続
Speak VCでの発言
MuteMembers VCでのメンバーのミュート

権限を持っているかの確認

権限の確認にはmember.permissions.hasを使用します。

メンバー(実行者)が権限を持っているか確認(今回は管理者権限)
テキストコマンドの場合↓

   	if (!message.member.permissions.has(PermissionsBitField.Flags.Administrator)) {
   	return 
   	}

スラッシュコマンドの場合↓

    if (!interaction.member.permissions.has(PermissionsBitField.Flags.Administrator)) {
    return 
    }

bot自身が権限を持っているか確認
テキストコマンドの場合↓

   	if (!message.guild.members.me.permissions.has(PermissionsBitField.Flags.Administrator)) {
   	return 
   	}

スラッシュコマンドの場合↓

    if (!interaction.guild.members.me.permissions.has(PermissionsBitField.Flags.Administrator)) {
    return 
    }

!pingなどのようなテキストコマンドであればmessage.member.permissions.hasです。
スラッシュコマンドの場合はmessageのかわりにinteractionsを使うので間違えないように注意。
これを使用することで特定の権限を持つユーザーのみが実行できるコマンドの実装が可能になります。

チャンネルの権限の変更

チャンネルの権限をいじるのはpermissionOverwriteを使用します。
ユーザーID、ロールIDなどで指定します。
allowで許可する権限、denyで禁止する権限を設定します。
また、everyoneロールに関してはguild.roles.everyoneで指定できます。

チャンネルの閲覧を許可し、メッセージの送信を禁止している例↓

 message.channel.permissionOverwrites.set([
   {
     id: 'ロールID または メンバーID', 
     allow: [PermissionsBitField.Flags.ViewChannel], 
     deny: [PermissionsBitField.Flags.SendMessages], 
     type: 'role または member' 
   }
 ], '理由');

typeの部分はロールIDを入力した場合はroleに、メンバーIDを入力した場合はmemberにしてください。

まとめ

権限の設定、確認方法を知っておくとbot開発に幅が出ます。
チケットの作成や特定権限持ちにだけ実行できるコマンドなどの実装もできるようになるのでさっさと覚えておきましょう。
こんなのがほしいとかあればコメントしてもらえれば書くかもです。

Discordに湧く荒らしの情報や対策方法の共有をしている界隈最大規模の自鯖↓
https://discord.gg/ESRGwGQhxc

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?