2 回答

TA貢獻1830條經(jīng)驗 獲得超9個贊
將if語句移出forEach循環(huán)。
前:
rows.forEach(r => {
if (!rows) {
message.channel.send("NO U");
}
后:
if (rows.length === 0) {
return message.channel.send("NO U");
}
rows.forEach(r => {
正如其他評論中指出的那樣,更改!rows為,rows.length === 0因為當找不到任何行時庫返回一個空數(shù)組。

TA貢獻1893條經(jīng)驗 獲得超10個贊
我會重構(gòu)一些東西,所以有一個單獨的函數(shù)可以將用戶和數(shù)據(jù)庫中的行轉(zhuǎn)換為 MessageEmbed。
這樣就很容易首先嘗試將任何警告映射到消息,然后查看是否生成了任何警告,如果沒有生成,則發(fā)送其他消息。
請注意,即使是空數(shù)組在 JavaScript 中也是真實的,因此您需要檢查.length.
const con = require("../../sql.js");
function warningRowToMessage(User, row) {
const { moderator, reason, time } = row;
return new MessageEmbed()
.setTitle(`User warnings!`)
.setDescription(`These is all the warnings which have been issued to ${User.tag}!`)
.setColor(`RED`)
.setThumbnail(User.displayAvatarURL())
.addFields(
{
name: "Moderator",
value: `${moderator}`,
inline: true,
},
{
name: "Username",
value: `${User.tag}`,
inline: true,
},
{
name: "Reason",
value: `${reason}`,
inline: true,
},
{
name: "When was warned",
value: `${time}`,
inline: true,
},
);
}
con.all(`SELECT * FROM warnings WHERE username = ? AND userID = ?`, User.tag, User.id, (err, rows) => {
const replyMessages = rows.map((r) => warningRowToMessage(User, r));
if (!replyMessages.length) {
message.channel.send("NO U");
return;
}
message.delete({
timeout: 3000,
});
replyMessages.forEach(async (replyMessage) => {
const msg = await message.channel.send(replyMessage);
msg.delete({
timeout: 15000,
});
});
});
添加回答
舉報