/// <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()); } }
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> /// 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; }
void LoadChatPage() { updatingChat = true; var Chat = Interface.GetComponent <ITGChat>(); var PI = Chat.ProviderInfos()[(int)ModifyingProvider]; ChatAdminsTextBox.Visible = true; IRCModesComboBox.Visible = false; switch (ModifyingProvider) { case ChatProvider.Discord: var DPI = new DiscordSetupInfo(PI); DiscordProviderSwitch.Select(); AuthField1.Text = DPI.BotToken; //it's invisible so whatever AuthField1Title.Text = "Bot Token:"; AuthField2.Visible = false; AuthField2Title.Visible = false; ChatServerText.Visible = false; ChatPortSelector.Visible = false; ChatServerTitle.Visible = false; ChatPortTitle.Visible = false; ChatNicknameText.Visible = false; ChatNicknameTitle.Visible = false; ChatAdminsTitle.Text = String.Format("Admin {0} IDs:", DPI.AdminsAreSpecial ? "Role" : "User"); ChannelsTitle.Text = "Broadcast/Listening Channel IDs:"; AdminModeNormal.Text = "User IDs"; AdminModeSpecial.Text = "Role IDs"; break; case ChatProvider.IRC: var IRC = new IRCSetupInfo(PI); IRCProviderSwitch.Select(); AuthField1.Text = IRC.AuthTarget; AuthField2.Text = IRC.AuthMessage; AuthField2.Visible = true; AuthField2Title.Visible = true; AuthField1Title.Text = "Auth Target:"; AuthField2Title.Text = "Auth Message:"; ChatServerText.Visible = true; ChatPortSelector.Visible = true; ChatServerTitle.Visible = true; ChatPortTitle.Visible = true; ChatServerText.Text = IRC.URL; ChatPortSelector.Value = IRC.Port; ChatNicknameText.Visible = true; ChatNicknameTitle.Visible = true; ChatNicknameText.Text = IRC.Nickname; ChatAdminsTitle.Text = String.Format("Admin {0}:", IRC.AdminsAreSpecial ? "Req Mode" : "Nicknames"); ChannelsTitle.Text = "Broadcast/Listening Channels:"; AdminModeNormal.Text = "Nicknames"; AdminModeSpecial.Text = "Channel Mode"; if (IRC.AdminsAreSpecial) { ChatAdminsTextBox.Visible = false; IRCModesComboBox.Visible = true; IRCModesComboBox.SelectedIndex = (int)IRC.AuthLevel; } break; default: Properties.Settings.Default.LastChatProvider = (int)ChatProvider.IRC; LoadChatPage(); return; } AdminModeNormal.Checked = !PI.AdminsAreSpecial; AdminModeSpecial.Checked = PI.AdminsAreSpecial; ChatEnabledCheckbox.Checked = PI.Enabled; if (!PI.Enabled) { ChatStatusLabel.Text = "Disabled"; } else if (Chat.Connected(ModifyingProvider)) { ChatStatusLabel.Text = "Connected"; } else { ChatStatusLabel.Text = "Disconnected"; } ChatReconnectButton.Enabled = PI.Enabled; AssignListToTextbox(PI.AdminList, ChatAdminsTextBox); AssignListToTextbox(PI.WatchdogChannels, WDChannelsTextbox); AssignListToTextbox(PI.AdminChannels, AdminChannelsTextbox); AssignListToTextbox(PI.DevChannels, DevChannelsTextbox); AssignListToTextbox(PI.GameChannels, GameChannelsTextbox); updatingChat = false; }