protected async override Task<TelegramBotReply> HandleMessageAsync(TelegramBot.TelegramBot bot, Message m, MessageHandlerType type)
 {
     var preferences = PreferenceRegistry.GetUserPreferencesForUser(m.From);
     var klassenLijst = await WindesheimRoosterConvertor.GetKlassenLijst();
     if (!m.HasArguments)
     {
         if (preferences.RoosterFor != null)
             return Message(m, AddingKlasFailed("Je hebt al een klas opgegeven.\n\rOm deze aan te passen, typ: '/klas [klasnaam]'"));
         else
             return Message(m, AddingKlasFailed("Geef je klas op zoals deze op https://roosters.windesheim.nl/ staat, bijvoorbeeld: '/klas ICTM1a'"));
     }
     else
     {
         var klasStr = string.Join("", m.Arguments).ToLower();
         foreach (Klas k in klassenLijst)
             if (k.Name.ToLower() == klasStr)
             {
                 if (preferences.RoosterFor != null)
                 {
                     if (preferences.RoosterFor == k)
                         return Message(m, $"Je bent al gekoppeld aan de klas {k.Bold()}", userMarkup: true);
                     var roosterMessageFlow = new AddRoosterFlow(preferences, k);
                     m.From.MessageFlow = new MessageFlow(m.From, new FlowObject { Handler = roosterMessageFlow });
                     return roosterMessageFlow.DefaultReply(m);
                 }
                 else
                 { 
                     PreferenceRegistry.GetUserPreferencesForUser(m.From).RoosterFor = k;
                     return Message(m, $"Je bent gekoppeld aan klas: {k.Name}");
                 }
             }
         return Message(m, AddingKlasFailed($"De klas {string.Join(" ", m.Arguments)} kon ik niet vinden."));
     }
 }
 protected async override Task<TelegramBotReply> HandleMessageAsync(TelegramBot.TelegramBot bot, Message m, MessageHandlerType type)
 {
     var docent = PreferenceRegistry.GetRoosterForUser(m.From);
     if (!m.HasArguments)
     {
         if (docent != null)
             return Message(m, "Je hebt al een docentcode opgegeven.\n\rOm deze aan te passen, typ: '/docent [docentcode]'");
         else
             return Message(m, "Geef je docentcode op zoals deze op https://roosters.windesheim.nl/ staat, bijvoorbeeld: '/docent EES01'");
     }
     else
     {
         var docentStr = string.Join("", m.Arguments).ToLower();
         foreach (Docent d in await WindesheimRoosterConvertor.GetDocentenLijst())
             if (d.Name.ToLower() == docentStr)
             {
                 var preferences = PreferenceRegistry.GetUserPreferencesForUser(m.From);
                 if (preferences.RoosterFor != null)
                 {
                     if(preferences.RoosterFor == d)
                         return Message(m, $"Je bent al gekoppeld aan de docent {d.Bold()}", userMarkup: true);
                     var roosterMessageFlow = new AddRoosterFlow(preferences, d);
                     m.From.MessageFlow = new MessageFlow(m.From, new FlowObject { Handler = roosterMessageFlow });
                     return roosterMessageFlow.DefaultReply(m);
                 }
                 else
                 {
                     preferences.RoosterFor = d;
                     return Message(m, $"Je bent gekoppeld aan de docent: {d.Bold()}");
                 }
             }
         return Message(m, $"De docentcode {string.Join(" ", m.Arguments)} kon ik niet vinden.");
     }
 }