【问题标题】:Set a user's nickname in discord.js在 discord.js 中设置用户的昵称
【发布时间】:2018-04-18 22:44:09
【问题描述】:

所以对于我的不和谐机器人,我想添加一个 nick 命令。为此,我查看了this 线程并将其改编为我的代码。

client.on("message", async message => {
    const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
    const command = args.shift().toLowerCase();

    if (command == "nick") {
        var userID = args[0].replace('<@', '').replace('>', '').replace('!', '');
        message.channel.send(userID);
        message.guild.members.get(args[0]).id.setNickname("test", "nick command executed");
        message.channel.send(`Successfully changed ${args[0]}'s nickname to "${message.channel.server.detailsOf(args[0]).nick}"`);
    }
});

client.login("token");

由于某种原因,这会将TypeError: Cannot read property 'id' of undefined 输出到控制台,但成功地将UserID 发送到通道。

为什么会这样,我该如何“修复”它以便它实际上改变用户昵称?

【问题讨论】:

  • 试试:console.log( message.guild.members.get(args[0]) )
  • @JonasW.That,出于某种原因,输出 0,即使我有 2 个参数:一个提到的用户和新昵称。

标签: javascript node.js discord.js


【解决方案1】:

您的代码中发生的事情是您将更改后的args[0] 版本存储在userId 中:

var userID = args[0].replace('<@', '').replace('>', '').replace('!', '');

但是您将未更改的args[0] 传递给.get

message.guild.members.get(args[0]).id.setNickname("test", "nick command executed");

所以代码正在运行:..get(&lt;@...&gt;) 这将返回错误,因为这不是有效的 id。

你应该改变两件事:

  1. args[0] 替换为userId
  2. message.guild.members.get(args[0]).id 中删除.id,因为之后您将无法调用 setNickname。

【讨论】:

  • 我想通了:P,这是很久以前的事了。还是谢谢。
猜你喜欢
  • 2017-05-05
  • 2021-02-16
  • 2021-07-30
  • 2018-12-09
  • 2020-09-28
  • 1970-01-01
  • 2021-06-27
  • 2018-08-21
  • 2021-05-20
相关资源
最近更新 更多