refactoring, and managing being kicked
This commit is contained in:
		
							parent
							
								
									30e4e979c0
								
							
						
					
					
						commit
						a61b2ba603
					
				@ -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;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										23
									
								
								sparrowbot.h
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								sparrowbot.h
									
									
									
									
									
								
							@ -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
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user