diff --git a/Dalamud/DiscordBot/DiscordBotManager.cs b/Dalamud/DiscordBot/DiscordBotManager.cs index fdf1a945f..5371e6db5 100644 --- a/Dalamud/DiscordBot/DiscordBotManager.cs +++ b/Dalamud/DiscordBot/DiscordBotManager.cs @@ -38,6 +38,7 @@ namespace Dalamud.DiscordBot { this.socketClient = new DiscordSocketClient(); this.socketClient.Ready += SocketClientOnReady; + this.dalamud.NetworkHandlers.ProcessCfPop += ProcessCfPop; } private XivChatType GetChatTypeBySlug(string slug) { @@ -103,6 +104,9 @@ namespace Dalamud.DiscordBot { } public async Task ProcessCfPop(JObject contentFinderCondition) { + if (!this.IsConnected) + return; + var contentName = contentFinderCondition["Name"]; if (this.config.CfNotificationChannel == null) diff --git a/Dalamud/Game/Network/NetworkHandlers.cs b/Dalamud/Game/Network/NetworkHandlers.cs index 4613e03de..752e92e0a 100644 --- a/Dalamud/Game/Network/NetworkHandlers.cs +++ b/Dalamud/Game/Network/NetworkHandlers.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using Dalamud.Game.Network.MarketBoardUploaders; using Dalamud.Game.Network.Structures; using Dalamud.Game.Network.Universalis.MarketBoardUploaders; +using Newtonsoft.Json.Linq; using Serilog; namespace Dalamud.Game.Network { @@ -19,6 +20,9 @@ namespace Dalamud.Game.Network { private byte[] lastPreferredRole; + public delegate Task CfPop(JObject contentFinderCondition); + public event CfPop ProcessCfPop; + public NetworkHandlers(Dalamud dalamud, bool optOutMbUploads) { this.dalamud = dalamud; this.optOutMbUploads = optOutMbUploads; @@ -26,6 +30,7 @@ namespace Dalamud.Game.Network { this.uploader = new UniversalisMarketBoardUploader(dalamud); dalamud.Framework.Network.OnZonePacket += OnZonePacket; + } private void OnZonePacket(IntPtr dataPtr) { @@ -48,8 +53,8 @@ namespace Dalamud.Game.Network { this.dalamud.Framework.Gui.Chat.Print($"Duty pop: " + contentFinderCondition["Name"]); - if (this.dalamud.BotManager.IsConnected) - await this.dalamud.BotManager.ProcessCfPop(contentFinderCondition); + await this.ProcessCfPop?.Invoke(contentFinderCondition); + }); return;