private void SetupScreen() { var chatMenu = new ChatMenuScreen(_chatUi); var mainMenu = new MainMenuScreen(_chatUi); mainMenu.MenuItems = new List <MenuItem> { new MenuItem("0", "Connect", (_) => { _chatClient.Connect(_configuration); }, null), new MenuItem("1", "List chat rooms", (_) => { _chatUi.PrintAvailableRooms(_chatClient.GetChatRooms()); }, null), new MenuItem("2", "Subscribe chat room", (room) => _chatClient.SubscribeChatRoom(room).Wait(), null), new MenuItem("3", "Unsubscribe chat room", (room) => _chatClient.UnsubscribeChatRoom(room).Wait(), null), new MenuItem("4", "Enter chat room", (room) => _chatClient.EnterChatRoom(room, _chatUi.PrintMessage).Wait(), chatMenu), new MenuItem("5", "Leave chat room", (_) => _chatClient.LeaveChatRoom().Wait(), null), new MenuItem("6", "Disconnect", (_) => _chatClient.Disconnect().Wait(), null), }; chatMenu.MenuItems = new List <MenuItem> { new MenuItem("10", "Connect", (_) => _chatClient.Connect(_configuration), null), new MenuItem("11", "List signed users", (_) => { _chatUi.PrintSignedUsers(_chatClient.GetRegisteredUsers()); }, null), new MenuItem("12", "List online users", (_) => { _chatUi.PrintOnlineUsers(_chatClient.GetOnlineUsers()); }, null), new MenuItem("13", "Publish message", (msg) => _chatClient.PublishMessage(msg), null), new MenuItem("14", "Leave room", (_) => _chatClient.LeaveChatRoom(), mainMenu), new MenuItem("15", "Disconnect", (_) => _chatClient.Disconnect(), null), }; _currentScreen = mainMenu; }
public async Task Disconnect() { _chatClient.SendMessage("Goodbye for now! The bot has left the building..."); _followerService.OnNewFollower -= FollowerServiceOnOnNewFollower; _subscriberHandler.OnNewSubscriber -= SubscriberHandlerOnOnNewSubscriber; await _chatClient.Disconnect(); }
private void ProcessCommand(string cmd) { switch (cmd.ToLower()) { case "exit": _chat.Disconnect(); _piHW.Stop(); LoggerHandler.Destroy(); _working = false; break; case "stop": _piHW.Stop(); break; case "start": _piHW.Start(); break; case "startpwm": case "s": _piHW.StartPWM(); break; case "": break; default: if (cmd.ToLower().StartsWith("setnroflines")) { var linesToSkip = int.Parse(cmd.Split(' ')[1]); _piHW.SetVariables(_period, _highDuration, linesToSkip); settings.LinesToSkip = linesToSkip; SaveSettings(); Console.WriteLine("Set number of lines to skip to " + linesToSkip); break; } Console.WriteLine("Invalid command: '" + cmd + "'"); break; } }
public async Task <bool> CheckConnectionAndRestartIfNeeded() { if (!hasBootedUp) { return(false); } var timeOfLatestMessage = await chatRepository.GetTimeStampForLatestMessage().ConfigureAwait(false); var timeOfCheck = datetimeProvider.UtcNow; logger.LogInformation("time of latest message: {arg}, time of check: {argTwo}", timeOfLatestMessage, timeOfCheck); if (timeOfLatestMessage < timeOfCheck.AddMinutes(-30)) { await client.Disconnect().ConfigureAwait(false); logger.LogInformation("Client Disconnected"); await Task.Delay(TimeSpan.FromMinutes(1)).ConfigureAwait(false); await client.Connect().ConfigureAwait(false); var channels = await channelRepository.GetChannels().ConfigureAwait(false); foreach (var channel in channels.Where(x => x.ShouldListen)) { await client.JoinChannel(channel.ChannelName).ConfigureAwait(false); } logger.LogInformation("Client Reconnected and Joined"); return(true); } return(false); }