[英]Don't delete message if user has admin?
基本上我有一个自定义机器人,当用户在聊天中发送邀请链接时,它会删除邀请链接。 但是,如果具有管理员权限的用户发送邀请链接,我希望机器人忽略它而不是删除消息。
这是我所拥有的:
client.on("message", async message => {
if (message.content.includes('discord.gg/' || 'discordapp.com/invite/')) {
message.delete()
});
尝试这个
client.on("message", async message => {
if (message.content.includes('discord.gg') || message.content.includes('discordapp.com/invite/')) {
if(!message.member.hasPermission("ADMINISTRATOR")){
message.delete();
}
});
注意:在未来Discord.js 更新member.hasPermission()
可能会替换为member.permissions.has()
但到目前为止, permissions.has()
对我来说是一个错误。 所以我建议使用hasPermissions()
在 if 语句中,包含一行以检查用户是否具有管理员权限。 例如: if(message.member.permissions.has('ADMINISTRATOR')) return;
将检查用户是否具有管理员权限,如果有,将返回/不删除该消息。 或者你可以反过来做,如果用户没有权限就删除消息。
例如:
if(!message.member.permissions.has('ADMINISTRATOR')){
message.delete();
}
注意:这些语句必须在检查消息是否有邀请链接的 if 语句中。
if (message.content.includes('discord.gg/' || 'discordapp.com/invite/')) {
message.delete()
到目前为止,这只是删除了进来的每条消息。
因此,您要做的是检查消息的作者是否具有权限。
你可以这样做: message.member.hasPermission(//permissions here)
因此,要将其添加到您的代码中,您可以执行以下操作:
if (message.content.includes('discord.gg/' || 'discordapp.com/invite/')) {
if(!message.member.hasPermission("ADMINISTRATOR")){
)message.delete()
}
如果他们没有管理员,则会自动删除。
您可以在此处阅读更多信息: https://discordjs.guide/popular-topics/permissions.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.