Ejemplo n.º 1
0
        private async void SetEnterNewTextState(MessageEventArgs e)
        {
            var userId = e.Message.From.Id;
            var block  = GetBlockChoice(userId);
            var text   =
                $"{Texts.PersonalAccount.YouWantToChange} *{e.Message.Text}* {Environment.NewLine}";
            var currentText = Texts.GetText(block, e.Message.Text);

            if (string.IsNullOrEmpty(currentText))
            {
                text = $"{Emoji.Error} Такого текста не существует.";
                await TBot.SendTextMessageAsync(userId, text);

                SetChooseTextState(e);
            }
            else
            {
                await TBot.SendTextMessageAsync(userId, text, Telegram.Bot.Types.Enums.ParseMode.Markdown);

                text = Texts.PersonalAccount.EnterNewText;
                var keyboard = Keyboards.PersonalAccount.EnterNewTextKeyboard;
                await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

                SetState(userId, State.EnterNewText);
            }
        }
Ejemplo n.º 2
0
        private async void SetGetEmailState(MessageEventArgs e)
        {
            int userId = e.Message.From.Id;
            var text   = Texts.GetEmailAddress;
            await TBot.SendTextMessageAsync(userId, text);

            SetState(userId, State.GetEmailAddress);
        }
Ejemplo n.º 3
0
        private async void SetGreetingState(int userId)
        {
            var text     = Texts.Lamagna.Greeting;
            var keyboard = BotController.IsOwner(userId, TBot) ? Keyboards.Lamagna.ExtendedGreetingKeyboard : Keyboards.Lamagna.GreetingKeyboard;
            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.Greeting);
        }
Ejemplo n.º 4
0
        private async void SetGetTokenState(MessageEventArgs e)
        {
            int userId = e.Message.From.Id;
            var text   = Texts.GetBotToken;
            await TBot.SendTextMessageAsync(userId, text);

            SetState(userId, State.GetBotToken);
        }
Ejemplo n.º 5
0
        private async void SetGetPhoneNumberState(MessageEventArgs e)
        {
            int userId   = e.Message.From.Id;
            var text     = Texts.GetPhoneNumber;
            var keyboard = Keyboards.GetPhoneNumberKeyboard;
            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.GetPhoneNumber);
        }
Ejemplo n.º 6
0
        private async void SetChooseBlockState(MessageEventArgs e)
        {
            var userId   = e.Message.From.Id;
            var text     = Texts.PersonalAccount.ChooseBlock;
            var keyboard = Keyboards.PersonalAccount.ChooseBlockKeyboard;
            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.ChooseBlockToEdit);
        }
Ejemplo n.º 7
0
        private async void SetChooseSettingsState(MessageEventArgs e)
        {
            var userId   = e.Message.From.Id;
            var text     = Texts.PersonalAccount.PersnonalAccountGreeting(e.Message.From.FirstName);
            var keyboard = Keyboards.PersonalAccount.ChooseSettingKeyboard;
            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.ChooseSettings);
        }
Ejemplo n.º 8
0
        private async void SetChooseTextState(MessageEventArgs e)
        {
            var userId      = e.Message.From.Id;
            var text        = Texts.PersonalAccount.ChooseText;
            var blockChoice = GetBlockChoice(userId).ToString();
            var keyboard    = Keyboards.PersonalAccount.ChooseTextKeyboard(blockChoice);
            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.ChooseTextToEdit);
        }
Ejemplo n.º 9
0
        private async void SetContactsState(CallbackQueryEventArgs e)
        {
            var userId   = e.CallbackQuery.From.Id;
            var text     = Texts.Other.Contacts;
            var keyboard = Keyboards.MainProduct.ContactsKeyboard;
            await TBot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, "");

            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.Contacts);
        }
Ejemplo n.º 10
0
        private async void SetTrippier3State(CallbackQueryEventArgs e)
        {
            var userId   = e.CallbackQuery.From.Id;
            var text     = Texts.Trippier.Text3;
            var keyboard = Keyboards.Trippier.Text3Keyboard;
            await TBot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, "");

            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.Trippier3);
        }
Ejemplo n.º 11
0
        private async void SetLamagna4State(CallbackQueryEventArgs e)
        {
            var userId   = e.CallbackQuery.From.Id;
            var text     = Texts.Lamagna.Text4;
            var keyboard = Keyboards.Lamagna.Text4Keyboard;
            await TBot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, "");

            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.Lamagna4);
        }
