GuildMember#hasPermission と Permissions#has の違い
v13対策記事
v13でGuildMember#hasPermissionを消すとのPRがありマージされている。
まとめ
GuildMember#hasPermissionをそのままGuildMember#permissions.hasに置き換えることができる。
ただし、checkOwnerをfalseとして呼び出している場合は除く。
それぞれについて
GuildMember#hasPermission
v13で削除
これのオプションにcheckOwnerというものがあり、ギルドのオーナーは全権限を持つのでtrueが返ってくるようになっている。
デフォルトでこの動作は有効。
あとはPermissions#hasと同じ。
Permissions#has
ギルドのオーナーであるかは確認しない。
checkAdminというオプションがあり管理者である場合、個々の権限の有無に関わりなくtrueが返ってくるようになっている。
デフォルトでこの動作は有効。
しかし、GuildMember#permissionsはGuildMemberがギルドのownerである場合Permissions.ALLとして作成される。
GuildMember#permissionsの実装
そのためcheckOwnerをfalseとして呼び出していない場合はGuildMember#hasPermissionをそのままGuildMember#permissions.hasに置き換えることができる。
参考文献
https://old.discordjs.dev/#/docs/main/v12/class/GuildMember?scrollTo=hasPermission
https://old.discordjs.dev/#/docs/main/stable/class/Permissions?scrollTo=has