Мне нужна помощь с моим кодом. Мой план состоит в том, чтобы сделать команду, которая показывает, сколько членов у меня есть на моем сервере. Кто-нибудь может мне помочь? Я просто собираюсь добавить больше деталей, так как я не могу загрузить свой вопрос, если мои данные короткие. Если кто-то хочет помочь мне с моим дискорд-ботом или, может быть, научить меня, как это сделать, потому что я всего лишь новичок, пытающийся изучить discord.js. Добавьте меня в Twitter (TwT): KiseeIsHere
const Discord = require("discord.js");
const {MessageEmbed} = require("discord.js");
module.exports.run = async (client, message, args) => {
try {
await message.guild.members.fetch().catch(() => {});
message.reply({embeds: [new Discord.MessageEmbed()
.setAuthor("Kisee")
.setColor("2F3136")
.addField(message.guild.memberCount + "\`", true)
.addField(message.guild.members.cache.filter(member => !member.user.bot).size + "\`", true)
.addField(message.guild.members.cache.filter(member => member.user.bot).size + "\`", true)
.addField(message.guild.members.cache.filter(member => member.presence && member.presence && member.presence.status != "offline").size + "\`", true)
.addField(message.guild.members.cache.filter(member => !member.user.bot && member.presence && member.presence && member.presence.status != "offline").size + "\`", true)
.addField(message.guild.members.cache.filter(member => member.user.bot && member.presence && member.presence && member.presence.status != "offline").size + "\`", true)
.addField(message.guild.members.cache.filter(member => member.presence && member.presence && member.presence.status == "idle").size + "\`", true)
.addField(message.guild.members.cache.filter(member => !member.user.bot && member.presence && member.presence && member.presence.status == "idle").size + "\`", true)
.addField(message.guild.members.cache.filter(member => member.user.bot && member.presence && member.presence && member.presence.status == "idle").size + "\`", true)
.addField(message.guild.members.cache.filter(member => member.presence && member.presence && member.presence.status == "dnd").size + "\`", true)
.addField(message.guild.members.cache.filter(member => !member.user.bot && member.presence && member.presence && member.presence.status == "dnd").size + "\`", true)
.addField(message.guild.members.cache.filter(member => member.user.bot && member.presence && member.presence && member.presence.status == "dnd").size + "\`", true)
.addField(message.guild.members.cache.filter(member => !member.presence || member.presence && member.presence.status == "offline").size + "\`", true)
.addField(message.guild.members.cache.filter(member => !member.user.bot && (!member.presence || member.presence && member.presence.status == "offline")).size + "\`", true)
.addField(message.guild.members.cache.filter(member => member.user.bot && (!member.presence || member.presence && member.presence.status == "offline")).size + "\`", true)
.setTimestamp()
]});
} catch (e) {
console.info("error")
return message.reply({embeds: [new MessageEmbed()
.setColor("2F3136")
.setFooter("error")
.setTitle("error")
.setDescription("error")
]});
}
}
module.exports.config = {
name: "membercount",
aliases: ["mc"]
}
Какие намерения вы установили?
Небольшой совет: если вы обнаружите, что набираете одно и то же снова и снова (обычно более 2 раз), сделайте это константой.
Например
.addField(message.guild.members.cache...
.addField(message.guild.members.cache...
.addField(message.guild.members.cache...
.addField(message.guild.members.cache...
.addField(message.guild.members.cache...
// more efficient usage
const allMembers = message.guild.members.cache
.addField(allMembers...
.addField(allMembers...
.addField(allMembers...
.addField(allMembers...
.addField(allMembers...
Кроме того, ниже приведен рабочий пример, не стесняйтесь настраивать его при необходимости. Кстати, .setAuthor
и .setFooter
должны передаваться как объект, а не как строка, что показано ниже в ответе.
const {
MessageEmbed,
} = require("discord.js");
module.exports.run = async (client, message, args) => {
const allUsers = client.users.cache;
const allMembers = message.guild.members.cache;
const embed = new MessageEmbed()
.setAuthor({
name: "Kisee",
})
.setColor("2F3136")
.addFields({
name: `Total Members`,
value: `${allUsers.size}`,
inline: true,
}, {
name: `Users`,
value: `${allUsers.filter(user => !user.bot).size}`,
inline: true,
}, {
name: `Bots`,
value: `${allUsers.filter(user => user.bot).size}`,
inline: true,
}, {
name: `Online`,
value: `${allMembers.filter(member => !member.user.bot && member.presence && member.presence.status === 'online').size}`,
inline: true,
}, {
name: `Offline`,
value: `${allMembers.filter(member => !member.user.bot && !member.presence || member.presence.status === 'offline').size}`,
inline: true,
}, {
name: `Idle`,
value: `${allMembers.filter(member => !member.user.bot && member.presence && member.presence.status === 'idle').size}`,
inline: true,
}, {
name: `DND`,
value: `${allMembers.filter(member => !member.user.bot && member.presence && member.presence.status === 'dnd').size}`,
inline: true,
})
.setTimestamp();
message.reply({
embeds: [embed],
});
};
module.exports.config = {
name: "membercount",
aliases: ["mc"],
};
игнорировать первую строку ghost = client
в моем коде
Запрос
const client = new Client({
intents: // whatever you have here,
partials: // not necessary but may also be present,
})
значение: ${allMembers.filter(member => !member.user.bot && !member.presence || member.presence.status === 'offline').size}
, TypeError: Не удается прочитать свойства null (чтение «статус»). Эта вещь всплывает. Как я могу это исправить?
Я добавил раздел в свой ответ с просьбой проверить несколько вещей, пожалуйста, дайте мне знать, что у вас есть в ваших намерениях, и убедитесь, что вы включили необходимые привилегированные намерения.
Это сработало. Я удалил что-то из вашего кода, это || member.presence.status === 'offline'
, так как это то же самое, что и !member.presence
Если я могу спросить, вы можете помочь мне сделать музыкального бота?
Какую ошибку вы получаете?