Ejemplo n.º 12
0
        private async void UpdateText(MessageEventArgs e)
        {
            int userId    = e.Message.From.Id;
            var block     = GetBlockChoice(userId);
            var fieldName = GetTextChoice(userId);

            Texts.Update(block, fieldName, e.Message.Text);

            string text = Texts.PersonalAccount.NewTextSaved;
            await TBot.SendTextMessageAsync(userId, text);

            SetChooseTextState(e);
        }
Ejemplo n.º 13
0
        private void ShowMainProductPassedUsers(MessageEventArgs e)
        {
            var newMessage = $"Пользователи бота {BotUsername}, прошедшие блок Главный продукт:{Environment.NewLine}";

            using (var db = DBHelper.GetConnection(BotUsername))
            {
                var users = db.Table <BotUser>().Where(u => u.MainProductPassed);
                foreach (var user in users)
                {
                    newMessage += $"{Environment.NewLine}{user.ToString()}";
                }
            }
            TBot.SendTextMessageAsync(e.Message.From.Id, newMessage);
            SetChooseStatisticsState(e);
        }
Ejemplo n.º 14
0
        private void ShowAllUsers(MessageEventArgs e)
        {
            var newMessage = $"Пользователи бота {BotUsername}:{Environment.NewLine}";

            using (var db = DBHelper.GetConnection(BotUsername))
            {
                var users = db.Table <BotUser>().ToList();
                foreach (var user in users)
                {
                    newMessage += $"{Environment.NewLine}{user.ToString()}";
                }
            }
            TBot.SendTextMessageAsync(e.Message.From.Id, newMessage);
            SetChooseStatisticsState(e);
        }
Ejemplo n.º 15
0
        private async void SetCheckContactDataState(MessageEventArgs e)
        {
            int    userId = e.Message.From.Id;
            Client client = null;

            using (var db = DBHelper.GetConnection())
            {
                client = db.Find <Client>(userId);
            }

            var text     = Texts.GetCheckContactDataText(client);
            var keyboard = Keyboards.CheckContactDataKeyboard;
            await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

            SetState(userId, State.CheckContactData);
        }
Ejemplo n.º 16
0
        private async void SetStartState(MessageEventArgs e)
        {
            int userId = e.Message.From.Id;

            if (DBHelper.IsClient(e.Message.From))
            {
                await TBot.SendTextMessageAsync(userId, Texts.KnownClientGreeting);

                SetCheckContactDataState(e);
            }
            else
            {
                var text     = Texts.UnknownClientGreeting(e.Message.From);
                var keyboard = Keyboards.UnknownClientGreetingKeyboard;
                await TBot.SendTextMessageAsync(userId, text, replyMarkup : keyboard);

                SetState(userId, State.UnknownClientGreeting);
            }
        }
Ejemplo n.º 17
0
        public async override void Next(MessageEventArgs e)
        {
            var    userId  = e.Message.From.Id;
            string btnText = e.Message.Text;
            var    state   = GetUserState(userId);

            switch (state)
            {
            case State.UnknownClientGreeting:
            {
                if (btnText == Texts.LetsButton)
                {
                    SetGetPhoneNumberState(e);
                }
                break;
            }

            case State.CheckContactData:
            {
                if (btnText == Texts.PhoneNumberChangedButton)
                {
                    SetGetPhoneNumberState(e);
                }
                else if (btnText == Texts.EmailAddressChangedButton)
                {
                    SetGetEmailState(e);
                }
                else if (btnText == Texts.ItsAnActualDataButton)
                {
                    SetGetTokenState(e);
                }
                break;
            }

            case State.GetPhoneNumber:
            {
                if (e.Message.Type == Telegram.Bot.Types.Enums.MessageType.ContactMessage)
                {
                    var contact = e.Message.Contact;
                    if (contact.UserId == userId)
                    {
                        SavePhoneNumber(e);
                        await TBot.SendTextMessageAsync(userId, Texts.PhoneNumberSaved);

                        if (DBHelper.IsClient(e.Message.From))
                        {
                            SetCheckContactDataState(e);
                        }
                        else
                        {
                            SetGetEmailState(e);
                        }
                    }
                    else
                    {
                        await TBot.SendTextMessageAsync(userId, $"{Emoji.Error} Нет, нам нужен ВАШ номер.");
                    }
                }
                else
                {
                    await TBot.SendTextMessageAsync(userId, "Нажмите на кнопку внизу, чтобы отправить свой номер.");
                }
                break;
            }

            case State.GetEmailAddress:
            {
                if (FormatHelper.IsEmailAddress(e.Message.Text))
                {
                    SaveEmailAddress(e);
                    await TBot.SendTextMessageAsync(userId, Texts.EmailSaved);

                    if (DBHelper.IsClient(userId))
                    {
                        SetCheckContactDataState(e);
                    }
                    else
                    {
                        SaveNewClient(userId);
                        SetGetTokenState(e);
                    }
                }
                else
                {
                    await TBot.SendTextMessageAsync(userId, $"{Emoji.Error} Это не адрес электронный почты.");
                }
                break;
            }

            case State.GetBotToken:
            {
                string token = e.Message.Text;
                if (TokenIsValid(token))
                {
                    OurBot existedBot = null;
                    using (var db = DBHelper.GetConnection())
                    {
                        existedBot = db.Table <OurBot>().FirstOrDefault(b => b.Token == token);
                    }
                    if (existedBot != null)
                    {
                        var tBotName = new TelegramBotClient(token).GetMeAsync().Result.Username;
                        await TBot.SendTextMessageAsync(userId, $"Данный токен уже используется в Вашем персональном помощнике @{tBotName}");
                    }
                    else
                    {
                        BotController.RegisterNewBot(e.Message.Text, userId, nameof(Scheme1));
                        await TBot.SendTextMessageAsync(userId, $"Поздравляем");
                    }
                }
                else
                {
                    await TBot.SendTextMessageAsync(userId, "Неверный токен");

                    SetGetTokenState(e);
                }
                break;
            }
            }
        }
