繁体   English   中英

如果用户有管理员,不要删除消息?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM