예제 #1
0
        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;
        }
예제 #2
0
 public async Task Disconnect()
 {
     _chatClient.SendMessage("Goodbye for now! The bot has left the building...");
     _followerService.OnNewFollower     -= FollowerServiceOnOnNewFollower;
     _subscriberHandler.OnNewSubscriber -= SubscriberHandlerOnOnNewSubscriber;
     await _chatClient.Disconnect();
 }
예제 #3
0
        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);
        }