繁体   English   中英

阻止用户在Discord上的昵称前面加点(discord.js / Discord Bot)

[英]Prevent users from putting dots in front of their nicknames on Discord (discord.js / Discord Bot)

我正在尝试编写一个脚本来检测用户是否以及何时将其不一致的名称从“bob”更改为“.bob”,它将禁止此更改并将其保留为“bob”。

if (user.nickname.startsWith(".")) {
    user.nickname = "bob";
}

您可以使用guildMemberUpdate事件来检查成员何时更改其昵称,然后您可以检查新昵称if'.' startsWith '.' ,这是一个如何看起来的例子:

我更喜欢使用displayName而不是nickname ,就好像该成员没有昵称,他们的nickname将返回null

client.on('guildMemberUpdate', (oldMember, newMember) => {  // this event triggers when a member changes their nickname.
    if (newMember.displayName.startsWith('.')) { // checks if the new nickname starts with a .
        newMember.setNickname(oldMember.displayName) //changes the member's nickname back to their old nickname
            .catch(console.error);
    }
});

另外,请记住,只有当成员的highestRole position小于机器人的最高角位置时才会有效,因此您可能需要检查.catch()中的第一个句柄.catch()

请尝试以下操作来替换所有“。” 在盯着看

user.nickname = user.nickname.replace(/\./g,'');

Codepen供参考: https ://codepen.io/YasirKamdar/pen/papGzK

Discord.js有一个名为guildMemberUpdate的事件监听器。 当用户更新其昵称时,将执行此事件侦听器,因此您可以使用此事件侦听器。 例如,

Client.on("guildMemberUpdate", (past, current) => {
    if (current.displayName.startsWith(".")) {
        current.setNickname(past.displayName);
    }
});

注意:为了使此代码有效,您的机器人必须具有MANAGE_NICKNAMES权限。 希望这有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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