diff --git a/main.cpp b/main.cpp index fbe5068..102a32b 100644 --- a/main.cpp +++ b/main.cpp @@ -11,7 +11,7 @@ int main(int argc, char *argv[]) sock.setPort(6667); // create the bot - SparrowBot* bot = new SparrowBot("SparrowBot", "epicsparrow"); + SparrowBot* bot = new SparrowBot("SparrowBotDebug", "epicsparrow"); // connect the bot to the socket QObject::connect(&sock, SIGNAL(receivedMsg(QString)), bot, SLOT(receiveMsg(QString))); diff --git a/sparrowbot.cpp b/sparrowbot.cpp index 2047f79..2186596 100644 --- a/sparrowbot.cpp +++ b/sparrowbot.cpp @@ -13,19 +13,19 @@ void SparrowBot::receiveMsg(QString str) { case OFFLINE : status = ONLINE; - emit sendMsg(QString("NICK %1\r\nUSER %2 0 * %3\r\n").arg(nick).arg(nick).arg(nick)); + emit sendMsg(QString("NICK %1\r\nUSER %2 0 * %3").arg(nick).arg(nick).arg(nick)); break; case ONLINE : if(str.contains("PING")) { status = ON_CHAN; - emit sendMsg(QString("PONG :%1\r\n").arg(msg.nick)); - emit sendMsg("JOIN #" + chan + "\r\n"); + emit sendMsg(QString("PONG :%1").arg(msg.nick)); + emit sendMsg(QString("JOIN #%1").arg(chan)); } break; case ON_CHAN : if(str.contains("PING")) - emit sendMsg(QString("PONG :%1\r\n").arg(msg.nick)); + emit sendMsg(QString("PONG :%1").arg(msg.nick)); handleMessage(msg); break; } @@ -53,8 +53,15 @@ void SparrowBot::handleMessage(Message msg) } say(str); } + if(msg.args.compare("plop ?") == 0) action("est content"); + + if(msg.args.compare("!attack") == 0) + { + joinGame(); + action(QString(" hit Lendemor")); + } } // renommage @@ -62,11 +69,15 @@ void SparrowBot::handleMessage(Message msg) msg.src->rename(msg.args); else if(msg.command.compare("QUIT", Qt::CaseInsensitive) == 0) users.remove(msg.src); + 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); - emit sendMsg(QString("WHOIS %1\r\n").arg(msg.nick)); + whois(msg.nick); } // 353 = code de la ligne qui liste les nicks connectés @@ -78,7 +89,7 @@ void SparrowBot::handleMessage(Message msg) for(QString s : names) { users.getOrAdd(s); - emit sendMsg(QString("WHOIS %1").arg(s)); + whois(s); } } @@ -98,6 +109,11 @@ void SparrowBot::handleMessage(Message msg) } } +void SparrowBot::whois(QString nick) +{ + emit sendMsg(QString("WHOIS %1").arg(nick)); +} + void SparrowBot::say(QString str) { emit sendMsg(QString("PRIVMSG #%1 :%2").arg(chan).arg(str)); @@ -105,7 +121,7 @@ void SparrowBot::say(QString str) void SparrowBot::action(QString str) { - emit sendMsg(QString("PRIVMSG #%1 :ACTION %2 ").arg(chan).arg(str)); + emit sendMsg(QString("PRIVMSG #%1 :\001ACTION %2\001").arg(chan).arg(str)); } void SparrowBot::disconnect() @@ -116,5 +132,14 @@ void SparrowBot::disconnect() 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; + } +} diff --git a/sparrowbot.h b/sparrowbot.h index 2c4f39f..50416e0 100644 --- a/sparrowbot.h +++ b/sparrowbot.h @@ -14,15 +14,18 @@ class SparrowBot : public QObject QString nick; QString chan; int status; - UserList users; + + // custom variables + bool isInGame; public: - SparrowBot() : nick("SparrowBot"), chan("epicsparrow"), status(OFFLINE) {} - SparrowBot(QString nick_, QString chan_) : nick(nick_), chan(chan_), status(OFFLINE) {} + SparrowBot() : nick("SparrowBot"), chan("epicsparrow"), status(OFFLINE), isInGame(false) {} + SparrowBot(QString nick_, QString chan_) : nick(nick_), chan(chan_), status(OFFLINE), isInGame(false) {} private: void handleMessage(Message msg); void say(QString str); + void whois(QString nick); void action(QString str); public slots: @@ -33,6 +36,10 @@ public slots: signals: void sendMsg(QString msg); void changeSocketStatus(int newStatus); + +private: + // custom methods + void joinGame(); }; #endif // SPARROWBOT_H