Skip to content

Commit

Permalink
Handle /me better for relay bots, fix discord bot saying (IRC) instea…
Browse files Browse the repository at this point in the history
…d of (Discord) in-game
  • Loading branch information
UnknownShadow200 committed Apr 16, 2021
1 parent ddd6b04 commit 7da4e13
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 34 deletions.
20 changes: 10 additions & 10 deletions MCGalaxy/Chat/Chat.cs
Expand Up @@ -119,11 +119,11 @@ public static class Chat {
}

public static void Message(ChatScope scope, string msg, object arg,
ChatMessageFilter filter, bool irc = false) {
ChatMessageFilter filter, bool relay = false) {
Player[] players = PlayerInfo.Online.Items;
ChatMessageFilter scopeFilter = scopeFilters[(int)scope];

OnChatSysEvent.Call(scope, msg, arg, ref filter, irc);
OnChatSysEvent.Call(scope, msg, arg, ref filter, relay);
foreach (Player pl in players) {
if (!scopeFilter(pl, arg)) continue;
if (filter != null && !filter(pl, arg)) continue;
Expand All @@ -141,9 +141,9 @@ public static class Chat {
}

public static void MessageFrom(Player source, string msg,
ChatMessageFilter filter = null, bool irc = false) {
ChatMessageFilter filter = null, bool relay = false) {
if (source.level == null || source.level.SeesServerWideChat) {
MessageFrom(ChatScope.Global, source, msg, null, filter, irc);
MessageFrom(ChatScope.Global, source, msg, null, filter, relay);
} else {
string prefix = Server.Config.ServerWideChat ? "<Local>" : "";
MessageFrom(ChatScope.Level, source, prefix + msg, source.level, filter);
Expand All @@ -154,11 +154,11 @@ public static class Chat {
/// <remarks> For player chat type messages, Chat.MessageChat is more appropriate to use. </remarks>
/// <remarks> Only players not ignoring the given player will see this message. </remarks>
public static void MessageFrom(ChatScope scope, Player source, string msg, object arg,
ChatMessageFilter filter, bool irc = false) {
ChatMessageFilter filter, bool relay = false) {
Player[] players = PlayerInfo.Online.Items;
ChatMessageFilter scopeFilter = scopeFilters[(int)scope];

OnChatFromEvent.Call(scope, source, msg, arg, ref filter, irc);
OnChatFromEvent.Call(scope, source, msg, arg, ref filter, relay);
foreach (Player pl in players) {
if (!scopeFilter(pl, arg)) continue;
if (filter != null && !filter(pl, arg)) continue;
Expand All @@ -170,9 +170,9 @@ public static class Chat {


public static void MessageChat(Player source, string msg,
ChatMessageFilter filter = null, bool irc = false) {
ChatMessageFilter filter = null, bool relay = false) {
if (source.level.SeesServerWideChat) {
MessageChat(ChatScope.Global, source, msg, null, filter, irc);
MessageChat(ChatScope.Global, source, msg, null, filter, relay);
} else {
string prefix = Server.Config.ServerWideChat ? "<Local>" : "";
MessageChat(ChatScope.Level, source, prefix + msg, source.level, filter);
Expand All @@ -184,12 +184,12 @@ public static class Chat {
/// and count towards triggering automute for chat spamming </remarks>
/// <remarks> Only players not ignoring the given player will see this message. </remarks>
public static void MessageChat(ChatScope scope, Player source, string msg, object arg,
ChatMessageFilter filter, bool irc = false) {
ChatMessageFilter filter, bool relay = false) {
Player[] players = PlayerInfo.Online.Items;
ChatMessageFilter scopeFilter = scopeFilters[(int)scope];
bool counted = false;

OnChatEvent.Call(scope, source, msg, arg, ref filter, irc);
OnChatEvent.Call(scope, source, msg, arg, ref filter, relay);
foreach (Player pl in players) {
if (Ignoring(pl, source)) continue;
// Always show message to self too (unless ignoring self)
Expand Down
3 changes: 1 addition & 2 deletions MCGalaxy/Commands/Chat/CmdMe.cs
Expand Up @@ -30,8 +30,7 @@ public sealed class CmdMe : MessageCmd {
if (p.joker) { p.Message("Cannot use /me while jokered."); return; }

string msg = p.color + "*" + Colors.StripUsed(p.DisplayName) + " " + message;
if (TryMessage(p, msg))
OnPlayerActionEvent.Call(p, PlayerAction.Me, message);
TryMessage(p, msg, true);
}

public override void Help(Player p) {
Expand Down
6 changes: 4 additions & 2 deletions MCGalaxy/Commands/Chat/MessageCmd.cs
Expand Up @@ -34,9 +34,11 @@ public abstract class MessageCmd : Command2 {
return true;
}

protected bool TryMessage(Player p, string msg) {
protected bool TryMessage(Player p, string msg) { return TryMessage(p, msg, false); }

protected bool TryMessage(Player p, string msg, bool relay) {
if (!CanSpeak(p, name)) return false;
Chat.MessageFrom(p, msg, null);
Chat.MessageFrom(p, msg, null, relay);

p.CheckForMessageSpam();
return true;
Expand Down
18 changes: 9 additions & 9 deletions MCGalaxy/Events/ServerEvents.cs
Expand Up @@ -46,42 +46,42 @@ public sealed class OnShuttingDownEvent : IEvent<OnShuttingDown> {
}

public delegate void OnChatSys(ChatScope scope, string msg, object arg,
ref ChatMessageFilter filter, bool irc);
ref ChatMessageFilter filter, bool relay);
public sealed class OnChatSysEvent : IEvent<OnChatSys> {

public static void Call(ChatScope scope, string msg, object arg,
ref ChatMessageFilter filter, bool irc) {
ref ChatMessageFilter filter, bool relay) {
IEvent<OnChatSys>[] items = handlers.Items;
for (int i = 0; i < items.Length; i++) {
try { items[i].method(scope, msg, arg, ref filter, irc); }
try { items[i].method(scope, msg, arg, ref filter, relay); }
catch (Exception ex) { LogHandlerException(ex, items[i]); }
}
}
}

public delegate void OnChatFrom(ChatScope scope, Player source, string msg,
object arg, ref ChatMessageFilter filter, bool irc);
object arg, ref ChatMessageFilter filter, bool relay);
public sealed class OnChatFromEvent : IEvent<OnChatFrom> {

public static void Call(ChatScope scope,Player source, string msg,
object arg, ref ChatMessageFilter filter, bool irc) {
object arg, ref ChatMessageFilter filter, bool relay) {
IEvent<OnChatFrom>[] items = handlers.Items;
for (int i = 0; i < items.Length; i++) {
try { items[i].method(scope, source, msg, arg, ref filter, irc); }
try { items[i].method(scope, source, msg, arg, ref filter, relay); }
catch (Exception ex) { LogHandlerException(ex, items[i]); }
}
}
}

public delegate void OnChat(ChatScope scope, Player source, string msg,
object arg, ref ChatMessageFilter filter, bool irc);
object arg, ref ChatMessageFilter filter, bool relay);
public sealed class OnChatEvent : IEvent<OnChat> {

public static void Call(ChatScope scope, Player source, string msg,
object arg, ref ChatMessageFilter filter, bool irc) {
object arg, ref ChatMessageFilter filter, bool relay) {
IEvent<OnChat>[] items = handlers.Items;
for (int i = 0; i < items.Length; i++) {
try { items[i].method(scope, source, msg, arg, ref filter, irc); }
try { items[i].method(scope, source, msg, arg, ref filter, relay); }
catch (Exception ex) { LogHandlerException(ex, items[i]); }
}
}
Expand Down
9 changes: 0 additions & 9 deletions MCGalaxy/Modules/Relay/IRC/IRCBot.cs
Expand Up @@ -244,8 +244,6 @@ public sealed class IRCBot : RelayBot {
if (hookedEvents) return;
hookedEvents = true;
HookEvents();

OnPlayerActionEvent.Register(HandlePlayerAction, Priority.Low);
OnShuttingDownEvent.Register(HandleShutdown, Priority.Low);

// Regster events for incoming
Expand All @@ -272,7 +270,6 @@ public sealed class IRCBot : RelayBot {
hookedEvents = false;
UnhookEvents();

OnPlayerActionEvent.Unregister(HandlePlayerAction);
OnShuttingDownEvent.Unregister(HandleShutdown);

// Regster events for incoming
Expand All @@ -294,12 +291,6 @@ public sealed class IRCBot : RelayBot {
}


void HandlePlayerAction(Player p, PlayerAction action, string message, bool stealth) {
if (action != PlayerAction.Me) return;
if (p.level != null && !p.level.SeesServerWideChat) return;
Say("*" + p.DisplayName + " " + message, stealth);
}

void HandleShutdown(bool restarting, string message) {
Disconnect(restarting ? "Server is restarting." : "Server is shutting down.");
}
Expand Down
4 changes: 2 additions & 2 deletions MCGalaxy/Modules/RelayBot.cs
Expand Up @@ -159,11 +159,11 @@ public abstract class RelayBot {

if (opchat) {
Logger.Log(LogType.RelayChat, "(OPs): ({0}) {1}: {2}", RelayName, user.Nick, message);
Chat.MessageOps(string.Format("To Ops &f-&I(IRC) {0}&f- {1}", user.Nick,
Chat.MessageOps(string.Format("To Ops &f-&I({0}) {1}&f- {2}", RelayName, user.Nick,
Server.Config.ProfanityFiltering ? ProfanityFilter.Parse(message) : message));
} else {
Logger.Log(LogType.RelayChat, "({0}) {1}: {2}", RelayName, user.Nick, message);
MessageInGame(user.Nick, string.Format("&I(IRC) {0}: &f{1}", user.Nick,
MessageInGame(user.Nick, string.Format("&I({0}) {1}: &f{2}", RelayName, user.Nick,
Server.Config.ProfanityFiltering ? ProfanityFilter.Parse(message) : message));
}
}
Expand Down

0 comments on commit 7da4e13

Please sign in to comment.