From c9e129681bd042f358a5c63f9ac91ce4c33ef603 Mon Sep 17 00:00:00 2001 From: Yuuta Liang Date: Wed, 3 Apr 2024 13:36:30 -0700 Subject: Add ranking --- db.c | 2 +- query.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/db.c b/db.c index 44cf0d8..6b13058 100644 --- a/db.c +++ b/db.c @@ -164,7 +164,7 @@ void db_init(void) { goto sql_err; } - if ((r = sqlite3_prepare_v2(db, "SELECT i FROM stats WHERE user = ?", -1, &stmt_personal_stat, NULL))) { + if ((r = sqlite3_prepare_v2(db, "SELECT * FROM (SELECT i FROM stats WHERE user = ?), (SELECT COUNT(i) FROM stats WHERE i >= (SELECT i FROM stats WHERE user = ?)), (SELECT COUNT(i) FROM stats)", -1, &stmt_personal_stat, NULL))) { errmsg = (char *) sqlite3_errstr(r); goto sql_err; } diff --git a/query.c b/query.c index 3905ae2..d052039 100644 --- a/query.c +++ b/query.c @@ -53,6 +53,8 @@ int handle_inline(struct TdUpdateNewInlineQuery *update) { const bool query = update->query_; char *query_str = NULL; int personal_stat = 0; + int ranking = 0; + int total = 0; char id_temp[32]; char msg_stat[32]; sqlite3_stmt *stmt_query = query ? stmt_search : stmt_random; @@ -72,6 +74,8 @@ int handle_inline(struct TdUpdateNewInlineQuery *update) { switch (r = sqlite3_step(stmt_personal_stat)) { case SQLITE_ROW: { personal_stat = sqlite3_column_int(stmt_personal_stat, 0); + ranking = sqlite3_column_int(stmt_personal_stat, 1); + total = sqlite3_column_int(stmt_personal_stat, 2); break; } case SQLITE_DONE: { @@ -82,7 +86,7 @@ int handle_inline(struct TdUpdateNewInlineQuery *update) { } } - snprintf(msg_stat, sizeof(msg_stat), "我已经卖了 %d 句菜", personal_stat); + snprintf(msg_stat, sizeof(msg_stat), "我已经卖了 %d 句菜,TGCN 排名 %d / %d", personal_stat, ranking, total); snprintf(id_temp, sizeof(id_temp), "s%lld", update->sender_user_id_); results_inline[0] = create_inline_result(id_temp, "卖菜统计", "点击发送卖菜统计", msg_stat); effective_items_count++; -- cgit v1.2.3