refactoring, and managing being kicked

This commit is contained in:
anselme 2015-05-26 20:40:05 +02:00
parent 30e4e979c0
commit a61b2ba603
2 changed files with 53 additions and 54 deletions

View File

@ -19,13 +19,13 @@ void SparrowBot::receiveMsg(QString str)
if(str.contains("PING")) if(str.contains("PING"))
{ {
status = ON_CHAN; status = ON_CHAN;
emit sendMsg(QString("PONG :%1").arg(msg.nick)); emit sendMsg(pong(msg.nick));
emit sendMsg(QString("JOIN #%1").arg(chan)); emit sendMsg(join(chan));
} }
break; break;
case ON_CHAN : case ON_CHAN :
if(str.contains("PING")) if(str.contains("PING"))
emit sendMsg(QString("PONG :%1").arg(msg.nick)); emit sendMsg(pong(msg.nick));
handleMessage(msg); handleMessage(msg);
break; break;
} }
@ -38,7 +38,7 @@ void SparrowBot::handleMessage(Message msg)
{ {
// mise à jour du bot // mise à jour du bot
if(msg.args.compare("!update") == 0 && msg.src != NULL && msg.src->isOp()) 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 // affiche les gens connectés
if(msg.args.compare("!list") == 0) if(msg.args.compare("!list") == 0)
@ -51,16 +51,7 @@ void SparrowBot::handleMessage(Message msg)
str.append(u->getNick()); str.append(u->getNick());
str.append(" "); str.append(" ");
} }
say(str); emit sendMsg(say(str));
}
if(msg.args.compare("plop ?") == 0)
action("est content");
if(msg.args.compare("!attack") == 0)
{
joinGame();
action(QString(" hit Lendemor"));
} }
} }
@ -72,12 +63,17 @@ void SparrowBot::handleMessage(Message msg)
else if(msg.command.compare("PART", Qt::CaseInsensitive) == 0) else if(msg.command.compare("PART", Qt::CaseInsensitive) == 0)
users.remove(msg.src); users.remove(msg.src);
else if(msg.command.compare("KICK", Qt::CaseInsensitive) == 0) 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); if(nick.compare(msg.target2) == 0)
whois(msg.nick); 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 // 353 = code de la ligne qui liste les nicks connectés
@ -89,7 +85,7 @@ void SparrowBot::handleMessage(Message msg)
for(QString s : names) for(QString s : names)
{ {
users.getOrAdd(s); 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() void SparrowBot::disconnect()
{ {
disconnect("I'll be back"); emit sendMsg(quit("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;
}
} }

View File

@ -16,30 +16,27 @@ class SparrowBot : public QObject
int status; int status;
UserList users; UserList users;
// custom variables
bool isInGame;
public: public:
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 whois(QString nick); // IRC commands
void action(QString str); 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: public slots:
void receiveMsg(QString msg); void receiveMsg(QString msg);
void disconnect(); void disconnect();
void disconnect(QString str);
signals: signals:
void sendMsg(QString msg); void sendMsg(QString msg);
void changeSocketStatus(int newStatus);
private:
// custom methods
void joinGame();
}; };
#endif // SPARROWBOT_H #endif // SPARROWBOT_H