Пишем плагин для Verlihub — фильтр сообщений чата
Очень быстро у администратора DC++ хаба встает проблема фильтрации сообщений в чате. Чаще всего это связано с отдельно взятыми представителями примато-подобных, которые нарочито общаются исключительно ненормативной лексикой, при этом хамят и оскорбляют остальных участников чата. Вторая причина — постоянный флуд ссылками на свои домашние хабы.
Для решения данной проблемы можно использовать разные способы. Есть масса ботов и скриптов, которые решают с разной степенью успешности такие вопросы. В данной же статье мы рассмотрим, как можно написать простой плагин для фильтрации сообщений чата.
Все что делает данный плагин — читает сообщения главного чата, сравнивает строки с имеющимися шаблонами — и заменяет найденные "нехорошие" сообщения произвольными фразами.
#ifndef CPCL_H
#define CPCL_H
#include
#include
using namespace nDirectConnect;
using namespace nDirectConnect::nPlugin;
class cpiCl : public cVHPlugin
{
public:
cpiCl();
virtual ~cpiCl();
virtual void OnLoad(cServerDC* server);
virtual bool RegisterAll();
virtual bool OnParsedMsgChat(cConnDC * conn, cMessageDC *);
};
#endif
#include
#include
#include
#include
#include
#include
#include "config.h"
#include "filter.h"
cpiCl::cpiCl()
{
mName = "chatfilter";
mVersion = "1.0.0";
};
void cpiCl::OnLoad(cServerDC* server)
{
cVHPlugin::OnLoad(server);
};
cpiCl::~cpiCl()
{
};
bool cpiCl::RegisterAll()
{
RegisterCallBack("VH_OnParsedMsgChat");
};
bool cpiCl::OnParsedMsgChat(cConnDC * conn, cMessageDC *msg)
{
string &message = msg->ChunkString(eCH_CH_MSG);
string tmpstr = message;
std::transform(tmpstr.begin(), tmpstr.end(), tmpstr.begin(), (int(*)(int)) std::tolower);
string::size_type loc = tmpstr.find("матюк",0);
if (loc != string::npos) message = "йа афца!!!";
msg->ApplyChunk(eCH_CH_MSG);
return true;
};
REGISTER_PLUGIN(cpiCl);
Компилируем, включаем через команду !plugin — и наслаждаемся работой. Теперь если кто-либо в главном окне чата напишет слово "матюк" (или оно просто будет присутствовать в предложении), то вместо сообщения все увидят фразу "йа афца!!!".
Плагин простой. Но эффективный. Дальнейшие улучшения можно развить, например, в работу с MySQL для гибкого конфигурирования.
Мой блог находят по следующим фразам
- как сбить температуру 39
- blacklist iphone
- как сбить температуру собаке
- чем збить высокую температуру
- скачать ключ алавар 2010
- копии телефонов китай, можно ли брать
