public ChatBot(IFactory injector)
 {
     _chatContextHolder = new ChatContextHolder(injector)
         .ListenTo<DeployCoreContext>()
         .ListenTo<JenkinsMonitorContext>()
         .ListenTo<GreetingsContext>()
         .ListenTo<JenkinsStatusContext>()
         .ListenTo<SetVolumeContext>()
         .ListenTo<GetServerVersionContext>()
         .ListenTo<MonitorServerVersionChanges>()
         .ListenTo<GetSettingsContext>()
         .ListenTo<SetSettingsContext>()
         .ListenTo<SetIoContext>()
         .ListenTo<SaySomethingContext>()
         .ListenTo<SayContext>()
         .ListenTo<HelpContext>()
         .ListenTo<AboutContext>()
         .ListenTo<RunJenkinsMonitorOnBotChatContext>()
         .ListenTo<TellMeAJokeContext>()
         .ListenTo<TellMeAInsultContext>()
         .ListenTo<TellMeAQuotesContext>()
         .ListenTo<FailedToRespondContext>()
         .ListenTo<RandomJokeResponse>();
     
 }
 public Task Respond(ChatContextHolder chatContextHolder, IMessageContext context)
 {
     return Task.Run(() =>
     {
         foreach (LightPin pin in _lights)
         {
             pin.Set(context.Text, _pinManager);
         }
         LightPin[] allOn = _lights.Where(x => x.ContainsSection(context.Text) && x.IsOn(context.Text)).ToArray();
         if (!allOn.Select(x => x.Color).Any())
         {
             context.Respond(string.Format("{0} lights are now off",
                 _lights.Where(x => x.ContainsSection(context.Text))
                     .Select(x => x.Section)
                     .Distinct()
                     .StringJoin()));
         }
         else
         {
             context.Respond(string.Format("{0} {1} lights are now on",
                 allOn.Select(x => x.Section).Distinct().StringJoin(),
                 allOn.Select(x => x.Color).Distinct().StringJoin()));
         }
     });
 }
 public Task Respond(ChatContextHolder chatContextHolder, IMessageContext context)
 {
     var volumeLevel = ValueConverterHelper.ToInt(ExtractStartsWith(context, "set volume"),10);
     var result = string.Format("volume set to {0}", volumeLevel);
     _textToSpeech.Play(result);
     _volumeSetter.SetVolume(volumeLevel);
     return context.Respond(result);
 }
 public async Task Respond(ChatContextHolder chatContextHolder, IMessageContext context)
 {
     var oneLiner = RandomTextHelper.OneLiner.Split('.');
     foreach (var message in oneLiner)
     {
         await context.Respond(message);
         await Task.Delay(5000);
     }
 }
        protected override async Task Response(ChatContextHolder chatContextHolder, IMessageContext context, Server server)
        {
            if (string.IsNullOrEmpty(server.Name))
            {
                await
                    context.Respond(string.Format("Scanning servers."));
            }
            else
            {
                await
                    context.Respond(string.Format("Scanning {0} servers.", server.Name));
            }

            Task.Run(async () =>
            {
                await RunOnBackground(context, server);
            }).FireAndForgetWithLogging();
        }
 public async Task Respond(ChatContextHolder chatContextHolder, IMessageContext context)
 {
     await _monitorJenkins.Check();
 }