diff options
Diffstat (limited to 'src/core/bs_bot.c')
-rw-r--r-- | src/core/bs_bot.c | 55 |
1 files changed, 37 insertions, 18 deletions
diff --git a/src/core/bs_bot.c b/src/core/bs_bot.c index 45de014ce..adff0bedb 100644 --- a/src/core/bs_bot.c +++ b/src/core/bs_bot.c @@ -22,10 +22,10 @@ class CommandBSBot : public Command private: CommandReturn DoAdd(User *u, std::vector<std::string> ¶ms) { - const char *nick = params[1].c_str(); - const char *user = params[2].c_str(); - const char *host = params[3].c_str(); - const char *real = params[4].c_str(); + const char *nick = params[0].c_str(); + const char *user = params[1].c_str(); + const char *host = params[2].c_str(); + const char *real = params[3].c_str(); const char *ch = NULL; BotInfo *bi; @@ -138,11 +138,11 @@ class CommandBSBot : public Command CommandReturn DoChange(User *u, std::vector<std::string> ¶ms) { - const char *oldnick = params[1].c_str(); - const char *nick = params[2].c_str(); - const char *user = params[3].c_str(); - const char *host = params[4].c_str(); - const char *real = params[5].c_str(); + const char *oldnick = params[0].c_str(); + const char *nick = params[1].c_str(); + const char *user = params[2].c_str(); + const char *host = params[3].c_str(); + const char *real = params[4].c_str(); const char *ch = NULL; BotInfo *bi; @@ -311,7 +311,7 @@ class CommandBSBot : public Command CommandReturn DoDel(User *u, std::vector<std::string> ¶ms) { - const char *nick = params[1].c_str(); + const char *nick = params[0].c_str(); BotInfo *bi; if (!nick) @@ -340,19 +340,13 @@ class CommandBSBot : public Command return MOD_CONT; } public: - CommandBSBot() : Command("BOT", 1, 5) + CommandBSBot() : Command("BOT", 1, 6) { } CommandReturn Execute(User *u, std::vector<std::string> ¶ms) { - const char *cmd = strtok(NULL, " "); - - if (!cmd) - { - this->OnSyntaxError(u); - return MOD_CONT; - } + const char *cmd = params[0].c_str(); if (readonly) { @@ -362,14 +356,39 @@ class CommandBSBot : public Command if (!stricmp(cmd, "ADD")) { + // ADD nick user host real - 5 + if (params.size() < 5) + { + this->OnSyntaxError(u); + return MOD_CONT; + } + + // ADD takes less params than CHANGE, so we need to take 6 if given and append it with a space to 5. + if (params.size() >= 6) + params[5] = params[5] + " " + params[6]; + return this->DoAdd(u, params); } else if (!stricmp(cmd, "CHANGE")) { + // CHANGE oldn newn user host real - 6 + if (params.size() < 6) + { + this->OnSyntaxError(u); + return MOD_CONT; + } + return this->DoChange(u, params); } else if (!stricmp(cmd, "DEL")) { + // DEL nick + if (params.size() < 1) + { + this->OnSyntaxError(u); + return MOD_CONT; + } + return this->DoDel(u, params); } else |