如何解决node.js中的“消息内容必须是非空字符串”[关闭]
Posted
技术标签:
【中文标题】如何解决node.js中的“消息内容必须是非空字符串”[关闭]【英文标题】:How to solve "Message content must be a non-empty string" in node.js [closed] 【发布时间】:2022-01-05 02:38:01 【问题描述】:这是我的代码,
const Client, Intents = require('discord.js');
const mineflayer = require("mineflayer");
const client = new Client( intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] );
let sending = false
let chatData = []
let prefix = ".";
var settings =
username: "StilShem_tvink",
host: "mstnw.net",
;
const bot = mineflayer.createBot(settings);
bot.on('kicked', (reason, loggedIn) => console.log(reason, loggedIn));
bot.on('error', err => console.log(err));
client.on("ready", async =>
console.log("Discord bot is online!")
)
bot.on("login", async =>
console.log("Minecraft bot is online!")
)
bot.on("message", message =>
if(sending == true)
chatData.push(`$message`)
)
client.on("messageCreate", async msg =>
let args = msg.content.split(" ").slice(1)
if(msg.content.startsWith(".chat"))
let toSend = args.join(" ");
if(!toSend) return msg.reply("No args")
bot.chat(toSend)
sending = true
msg.channel.send(`$msg.author.tag just sent $toSend`)
setTimeout(() =>
sending = false
msg.channel.send(chatData.join("\n"))
chatData = []
, 750)
)
此代码适用于不和谐的 minecraft mineflayer。这段代码给了我错误。
C:\Users\ArtemiiYT\node_modules\discord.js\src\util\Util.js:414 if (!allowEmpty && data.length === 0) throw new error(errorMessage); ^
RangeError [MESSAGE_CONTENT_TYPE]:消息内容必须为非空 细绳。 在 Function.verifyString (C:\Users\ArtemiiYT\node_modules\discord.js\src\util\Util.js:414:49) 在 MessagePayload.makeContent (C:\Users\ArtemiiYT\node_modules\discord.js\src\structures\MessagePayload.js:113:22) 在 MessagePayload.resolveData (C:\Users\ArtemiiYT\node_modules\discord.js\src\structures\MessagePayload.js:128:26) 在 TextChannel.send (C:\Users\ArtemiiYT\node_modules\discord.js\src\structures\interfaces\TextBasedChannel.js:168:61) 在 Timeout._onTimeout (C:\Users\ArtemiiYT\Desktop\Всё\AFK bot\AFKBOTDS\bot.js:46:25) 在 listOnTimeout(节点:内部/计时器:557:17) 在 processTimers (node:internal/timers:500:7) [Symbol(code)]: 'MESSAGE_CONTENT_TYPE'
Node.js v17.1.0
【问题讨论】:
欢迎。请选择一个能真实描述您的问题的标题,以便其他有相同问题的人可以搜索到。 【参考方案1】:我没有继续运行代码,但我认为chatData
数组是空的。因此,当您尝试将其中的所有元素 .join("\n")
放在一起时,您只会得到一个空字符串,该字符串会被 discord 拒绝并且您会收到错误消息。
所以你可能想先检查数组中是否有任何东西。
如果您在这里查看代码,只需将其添加到间隔函数中:
if(chatData.length < 1)
// maybe inform the user there is no new chat message?
return;
【讨论】:
以上是关于如何解决node.js中的“消息内容必须是非空字符串”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 node.js 中的特定持续时间后强制解决承诺? [复制]
如何解决 Bootstrap node.js 应用程序中的错误“无法设置未定义的属性 'emulateTransitionEnd'”?