added regis module
This commit is contained in:
parent
0014f08700
commit
6ff62f34b3
@ -9,4 +9,8 @@ release:LIBS += ../ircbot/release/libircbot.a
|
||||
|
||||
INCLUDEPATH += ../ircbot
|
||||
|
||||
SOURCES = main.cpp
|
||||
SOURCES = main.cpp \
|
||||
regismodule.cpp
|
||||
|
||||
HEADERS += \
|
||||
regismodule.h
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include "module.h"
|
||||
#include "message.h"
|
||||
#include "basemodule.h"
|
||||
#include "regismodule.h"
|
||||
|
||||
class CustomModule : public Module
|
||||
{
|
||||
@ -12,8 +13,7 @@ public :
|
||||
{
|
||||
if(msg.args.compare("plop ?") == 0)
|
||||
{
|
||||
answer = say("coucou");
|
||||
|
||||
answer = say("coucou " + msg.nick);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -29,5 +29,6 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
BotApp app = BotApp(argc, argv);
|
||||
app.addModule(new CustomModule());
|
||||
app.addModule(new RegisModule());
|
||||
return app.exec();
|
||||
}
|
||||
|
53
app/regismodule.cpp
Normal file
53
app/regismodule.cpp
Normal file
@ -0,0 +1,53 @@
|
||||
#include "regismodule.h"
|
||||
#include "message.h"
|
||||
#include <time.h>
|
||||
|
||||
RegisModule::RegisModule()
|
||||
{
|
||||
std::srand(time(NULL));
|
||||
noms.push_back("Le chat");
|
||||
noms.push_back("La passoire");
|
||||
noms.push_back("Le canapé");
|
||||
noms.push_back("L'ivrogne");
|
||||
noms.push_back("Robert");
|
||||
noms.push_back("Le policier");
|
||||
noms.push_back("une pastèque");
|
||||
noms.push_back("un ordinateur");
|
||||
noms.push_back("une voiture");
|
||||
noms.push_back("le chien");
|
||||
verbes.push_back("troue");
|
||||
verbes.push_back("aime");
|
||||
verbes.push_back("jette");
|
||||
verbes.push_back("saute au dessus de");
|
||||
verbes.push_back("tourne autour de");
|
||||
verbes.push_back("s'assied sur");
|
||||
verbes.push_back("pense à");
|
||||
verbes.push_back("vient de trouver");
|
||||
verbes.push_back("se frotte à");
|
||||
adjectifs.push_back("noir");
|
||||
adjectifs.push_back("ivre");
|
||||
adjectifs.push_back("en mauvais état");
|
||||
adjectifs.push_back("blanc");
|
||||
adjectifs.push_back("durci");
|
||||
adjectifs.push_back("en fer");
|
||||
adjectifs.push_back("rugueux");
|
||||
}
|
||||
|
||||
bool RegisModule::messageHandler(Message msg)
|
||||
{
|
||||
if(msg.args.contains("régis"))
|
||||
{
|
||||
int nom1 = std::rand() % noms.size();
|
||||
int nom2 = std::rand() % noms.size();
|
||||
int adjectif = std::rand() % adjectifs.size();
|
||||
int verbe = std::rand() % verbes.size();
|
||||
answer = say(noms[nom1] + " " + adjectifs[adjectif] + " " + verbes[verbe] + " " + noms[nom2] + ".");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
QString RegisModule::getName()
|
||||
{
|
||||
return "regis";
|
||||
}
|
19
app/regismodule.h
Normal file
19
app/regismodule.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef REGISMODULE_H
|
||||
#define REGISMODULE_H
|
||||
|
||||
#include "module.h"
|
||||
#include <vector>
|
||||
#include <QString>
|
||||
|
||||
class RegisModule : public Module
|
||||
{
|
||||
std::vector<QString> noms;
|
||||
std::vector<QString> verbes;
|
||||
std::vector<QString> adjectifs;
|
||||
public:
|
||||
RegisModule();
|
||||
virtual bool messageHandler(Message msg);
|
||||
virtual QString getName();
|
||||
};
|
||||
|
||||
#endif // REGISMODULE_H
|
@ -4,7 +4,12 @@
|
||||
|
||||
BaseModule::BaseModule() : Module(), status(OFFLINE)
|
||||
{
|
||||
users = new UserList();
|
||||
}
|
||||
|
||||
BaseModule::~BaseModule()
|
||||
{
|
||||
delete(users);
|
||||
}
|
||||
|
||||
bool BaseModule::messageHandler(Message msg)
|
||||
@ -41,7 +46,7 @@ bool BaseModule::messageHandler(Message msg)
|
||||
bool BaseModule::onChanHandler(Message msg)
|
||||
{
|
||||
bool ret = false;
|
||||
User* src = users.getFromNick(msg.nick);
|
||||
User* src = users->getFromNick(msg.nick);
|
||||
|
||||
// si la ligne est un message
|
||||
if(msg.command.compare(QString("PRIVMSG"), Qt::CaseInsensitive) == 0)
|
||||
@ -57,7 +62,7 @@ bool BaseModule::onChanHandler(Message msg)
|
||||
else if(msg.args.compare("!list") == 0)
|
||||
{
|
||||
QString str = "Online users : ";
|
||||
for(User* u : users)
|
||||
for(User* u : *users)
|
||||
{
|
||||
if(u->isOp())
|
||||
str.append("@");
|
||||
@ -124,9 +129,9 @@ bool BaseModule::onChanHandler(Message msg)
|
||||
else if(msg.command.compare("NICK", Qt::CaseInsensitive) == 0)
|
||||
src->rename(msg.args);
|
||||
else if(msg.command.compare("QUIT", Qt::CaseInsensitive) == 0)
|
||||
users.remove(src);
|
||||
users->remove(src);
|
||||
else if(msg.command.compare("PART", Qt::CaseInsensitive) == 0)
|
||||
users.remove(src);
|
||||
users->remove(src);
|
||||
else if(msg.command.compare("KICK", Qt::CaseInsensitive) == 0)
|
||||
{
|
||||
if(getNick().compare(msg.target2) == 0)
|
||||
@ -134,13 +139,13 @@ bool BaseModule::onChanHandler(Message msg)
|
||||
answer += quit("i've been kicked :(");
|
||||
ret = true;
|
||||
}
|
||||
users.remove(users.getFromNick(msg.target2));
|
||||
users->remove(users->getFromNick(msg.target2));
|
||||
}
|
||||
else if(msg.command.compare("JOIN", Qt::CaseInsensitive) == 0
|
||||
&& msg.args.contains(getChan())
|
||||
&& getNick().compare(msg.nick) != 0)
|
||||
{
|
||||
users.getOrAdd(msg.nick);
|
||||
users->getOrAdd(msg.nick);
|
||||
answer += whois(msg.nick);
|
||||
ret = true;
|
||||
}
|
||||
@ -153,7 +158,7 @@ bool BaseModule::onChanHandler(Message msg)
|
||||
QStringList names = msg.args.split(' ');
|
||||
for(QString s : names)
|
||||
{
|
||||
User* u = users.getOrAdd(s);
|
||||
User* u = users->getOrAdd(s);
|
||||
answer += whois(u->getNick());
|
||||
ret = true;
|
||||
}
|
||||
@ -162,7 +167,7 @@ bool BaseModule::onChanHandler(Message msg)
|
||||
// 319 = code de la ligne de réponse au whois qui indique les chans d'un user, et son statut dessus
|
||||
else if(msg.command.compare(QString("319"), Qt::CaseInsensitive) == 0)
|
||||
{
|
||||
User* u = users.getOrAdd(msg.target2);
|
||||
User* u = users->getOrAdd(msg.target2);
|
||||
QStringList chanList = msg.args.split(' ');
|
||||
for(QString s : chanList)
|
||||
{
|
||||
@ -176,6 +181,11 @@ bool BaseModule::onChanHandler(Message msg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
UserList* BaseModule::getUserList()
|
||||
{
|
||||
return users;
|
||||
}
|
||||
|
||||
QString BaseModule::getName()
|
||||
{
|
||||
return "base";
|
||||
|
@ -6,15 +6,17 @@
|
||||
|
||||
class BaseModule : public Module
|
||||
{
|
||||
UserList users;
|
||||
UserList* users;
|
||||
|
||||
enum{OFFLINE, ONLINE, ON_CHAN};
|
||||
int status;
|
||||
|
||||
bool onChanHandler(Message msg);
|
||||
public:
|
||||
BaseModule();
|
||||
|
||||
~BaseModule();
|
||||
UserList* getUserList();
|
||||
bool messageHandler(Message msg);
|
||||
bool onChanHandler(Message msg);
|
||||
QString getName();
|
||||
};
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
#include "module.h"
|
||||
#include "user.h"
|
||||
#include "basemodule.h"
|
||||
|
||||
QString Module::getAnswer()
|
||||
{
|
||||
@ -32,6 +34,14 @@ int Module::getNbModules()
|
||||
return modules->size();
|
||||
}
|
||||
|
||||
UserList* Module::getUsers()
|
||||
{
|
||||
if(modules == NULL)
|
||||
return NULL;
|
||||
BaseModule* base = (BaseModule*)(modules->at(0));
|
||||
return base->getUserList();
|
||||
}
|
||||
|
||||
Module* Module::getModule(int index)
|
||||
{
|
||||
if(modules == NULL)
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <QString>
|
||||
#include <vector>
|
||||
|
||||
class UserList;
|
||||
class Message;
|
||||
|
||||
class Module
|
||||
@ -21,6 +22,7 @@ protected:
|
||||
QString getChan();
|
||||
int getNbModules();
|
||||
Module* getModule(int index);
|
||||
UserList* getUsers();
|
||||
|
||||
QString pong(QString target);
|
||||
QString join(QString theChan);
|
||||
|
Loading…
x
Reference in New Issue
Block a user