const { SlashCommandBuilder } = require('@discordjs/builders');
const { bold, italic, strikethrough, underscore, spoiler, quote, blockQuote, inlineCode, codeBlock } = require('@discordjs/builders');
const { Option, User, Options, UserContextMenuInteraction } = require(`discord.js`)
module.exports = {
data: new SlashCommandBuilder()
.setName('userinfo')
.setDescription('Use this command to see information about you')
.addUserOption(option => option.setName('target').setDescription('Select a user').setRequired(true)),
async execute(interaction) {
// ${interaction.client.uptime}
var userStatus = '';
const userResult = interaction.options.getUser('target');
const memberResult = interaction.options.getMember('target');
const joinedDate = new Date(memberResult.joinedTimestamp).toLocaleDateString();
const createdDate = new Date(userResult.createdTimestamp).toLocaleDateString();
if(memberResult.presence.status == 'offline') {
userStatus = 'Offline';
}
if(memberResult.presence.status == 'idle') {
userStatus = 'Idle';
}
if(memberResult.presence.status == 'dnd') {
userStatus = 'Do Not Disturb';
}
if(memberResult.presence.status == 'online') {
userStatus = 'Online';
}
let days = Math.floor(userResult.client.uptime / 86400000);
let hours = Math.floor(userResult.client.uptime / 3600000) % 24;
let minutes = Math.floor(userResult.client.uptime / 60000) % 60;
let seconds = Math.floor(userResult.client.uptime / 1000) % 60;
const exampleEmbed = {
color: 0x0099ff,
title: `Information of ${userResult.tag}`,
description: `${interaction.user.username} has used the command ` + inlineCode(`/${interaction.commandName}`),
fields: [
{
name: underscore('Nickname:'),
value: `${memberResult.nickname}`,
inline: true,
},
{
name: underscore('ID:'),
value: `${memberResult.id}`,
inline: true,
},
{
name: underscore('Uptime:'),
value: `${days}d, ${hours}h, ${minutes}m, ${seconds}s`,
inline: false,
inline: true,
},
{
name: underscore('Status:'),
value: `${userStatus}`,
inline: true,
},
{
name: '___Created at: ___',
value: `${createdDate}`,
inline: false,
},
{
name: '___Joined at: ___',
value: `${joinedDate}`,
inline: false,
},
],
footer: {
text: `im so sorry about of bug on [uptime] and [status]. Soon will be fixed :)`,
}
};
await interaction.reply({ embeds: [exampleEmbed], ephemeral: false });
},
};我正在尝试获取成员的...presence.status和.nickname,但如果成员的状态是脱机的,则在控制台上会出现错误。
错误:
TypeError: Cannot read property 'status' of null
at Object.execute (C:\Users\user\Desktop\.Folder Rizky\test vscode\commands\userinfo.js:24:28)
at Client.<anonymous> (C:\Users\user\Desktop\.Folder Rizky\test vscode\index.js:32:17)
at Client.emit (node:events:394:28)
at InteractionCreateAction.handle (C:\Users\user\Desktop\.Folder Rizky\test vscode\node_modules\discord.js\src\client\actions\InteractionCreate.js:74:12)
at Object.module.exports [as INTERACTION_CREATE] (C:\Users\user\Desktop\.Folder Rizky\test vscode\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)
at WebSocketManager.handlePacket (C:\Users\user\Desktop\.Folder Rizky\test vscode\node_modules\discord.js\src\client\websocket\WebSocketManager.js:351:31)
at WebSocketShard.onPacket (C:\Users\user\Desktop\.Folder Rizky\test vscode\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
at WebSocketShard.onMessage (C:\Users\user\Desktop\.Folder Rizky\test vscode\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
at WebSocket.onMessage (C:\Users\user\Desktop\.Folder Rizky\test vscode\node_modules\ws\lib\event-target.js:199:18)
at WebSocket.emit (node:events:394:28)这是Intents的问题吗?
发布于 2022-01-09 20:21:17
是的,您的代码的问题在于特权意图。要解决此问题,您必须打开不和谐的开发人员门户中的Presence intent。

之后,在代码中将GUILD_PRESENCES添加到客户端意图数组中,如下所示:
const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILD_PRESENCES] });https://stackoverflow.com/questions/70641856
复制相似问题