Discord.js 获取用户的排名位置
Posted
技术标签:
【中文标题】Discord.js 获取用户的排名位置【英文标题】:Discord.js get rank position of user 【发布时间】:2021-11-26 20:06:35 【问题描述】:我想获取XP点数低于使用命令的成员的用户数,这样我可以得到他的排名。
但是我对 javascript 和 sql 查询知之甚少,而且我很难坚持这一点,它只是返回 [object Object] 而不是数字。
我的sql表
const table = sql.prepare("SELECT count(*) FROM sqlite_master WHERE type='table' AND name = 'scores';").get();
if (!table['count(*)'])
// If the table isn't there, create it and setup the database correctly.
sql.prepare("CREATE TABLE scores (id TEXT PRIMARY KEY, user TEXT, guild TEXT, points INTEGER, level INTEGER, money INTEGER);").run();
// Ensure that the "id" row is always unique and indexed.
sql.prepare("CREATE UNIQUE INDEX idx_scores_id ON scores (id);").run();
sql.pragma("synchronous = 1");
sql.pragma("journal_mode = wal");
// And then we have two prepared statements to get and set the score data.
client.getScore = sql.prepare("SELECT * FROM scores WHERE user = ? AND guild = ?");
client.setScore = sql.prepare("INSERT OR REPLACE INTO scores (id, user, guild, points, level, money) VALUES (@id, @user, @guild, @points, @level, @money);");
);
我的尝试
if (message.content.startsWith(prefix + "cl stats"))
const curxp = score.points;
client.rank = sql.prepare("SELECT count(*) FROM scores WHERE points >= @curxp AND guild = @guild").get();
console.log(client.rank);
await message.reply(`$client.rank`);
【问题讨论】:
client.rank
记录了什么?
我希望它存储匹配所选条件的行数(也就是 xp 小于客户端的用户数)
【参考方案1】:
找到了解决办法。可能不是最好的,但它确实有效。
client.getRank = sql.prepare("SELECT count(*) FROM scores WHERE points >= ? AND guild = ?");
function getRank()
const curXP = score.points;
let rankOBJ = client.getRank.get(curXP, message.guild.id)
console.log(rankOBJ);
let rankStr = JSON.stringify(rankOBJ);
let rank = rankStr.match(/\d/g);
return rank;
;
【讨论】:
以上是关于Discord.js 获取用户的排名位置的主要内容,如果未能解决你的问题,请参考以下文章
**已解决** discord.js guildMemberAdd() 未向对象添加正确的值
我的 Heroku Discord 机器人离线 - discord.js