【发布时间】:2021-05-11 01:13:30
【问题描述】:
我有一个 discord.js 机器人,它已经有了一些功能。但我想添加一个命令来更改用户的昵称。
if (command === "changenick") {
}
这就是我添加新命令的方式。有人可以帮我设计这个功能吗? 另外,我是 discord.js 和 node.js 的新手,我需要一些关于做什么的解释。
【问题讨论】:
标签: javascript node.js discord.js
我有一个 discord.js 机器人,它已经有了一些功能。但我想添加一个命令来更改用户的昵称。
if (command === "changenick") {
}
这就是我添加新命令的方式。有人可以帮我设计这个功能吗? 另外,我是 discord.js 和 node.js 的新手,我需要一些关于做什么的解释。
【问题讨论】:
标签: javascript node.js discord.js
首先,您必须确定哪个成员的昵称将被更改。我将在这个例子中使用提及。
我们抓取提到的成员的集合并抓取第一个元素。
const memberToEdit = message.mentions.members.first();
接下来我们需要知道新昵称是什么。在本例中,我将使用String#replace() 删除[prefix]changenick,只留下将成为新昵称的文本。这是假设您使用设置[prefix][command name]
编辑:我忘了说明提及是消息内容的一部分,使用String#split() 和Array#join() 删除提及。 .pop() 将返回新昵称,.trim() 将删除不必要的空格。
const newNickname = message.content.replace(`${prefix}changenick`, '').split(' ').pop().trim();
接下来,我们在提到的成员对象上调用setNickname(),传入newNickname
memberToEdit.setNickname(newNickname);
您的最终代码将如下所示。
if (command === "changenick") {
const memberToEdit = message.mentions.members.first();
const newNickname = message.content.replace(`${prefix}changenick`, '').split(' ').pop().trim();
memberToEdit.setNickname(newNickname);
}
【讨论】:
如果你的机器人收到的消息叫rMessage,你可以通过rMessage.member获取作者的GuildMember。
GuildMember 有一个方法setNickname(nick)。所以你可以使用rMessage.member.setNickname(nick, [reason]),其中nick 是他们输入的文本,reason 是可选的(用于将其放入服务器的审核日志中)。
【讨论】:
setNickname,不是SetNickname
setNickname。
nick 是一个变量。如果您没有定义nick,它将是undefined,因此无法更改昵称。您可以通过在行前声明nick 来解决此问题,例如let nick = "newNameGoesHere";。
已经有一个命令可以在服务器上更改您的昵称;只需使用 /nick the name you want
【讨论】: