【发布时间】:2018-04-07 20:41:24
【问题描述】:
我是 discord.js 的新手,在消息中显示/排序来自 sqlite 数据库的数据时遇到问题。我目前正在更新每个用户行,因为他们在服务器中发送消息,这工作正常。但是,我想要一个“排行榜”,使用数据库中包含的数据。
这是我正在尝试的改进版本:
var Discord = require('discord.js');
var bot = new Discord.Client();
var moment = require('moment');
var Roll = require('roll'),
const sql = require("sqlite");
sql.open("userData.sqlite");
bot.on('message', message => {
var prefix = config.prefix;
var sender = message.author;
var msg = message.content.toUpperCase();
sql.get(`SELECT * FROM userData WHERE userId ="${message.author.id}"`).then(row => {
if (!row) {
sql.run("INSERT INTO userData (userId, username, level, money, time) VALUES (?, ?, ?, ?, ?)", [message.author.id, sender.username, 0, 0, 0]);
}
}).catch(() => {
console.error;
sql.run("CREATE TABLE IF NOT EXISTS userData (userId TEXT, username TEXT, level INTEGER, money INTEGER, time INTEGER)").then(() => {
sql.run("INSERT INTO userData (userId, username, level, money, time) VALUES (?, ?, ?, ?, ?)", [message.author.id, sender.username, 0, 0, 0]);
});
});
});
读取数据并在消息中发送内容的命令可以正常工作,例如:
if (msg === prefix + 'MONEY') {
sql.get(`SELECT * FROM userData WHERE userId ="${sender.id}"`).then(row => {
message.channel.send(`You have: $${row.money}`)
})
}
但是,我对 sqlite 不是很了解,关于排序/显示的文档似乎对我不起作用。我试着看看有多少总用户以及他们有多少钱(对于小游戏):
if (msg === prefix + 'LEADERBOARD') {
sql.get(`SELECT username,money FROM userData ORDER BY username`).then(rows => {
message.channel.send(rows);
})
}
但是,这会返回:UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): DiscordAPIError: Cannot send an empty message.
任何帮助或建议将不胜感激!
【问题讨论】:
标签: node.js sqlite discord.js