Skip to content

Commit 2d3fd26

Browse files
Add support for specifying a particular IRC nick to show in-game as (Discord) instead
1 parent fb2ec86 commit 2d3fd26

File tree

2 files changed

+34
-28
lines changed

2 files changed

+34
-28
lines changed

fCraft/Network/IRC.cs

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -367,52 +367,53 @@ void HandleIrcChat(IRCMessage msg) {
367367
} else {
368368
return;
369369
}
370-
}
371-
372-
string processedMessage = ProcessMessageFromIRC(rawMessage);
373-
if (processedMessage.Length == 0) return;
374-
bool elapsed = DateTime.UtcNow.Subtract(IRCHandlers.lastUrlExpand).TotalSeconds > 5;
370+
}
371+
string text = ProcessMessageFromIRC(rawMessage);
372+
if (text.Length == 0) return;
373+
375374
if (ConfigKey.IRCBotForwardFromIRC.Enabled()) {
376375
if (msg.Type == IRCMessageType.ChannelAction) {
377-
if (elapsed) {
378-
Scheduler.NewTask(t => Chat.getUrls(processedMessage)).RunOnce();
379-
IRCHandlers.lastUrlExpand = DateTime.UtcNow;
380-
}
381-
foreach (Player player in Server.Players) {
382-
if (player.Info.ReadIRC) {
383-
player.Message("&I(IRC) * {0} {1}", msg.Nick, processedMessage);
384-
}
376+
TryExpandUrls(text);
377+
378+
foreach (Player player in Server.Players.Where(pl => pl.Info.ReadIRC)) {
379+
player.Message("&I(IRC) * {0} {1}", msg.Nick, text);
385380
}
386381
Logger.Log(LogType.IrcChat, "{0}: * {1} {2}", msg.Channel, msg.Nick,
387382
IRCColorsAndNonStandardCharsExceptEmotes.Replace(rawMessage, ""));
388383
} else if (IRCHandlers.HandleCommand(ActualBotNick, msg.Nick, rawMessage)) {
389384
} else if (IRCHandlers.HandlePM(ActualBotNick, msg.Nick, rawMessage)) {
390385
} else {
391-
if (elapsed) {
392-
Scheduler.NewTask(t => Chat.getUrls(processedMessage)).RunOnce();
393-
IRCHandlers.lastUrlExpand = DateTime.UtcNow;
394-
}
395-
foreach (Player player in Server.Players.Where(player => player.Info.ReadIRC)) {
396-
player.Message("&I(IRC) {0}{1}: {2}", msg.Nick, Color.White,
397-
processedMessage);
386+
TryExpandUrls(text);
387+
string discordBotNick = ConfigKey.DiscordBotNick.GetString();
388+
string prefix = msg.Nick == discordBotNick ? "(Discord)" : "(IRC) " + msg.Nick;
389+
390+
foreach (Player player in Server.Players.Where(pl => pl.Info.ReadIRC)) {
391+
player.Message("&I{0}{1}: {2}", prefix, Color.White, text);
398392
}
399393
}
400394
Logger.Log(LogType.IrcChat, "{0}: {1}: {2}", msg.Channel, msg.Nick,
401395
IRCColorsAndNonStandardCharsExceptEmotes.Replace(rawMessage, ""));
402396
} else if (msg.Message.StartsWith("#")) {
403-
if (elapsed) {
404-
Scheduler.NewTask(t => Chat.getUrls(processedMessage)).RunOnce();
405-
IRCHandlers.lastIrcCommand = DateTime.UtcNow;
406-
}
407-
foreach (Player player in Server.Players.Where(player => player.Info.ReadIRC)) {
408-
player.Message("&I(IRC) {0}{1}: {2}", msg.Nick, Color.White,
409-
processedMessage.Substring(1));
397+
TryExpandUrls(text);
398+
string discordBotNick = ConfigKey.DiscordBotNick.GetString();
399+
string prefix = msg.Nick == discordBotNick ? "(Discord)" : "(IRC) " + msg.Nick;
400+
401+
foreach (Player player in Server.Players.Where(pl => pl.Info.ReadIRC)) {
402+
player.Message("&I{0}{1}: {2}", prefix, Color.White, text.Substring(1));
410403
}
411404
Logger.Log(LogType.IrcChat, "{0}: {1}: {2}", msg.Channel, msg.Nick,
412405
IRCColorsAndNonStandardCharsExceptEmotes.Replace(rawMessage, ""));
413406
}
414407
}
415408

409+
void TryExpandUrls(string msg) {
410+
bool elapsed = DateTime.UtcNow.Subtract(IRCHandlers.lastUrlExpand).TotalSeconds > 5;
411+
if (elapsed) {
412+
Scheduler.NewTask(t => Chat.getUrls(msg)).RunOnce();
413+
IRCHandlers.lastUrlExpand = DateTime.UtcNow;
414+
}
415+
}
416+
416417

417418
void HandleIrcJoin(IRCMessage msg) {
418419
if (!ResponsibleForInputParsing) return;

fCraft/System/ConfigKey.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,12 @@ It is recommended to leave this at 1 unless you are having specific issues
446446
with IRC bots falling behind on messages.",
447447
MinValue = 1, MaxValue=3 )]
448448
IRCThreads,
449-
449+
450+
[StringKey( ConfigSection.IRC, "",
451+
@"Optional, nick of account that is used to relay chat to Discord.
452+
In-game, messages sent by this account will show as (Discord) instead of (IRC).",
453+
MinLength = 0, MaxLength = 32 )]
454+
DiscordBotNick,
450455
#endregion
451456

452457

0 commit comments

Comments
 (0)