X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fbot_NeonSpam.c;h=73755b733f30ba07cdb6b370fde59c4bc407ba6c;hb=490b4afc3013f598f96d41fd5a13f86e8af49937;hp=56258e0fcfa3138523eb4eb28a526d171998c81f;hpb=9b2a1231294413f079b2d5620ce7066687ae1d03;p=NeonServV5.git diff --git a/src/bot_NeonSpam.c b/src/bot_NeonSpam.c index 56258e0..73755b7 100644 --- a/src/bot_NeonSpam.c +++ b/src/bot_NeonSpam.c @@ -16,7 +16,27 @@ */ #include "bot_NeonSpam.h" +#include "modcmd.h" +#include "IRCParser.h" +#include "IRCEvents.h" +#include "UserNode.h" +#include "ChanNode.h" +#include "ChanUser.h" +#include "ModeNode.h" +#include "BanNode.h" +#include "ClientSocket.h" +#include "mysqlConn.h" +#include "lang.h" +#include "HandleInfoHandler.h" +#include "WHOHandler.h" +#include "DBHelper.h" +#include "tools.h" +#include "timeq.h" +#include "version.h" +#include "EventLogger.h" +#include "bots.h" #include "cmd_neonserv.h" +#include "cmd_neonspam.h" #define BOTID 2 @@ -24,8 +44,12 @@ static const struct default_language_entry msgtab[] = { {NULL, NULL} }; +static int loadNeonSpamSettings(struct ChanNode *chan); +static void createSpamNode(struct ChanUser *chanuser); + //EVENTS //#include "event_neonspam_join.c" +#include "event_neonspam_chanmsg.c" static void neonspam_bot_ready(struct ClientSocket *client) { MYSQL_RES *res; @@ -91,11 +115,44 @@ static void start_bots() { } } } - +} + +static int loadNeonSpamSettings(struct ChanNode *chan) { + struct NeonSpamSettings *settings = malloc(sizeof(*settings)); + if(!settings) { + perror("malloc() failed"); + return 0; + } + settings->flags = SPAMSETTINGS_SCANVOICE | SPAMSETTINGS_FLOODSCAN | SPAMSETTINGS_SPAMSCAN; + settings->spam_amount = 3; + settings->flood_amount = 4; + settings->flood_time = 5; + chan->spam_settings = settings; + return 1; +} + +static void createSpamNode(struct ChanUser *chanuser) { + struct NeonSpamNode *spamnode = malloc(sizeof(*spamnode)); + if(!spamnode) { + perror("malloc() failed"); + return; + } + spamnode->lastmsg = 0; + spamnode->spamcount = 0; + spamnode->floodpenalty = 0; + spamnode->last_penalty_update = time(0); + chanuser->spamnode = spamnode; } void init_NeonSpam() { + #define USER_COMMAND(NAME,FUNCTION,PARAMCOUNT,PRIVS,FLAGS) register_command(BOTID, NAME, FUNCTION, PARAMCOUNT, PRIVS, 0, FLAGS) + // NAME FUNCTION PARAMS PRIVS FLAGS + USER_COMMAND("netinfo", neonserv_cmd_netinfo, 0, NULL, 0); + USER_COMMAND("version", neonserv_cmd_version, 0, NULL, 0); + USER_COMMAND("set", neonspam_cmd_set, 0, "#channel_setters", CMDFLAG_REQUIRE_CHAN | CMDFLAG_REGISTERED_CHAN | CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_LOG); + #undef USER_COMMAND + #define OPER_COMMAND(NAME,FUNCTION,PARAMCOUNT,GACCESS,FLAGS) register_command(BOTID, NAME, FUNCTION, PARAMCOUNT, NULL, GACCESS, FLAGS) // NAME FUNCTION PARAMS ACCS FLAGS OPER_COMMAND("register", neonserv_cmd_register, 1, 200, CMDFLAG_REQUIRE_AUTH | CMDFLAG_CHECK_AUTH | CMDFLAG_CHAN_PARAM | CMDFLAG_OPLOG); @@ -109,6 +166,8 @@ void init_NeonSpam() { //register events bind_bot_ready(neonspam_bot_ready); //bind_join(neonspam_event_join); + bind_chanmsg(neonspam_event_chanmsg); + bind_privctcp(general_event_privctcp); set_trigger_callback(BOTID, neonspam_trigger_callback);