我试图编写一个脚本来检测用户是否以及何时将不和谐的名称更改为" .bob"来自" bob",它将禁止此更改,并将其保留为" bob"。
if (user.nickname.startsWith(".")) {
user.nickname = "bob";
}
答案 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);
}
});
另外,请注意,只有当成员highestRole
的position
小于机器人的最高角位置时才会有效,因此您可能需要检查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
权限。
希望这有用。