获取dm是机器人的用户的昵称

时间:2019-06-01 22:30:47

标签: discord.js

当用户dm是bot时,我想获取与bot在同一服务器上的用户的服务器昵称。

我尝试过:message.author.guild.members.get(message.author.id).displayName和message.author.displayName,第一个使bot崩溃,第二个使昵称“未定义”。现在,我将其设置为message.author.username,但这给了我用户名,并且我需要昵称。

if(message.channel.type === "dm" && message.content === 'specific message') {

     let bicon = bot.user.displayAvatarURL;
     let botembed = new Discord.RichEmbed()
     .setTitle("**Log**")
     .setDescription("**" + message.author.username + "** messaged me!")
     .setColor("#F54603")
     .setTimestamp()

     return bot.channels.get("584424339986710540").send(botembed);

我相信需要做的是,机器人从DM的机器人那里检索用户ID,然后在服务器中搜索该用户ID,然后获取displayName。但是,我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

你有消息中的所有信息,这是我使用的辅助函数:

const getAuthorDisplayName = async (msg) => {
  const member = await msg.guild.member(msg.author);
  return member ? member.nickname : msg.author.username;
}

答案 1 :(得分:0)

您必须指定机器人从哪个公会中检索用户的昵称。下面的代码可以实现这一点:

let guild = client.guilds.get('serverID');
let member = guild.member(message.author);
let nickname = member ? member.displayName : null;