102 lines
3.0 KiB
C++
102 lines
3.0 KiB
C++
#include "punishermodule.h"
|
|
#include "message.h"
|
|
#include "user.h"
|
|
#include <QStringList>
|
|
|
|
PunisherModule::PunisherModule()
|
|
{
|
|
|
|
}
|
|
|
|
bool PunisherModule::messageHandler(Message msg)
|
|
{
|
|
QString target = QString("#").append(getChan());
|
|
if(msg.target.compare(target) != 0)
|
|
target = msg.nick;
|
|
|
|
if(msg.args.startsWith("!forbidden remove ") && getUsers()->getFromNick(msg.nick)->isOp())
|
|
{
|
|
QStringList str = msg.args.split(' ');
|
|
int i=2;
|
|
answer = QString("");
|
|
for(; i<str.size(); ++i)
|
|
{
|
|
bool found = false;
|
|
for(auto it = forbidden_words.begin(); it != forbidden_words.end(); it++)
|
|
{
|
|
if(str[i].compare(*it, Qt::CaseInsensitive) == 0)
|
|
{
|
|
forbidden_words.erase(it);
|
|
found = true;
|
|
break;
|
|
}
|
|
}
|
|
if(found)
|
|
answer += privateSay(QString("removed %1 from the list of forbidden words").arg(str[i]), target);
|
|
else
|
|
answer += privateSay(QString("%1 was not part of the list of forbidden words").arg(str[i]), target);
|
|
|
|
}
|
|
if(i==2)
|
|
answer = privateSay(QString("missing argument"), target);
|
|
return true;
|
|
}
|
|
|
|
if(msg.args.compare("!forbidden reset") == 0 && getUsers()->getFromNick(msg.nick)->isOp())
|
|
{
|
|
forbidden_words.clear();
|
|
answer = privateSay(QString("removed all forbidden words"), target);
|
|
return true;
|
|
}
|
|
|
|
if(msg.args.startsWith("!forbidden add ") && getUsers()->getFromNick(msg.nick)->isOp())
|
|
{
|
|
QStringList str = msg.args.split(' ');
|
|
int i=2;
|
|
answer = QString("");
|
|
for(; i<str.size(); ++i)
|
|
{
|
|
if(str[i].size() < 3)
|
|
{
|
|
answer = QString("KICK #%1 %2 : <3 \r\n").arg(getChan()).arg(msg.nick);
|
|
return true;
|
|
}
|
|
forbidden_words.push_back(str[i]);
|
|
answer += privateSay(QString("added %1 to the list of forbidden words").arg(str[i]), target);
|
|
}
|
|
if(i==2)
|
|
answer = privateSay(QString("missing argument"), target);
|
|
return true;
|
|
}
|
|
|
|
if(msg.args.compare("!forbidden list") == 0)
|
|
{
|
|
QString str = QString("Forbidden words are : ");
|
|
for(const QString &w : forbidden_words)
|
|
str.append(w).append(" ");
|
|
answer = privateSay(str, target);
|
|
return true;
|
|
}
|
|
|
|
if(msg.nick.compare("LadySparrow") == 0)
|
|
return false;
|
|
if(msg.command.compare("PRIVMSG", Qt::CaseInsensitive) != 0)
|
|
return false;
|
|
|
|
for(const QString &w : forbidden_words)
|
|
{
|
|
if(msg.args.contains(w, Qt::CaseInsensitive))
|
|
{
|
|
answer = QString("KICK #%1 %2 :%3 est un mot interdit !\r\n").arg(getChan()).arg(msg.nick).arg(w);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
QString PunisherModule::getName()
|
|
{
|
|
return QString("punisher");
|
|
}
|