MessageEmbed字段值不能为空



我知道这可能是一个简单的问题,但是我今天刚刚升级到discord.js v13,我对一些事情是如何工作的有点困惑。我一直在使用v12上工作的serverinfo命令时遇到麻烦。我将提供一些代码以提供帮助。

错误日志:https://i.stack.imgur.com/oTTE0.jpg

serverinfo代码:

const { MessageEmbed } = require('discord.js');
const moment = require('moment');
const filterLevels = {
DISABLED: 'Off',
MEMBERS_WITHOUT_ROLES: 'No Role',
ALL_MEMBERS: 'Everyone'
};
const verificationLevels = {
NONE: 'None',
LOW: 'Low',
MEDIUM: 'Medium',
HIGH: '(╯°□°)╯︵ ┻━┻',
VERY_HIGH: '┻━┻ ミヽ(ಠ益ಠ)ノ彡┻━┻'
};
const regions = {
brazil: 'Brazil',
europe: 'Europe',
hongkong: 'Hong Kong',
india: 'India',
japan: 'Japan',
russia: 'Russia',
singapore: 'Singapore',
southafrica: 'South Africa',
sydeny: 'Sydeny',
'us-central': 'US Central',
'us-east': 'US East',
'us-west': 'US West',
'us-south': 'US South'
};
module.exports = {
name: "serverinfo",
aliases: ['si', 'sinfo'],
category: "info",
description: "shows the information of the server",
usage: "[command | alias]",
run: async (client, message, args) => {

const owner = await message.guild.fetchOwner();

const embed = new MessageEmbed()
.setColor('#724e72')
.setTitle('Server Info')
.setAuthor(`${message.author.tag}`, message.author.displayAvatarURL())
.setDescription('shows information about the server')
.setThumbnail('https://i.imgur.com/MafwgxK.png')
.addField('General', [
`**Name:** ${message.guild.name}`,
//`**ID:** ${message.guild.id}`,
`**Owner:** ${owner.user.tag}`,
`**Region:** ${regions[message.guild.region]}`,
`**Boost Tier:** ${message.guild.premiumTier ? `Tier ${message.guild.premiumTier}` : 'None'}`,
`**Explicit Filter:** ${filterLevels[message.guild.explicitContentFilter]}`,
`**Verification Level:** ${verificationLevels[message.guild.verificationLevel]}`,
`**Time Created:** ${moment(message.guild.createdTimestamp).format('LT')} ${moment(message.guild.createdTimestamp).format('LL')} [${moment(message.guild.createdTimestamp).fromNow()}]`,
'u200b'
])
.addField('Statistics', [
`**Role Count:** ${message.guild.roles.cache.size}`,
`**Emoji Count:** ${message.guild.emojis.cache.size}`,
//`**Regular Emoji Count:** ${emojis.filter(emoji => !emoji.animated).size}`,
//`**Animated Emoji Count:** ${emojis.filter(emoji => emoji.animated).size}`,
`**Member Count:** ${message.guild.memberCount}`,
`**Humans:** ${message.guild.members.cache.filter(member => !member.user.bot).size}`,
`**Bots:** ${message.guild.members.cache.filter(member => member.user.bot).size}`,
`**Text Channels:** ${message.guild.channels.cache.filter(channel => channel.type === 'text').size}`,
`**Voice Channels:** ${message.guild.channels.cache.filter(channel => channel.type === 'voice').size}`,
`**Boost Count:** ${message.guild.premiumSubscriptionCount || '0'}`,
'u200b'
])
.addField('Presence', [
`**Online:** ${message.guild.members.cache.filter(member => member.presence.status === 'online').size}`,
`**Idle:** ${message.guild.members.cache.filter(member => member.presence.status === 'idle').size}`,
`**Do Not Disturb:** ${message.guild.members.cache.filter(member => member.presence.status === 'dnd').size}`,
`**Offline:** ${message.guild.members.cache.filter(member => member.presence.status === 'offline').size}`,
'u200b'
])
.setTimestamp()
.setFooter('a')

message.channel.send({ embeds: [embed] });

}
}

命令处理程序(如果需要idk):

const { readdirSync } = require("fs");
const ascii = require("ascii-table");
let table = new ascii("Commands");
table.setHeading("Command", "Load status");
module.exports = (client) => {
readdirSync("./commands/").forEach(dir => {
const commands = readdirSync(`./commands/${dir}/`).filter(file => file.endsWith(".js"));

for (let file of commands) {
let pull = require(`../commands/${dir}/${file}`);

if (pull.name) {
client.commands.set(pull.name, pull);
table.addRow(file, 'Working');
} else {
table.addRow(file, `❌  -> missing a help.name, or help.name is not a string.`);
continue;
}

if (pull.aliases && Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name));
}
});

console.log(table.toString());
}

messageCreate事件
const del = require('../../functions.js');
const Levels = require('discord-xp');
require('dotenv').config();
const prefix = process.env.PREFIX;
module.exports = async (Discord, client, message) => {

if (message.author.bot || !message.guild) return;

const randomXP = Math.floor(Math.random() * 14) + 1; //1-15
const hasLeveledUP = await Levels.appendXp(message.author.id, message.guild.id, randomXP);
if (hasLeveledUP) {
const user = await Levels.fetch(message.author.id, message.guild.id);
message.channel.send(`${message.member} is now level ${user.level}.`);
}


//const args = message.content.startsWith(prefix) ? message.content.slice(prefix.length).trim().split(/ +/g) : message.content.replace(/[^s]*/, '').trim().split(/ +/g);
const args = message.content.slice(prefix.length).trim().split(/ +/g);
const cmd = args.shift().toLowerCase();

if (cmd.length === 0) return;

let command = client.commands.get(cmd);
if (!command) command = client.commands.get(client.aliases.get(cmd));

if (command) {
command.run(client, message, args);
}
}

index.js

const fs = require('fs');
const { Collection, Client, Intents } = require('discord.js');
const Levels = require('discord-xp');
require('dotenv').config();
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_PRESENCES, Intents.FLAGS.GUILD_MEMBERS] }); //name of bot
const mongoose = require('./database/mongoose.js');
Levels.setURL(`PASS`);
['aliases', 'commands'].forEach(x => client[x] = new Collection());
['command', 'event'].forEach(x => require(`./handlers/${x}`)(client));
mongoose.init();
client.login(process.env.CLIENT_TOKEN); // SECRET TOKEN

任何帮助都是感激的。

看起来. addfield不允许第二个参数使用字符串数组。您可能需要将字符串数组组合成一个字符串。

您可以在这里看到.addField的文档:https://discord.js.org/#/docs/main/stable/class/MessageEmbed?scrollTo=addField

最新更新