commands PART and KICK are now handled, and attack action has been added
This commit is contained in:
parent
d86feee482
commit
9c440b9760
2
main.cpp
2
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)));
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
13
sparrowbot.h
13
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user