如何获取其他成员不和id?



我想让命令,可以给我的信息,我提到像!info @Someone我尝试下面的代码,但没有工作。

这是schema

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const profileSchema = new Schema({
_id: mongoose.Schema.Types.ObjectId,
userID: String,
nickname: String,
ar: Number,
server: String,
uid: Number,
});
module.exports = mongoose.model("User", profileSchema);

这就是我所尝试的,但是什么也没有显示,没有显示任何错误符号

client.on("message", async msg => {
let member = msg.mentions.users.first().username
if (msg.content === `!info @${member}`){ 
userData = await User.findOne({userID : msg.mentions.users.first().id});
if (userData) {
const exampleEmbed = new MessageEmbed()
.setColor('#808080')
.setTitle('Data Member')
.setDescription(`**Nickname :** ${userData.nickname}n**Adventure Rank :** ${userData.ar}nServer: ${userData.server}n**User ID :** ${userData.uid}`)
.setThumbnail(msg.author.avatarURL())
msg.reply({ embeds: [exampleEmbed] });
} else{
msg.reply("Please registration first")
}
}
}
);

通过查看您的代码,它可能会洗牌您的所有.first()让修改您的代码。

client.on("message", async msg => {
let member = msg.mentions.members.first() || msg.guild.members.fetch(args[0]); //You can also use their ID by using these
if (msg.content === `!info ${member.username || member.user.username}`) { //then adding the user.username
const userData = await User.findOne({
userID: member.id || member.user.id //same as here
}); //userData shows as "any" so you need to change it to const userData
if (userData) {
const exampleEmbed = new MessageEmbed()
.setColor('#808080')
.setTitle('Data Member')
.setDescription(`**Nickname :** ${userData.nickname}n**Adventure Rank :** ${userData.ar}nServer: ${userData.server}n**User ID :** ${userData.uid}`)
.setThumbnail(msg.author.avatarURL())
msg.reply({
embeds: [exampleEmbed]
});
} else {
msg.reply("Please registration first")
}
}
});

修改if条件。不和谐如何提到工作

Discord使用特殊的语法在消息中嵌入提及。对于用户提及,它是用户的ID,开头是<@,后面是>最后,像这样:<@86890631690977280>.

if (msg.content === `!info ${message.mentions.users.first()}`)

例如:

const member = msg.mentions.users.first();
if (msg.content === `!info ${member}`){ 
User.findOne({ userID: member.id }, (err, user) => {
if (err) return console.error(err);
if (!user) return msg.reply("User not found");
console.log(user);
});
}

检查你的代码,我发现了这些错误。

首先你需要的是message.mentions.members.first()中的成员而不是用户。

其次,您需要首先定义UserData,如const UserData = ...

client.on("message", async msg => {
let member = msg.mentions.members.first()
if (msg.content === `!info @${member}`){ 
User.findOne({userID : member.id}, async (err, userData) => {
if (userData) {
const exampleEmbed = new MessageEmbed()
.setColor('#808080')
.setTitle('Data Member')
.setDescription(`**Nickname :** ${userData.nickname}n**Adventure Rank :** ${userData.ar}nServer: ${userData.server}n**User ID :** ${userData.uid}`)
.setThumbnail(msg.author.avatarURL())
msg.reply({ embeds: [exampleEmbed] });
} else{
msg.reply("Please registration first")
}
}
});
});

让我知道如果它的工作后修复这些错误。此外,message事件被禁止使用,所以从现在开始尝试使用MessageCreate来代替

最新更新