mirror of https://notabug.org/acetone/ircabot.git
minor improvements
parent
5b4a0ebd49
commit
6e61843d70
|
@ -65,7 +65,7 @@ bool AdminIRCPanel::parse(const QString& networkName, const QString &input, QStr
|
||||||
{ // https://modern.ircdocs.horse/formatting.html#bold
|
{ // https://modern.ircdocs.horse/formatting.html#bold
|
||||||
answer = QStringList() << QString(QString("Add channel to my list or remove one: ")+0x02+ QString("!channel <add|delete> CHANNEL_NAME")) <<
|
answer = QStringList() << QString(QString("Add channel to my list or remove one: ")+0x02+ QString("!channel <add|delete> CHANNEL_NAME")) <<
|
||||||
QString(QString("After deleting or adding channels, reload connections: ")+0x02+ QString("!reload channels")) <<
|
QString(QString("After deleting or adding channels, reload connections: ")+0x02+ QString("!reload channels")) <<
|
||||||
QString(QString("Captcha gate in channels where I have the privilege to do +v: ")+0x02+QString("!voiceGate set <enabled|disabled>")) <<
|
QString(QString("Captcha gate in this network: ")+0x02+QString("!voiceGate set <enabled|disabled>")) <<
|
||||||
QString(QString("Global voice gate option: ")+0x02+ QString("!voiceGate set case sensitive <enabled|disabled>")) <<
|
QString(QString("Global voice gate option: ")+0x02+ QString("!voiceGate set case sensitive <enabled|disabled>")) <<
|
||||||
QString(QString("Global voice gate option: ")+0x02+ QString("!voiceGate set only numbers <enabled|disabled>")) <<
|
QString(QString("Global voice gate option: ")+0x02+ QString("!voiceGate set only numbers <enabled|disabled>")) <<
|
||||||
QString(QString("Global voice gate option: ")+0x02+ QString("!voiceGate set captcha cache size <positive number>")) <<
|
QString(QString("Global voice gate option: ")+0x02+ QString("!voiceGate set captcha cache size <positive number>")) <<
|
||||||
|
@ -114,12 +114,13 @@ bool AdminIRCPanel::parse(const QString& networkName, const QString &input, QStr
|
||||||
|
|
||||||
else if (input.contains(rgx_reloadChannels))
|
else if (input.contains(rgx_reloadChannels))
|
||||||
{
|
{
|
||||||
|
uint changeCounter = 0;
|
||||||
auto configs = Config::networksAccess();
|
auto configs = Config::networksAccess();
|
||||||
for (auto iter = configs.begin(); iter != configs.end(); ++iter)
|
for (auto iter = configs.begin(); iter != configs.end(); ++iter)
|
||||||
{
|
{
|
||||||
(*iter)->instance->reloadChannelList();
|
changeCounter = (*iter)->instance->reloadChannelList();
|
||||||
}
|
}
|
||||||
answer.push_back("Success. Reloaded.");
|
answer.push_back("Success. Reloaded: " + QString::number(changeCounter) + " changes.");
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (input.contains(rgx_voiceGate))
|
else if (input.contains(rgx_voiceGate))
|
||||||
|
|
|
@ -26,6 +26,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
#include <QRegularExpression>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#define LOG_WARN qWarning().noquote() << "[" + m_config->networkName + "]"
|
#define LOG_WARN qWarning().noquote() << "[" + m_config->networkName + "]"
|
||||||
|
@ -49,8 +50,9 @@ void IRCNetworkClient::setConfig(Config::Network *&config)
|
||||||
m_config = config;
|
m_config = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IRCNetworkClient::reloadChannelList()
|
uint IRCNetworkClient::reloadChannelList()
|
||||||
{
|
{
|
||||||
|
uint changeCounter = 0;
|
||||||
QMutexLocker lock (&m_mtxNetworkChannelsIteration);
|
QMutexLocker lock (&m_mtxNetworkChannelsIteration);
|
||||||
|
|
||||||
QStringList connectedChannelsTotalList;
|
QStringList connectedChannelsTotalList;
|
||||||
|
@ -64,6 +66,7 @@ void IRCNetworkClient::reloadChannelList()
|
||||||
if (not m_config->channels.contains(connectedChan->GetName()))
|
if (not m_config->channels.contains(connectedChan->GetName()))
|
||||||
{
|
{
|
||||||
channelsToPart.push_back(connectedChan->GetName());
|
channelsToPart.push_back(connectedChan->GetName());
|
||||||
|
changeCounter++;
|
||||||
}
|
}
|
||||||
connectedChannelsTotalList.push_back(connectedChan->GetName());
|
connectedChannelsTotalList.push_back(connectedChan->GetName());
|
||||||
}
|
}
|
||||||
|
@ -85,6 +88,7 @@ void IRCNetworkClient::reloadChannelList()
|
||||||
if (not connectedChannelsTotalList.contains(newChannel))
|
if (not connectedChannelsTotalList.contains(newChannel))
|
||||||
{
|
{
|
||||||
channelsToJoin.push_back(newChannel);
|
channelsToJoin.push_back(newChannel);
|
||||||
|
changeCounter++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +99,8 @@ void IRCNetworkClient::reloadChannelList()
|
||||||
m_network->RequestJoin(chanName);
|
m_network->RequestJoin(chanName);
|
||||||
QThread::msleep(500);
|
QThread::msleep(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return changeCounter;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IRCNetworkClient::start()
|
void IRCNetworkClient::start()
|
||||||
|
@ -136,7 +142,13 @@ void IRCNetworkClient::Slot_privMsg(libircclient::Parser *p)
|
||||||
{
|
{
|
||||||
const QString receiver = p->GetParameterLine();
|
const QString receiver = p->GetParameterLine();
|
||||||
const QString sender = p->GetSourceUserInfo()->GetNick();
|
const QString sender = p->GetSourceUserInfo()->GetNick();
|
||||||
const QString text = p->GetText();
|
QString text = p->GetText();
|
||||||
|
static const QRegularExpression leadingSpaces("^\\s*");
|
||||||
|
static const QRegularExpression trailingSpaces("\\s*$");
|
||||||
|
text.remove(leadingSpaces);
|
||||||
|
text.remove(trailingSpaces);
|
||||||
|
|
||||||
|
if (text.isEmpty()) return;
|
||||||
|
|
||||||
if (receiver == m_network->GetLocalUserInfo()->GetNick())
|
if (receiver == m_network->GetLocalUserInfo()->GetNick())
|
||||||
{
|
{
|
||||||
|
@ -148,27 +160,6 @@ void IRCNetworkClient::Slot_privMsg(libircclient::Parser *p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IRCNetworkClient::Slot_adminIdentified(libircclient::Parser* p)
|
|
||||||
{
|
|
||||||
auto params = p->GetParameters();
|
|
||||||
if (params.size() < 2)
|
|
||||||
{
|
|
||||||
LOG_WARN << "Event_WhoisRegNick failure: params.size() < 2, expected 2";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (p->GetParameters().at(1) != m_config->ircabotAdmin)
|
|
||||||
{
|
|
||||||
LOG_WARN << "Event_WhoisRegNick failure: requested, but admin changed";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
AdminIRCPanel::identifiedTimestampUpdate(m_config->networkName);
|
|
||||||
m_network->SendNotice("You have been identified as an IRCaBot administrator.", m_config->ircabotAdmin, libircclient::Priority_RealTime);
|
|
||||||
|
|
||||||
processAdminCommand(m_adminCommandBuffer);
|
|
||||||
m_adminCommandBuffer.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void IRCNetworkClient::Slot_onDirectMessage(QString sender, QString text)
|
void IRCNetworkClient::Slot_onDirectMessage(QString sender, QString text)
|
||||||
{
|
{
|
||||||
if (sender == m_config->ircabotAdmin and text.startsWith("!"))
|
if (sender == m_config->ircabotAdmin and text.startsWith("!"))
|
||||||
|
@ -252,6 +243,26 @@ void IRCNetworkClient::processVoiceRequest(const QString& sender)
|
||||||
m_network->SendMessage(message, sender);
|
m_network->SendMessage(message, sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void IRCNetworkClient::Slot_adminIdentified(libircclient::Parser* p)
|
||||||
|
{
|
||||||
|
auto params = p->GetParameters();
|
||||||
|
if (params.size() < 2)
|
||||||
|
{
|
||||||
|
LOG_WARN << "Event_WhoisRegNick failure: params.size() < 2, expected 2";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (p->GetParameters().at(1) != m_config->ircabotAdmin)
|
||||||
|
{
|
||||||
|
LOG_WARN << "Event_WhoisRegNick failure: requested, but admin changed";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
AdminIRCPanel::identifiedTimestampUpdate(m_config->networkName);
|
||||||
|
|
||||||
|
processAdminCommand(m_adminCommandBuffer);
|
||||||
|
m_adminCommandBuffer.clear();
|
||||||
|
}
|
||||||
|
|
||||||
void IRCNetworkClient::processAdminCommand(const QString &text)
|
void IRCNetworkClient::processAdminCommand(const QString &text)
|
||||||
{
|
{
|
||||||
QStringList answer;
|
QStringList answer;
|
||||||
|
|
|
@ -34,7 +34,7 @@ public:
|
||||||
IRCNetworkClient(QObject* parent = nullptr);
|
IRCNetworkClient(QObject* parent = nullptr);
|
||||||
void setConfig(Config::Network*& config);
|
void setConfig(Config::Network*& config);
|
||||||
// after config change; voiceGate have effect in run-time automatically
|
// after config change; voiceGate have effect in run-time automatically
|
||||||
void reloadChannelList();
|
uint reloadChannelList();
|
||||||
void start();
|
void start();
|
||||||
void addNicknameToVoicedGroup(const QString& nickname);
|
void addNicknameToVoicedGroup(const QString& nickname);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue