diff options
-rw-r--r-- | arch/tmpfiles.conf | 3 | ||||
-rw-r--r-- | db.c | 2 | ||||
-rw-r--r-- | query.c | 15 |
3 files changed, 16 insertions, 4 deletions
diff --git a/arch/tmpfiles.conf b/arch/tmpfiles.conf index 5702e68..6c8b57d 100644 --- a/arch/tmpfiles.conf +++ b/arch/tmpfiles.conf @@ -1,2 +1,3 @@ d /etc/ksyxbot/ 0700 ksyxbot nobody - -d /var/lib/ksyxbot/ 0700 ksyxbot nobody - +d /var/lib/ksyxbot/ 0755 ksyxbot nobody - +d /var/lib/ksyxbot/td/ 0700 ksyxbot nobody - @@ -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; } @@ -53,8 +53,10 @@ 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]; + char msg_stat[512]; sqlite3_stmt *stmt_query = query ? stmt_search : stmt_random; memset(results_inline, 0, sizeof(results_inline)); @@ -68,10 +70,15 @@ int handle_inline(struct TdUpdateNewInlineQuery *update) { } goto cleanup; } + if ((r = sqlite3_bind_int64(stmt_personal_stat, 2, update->sender_user_id_))) { + goto sql_err; + } 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 +89,11 @@ int handle_inline(struct TdUpdateNewInlineQuery *update) { } } - snprintf(msg_stat, sizeof(msg_stat), "我已经卖了 %d 句菜", personal_stat); + if (ranking > 0) { + snprintf(msg_stat, sizeof(msg_stat), "我已经卖了 %d 句菜,TGCN 排名 %d / %d", personal_stat, ranking, total); + } else { + snprintf(msg_stat, sizeof(msg_stat), "您从未卖过菜!"); + } 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++; |