added cmd_events
authorpk910 <philipp@zoelle1.de>
Sat, 24 Sep 2011 00:16:10 +0000 (02:16 +0200)
committerpk910 <philipp@zoelle1.de>
Sat, 24 Sep 2011 00:55:15 +0000 (02:55 +0200)
bot_NeonServ.c
cmd_neonserv_events.c [new file with mode: 0644]

index 046fccc377e1e603fb08aa2d2a4b4df464d9dd0f..a7a4f4d140e596c5127ce09802f1c8fda4636019 100644 (file)
@@ -215,6 +215,7 @@ static const struct default_language_entry msgtab[] = {
     {"NS_BIND_DONE", "New command $b%s$b bound to %s."}, /* {ARGS: "TestCommand", "TestFunction"} */
     {"NS_UNBIND_NOT_FOUND", "There is no command called $b%s$b bound."}, /* {ARGS: "TestCommand"} */
     {"NS_UNBIND_DONE", "Unbound command $b%s$b."}, /* {ARGS: "TestCommand"} */
+    {"NS_EVENTS_HEADER", "The following channel events were found:"},
     {NULL, NULL}
 };
 
@@ -301,6 +302,7 @@ INCLUDE ALL CMD's HERE
 #include "cmd_neonserv_notice.c"
 #include "cmd_neonserv_raw.c"
 #include "cmd_neonserv_reloadlang.c"
+#include "cmd_neonserv_events.c"
 
 //HARDCODED FUN CMD's
 //#include "cmd_neonserv_iplocate.c"
@@ -476,6 +478,7 @@ void init_NeonServ() {
     register_command(BOTID, "invite",       neonserv_cmd_invite,    1, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH,  "#channel_canop",       0);
     register_command(BOTID, "inviteme",     neonserv_cmd_inviteme,  0, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH,  "#channel_getinvite",   0);
     register_command(BOTID, "help",         neonserv_cmd_help,      0, 0,                                                                                           NULL,                   0);
+    register_command(BOTID, "events",       neonserv_cmd_events,    0, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH,  "1",                    0);
     
     register_command(BOTID, "trace",        neonserv_cmd_trace,     1, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH,                                                   NULL,                   400);
     register_command(BOTID, "register",     neonserv_cmd_register,  2, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_CHAN_PARAM | CMDFLAG_OPLOG,              NULL,                   200);
diff --git a/cmd_neonserv_events.c b/cmd_neonserv_events.c
new file mode 100644 (file)
index 0000000..30cc68e
--- /dev/null
@@ -0,0 +1,38 @@
+
+/*
+* argv[0]     time
+* argv[1-*]   match
+*/
+
+static CMD_BIND(neonserv_cmd_events) {
+    char *str_match;
+    int duration = (argc ? strToTime(user, argv[0]) : (60*60*24));
+    if(argc)
+        str_match = merge_argv(argv, (duration ? 1 : 0), argc);
+    else
+        str_match = "*";
+    MYSQL_RES *res;
+    MYSQL_ROW row;
+    printf_mysql_query("SELECT `time`, `auth`, `nick`, `command` FROM `events` WHERE `cid` = '%d' AND `time` > '%lu' ORDER BY `time` ASC", chan->channel_id, ((unsigned long) time(0) - duration));
+    res = mysql_use();
+    int skip = mysql_num_rows(res) - 100;
+    int count = 0;
+    char timeBuf[50];
+    struct tm *timeinfo;
+    time_t event_time;
+    if(skip < 0) skip = 0;
+    reply(getTextBot(), user, "NS_EVENTS_HEADER");
+    while ((row = mysql_fetch_row(res)) != NULL) {
+        if(skip) {
+            skip--;
+            continue;
+        }
+        if(match(str_match, row[3])) continue;
+        count++;
+        event_time = (time_t) atol(row[0]);
+        timeinfo = localtime(&event_time);
+        strftime(timeBuf, 80, "%X %x", timeinfo);
+        reply(getTextBot(), user, "[%s] [%s:%s]: %s", timeBuf, row[2], row[1], row[3]);
+    }
+    reply(getTextBot(), user, "NS_TABLE_COUNT", count);
+}