X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=blobdiff_plain;f=src%2Fmodules%2FNeonSpam.mod%2Fbot_NeonSpam.c;h=de645c2470edf4ea752fc579b6c1762c107660de;hp=b4db7243f8bae67f2cff0309542c98d51dcfbc53;hb=ee3a72eb4a412a0a504d070db1b41c6907f7604d;hpb=939c6051a3ee85e3b3877fde35bdbf36ecb94fbc diff --git a/src/modules/NeonSpam.mod/bot_NeonSpam.c b/src/modules/NeonSpam.mod/bot_NeonSpam.c index b4db724..de645c2 100644 --- a/src/modules/NeonSpam.mod/bot_NeonSpam.c +++ b/src/modules/NeonSpam.mod/bot_NeonSpam.c @@ -183,6 +183,7 @@ static void start_bots(int type) { client->flags |= (strcmp(row[6], "0") ? SOCKET_FLAG_PREFERRED : 0); client->flags |= (strcmp(row[8], "0") ? SOCKET_FLAG_USE_QUEUE : 0); client->flags |= (strcmp(row[9], "0") ? SOCKET_FLAG_SSL : 0); + client->flags |= SOCKET_FLAG_REQUEST_INVITE; client->botid = BOTID; client->clientid = atoi(row[7]); connect_socket(client); @@ -373,6 +374,36 @@ static int neonspam_event_freechan(struct ChanNode *chan) { return 1; } +static void neonspam_event_invite(struct ClientSocket *client, struct UserNode *user, char *channel) { + if(client->botid != BOTID) + return; + MYSQL_RES *res; + MYSQL_ROW row; + printf_mysql_query("SELECT `botid`, `bot_channels`.`id`, `suspended` FROM `bot_channels` LEFT JOIN `bots` ON `bot_channels`.`botid` = `bots`.`id` LEFT JOIN `channels` ON `chanid` = `channel_id` WHERE `channel_name` = '%s' AND `botclass` = '%d'", escape_string(channel), client->botid); + res = mysql_use(); + if ((row = mysql_fetch_row(res)) == NULL) { + reply(client, user, "NS_INVITE_FAIL", channel, client->user->nick); + return; + } + if(!strcmp(row[2], "1")) { + reply(client, user, "MODCMD_CHAN_SUSPENDED"); + return; + } + int botid = atoi(row[0]); + struct ClientSocket *bot; + for(bot = getBots(SOCKET_FLAG_READY, NULL); bot; bot = getBots(SOCKET_FLAG_READY, bot)) { + if(bot->clientid == botid) + break; + } + if(bot) { + struct ChanNode *chan = getChanByName(channel); + if(chan && isUserOnChan(bot->user, chan)) { + reply(client, user, "NS_INVITE_ON_CHAN", bot->user->nick, chan->name); + } else + putsock(bot, "JOIN %s", channel); + } +} + void init_NeonSpam(int type) { set_bot_alias(BOTID, BOTALIAS); @@ -387,7 +418,8 @@ void init_NeonSpam(int type) { bind_privctcp(general_event_privctcp, module_id); bind_kick(neonspam_event_kick, module_id); bind_freechan(neonspam_event_freechan, module_id); - + bind_invite(neonspam_event_invite, module_id); + set_trigger_callback(BOTID, module_id, neonspam_trigger_callback); register_default_language_table(msgtab);