From 29ebc57b6d1cfedd767a35884f24726325f7d76d Mon Sep 17 00:00:00 2001 From: pk910 Date: Sat, 24 Sep 2011 02:16:10 +0200 Subject: [PATCH] added cmd_events --- bot_NeonServ.c | 3 +++ cmd_neonserv_events.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 cmd_neonserv_events.c diff --git a/bot_NeonServ.c b/bot_NeonServ.c index 046fccc..a7a4f4d 100644 --- a/bot_NeonServ.c +++ b/bot_NeonServ.c @@ -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 index 0000000..30cc68e --- /dev/null +++ b/cmd_neonserv_events.c @@ -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); +} -- 2.20.1