From: pk910 Date: Tue, 20 Sep 2011 22:03:18 +0000 (+0200) Subject: added cmd_help X-Git-Tag: v5.3~392 X-Git-Url: http://git.pk910.de/?a=commitdiff_plain;h=8520a65b0b9ddefca9aee4cde195fd5c9483ada8;p=NeonServV5.git added cmd_help --- diff --git a/bot_NeonServ.c b/bot_NeonServ.c index 9c144bd..baba9af 100644 --- a/bot_NeonServ.c +++ b/bot_NeonServ.c @@ -202,6 +202,7 @@ static const struct default_language_entry msgtab[] = { {"NS_INVITE_DONE", "Invited $b%s$b to join %s."}, {"NS_INVITEME_ON_CHAN", "You are already in $b%s$b."}, {"NS_INVITEME_DONE", "You have been invited to join %s."}, + {"NS_HELP_TOPIC", "No help on that topic."}, {NULL, NULL} }; @@ -259,7 +260,7 @@ INCLUDE ALL CMD's HERE #include "cmd_neonserv_set.c" /* TODO: parse, check and set modelock */ //#include "cmd_neonserv_events.c" #include "cmd_neonserv_resync.c" -//#include "cmd_neonserv_help.c" +#include "cmd_neonserv_help.c" #include "cmd_neonserv_version.c" #include "cmd_neonserv_chanservsync.c" @@ -442,6 +443,7 @@ void init_NeonServ() { register_command(BOTID, "unbanme", neonserv_cmd_unbanme, 0, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH, "#channel_canban", 0); 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, "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, 100); diff --git a/cmd_neonserv_help.c b/cmd_neonserv_help.c new file mode 100644 index 0000000..5c669a2 --- /dev/null +++ b/cmd_neonserv_help.c @@ -0,0 +1,79 @@ + +/* +* argv[0-*] index +*/ + +static CMD_BIND(neonserv_cmd_help) { + char *ident; + if(argc) + ident = merge_argv(argv, 0, argc); + else + ident = "0"; + MYSQL_RES *res; + MYSQL_ROW row; + printf_mysql_query("SELECT `user_lang` FROM `users` WHERE `user_user` = '%s'", escape_string(user->auth)); + res = mysql_use(); + char *lang; + if ((row = mysql_fetch_row(res)) != NULL) + lang = row[0]; + else + lang = "en"; + printf_mysql_query("SELECT `text` FROM `help` WHERE `lang` = '%s' AND `ident` = '%s'", escape_string(lang), escape_string(ident)); + res = mysql_use(); + if ((row = mysql_fetch_row(res)) == NULL) { + if(stricmp(lang, "en")) { + printf_mysql_query("SELECT `text` FROM `help` WHERE `lang` = 'en' AND `ident` = '%s'", escape_string(ident)); + res = mysql_use(); + } + if ((row = mysql_fetch_row(res)) == NULL) { + reply(getTextBot(), user, "NS_HELP_TOPIC"); + return; + } + } + char sendBuf[MAXLEN]; + int sendBufPos = 0; + int i; + for(i = 0; i < strlen(row[0]); i++) { + switch(row[0][i]) { + case '\n': + if(sendBufPos) { + sendBuf[sendBufPos] = '\0'; + reply(getTextBot(), user, "%s", sendBuf); + sendBufPos = 0; + } + break; + case '$': + switch(row[0][i+1]) { + case 'b': + sendBuf[sendBufPos++] = '\002'; + i++; + break; + case 'k': + sendBuf[sendBufPos++] = '\003'; + i++; + break; + case 'u': + sendBuf[sendBufPos++] = '\031'; + i++; + break; + case 'C': + case 'S': + sendBufPos += sprintf(sendBuf + sendBufPos, "%s", client->user->nick); + i++; + break; + default: + sendBuf[sendBufPos++] = '$'; + break; + } + break; + default: + sendBuf[sendBufPos++] = row[0][i]; + break; + } + } + if(sendBufPos) { + sendBuf[sendBufPos] = '\0'; + reply(getTextBot(), user, "%s", sendBuf); + sendBufPos = 0; + } +}