diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2015-10-10 00:21:20 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2015-10-10 00:21:20 +0200 |
| commit | ba5ed6186f6624e4f8cc6f73c52e597a4fa1d531 (patch) | |
| tree | 61b513dcada2ba075b3346eda1643503e3bfe1e8 /src/crsm.cpp | |
| parent | b859834a075a06eae4387b7f196dafb7ed570ef2 (diff) | |
| download | manager-ba5ed6186f6624e4f8cc6f73c52e597a4fa1d531.tar.gz manager-ba5ed6186f6624e4f8cc6f73c52e597a4fa1d531.zip | |
Add irc watch command
Diffstat (limited to 'src/crsm.cpp')
| -rw-r--r-- | src/crsm.cpp | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp index 46b40cb..f85ca52 100644 --- a/src/crsm.cpp +++ b/src/crsm.cpp @@ -338,6 +338,7 @@ void CRSM::readInput() ircModChecks.clear(); ircMods.clear(); ircModIOList.clear(); + ircModWatchList.clear(); ircStatusFifos.clear(); readConfig(); return; @@ -482,6 +483,21 @@ void CRSM::ircMessageReceived(IrcMessage *message) writeToServer(writeMessage + "\n"); } } + + if(ircModWatchList.length() > 0) + { + QString watchMsg = "<"; + if(target != message->nick()) + { + watchMsg += target + ":"; + } + watchMsg += message->nick() + "> " + mess; + + foreach(const ClientInfo& client, ircModWatchList) + { + connection->sendCommand(IrcCommand::createMessage(client.nick, watchMsg)); + } + } } else if(message->type() == IrcMessage::Join) { @@ -499,6 +515,7 @@ void CRSM::ircMessageReceived(IrcMessage *message) ircMods.removeAll(message->nick()); ircModChecks.removeAll(message->nick()); ircModIOList.removeAll(message->nick()); + ircModWatchList.removeAll(ClientInfo::ircClient(message->nick())); if(aliasWishEditor == message->nick()) { stopAliasWishEditing(); @@ -1373,6 +1390,7 @@ void CRSM::setupCmds() addCommand("irc io", &CRSM::io, IRC, Moderator, "Schaltet den IO-Modus ein bzw. aus.", "", "Schaltet den IO-Modus ein bzw. aus. Im IO-Modus wird die Ausgabe vom Clonk-Server an den Privat-Chat weitergeleitet und der Privat-Chat wird an den Clonk-Server weitergeleitet. Clonk-Befehle mit \\ statt /."); addCommand("irc reconnect", &CRSM::reconnectIrc, Management, UserType::Max, "Stellt die IRC-Verbindung wieder her."); addCommand("irc say", &CRSM::ircSay, IRC | Management, Moderator, "Schreibt die <Nachricht> an <Channel¦Nick>.", "<Channel¦Nick> <Nachricht>"); + addCommand("irc watch", &CRSM::ircWatch, IRC | Management, Moderator, "Sendet alle Nachrichten, die der Server im IRC-Netzwerk aufschnappt, an Moderatoren, die watch aktiviert haben.", "<on¦off>"); } addCommandGroup("exit", Management, UserType::Max, "Beendet den Server Mananger.", "Beendet den Server Mananger und falls ein Clonk-Server läuft auch diesen. Die Unterbefehle ermöglichen außerdem diverse Zusatzvarienten des Beendens.", &CRSM::exit); @@ -1937,10 +1955,10 @@ CMD_FUNCTION_IMPL(newalias) } CMD_FUNCTION_IMPL(modinfo) - respond(client, "Moderatoren sind (* ist aktiv, + verwendet IO):\n", RespondType::Private); + respond(client, "Moderatoren sind (* ist aktiv, + verwendet IO, - verwendet irc watch):\n", RespondType::Private); foreach(const QString &mod, Config.IRC.Moderators.keys()) { - respond(client, (ircMods.contains(mod) ? QString("*") : QString(" ")) + (ircModIOList.contains(mod) ? QString("+") : QString(" ")) + " " + Config.IRC.Moderators.value(mod) + "\n", RespondType::Private); + respond(client, (ircMods.contains(mod) ? QString("*") : QString(" ")) + (ircModIOList.contains(mod) ? QString("+") : QString(" ")) + (ircModWatchList.contains(ClientInfo::ircClient(mod)) ? QString("-") : QString(" ")) + " " + Config.IRC.Moderators.value(mod) + "\n", RespondType::Private); } } @@ -2249,6 +2267,38 @@ CMD_FUNCTION_IMPL(ircSay) } } +CMD_FUNCTION_IMPL(ircWatch) + if(args == "on") + { + if(ircModWatchList.contains(client)) + { + respond(client, "irc watch ist bereits aktiviert.\n", RespondType::Private); + } + else + { + ircModWatchList.append(client); + respond(client, "irc watch wurde aktiviert.\n", RespondType::Private); + } + } + else if(args == "off") + { + if(!ircModWatchList.contains(client)) + { + respond(client, "irc watch ist bereits deaktiviert.\n", RespondType::Private); + } + else + { + ircModWatchList.removeAll(client); + respond(client, "irc watch wurde deaktiviert.\n", RespondType::Private); + } + + } + else + { + respond(client, Config.CRSM.CommandSign + cmd + " kann nur mit \"on\" oder \"off\" verwendet werden.\n"); + } +} + IRC_CHECK_CALLBACK_IMPL(ircSayQuery) if(status <= 0) { |
