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);
|
||||
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
|
||||
|
@ -23,6 +23,7 @@ void IRCBot::addModule(Module* module)
|
||||
modules.push_back(module);
|
||||
module->setChan(chan);
|
||||
module->setNick(nick);
|
||||
module->setModuleList(&modules);
|
||||
}
|
||||
|
||||
void IRCBot::disconnect()
|
||||
|
1
ircbot.h
1
ircbot.h
@ -22,6 +22,7 @@ public:
|
||||
|
||||
public:
|
||||
void addModule(Module* module);
|
||||
BaseModule* getBaseModule();
|
||||
|
||||
public slots:
|
||||
void receiveMsg(QString msg);
|
||||
|
19
module.cpp
19
module.cpp
@ -25,6 +25,20 @@ QString Module::getChan()
|
||||
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_)
|
||||
{
|
||||
nick = nick_;
|
||||
@ -35,6 +49,11 @@ void Module::setChan(QString chan_)
|
||||
chan = chan_;
|
||||
}
|
||||
|
||||
void Module::setModuleList(std::vector<Module*>* modList)
|
||||
{
|
||||
modules = modList;
|
||||
}
|
||||
|
||||
// IRC COMMANDS
|
||||
|
||||
QString Module::pong(QString target)
|
||||
|
14
module.h
14
module.h
@ -2,6 +2,7 @@
|
||||
#define MODULE_H
|
||||
|
||||
#include <QString>
|
||||
#include <vector>
|
||||
|
||||
class Message;
|
||||
|
||||
@ -11,10 +12,16 @@ private:
|
||||
bool enabled;
|
||||
QString nick;
|
||||
QString chan;
|
||||
std::vector<Module*>* modules;
|
||||
|
||||
protected:
|
||||
QString answer;
|
||||
|
||||
QString getNick();
|
||||
QString getChan();
|
||||
int getNbModules();
|
||||
Module* getModule(int index);
|
||||
|
||||
QString pong(QString target);
|
||||
QString join(QString theChan);
|
||||
QString privateSay(QString str, QString target);
|
||||
@ -24,7 +31,7 @@ protected:
|
||||
QString quit(QString str);
|
||||
|
||||
public:
|
||||
Module() : enabled(true) {}
|
||||
Module() : enabled(true), modules(NULL) {}
|
||||
|
||||
virtual bool messageHandler(Message msg) = 0;
|
||||
virtual QString getName() = 0;
|
||||
@ -32,11 +39,10 @@ public:
|
||||
QString getAnswer();
|
||||
bool isEnabled();
|
||||
void setEnabled(bool newStatus);
|
||||
QString getNick();
|
||||
QString getChan();
|
||||
void setNick(QString nick_);
|
||||
void setChan(QString chan_);
|
||||
// TODO: add serialization methods
|
||||
void setModuleList(std::vector<Module*>* modList);
|
||||
//TODO: add serialization methods
|
||||
};
|
||||
|
||||
#endif // MODULE_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user