diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2015-10-09 15:17:15 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2015-10-09 15:25:30 +0200 |
| commit | 912db6d7f30a26586b77da1ed94eac7e196344dd (patch) | |
| tree | 82e7c318cc33634db347d4fee68d8a3facadab6d /src/crsm.cpp | |
| parent | a7f57c2f2157196111e88033281ed29513c10652 (diff) | |
| download | manager-912db6d7f30a26586b77da1ed94eac7e196344dd.tar.gz manager-912db6d7f30a26586b77da1ed94eac7e196344dd.zip | |
Add irc say command
Diffstat (limited to 'src/crsm.cpp')
| -rw-r--r-- | src/crsm.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp index 8d5e20c..846744a 100644 --- a/src/crsm.cpp +++ b/src/crsm.cpp @@ -1372,6 +1372,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>"); } 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); @@ -2225,6 +2226,44 @@ CMD_FUNCTION_IMPL(setConfigValue) } } +CMD_FUNCTION_IMPL(ircSay) + QStringList parts = args.split(' ', QString::KeepEmptyParts); + if(parts.length() < 2) + { + respond(client, "Es wird ein Empfänger und eine Nachricht benötigt.\n"); + } + else + { + QString target = parts.first(); + parts.removeFirst(); + QString message = parts.join(' '); + if(target.at(0) != '#') + { + ircSayQueryFifos[target].append(message); + ircCheckUserStatus(client, ClientInfo::ircClient(target), &CRSM::ircSayQuery); + } + else + { + connection->sendCommand(IrcCommand::createMessage(target, message)); + } + } +} + +IRC_CHECK_CALLBACK_IMPL(ircSayQuery) + if(status <= 0) + { + respond(requester, "IRC-Nutzer " + subject.nick + " wurde nicht gefunden!\n"); + } + else + { + foreach(const QString& message, ircSayQueryFifos[subject.nick]) + { + connection->sendCommand(IrcCommand::createMessage(subject.nick, message)); + } + } + ircSayQueryFifos[subject.nick].clear(); +} + IRC_CHECK_CALLBACK_IMPL(ircSetAdmin) if(status <= 0) { |
