這里的背景故事是我正在開發(fā) Discord 機(jī)器人。要求的功能之一是讓它侮辱。我認(rèn)為讓用戶能夠通過 SQLite 3 數(shù)據(jù)庫(特別是 better-sqlite3)添加侮辱會很有趣,在這樣做的過程中,我還想跟蹤每個(gè)侮辱的最近使用情況(這是為了將來在“insultinfo”類型的命令中使用)。我添加了一個(gè)名為“l(fā)astUsed”的 DATETIME 列。當(dāng)添加新的侮辱時(shí),我的 insultadd 命令能夠?qū)懭氪肆?。問題是當(dāng)我調(diào)用 insult 命令時(shí),它應(yīng)該說出侮辱然后用當(dāng)前日期更新 lastUsed 字段。粘貼下面的代碼。問題是我收到一個(gè)錯(cuò)誤,提示“SQLiteError:沒有這樣的列:”,然后它打印日期值,即使我正在嘗試更新 lastUsed 列,但我不知道如何解決這個(gè)問題。問題必須在 db.prepare 語句中,我只是沒有看到我需要做些什么來修復(fù)它。execute(msg, args) { const SQLite = require("better-sqlite3"); const db = new SQLite('./userinputs.sqlite'); // Check if the table "userinputs" exists and has content from this guild. const table = db.prepare(`SELECT count(*) FROM userinputs WHERE (guild = ${msg.guild.id} OR guild = 'Global') AND type = 'insult';`).get(); if (!table['count(*)']) { return msg.channel.send("I don't have any insults yet"); } var date = new Date(); const rawInsult = db.prepare(`SELECT * FROM userinputs WHERE type = 'insult' AND (guild = ${msg.guild.id} OR guild = 'Global') ORDER BY RANDOM() LIMIT 1;`).get(); const insult = rawInsult['content']; const insultID = rawInsult['row']; if (args[0]) { var target = args[0]; } else { var target = msg.author.username; } if (insult.includes('{}')) { var finalInsult = insult.replace('{}', target); } else { var finalInsult = target + ' ' + insult; } msg.channel.send(finalInsult); db.prepare(`UPDATE userinputs SET lastUsed = "${date}" WHERE row = ${insultID};`).run();},
當(dāng)我看到該列存在時(shí),SQLite 錯(cuò)誤“沒有這樣的列”
湖上湖
2022-12-18 18:39:20