diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/bs_bot.c | 51 |
1 files changed, 31 insertions, 20 deletions
diff --git a/src/core/bs_bot.c b/src/core/bs_bot.c index 0a69cc971..24f808faa 100644 --- a/src/core/bs_bot.c +++ b/src/core/bs_bot.c @@ -310,26 +310,37 @@ int do_bot(User * u) send_event(EVENT_BOT_CHANGE, 1, bi->nick); } } else if (!stricmp(cmd, "DEL")) { - char *nick = strtok(NULL, " "); - - if (!nick) - syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX); - else if (readonly) - notice_lang(s_BotServ, u, BOT_BOT_READONLY); - else if (!(bi = findbot(nick))) - notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, nick); - else { - send_event(EVENT_BOT_DEL, 1, bi->nick); - ircdproto->SendQuit(bi, - "Quit: Help! I'm being deleted by %s!", - u->nick); - if (ircd->sqline) { - ircdproto->SendSQLineDel(bi->nick); - } - delete bi; - - notice_lang(s_BotServ, u, BOT_BOT_DELETED, nick); - } + char *nick = strtok(NULL, " "); + + if (!nick) + { + syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX); + return MOD_CONT; + } + + if (readonly) + { + notice_lang(s_BotServ, u, BOT_BOT_READONLY); + return MOD_CONT; + } + + if (!(bi = findbot(nick))) + { + notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST, nick); + return MOD_CONT; + } + + if (nickIsServices(nick, 0)) + { + notice_lang(s_BotServ, u, BOT_DOES_NOT_EXIST); + return MOD_CONT; + } + + send_event(EVENT_BOT_DEL, 1, bi->nick); + ircdproto->SendQuit(bi, "Quit: Help! I'm being deleted by %s!", u->nick); + ircdproto->SendSQLineDel(bi->nick); + delete bi; + notice_lang(s_BotServ, u, BOT_BOT_DELETED, nick); } else syntax_error(s_BotServ, u, "BOT", BOT_BOT_SYNTAX); |