From a61b2ba603e47663cfd6184b2209743337b07c3a Mon Sep 17 00:00:00 2001 From: anselme Date: Tue, 26 May 2015 20:40:05 +0200 Subject: [PATCH] refactoring, and managing being kicked --- sparrowbot.cpp | 84 ++++++++++++++++++++++++++------------------------ sparrowbot.h | 23 ++++++-------- 2 files changed, 53 insertions(+), 54 deletions(-) diff --git a/sparrowbot.cpp b/sparrowbot.cpp index ec9cc2c..0a9332d 100644 --- a/sparrowbot.cpp +++ b/sparrowbot.cpp @@ -19,13 +19,13 @@ void SparrowBot::receiveMsg(QString str) if(str.contains("PING")) { status = ON_CHAN; - emit sendMsg(QString("PONG :%1").arg(msg.nick)); - emit sendMsg(QString("JOIN #%1").arg(chan)); + emit sendMsg(pong(msg.nick)); + emit sendMsg(join(chan)); } break; case ON_CHAN : if(str.contains("PING")) - emit sendMsg(QString("PONG :%1").arg(msg.nick)); + emit sendMsg(pong(msg.nick)); handleMessage(msg); break; } @@ -38,7 +38,7 @@ void SparrowBot::handleMessage(Message msg) { // mise à jour du bot if(msg.args.compare("!update") == 0 && msg.src != NULL && msg.src->isOp()) - disconnect("Rebooting for update..."); + emit sendMsg(quit("Rebooting for update...")); // affiche les gens connectés if(msg.args.compare("!list") == 0) @@ -51,16 +51,7 @@ void SparrowBot::handleMessage(Message msg) str.append(u->getNick()); str.append(" "); } - say(str); - } - - if(msg.args.compare("plop ?") == 0) - action("est content"); - - if(msg.args.compare("!attack") == 0) - { - joinGame(); - action(QString(" hit Lendemor")); + emit sendMsg(say(str)); } } @@ -72,12 +63,17 @@ void SparrowBot::handleMessage(Message msg) else if(msg.command.compare("PART", Qt::CaseInsensitive) == 0) users.remove(msg.src); else if(msg.command.compare("KICK", Qt::CaseInsensitive) == 0) - users.remove(users.getFromNick(msg.target2)); - else if(msg.command.compare("JOIN", Qt::CaseInsensitive) == 0 - && msg.args.contains(chan)) { - users.getOrAdd(msg.nick); - whois(msg.nick); + if(nick.compare(msg.target2) == 0) + emit sendMsg(quit("i've been kicked :(")); + users.remove(users.getFromNick(msg.target2)); + } + else if(msg.command.compare("JOIN", Qt::CaseInsensitive) == 0 + && msg.args.contains(chan) + && nick.compare(msg.nick) != 0) + { + users.getOrAdd(msg.nick); + emit sendMsg(whois(msg.nick)); } // 353 = code de la ligne qui liste les nicks connectés @@ -89,7 +85,7 @@ void SparrowBot::handleMessage(Message msg) for(QString s : names) { users.getOrAdd(s); - whois(s); + emit sendMsg(whois(s)); } } @@ -109,36 +105,42 @@ void SparrowBot::handleMessage(Message msg) } } -void SparrowBot::whois(QString nick) +QString SparrowBot::pong(QString target) { - emit sendMsg(QString("WHOIS %1").arg(nick)); + return QString("PONG :%1").arg(target); } -void SparrowBot::say(QString str) +QString SparrowBot::join(QString theChan) { - emit sendMsg(QString("PRIVMSG #%1 :%2").arg(chan).arg(str)); + return QString("JOIN #%1").arg(theChan); } -void SparrowBot::action(QString str) +QString SparrowBot::whois(QString nick) { - emit sendMsg(QString("PRIVMSG #%1 :\001ACTION %2\001").arg(chan).arg(str)); + return QString("WHOIS %1").arg(nick); +} + +QString SparrowBot::say(QString str) +{ + return QString("PRIVMSG #%1 :%2").arg(chan).arg(str); +} + +QString SparrowBot::privateSay(QString str, QString target) +{ + return QString("PRIVMSG %1 :%2").arg(target).arg(str); +} + +QString SparrowBot::action(QString str) +{ + return QString("PRIVMSG #%1 :\001ACTION %2\001").arg(chan).arg(str); +} + +QString SparrowBot::quit(QString str) +{ + return QString("QUIT :%1").arg(str); } void SparrowBot::disconnect() { - disconnect("I'll be back"); -} - -void SparrowBot::disconnect(QString str) -{ - emit sendMsg(QString("QUIT :%1").arg(str)); -} - -void SparrowBot::joinGame() -{ - if(!isInGame) - { - emit sendMsg(QString("PRIVMSG SparrowMJ :!join patate")); - isInGame = true; - } + emit sendMsg(quit("I'll be back")); } diff --git a/sparrowbot.h b/sparrowbot.h index 50416e0..698de36 100644 --- a/sparrowbot.h +++ b/sparrowbot.h @@ -16,30 +16,27 @@ class SparrowBot : public QObject int status; UserList users; - // custom variables - bool isInGame; public: - SparrowBot() : nick("SparrowBot"), chan("epicsparrow"), status(OFFLINE), isInGame(false) {} - SparrowBot(QString nick_, QString chan_) : nick(nick_), chan(chan_), status(OFFLINE), isInGame(false) {} + SparrowBot(QString nick_, QString chan_) : nick(nick_), chan(chan_), status(OFFLINE) {} private: void handleMessage(Message msg); - void say(QString str); - void whois(QString nick); - void action(QString str); + + // IRC commands + QString pong(QString target); + QString join(QString theChan); + QString privateSay(QString str, QString target); + QString whois(QString nick); + QString say(QString str); + QString action(QString str); + QString quit(QString str); public slots: void receiveMsg(QString msg); void disconnect(); - void disconnect(QString str); signals: void sendMsg(QString msg); - void changeSocketStatus(int newStatus); - -private: - // custom methods - void joinGame(); }; #endif // SPARROWBOT_H