コード例 #1
0
        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);
        }