Ejemplo n.º 18
0
        public async override void Next(MessageEventArgs e)
        {
            var    userId  = e.Message.From.Id;
            string btnText = e.Message.Text;
            var    state   = GetUserState(userId);

            if (btnText == Texts.ToStartButton)
            {
                SetGreetingState(e.Message.From.Id);
            }
            else
            {
                switch (state)
                {
                case State.ChooseSettings:
                {
                    if (btnText == Texts.PersonalAccount.StatisticsButton)
                    {
                        SetChooseStatisticsState(e);
                    }
                    else if (btnText == Texts.PersonalAccount.TextsEditingButton)
                    {
                        SetChooseBlockState(e);
                    }
                    else if (btnText == Texts.BackButton)
                    {
                        SetGreetingState(e.Message.From.Id);
                    }
                    break;
                }

                case State.ChooseStatistics:
                {
                    if (btnText == Texts.PersonalAccount.AllUsersButton)
                    {
                        ShowAllUsers(e);
                    }
                    else if (btnText == Texts.PersonalAccount.LamagnaPassedUsersButton)
                    {
                        ShowLamagnaPassedUsers(e);
                    }
                    else if (btnText == Texts.PersonalAccount.TrippierPassedUsersButton)
                    {
                        ShowTrippierPassedUsers(e);
                    }
                    else if (btnText == Texts.PersonalAccount.MainProductPassedUsersButton)
                    {
                        ShowMainProductPassedUsers(e);
                    }
                    else if (btnText == Texts.BackButton)
                    {
                        SetChooseSettingsState(e);
                    }
                    break;
                }

                case State.ChooseBlockToEdit:
                {
                    if (btnText == Texts.BackButton)
                    {
                        SetChooseSettingsState(e);
                    }
                    else if (Texts.ValidBlockName(e.Message.Text))
                    {
                        SaveBlockChoice(userId, e.Message.Text);
                        SetChooseTextState(e);
                    }
                    else
                    {
                        await TBot.SendTextMessageAsync(userId, $"{Emoji.Error} Нет такого блока.");

                        SetChooseBlockState(e);
                    }
                    break;
                }

                case State.ChooseTextToEdit:
                {
                    if (btnText == Texts.BackButton)
                    {
                        SetChooseBlockState(e);
                    }
                    else
                    {
                        SaveTextChoice(userId, e.Message.Text);
                        SetEnterNewTextState(e);
                    }
                    break;
                }

                case State.EnterNewText:
                {
                    if (btnText == Texts.BackButton)
                    {
                        SetChooseTextState(e);
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(btnText))
                        {
                            await TBot.SendTextMessageAsync(userId, "Молчание не привлечёт к вам клиентов!");

                            SetChooseTextState(e);
                        }
                        UpdateText(e);
                    }
                    break;
                }
                }
            }
        }