summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/tmpfiles.conf3
-rw-r--r--db.c2
-rw-r--r--query.c15
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 -
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..80b92aa 100644
--- a/query.c
+++ b/query.c
@@ -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++;