private async Task HandleSettingChanging(Message message) { if (!await message.From.IsAdministrator(message.Chat.Id, _client)) { throw new UnauthorizedSettingChangingException(); } string tinyString = message.Text.Replace($"@{_botUsername} set:", ""); (string param, string value) = (tinyString.Split('=')[0], tinyString.Split('=')[1]); if (!Enum.TryParse(param, true, out Setting setting) || !Enum.IsDefined(typeof(Setting), setting)) { throw new InvalidSettingException(); } if (!_settingsProcessor.ValidateSettings(Enum.Parse <Setting>(param, true), value)) { throw new InvalidSettingValueException(); } switch (setting) { case Setting.Language: await _settingsProcessor.ChangeLanguage(message.Chat.Id, value); break; case Setting.Mode: await _settingsProcessor.ChangeMode(message.Chat.Id, Enum.Parse <TranslationMode>(value, true)); break; } await _client.SendTextMessageAsync(message.Chat.Id, "Done!", replyToMessageId : message.MessageId); }