我成功地將我的 Discord Bot 連接到我的 sql 資料庫。但是現在我從資料庫收到的資料只記錄在我的控制臺中,但我想改變它。我想用資料庫中的資訊進行嵌入,并用資料庫中的資訊填充值。我試圖這樣做,但它給了我一個錯誤,我不知道在嵌入中要更改什么,因此它可以正常作業。資料庫看起來像這樣
MySQL連接:
connection.connect(function (err) {
if (err) throw err;
connection.query('SELECT * FROM`player_count`', function (err, result) {
if (err) throw err;
console.log(result);
});
});
正在記錄的資料:
[
RowDataPacket {
id: 1,
cop_count: '0',
medic_count: '0',
civ_count: '1'
}
]
我試圖制作的嵌入:
if (message.content.startsWith(prefix 'info')) {
const connection = mysql.createConnection({
host: 'private',
port: '3306',
user: 'User',
password: 'private',
database: 'test',
charset: 'utf8mb4',
});
connection.connect(function (err) {
if (err) throw err;
connection.query('SELECT * FROM`player_count`', function (err, result) {
if (err) throw err;
const serverembed = new Discord.MessageEmbed()
.setTitle('Info:')
.setThumbnail('png')
.setColor('GOLD')
.addFields(
{ name: '????', value: 'cop_count', result, inline: true },
{ name: '????', inline: 'medic_count', result, inline: true },
{ name: '????', value: 'civ_count', result, inline: true },
)
.setTimestamp();
message.channel.send({ embeds: [serverembed] });
});
});
}
我得到的錯誤代碼:
C:\Bot\Bot v13\node_modules\mysql\lib\protocol\Parser.js:437
throw err; // Rethrow non-MySQL errors
^
RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings.
at Function.verifyString (C:\Bot\Bot v13\node_modules\discord.js\src\util\Util.js:413:41)
at Function.normalizeField (C:\Bot\Bot v13\node_modules\discord.js\src\structures\MessageEmbed.js:441:19)
at C:\Bot\Bot v13\node_modules\discord.js\src\structures\MessageEmbed.js:462:14
at Array.map (<anonymous>)
at Function.normalizeFields (C:\Bot\Bot v13\node_modules\discord.js\src\structures\MessageEmbed.js:461:8)
at MessageEmbed.addFields (C:\Bot\Bot v13\node_modules\discord.js\src\structures\MessageEmbed.js:283:42)
at Query.<anonymous> (C:\Bot\Bot v13\index.js:57:14)
at Query.<anonymous> (C:\Bot\Bot v13\node_modules\mysql\lib\Connection.js:526:10)
at Query._callback (C:\Bot\Bot v13\node_modules\mysql\lib\Connection.js:488:16)
at Query.Sequence.end (C:\Bot\Bot v13\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24) {
[Symbol(code)]: 'EMBED_FIELD_VALUE'
}
uj5u.com熱心網友回復:
您沒有value在對 的呼叫中正確設定屬性addValues。
嘗試這樣的事情:
.addFields(
{ name: '????', value: rows[0].cop_count, inline: true },
{ name: '????', value: rows[0].medic_count, inline: true },
{ name: '????', value: rows[0].civ_count, inline: true },
)
uj5u.com熱心網友回復:
這絕對比您之前提出這個問題的嘗試要好。
該錯誤RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings.意味著您的嵌入中有一個空欄位。如果檢查第二個欄位,可以看到沒有value屬性,而是兩個inlines。
另外,不要忘記這result是一個物件陣列。您需要檢查它的長度,如果它至少有一項,請使用以下屬性result[0]:
.addFields(
{ name: '????', value: result[0].cop_count, inline: true },
{ name: '????', value: result[0].medic_count, inline: true },
{ name: '????', value: result[0].civ_count, inline: true },
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/341315.html
標籤:javascript 不和谐 不和谐.js
