public async Task InitializeBridge(bool initIrc = true, bool initDiscord = true) { config = ConfigHelper.LoadConfig(); if (initIrc) { IrcLink = new IrcService(Logger, config.IRCServer); } if (initDiscord) { DiscordLink = new DiscordService(Logger, config.DiscordServer); } glue = new BridgeService(IrcLink, DiscordLink, config); if (initDiscord) { DiscordLink.OnChannelMessage += glue.DiscordChannelMessage; DiscordLink.OnGuildConnected += glue.DiscordGuildConnected; DiscordLink.OnUserUpdated += glue.DiscordUserUpdated; DiscordLink.OnUserJoin += glue.DiscordUserJoined; DiscordLink.OnUserLeave += glue.DiscordUserLeave; } if (initIrc) { IrcLink.OnChannelMessage += glue.IrcChannelMessage; IrcLink.OnPrivateMessage += glue.IrcPrivateMessage; IrcLink.OnServerDisconnect += glue.IrcServerDisconnect; IrcLink.OnServerConnect += glue.IrcServerConnect; } // Start the Async Processing if (initDiscord) { DiscordLink.MainAsync().GetAwaiter(); } if (initIrc) { IrcLink.StartBridge(); // Sort of Async.. Fix this later } }