summaryrefslogtreecommitdiffstats
path: root/src/crsm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/crsm.cpp')
-rw-r--r--src/crsm.cpp39
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)
{