-/* bot_NeonServ.c - NeonServ v5.0
+/* bot_NeonServ.c - NeonServ v5.1
* Copyright (C) 2011 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
{"NS_NO_ACCESS", "You lack sufficient access to use this command."},
{"NS_USER_PROTECTED", "Sorry, $b%s$b is protected."}, /* {ARGS: "TestUser"} */
{"NS_SERVICE_IMMUNE", "$b%s$b may not be kicked, killed, banned, or deopped."}, /* {ARGS: "TestUser"} */
+ {"NS_YOU_PROTECTED", "You may not kick or ban yourself."},
{"NS_TABLE_NONE", " None"},
{"NS_TABLE_COUNT", "Found $b%d$b matches."}, /* {ARGS: 5} */
{"NS_BAN_ALREADY_ADDED", "$b%s$b is already banned in %s."}, /* {ARGS: "*!*@moeeep.*", "#TestChan"} */
{"NS_MDELUSER_DONE", "Deleted $b%d$b account(s) matching $b%s$b with access from $b%d$b to $b%d$b from the %s user list."}, /* {ARGS: 10, "Test*", 1, 200, "#TestChan"} */
{"NS_TRIM_DURATION_TOO_SHORT", "You must include a minimum inactivity duration of at least %d seconds to trim."},
{"NS_TRIM_DONE", "Trimmed $b%d users$b with access from %d to %d from the %s user list who were inactive for at least %s."}, /* {ARGS: 10, 1, 100, "#TestChan", "10 days"} */
+ {"NS_TRIM_BAN_DONE", "Trimmed $b%d bans$b from the %s ban list who were banned for at least %s."},
{"NS_GIVEOWNER_SELF", "You cannot give ownership to your own account."},
{"NS_GIVEOWNER_TIMEOUT", "You must wait %s before you can give ownership of $b%s$b to someone else."}, /* {ARGS: "5 hours", "#TestChan"} */
{"NS_GIVEOWNER_CONFIRM", "To really give ownership to $b%1$s$b, you must use 'giveownership *%1$s %2$s'."}, /* {ARGS: "TestUser", "abc123"} */
{"NS_BAN_DONE", "$b%d$b masks added to the %s ban list. (matching %d users)"}, /* {ARGS: 5, "#TestChan", 15} */
{"NS_BAN_FAIL", "$b%s$b could not ban some of the nicks you provided."}, /* {ARGS: "NeonServ"} */
{"NS_LAME_MASK", "$b%s$b is a little too general. Try making it more specific."}, /* {ARGS: "*!*@*"} */
+ {"NS_LAME_MASK_WARNING", "$k4WARNING$k: $b%s$b is very general. (matches %d users)"},
{"NS_SET_HEADER", "Channel Settings for %s:"}, /* {ARGS: "#TestChan"} */
{"NS_SET_ON", "on"},
{"NS_SET_OFF", "off"},
{"NS_SETRANK_ORDER_INVALID", "%d is an invalid numeric value. (valid: 1-99)"}, /* {ARGS: 100} */
{"NS_ASSIGNRANK_DONE", "$b%s$b is now ranked as '$b%s$b'."}, /* {ARGS: "TestUser", "Supporter"} */
{"NS_INFO_HEADER", "$b%s$b Information:"},
- {"NS_INFO_DEFAULTTOPIC", "$bDefault Topic:$b"},
- {"NS_INFO_MODELOCK", "$bMode Lock:$b"},
- {"NS_INFO_RECORD", "$bRecord Visitors:$b"},
- {"NS_INFO_OWNER", "$bOwner:$b"},
- {"NS_INFO_USERS", "$bTotal User Count:$b"},
- {"NS_INFO_BANS", "$bBan Count:$b"},
- {"NS_INFO_VISITED", "$bVisited:$b"},
- {"NS_INFO_REGISTERED", "$bRegistered:$b"},
- {"NS_INFO_REGISTRAR", "$bRegistered by:$b"},
+ {"NS_INFO_DEFAULTTOPIC", "Default Topic:"},
+ {"NS_INFO_MODELOCK", "Mode Lock:"},
+ {"NS_INFO_RECORD", "Record Visitors:"},
+ {"NS_INFO_OWNER", "Owner:"},
+ {"NS_INFO_USERS", "Total User Count:"},
+ {"NS_INFO_BANS", "Ban Count:"},
+ {"NS_INFO_VISITED", "Visited:"},
+ {"NS_INFO_REGISTERED", "Registered:"},
+ {"NS_INFO_REGISTRAR", "Registered by:"},
{"NS_INFO_OWNERLOG", "Ownership transfer history for $b%s$b:"},
- {"NS_INFO_OWNERCHANGE", " from %s to %s on %s (%s)"},
+ {"NS_INFO_OWNERCHANGE", " from %s to %s on %s"},
+ {"NS_RENAME_DONE", "Renamed $b%s$b to $b%s$b."},
+ {"NS_RENAME_FAIL", "Failed renaming $b%s$b."},
+ {"NS_FUN_DISABLED", "Fun commands are disabled in %s."},
{NULL, NULL}
};
-/* TODO:
-trim bans
+/* TODO:
cmd_neonserv_open.c
-cmd_neonserv_info.c
-parse, check and set modelock
+set modelock
cmd_neonserv_modcmd.c
cmd_neonserv_allowregister.c
cmd_neonserv_noregister.c
cmd_neonserv_unvisited.c
cmd_neonserv_merge.c
cmd_neonserv_dnrsearch.c
-cmd_neonserv_rename.c
cmd_neonserv_iplocate.c
cmd_neonserv_calc.c
*/
#include "event_neonserv_join.c"
#include "event_neonserv_part.c"
#include "event_neonserv_quit.c"
-//#include "event_neonserv_kick.c"
-//#include "event_neonserv_mode.c"
+#include "event_neonserv_kick.c"
+#include "event_neonserv_mode.c"
#include "event_neonserv_ctcp.c"
#include "event_neonserv_notice.c"
#include "event_neonserv_invite.c"
}
static void neonserv_trigger_callback(struct ChanNode *chan, char *trigger) {
- strcpy(trigger, "+");
+ MYSQL_RES *res;
+ MYSQL_ROW row;
+ loadChannelSettings(chan);
+ printf_mysql_query("SELECT `trigger` FROM `bot_channels` LEFT JOIN `bots` ON `botid` = `bots`.`id` WHERE `chanid` = '%d' AND `botclass` = '%d'", chan->channel_id, BOTID);
+ res = mysql_use();
+ row = mysql_fetch_row(res);
+ strcpy(trigger, (strlen(row[0]) ? row[0] : "+"));
}
static void start_bots() {
USER_COMMAND("events", neonserv_cmd_events, 0, "1", CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH);
USER_COMMAND("command", neonserv_cmd_command, 1, NULL, 0);
USER_COMMAND("info", neonserv_cmd_info, 0, NULL, CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN);
+ USER_COMMAND("extscript", neonserv_cmd_extscript, 0, NULL, CMDFLAG_EMPTY_ARGS);
#undef USER_COMMAND
#define OPER_COMMAND(NAME,FUNCTION,PARAMCOUNT,GACCESS,FLAGS) register_command(BOTID, NAME, FUNCTION, PARAMCOUNT, NULL, GACCESS, FLAGS)
OPER_COMMAND("setrank", neonserv_cmd_setrank, 1, 1000, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_OPLOG);
OPER_COMMAND("assignrank", neonserv_cmd_assignrank,2, 1000, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_OPLOG);
OPER_COMMAND("listrank", neonserv_cmd_listrank, 0, 1, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_OPLOG);
- OPER_COMMAND("debug", neonserv_cmd_debug, 0, 1, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_OPLOG);
+ OPER_COMMAND("rename", neonserv_cmd_rename, 2, 300, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_OPLOG);
+ OPER_COMMAND("unvisited", neonserv_cmd_unvisited, 0, 400, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_OPLOG);
#undef OPER_COMMAND
start_bots();
bind_channotice(neonserv_event_channotice);
bind_topic(neonserv_event_topic);
bind_invite(neonserv_event_invite);
+ bind_mode(neonserv_event_mode);
+ bind_kick(neonserv_event_kick);
set_trigger_callback(BOTID, neonserv_trigger_callback);