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

时间:2018-02-18 07:11:37

标签: javascript discord discord.js

我试图编写一个脚本来检测用户是否以及何时将不和谐的名称更改为" .bob"来自" bob",它将禁止此更改,并将其保留为" bob"。

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

3 个答案:

答案 0 :(得分:3)

您可以使用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);
    }
});

另外,请注意,只有当成员highestRoleposition小于机器人的最高角位置时才会有效,因此您可能需要检查https://hellowebbooks.com/news/tutorial-setting-up-a-contact-form-with-django/中的第一个句柄。 {1}}

答案 1 :(得分:0)

请尝试以下操作来替换所有“。”在凝视中

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

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

答案 2 :(得分:0)

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

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

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