commands PART and KICK are now handled, and attack action has been added

This commit is contained in:
anselme 2015-05-26 19:36:43 +02:00
parent d86feee482
commit 9c440b9760
3 changed files with 43 additions and 11 deletions

View File

@ -11,7 +11,7 @@ int main(int argc, char *argv[])
sock.setPort(6667); sock.setPort(6667);
// create the bot // create the bot
SparrowBot* bot = new SparrowBot("SparrowBot", "epicsparrow"); SparrowBot* bot = new SparrowBot("SparrowBotDebug", "epicsparrow");
// connect the bot to the socket // connect the bot to the socket
QObject::connect(&sock, SIGNAL(receivedMsg(QString)), bot, SLOT(receiveMsg(QString))); QObject::connect(&sock, SIGNAL(receivedMsg(QString)), bot, SLOT(receiveMsg(QString)));

View File

@ -13,19 +13,19 @@ void SparrowBot::receiveMsg(QString str)
{ {
case OFFLINE : case OFFLINE :
status = ONLINE; 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; break;
case ONLINE : case ONLINE :
if(str.contains("PING")) if(str.contains("PING"))
{ {
status = ON_CHAN; status = ON_CHAN;
emit sendMsg(QString("PONG :%1\r\n").arg(msg.nick)); emit sendMsg(QString("PONG :%1").arg(msg.nick));
emit sendMsg("JOIN #" + chan + "\r\n"); emit sendMsg(QString("JOIN #%1").arg(chan));
} }
break; break;
case ON_CHAN : case ON_CHAN :
if(str.contains("PING")) if(str.contains("PING"))
emit sendMsg(QString("PONG :%1\r\n").arg(msg.nick)); emit sendMsg(QString("PONG :%1").arg(msg.nick));
handleMessage(msg); handleMessage(msg);
break; break;
} }
@ -53,8 +53,15 @@ void SparrowBot::handleMessage(Message msg)
} }
say(str); say(str);
} }
if(msg.args.compare("plop ?") == 0) if(msg.args.compare("plop ?") == 0)
action("est content"); action("est content");
if(msg.args.compare("!attack") == 0)
{
joinGame();
action(QString(" hit Lendemor"));
}
} }
// renommage // renommage
@ -62,11 +69,15 @@ void SparrowBot::handleMessage(Message msg)
msg.src->rename(msg.args); msg.src->rename(msg.args);
else if(msg.command.compare("QUIT", Qt::CaseInsensitive) == 0) else if(msg.command.compare("QUIT", Qt::CaseInsensitive) == 0)
users.remove(msg.src); 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 else if(msg.command.compare("JOIN", Qt::CaseInsensitive) == 0
&& msg.args.contains(chan)) && msg.args.contains(chan))
{ {
users.getOrAdd(msg.nick); 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 // 353 = code de la ligne qui liste les nicks connectés
@ -78,7 +89,7 @@ void SparrowBot::handleMessage(Message msg)
for(QString s : names) for(QString s : names)
{ {
users.getOrAdd(s); 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) void SparrowBot::say(QString str)
{ {
emit sendMsg(QString("PRIVMSG #%1 :%2").arg(chan).arg(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) 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() void SparrowBot::disconnect()
@ -116,5 +132,14 @@ void SparrowBot::disconnect()
void SparrowBot::disconnect(QString str) void SparrowBot::disconnect(QString str)
{ {
emit sendMsg(QString("QUIT :%1").arg(str)); emit sendMsg(QString("QUIT :%1").arg(str));
} }
void SparrowBot::joinGame()
{
if(!isInGame)
{
emit sendMsg(QString("PRIVMSG SparrowMJ :!join patate"));
isInGame = true;
}
}

View File

@ -14,15 +14,18 @@ class SparrowBot : public QObject
QString nick; QString nick;
QString chan; QString chan;
int status; int status;
UserList users; UserList users;
// custom variables
bool isInGame;
public: public:
SparrowBot() : nick("SparrowBot"), chan("epicsparrow"), status(OFFLINE) {} SparrowBot() : nick("SparrowBot"), chan("epicsparrow"), status(OFFLINE), isInGame(false) {}
SparrowBot(QString nick_, QString chan_) : nick(nick_), chan(chan_), status(OFFLINE) {} SparrowBot(QString nick_, QString chan_) : nick(nick_), chan(chan_), status(OFFLINE), isInGame(false) {}
private: private:
void handleMessage(Message msg); void handleMessage(Message msg);
void say(QString str); void say(QString str);
void whois(QString nick);
void action(QString str); void action(QString str);
public slots: public slots:
@ -33,6 +36,10 @@ public slots:
signals: signals:
void sendMsg(QString msg); void sendMsg(QString msg);
void changeSocketStatus(int newStatus); void changeSocketStatus(int newStatus);
private:
// custom methods
void joinGame();
}; };
#endif // SPARROWBOT_H #endif // SPARROWBOT_H