【发布时间】:2021-04-05 19:04:35
【问题描述】:
我的目标是通过用户ID获取用户昵称。
他们的 ID 存储为从反应收集器收集的变量。 我尝试了一些方法,但都失败了,其中大多数要么什么都不返回,要么返回错误。
下面的代码什么都不返回,getnames() 函数是空的。向我推荐了这种方法,从一个旨在帮助解决问题的 nodejs discord 服务器上购买 2 个人,类似于这里。
// returns player ID's
function getPlayers() {
let players = [];
players.push(queue.tank[0]); // First (1) in TANK queue
players.push(queue.heal[0]); // First (1) in HEAL queue
players.push(queue.dps[0]); // First (2) in DPS queue
players.push(queue.dps[1]);
return players;
}
// get nick names from ID's
function getnames() {
let players = getPlayers();
let playerNicks = [];
let newPlayer = "";
players.forEach(async player => {
newPlayer = await message.guild.members.fetch(player).then(function (user) {return user.displayName });
playerNicks.push(newPlayer)
return playerNicks;
})}
//formats nicknames into string
function formatnicknames() {
let formatted_string2 = '';
let playerNicks = getnames();
if (playerNicks)
formatted_string2 = `${playerNicks[0]} \n${playerNicks[1]} \n${playerNicks[2]} \n${playerNicks[3]}`;
return formatted_string2;
}
我也尝试了以下代码的一些变体,仍然无法获得昵称。
message.guild.members.cache.get(user.id)
编辑#1
现在尝试了以下代码,但没有成功。 (boost1ID 包含 1 个用户的 ID)
var mem1 = message.guild.members.fetch(boost1ID).nickname
编辑#2
尝试了一种从 ID 获取显示名称的新方法。
var guild = client.guilds.cache.get('guildid');
var mem1 = guild.member(boost1ID);
var mem2 = guild.member(boost2ID);
var mem3 = guild.member(boost3ID);
var mem4 = guild.member(boost4ID);
var nickname1 = mem1 ? mem1.displayName : null;
var nickname2 = mem2 ? mem2.displayName : null;
var nickname3 = mem3 ? mem3.displayName : null;
var nickname4 = mem4 ? mem4.displayName : null;
var Allnicknames = `${nickname1} ${nickname2} ${nickname3} ${nickname4}`
message.channel.send(`testing nicknames: ${Allnicknames}`)
我设法只返回我自己的名字,因为我在此服务器上没有昵称,但其他三个有昵称的用户返回 null。
【问题讨论】:
标签: node.js discord discord.js