javascript - 使用用户 ID Discord.js v13 获取 GuildMember 对象
问题描述
一般来说,我对 discord.js 和 Javascript 还是很陌生。在这里,我创建了一个简单的 userinfo 命令,它获取用户的数据并将其整齐地嵌入,如下所示。您还可以看到该命令要求作者/mod 提及用户以获取结果嵌入,但我想通过成员的不和谐用户 ID 获得相同的结果。我试过message.mentions.users.first() || message.guild.member.length(args[0])
了,但这会产生很多问题。所以基本上我如何通过不和谐 ID 使用相同的命令/代码。
const moment = require('moment');
const Discord = require('discord.js');
const { MessageEmbed } = require('discord.js')
module.exports = {
description: 'whois',
run: async (client, message, args) => {
const user = message.mentions.users.first()
const embed = new MessageEmbed()
.setTitle(`**PASSION ISLAND MODERATIONS**`)
.setColor('#ffc0cb')
.setThumbnail(user.displayAvatarURL({ dynamic: true }))
.addField('Username', user.username)
.addField('User Id', user.id)
.addField('Account Type', `${user.bot ? 'Bot' : 'Human'}`)
.addField(`Roles`, `${message.member.roles.cache.size}`)
.addField(`Joined At`, `${moment.utc(message.member.joinedAt).format('ddd, MMM Do, YYYY, h:mm a')}`)
.addField(`created At`, `${moment.utc(message.member.createdAt).format('ddd, MMM Do, YYYY, h:mm a')}`)
.setTimestamp()
.setFooter(`Requested by ${message.author.username}`)
message.channel.send({ embeds: [embed] })
},
}
解决方案
您可以尝试使用
let user;
if(message.mentions.members.first()) {
user = message.mentions.members.first()
} else {
let x = await message.guild.members.cache.get(`${args[0]}`)
user = x.user;
}
这适用于 ID,因为您可以在.get()
函数中传递雪花。
推荐阅读
- javascript - 使用 Fetch 提交表单并接收响应以使用它
- python-requests - 将正文解析为 json 时失败 - 使用 request.post() 调用 Rasa API
- java - openfein + spring data 自动嵌套实体检索
- flutter - 颤振显示未处理的异常:FormatException:过滤器错误,错误数据错误
- azure - 在 ARM 模板的元数据下使用生成器
- c# - .net System.Text.Json 基于属性名的序列化
- firebase - “_JsonQuerySnapshot”类型不是“Map”类型的子类型
' 在类型转换中" - angular - Highcharts 地图中的动态数据
- python - 如何遍历所有行并保存数据
- python - XGBoost 中对 Booster 对象的需求是什么?另外,如何在 SkLearn 的 SelectfromModel 中使用它?