/// <inheritdoc /> public string SetProviderInfo(ChatSetupInfo info) { try { lock (DiscordLock) { var odc = DiscordConfig; DiscordConfig = new DiscordSetupInfo(info); if (DiscordConfig.BotToken != odc.BotToken) { DisconnectAndDispose(); Init(info); } if (DiscordConfig.Enabled) { if (!Connected()) { return(Reconnect()); } } else { Disconnect(); } } return(null); } catch (Exception e) { return(e.ToString()); } }
/// <inheritdoc /> public string SetProviderInfo(ChatSetupInfo info) { info.AdminList.RemoveAll(x => String.IsNullOrWhiteSpace(x)); info.AdminChannels.RemoveAll(x => String.IsNullOrWhiteSpace(x)); info.GameChannels.RemoveAll(x => String.IsNullOrWhiteSpace(x)); info.DevChannels.RemoveAll(x => String.IsNullOrWhiteSpace(x)); info.WatchdogChannels.RemoveAll(x => String.IsNullOrWhiteSpace(x)); try { lock (ChatLock) { foreach (var ChatProvider in ChatProviders) { if (info.Provider == ChatProvider.ProviderInfo().Provider) { return(ChatProvider.SetProviderInfo(info)); } } return("Error: Invalid provider: " + info.Provider.ToString()); } } catch (Exception e) { return(e.ToString()); } }
/// <summary> /// Returns a list of <see cref="ChatSetupInfo"/>s loaded from the config or the defaults if none are set /// </summary> /// <returns>A list of <see cref="ChatSetupInfo"/>s loaded from the config or the defaults if none are set</returns> IList <ChatSetupInfo> InitProviderInfos() { lock (ChatLock) { var rawdata = Config.ChatProviderData; if (rawdata == UninitializedString) { return new List <ChatSetupInfo>() { new IRCSetupInfo() { Nickname = Config.Name }, new DiscordSetupInfo() } } ; string plaintext; try { plaintext = Interface.Helpers.DecryptData(rawdata, Config.ChatProviderEntropy); var lists = JsonConvert.DeserializeObject <List <List <string> > >(plaintext); var output = new List <ChatSetupInfo>(lists.Count); var foundirc = 0; var founddiscord = 0; foreach (var l in lists) { var info = new ChatSetupInfo(l); if (info.Provider == ChatProvider.Discord) { ++founddiscord; } else if (info.Provider == ChatProvider.IRC) { ++foundirc; } output.Add(info); } if (foundirc != 1 || founddiscord != 1) { throw new Exception(); } return(output); } catch { Config.ChatProviderData = UninitializedString; } } //if we get here we want to retry return(InitProviderInfos()); }
private void ChatApplyButton_Click(object sender, EventArgs e) { string res = null; ChatSetupInfo wip = null; switch (ModifyingProvider) { case ChatProvider.Discord: wip = new DiscordSetupInfo() { BotToken = AuthField1.Text }; break; case ChatProvider.IRC: wip = new IRCSetupInfo() { AuthMessage = AuthField2.Text, AuthTarget = AuthField1.Text, Nickname = ChatNicknameText.Text, URL = ChatServerText.Text, Port = (ushort)ChatPortSelector.Value, AuthLevel = (IRCMode)IRCModesComboBox.SelectedIndex, }; break; default: res = "You really shouldn't be able to read this."; break; } if (res == null) { wip.AdminChannels = new List <string>(AdminChannelsTextbox.Text.Split(Environment.NewLine.ToCharArray())); wip.WatchdogChannels = new List <string>(WDChannelsTextbox.Text.Split(Environment.NewLine.ToCharArray())); wip.DevChannels = new List <string>(DevChannelsTextbox.Text.Split(Environment.NewLine.ToCharArray())); wip.GameChannels = new List <string>(GameChannelsTextbox.Text.Split(Environment.NewLine.ToCharArray())); wip.AdminList = new List <string>(ChatAdminsTextBox.Text.Split(Environment.NewLine.ToCharArray())); wip.Enabled = ChatEnabledCheckbox.Checked; wip.AdminsAreSpecial = AdminModeSpecial.Checked; res = Interface.GetComponent <ITGChat>().SetProviderInfo(wip); } if (res != null) { MessageBox.Show(res); } LoadChatPage(); }
/// <summary> /// Construct a <see cref="IRCChatProvider"/> /// </summary> /// <param name="info">The <see cref="ChatSetupInfo"/></param> public IRCChatProvider(ChatSetupInfo info) { IRCConfig = new IRCSetupInfo(info); irc = new IrcFeatures() { SupportNonRfc = true, CtcpUserInfo = Server.VersionString, AutoRejoin = true, AutoRejoinOnKick = true, AutoRelogin = true, AutoRetry = true, AutoRetryLimit = 5, AutoRetryDelay = 5, ActiveChannelSyncing = true, }; irc.OnChannelMessage += Irc_OnChannelMessage; irc.OnQueryMessage += Irc_OnQueryMessage; }
/// <inheritdoc /> public string SetProviderInfo(ChatSetupInfo info) { var convertedInfo = (IRCSetupInfo)info; var serverChange = convertedInfo.URL != IRCConfig.URL || convertedInfo.Port != IRCConfig.Port; IRCConfig = convertedInfo; if (!IRCConfig.Enabled) { Disconnect(); return(null); } else if (serverChange || !Connected()) { return(Reconnect()); } if (IRCConfig.Nickname != irc.Nickname) { irc.RfcNick(convertedInfo.Nickname); } Login(); JoinChannels(); return(null); }
/// <summary> /// Sets up the Discord API <see cref="client"/> and <see cref="DiscordConfig"/> /// </summary> /// <param name="info">The <see cref="ChatSetupInfo"/> to init <see cref="DiscordConfig"/> with</param> void Init(ChatSetupInfo info) { DiscordConfig = new DiscordSetupInfo(info); client = new DiscordSocketClient(); client.MessageReceived += Client_MessageReceived; }
/// <summary> /// Construct a <see cref="DiscordChatProvider"/> /// </summary> /// <param name="info">The <see cref="ChatSetupInfo"/></param> public DiscordChatProvider(ChatSetupInfo info) { Init(info); }