added module management to base module
This commit is contained in:
parent
4aac5b2bb4
commit
a9caac5674
@ -67,6 +67,57 @@ bool BaseModule::onChanHandler(Message msg)
|
|||||||
answer += say(str);
|
answer += say(str);
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// affiche l'aide
|
||||||
|
else if(msg.args.compare("!help") == 0)
|
||||||
|
{
|
||||||
|
QString str = "Available commands : !help !list";
|
||||||
|
if(src != NULL && src->isOp())
|
||||||
|
str += " !update !module";
|
||||||
|
answer += privateSay(str, msg.nick);
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// gère les modules
|
||||||
|
else if(msg.args.startsWith("!module") && src != NULL && src->isOp())
|
||||||
|
{
|
||||||
|
QStringList list = msg.args.split(' ');
|
||||||
|
QString command = list.size() < 2 ? "" : list[1];
|
||||||
|
if(command.compare("list") == 0)
|
||||||
|
{
|
||||||
|
QString str = "Available modules : ";
|
||||||
|
for(int i=0; i<getNbModules(); ++i)
|
||||||
|
{
|
||||||
|
Module* m = getModule(i);
|
||||||
|
str += m->getName() + (m->isEnabled() ? "[ON] " : "[OFF] ");
|
||||||
|
}
|
||||||
|
answer += say(str);
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
else if(list.size() > 2 && (command.compare("disable") == 0 || command.compare("enable") == 0))
|
||||||
|
{
|
||||||
|
bool newStatus = command.compare("enable") == 0;
|
||||||
|
for(int i=2; i<list.size(); ++i)
|
||||||
|
for(int j=1; j<getNbModules(); ++j)
|
||||||
|
{
|
||||||
|
Module* m = getModule(j);
|
||||||
|
if(m->getName().compare(list[i]) == 0)
|
||||||
|
{
|
||||||
|
if(m->isEnabled() != newStatus)
|
||||||
|
answer += say((newStatus ? "enabled module " : "disabled module ") + list[i]);
|
||||||
|
m->setEnabled(newStatus);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
answer += say("no module named " + list[i]);
|
||||||
|
}
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
answer += say("usage : !module (list | enable/disable <targets>)");
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// renommage
|
// renommage
|
||||||
|
@ -23,6 +23,7 @@ void IRCBot::addModule(Module* module)
|
|||||||
modules.push_back(module);
|
modules.push_back(module);
|
||||||
module->setChan(chan);
|
module->setChan(chan);
|
||||||
module->setNick(nick);
|
module->setNick(nick);
|
||||||
|
module->setModuleList(&modules);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IRCBot::disconnect()
|
void IRCBot::disconnect()
|
||||||
|
1
ircbot.h
1
ircbot.h
@ -22,6 +22,7 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
void addModule(Module* module);
|
void addModule(Module* module);
|
||||||
|
BaseModule* getBaseModule();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void receiveMsg(QString msg);
|
void receiveMsg(QString msg);
|
||||||
|
19
module.cpp
19
module.cpp
@ -25,6 +25,20 @@ QString Module::getChan()
|
|||||||
return chan;
|
return chan;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Module::getNbModules()
|
||||||
|
{
|
||||||
|
if(modules == NULL)
|
||||||
|
return 0;
|
||||||
|
return modules->size();
|
||||||
|
}
|
||||||
|
|
||||||
|
Module* Module::getModule(int index)
|
||||||
|
{
|
||||||
|
if(modules == NULL)
|
||||||
|
return NULL;
|
||||||
|
return modules->at(index);
|
||||||
|
}
|
||||||
|
|
||||||
void Module::setNick(QString nick_)
|
void Module::setNick(QString nick_)
|
||||||
{
|
{
|
||||||
nick = nick_;
|
nick = nick_;
|
||||||
@ -35,6 +49,11 @@ void Module::setChan(QString chan_)
|
|||||||
chan = chan_;
|
chan = chan_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Module::setModuleList(std::vector<Module*>* modList)
|
||||||
|
{
|
||||||
|
modules = modList;
|
||||||
|
}
|
||||||
|
|
||||||
// IRC COMMANDS
|
// IRC COMMANDS
|
||||||
|
|
||||||
QString Module::pong(QString target)
|
QString Module::pong(QString target)
|
||||||
|
14
module.h
14
module.h
@ -2,6 +2,7 @@
|
|||||||
#define MODULE_H
|
#define MODULE_H
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
class Message;
|
class Message;
|
||||||
|
|
||||||
@ -11,10 +12,16 @@ private:
|
|||||||
bool enabled;
|
bool enabled;
|
||||||
QString nick;
|
QString nick;
|
||||||
QString chan;
|
QString chan;
|
||||||
|
std::vector<Module*>* modules;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QString answer;
|
QString answer;
|
||||||
|
|
||||||
|
QString getNick();
|
||||||
|
QString getChan();
|
||||||
|
int getNbModules();
|
||||||
|
Module* getModule(int index);
|
||||||
|
|
||||||
QString pong(QString target);
|
QString pong(QString target);
|
||||||
QString join(QString theChan);
|
QString join(QString theChan);
|
||||||
QString privateSay(QString str, QString target);
|
QString privateSay(QString str, QString target);
|
||||||
@ -24,7 +31,7 @@ protected:
|
|||||||
QString quit(QString str);
|
QString quit(QString str);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Module() : enabled(true) {}
|
Module() : enabled(true), modules(NULL) {}
|
||||||
|
|
||||||
virtual bool messageHandler(Message msg) = 0;
|
virtual bool messageHandler(Message msg) = 0;
|
||||||
virtual QString getName() = 0;
|
virtual QString getName() = 0;
|
||||||
@ -32,11 +39,10 @@ public:
|
|||||||
QString getAnswer();
|
QString getAnswer();
|
||||||
bool isEnabled();
|
bool isEnabled();
|
||||||
void setEnabled(bool newStatus);
|
void setEnabled(bool newStatus);
|
||||||
QString getNick();
|
|
||||||
QString getChan();
|
|
||||||
void setNick(QString nick_);
|
void setNick(QString nick_);
|
||||||
void setChan(QString chan_);
|
void setChan(QString chan_);
|
||||||
// TODO: add serialization methods
|
void setModuleList(std::vector<Module*>* modList);
|
||||||
|
//TODO: add serialization methods
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MODULE_H
|
#endif // MODULE_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user