有人可以帮我从用户 ID 中检索用户名并向使用该 ID 的聊天发送消息吗?
if (message.content.startsWith(prefix)) {
const [CMD_NAME, ...args] = message.content
.trim()
.substring(prefix.length)
.split(/\s+/);
if (CMD_NAME === "getid") {
const getid1 = new MessageEmbed()
.setDescription("❗️ | Please tag the member to retrieve the ID!")
.setColor(10181046);
if (args.length === 0) return message.reply(getid1);
const username = client.guilds.cache.get('<GUILD ID>');
const userid = client.users.cache.find(username => username.tag === 'Someone#1234').id
message.channel.send(`${username} id is ${userid}`);
}
}
});
当我输入命令“d!getid @Username”时,它显示了这个错误:
<块引用>C:\Users\USER\Desktop\DiscordBotas\index.js:152 const userid = client.users.cache.find(username => username.tag === 'Someone#1234').id TypeError: 不能在客户端读取未定义的属性“id”。 (C:\Users\USER\Desktop\DiscordBotas\index.js:152:90)
答案 0 :(得分:1)
您正在创建一个您刚刚在实际 lambda 之上定义的变量的 lambda,这可能会干扰您的代码。
const username = client.guilds.cache.get('<GUILD ID>');
是错误的。
如果您修复了它上面的行,那么获取 userId 应该可以正常工作。
答案 1 :(得分:0)
您试图以错误的方式吸引用户。首先,为什么要尝试将用户的标签与公会匹配?也许你认为 guild.cache 有用户?嗯,实际上,这是 client.guilds.cache,它只有公会,它返回一个公会,而不是用户。其次,要获取一个用户,可以试试这个方法:
const user = client.users.cache.find(u => u.tag === 'SomeUser#0000')
console.log(user.id);
下面是通过 ID 获取用户的代码,但考虑到您已经可以访问 ID,它可能无济于事
const user = client.users.cache.get("<UserID>");
console.log(user);
此外,您应该添加代码以查看是否找不到用户(客户端无法找到具有条件的用户)。下面是一些代码来检查:
//... the find user code I put
if(!user) return message.reply('User could not be found');
message.channel.send(user.id);