예제 #1
0
        public async Task OnStart(ApplicationContext context, Message message, TelegramBotClient client)
        {
            long chatId = message.Chat.Id;

            if (!await UserDB.IsUserExists(context, chatId))
            {
                UserDB.AddUser(context, chatId, message.From.Username.Correct());
            }
            else if (!await UserDB.IsUserExistsAndAuthed(context, chatId))
            {
                await UserDB.UserLogin(context, chatId);

                await client.SendTextMessageAsync(chatId, "Мы рады вас снова видеть", ParseMode.Html);
            }
            else
            {
                await client.SendTextMessageAsync(chatId, "Мы вас уже знаем", ParseMode.Html);
            }

            await UserDB.ChangeUserActionAsync(context, chatId, Actions.None);

            TelegramKeyboard keyboard = new TelegramKeyboard();

            keyboard.AddRow("Войти по ивент-коду");
            keyboard.AddRow("Личный кабинет");

            await client.SendTextMessageAsync(chatId, "Чудненько " + "😇" + " Можем приступить", ParseMode.Markdown);

            await client.SendTextMessageAsync(chatId, "У вас есть личный кабинет? Если нет, то войдите по *ивент-коду* \n P.S.*Ивент-код* отправлен в письме регистрации", ParseMode.Markdown, replyMarkup : keyboard.Markup);
        }
예제 #2
0
        public async Task OnWaitingParenTag(ApplicationContext context, Message message,
                                            TelegramBotClient client)
        {
            var text   = message.Text;
            var chatId = message.Chat.Id;
            Tag tag    = new Tag()
            {
                ParentTagID = 0,
                Name        = text,
                Level       = 1
            };

            context.Tags.Add(tag);
            context.SaveChanges();
            await client.SendTextMessageAsync(
                chatId,
                $"Родительский тег *{tag.Name}* добавлен",
                ParseMode.Markdown);

            TelegramKeyboard keyboard = new TelegramKeyboard();

            keyboard.AddRow("Добавить родительский тег");
            keyboard.AddRow("Добавить дочерний тег");
            keyboard.AddRow("Вывести все родительские теги");

            await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForTagAction);

            await client.SendTextMessageAsync(chatId, "Выберите опцию", ParseMode.Markdown, replyMarkup : keyboard.Markup);
        }
예제 #3
0
        public async Task OnWaitingForTagAction(ApplicationContext context, Message message,
                                                TelegramBotClient client)
        {
            var           text    = message.Text;
            var           chatId  = message.Chat.Id;
            StringBuilder builder = new StringBuilder();

            switch (text)
            {
            case "Добавить родительский тег":
                await client.SendTextMessageAsync(
                    chatId,
                    "Введите название нового тега",
                    ParseMode.Markdown);

                await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForParentTag);

                break;

            case "Добавить дочерний тег":

                var parentTags            = Utils.SplitList(2, context.Tags.Where(t => t.Level == 1).ToList());
                TelegramKeyboard keyboard = new TelegramKeyboard();
                foreach (var parentTag in parentTags)
                {
                    keyboard.AddRow(parentTag.Select(e => e.Name));
                }

                await client.SendTextMessageAsync(
                    chatId,
                    "Введите родительский тег к которому надо добавить дочерний",
                    ParseMode.Markdown, replyMarkup : keyboard.Markup);

                await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForChoosingParentTag);

                break;

            case "Вывести все родительские теги":
                builder.Clear();
                builder.AppendLine("теги:");
                List <Tag> tags = context.Tags.Where(e => e.Level == 1).ToList();
                foreach (var tag in tags)
                {
                    builder.AppendLine(tag.Name);
                }
                await client.SendTextMessageAsync(
                    chatId,
                    builder.ToString(),
                    ParseMode.Markdown);

                break;
            }
        }
예제 #4
0
        public async Task OnStop(ApplicationContext context, Message message, TelegramBotClient client)
        {
            long chatId = message.Chat.Id;

            User user = await UserDB.GetUserByChatId(context, chatId);

            if (await UserDB.IsUserExistsAndAuthed(context, chatId))
            {
                if (user.CurrentAction != Actions.DeleteOrNot)
                {
                    TelegramKeyboard keyboard = new TelegramKeyboard();
                    keyboard.AddRow("Да");
                    keyboard.AddRow("Нет");
                    await client.SendTextMessageAsync(chatId, "*Сохранить* ваши данные или *полностью удалить*",
                                                      ParseMode.Markdown,
                                                      replyMarkup : keyboard.Markup);

                    await UserDB.ChangeUserAction(context, chatId, Actions.DeleteOrNot);
                }
            }
        }
예제 #5
0
        public async Task OnWaitingForPassword(ApplicationContext context, Message message,
                                               TelegramBotClient client)
        {
            var text   = message.Text;
            var chatId = message.Chat.Id;

            if (text == AppSettings.Password)
            {
                StringBuilder builder = new StringBuilder();
                builder.AppendLine("Пароль *правильный*");
                builder.AppendLine();
                builder.AppendLine("Вам доступен мой функционал");

                TelegramKeyboard keyboard = new TelegramKeyboard();
                keyboard.AddRow("Создать новое мероприятие");
#if WORK
                keyboard.AddRow("Изменение тегов (в разработке)");
#else
                keyboard.AddRow("Изменение тегов");
#endif
                keyboard.AddRow("Вывести все мероприятия");

                await DatabaseUtils.SetUserAdmin(context, chatId);

                await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForAction);

                await client.SendTextMessageAsync(
                    chatId,
                    builder.ToString(),
                    ParseMode.Markdown,
                    replyMarkup : keyboard.Markup);
            }
            else
            {
                await client.SendTextMessageAsync(
                    chatId,
                    "Пароль неправильный",
                    ParseMode.Markdown);
            }
        }
예제 #6
0
        public async Task OnProfile(ApplicationContext context, Message message, TelegramBotClient client)
        {
            long chatId = message.Chat.Id;
            User user   = await UserDB.GetUserByChatId(context, chatId);

            StringBuilder builder = new StringBuilder();

            if (string.IsNullOrEmpty(user.Email))
            {
                builder.AppendLine(@"Я смотрю мы вас не знаем, войдите по ивент коду ");
                builder.AppendLine();
                builder.AppendLine(@"Введите ивент код");

                await client.SendTextMessageAsync(
                    chatId,
                    builder.ToString(),
                    ParseMode.Markdown);

                await UserDB.ChangeUserAction(context, chatId, Actions.WaitingForEventCode);
            }
            else
            {
                TelegramKeyboard keyboard = new TelegramKeyboard();
                keyboard.AddRow("О мероприятии", "Присоединиться к мероприятию");
                keyboard.AddRow("Режим нетворкинга");
                keyboard.AddRow("Записная книжка");
                keyboard.AddRow("Все мероприятия");

                await client.SendTextMessageAsync(
                    chatId,
                    "Что нужно?",
                    ParseMode.Html,
                    replyMarkup : keyboard.Markup);

                await UserDB.ChangeUserAction(context, chatId, Actions.Profile);
            }
        }
예제 #7
0
        public async Task OnWaitingForAction(ApplicationContext context, Message message,
                                             TelegramBotClient client)
        {
            var           text    = message.Text;
            var           chatId  = message.Chat.Id;
            StringBuilder builder = new StringBuilder();

            switch (text)
            {
            case "Создать новое мероприятие":
                builder.Clear();
                await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForEventName);

                builder.AppendLine("*Режим добавления мероприятия*");
                builder.AppendLine();
                builder.AppendLine("_Введите название мероприятия_");

                await client.SendTextMessageAsync(chatId, builder.ToString(), ParseMode.Markdown);

                break;

            case "Изменение тегов":
                builder.Clear();

                builder.AppendLine("Выберите опцию");

                TelegramKeyboard keyboard = new TelegramKeyboard();
                keyboard.AddRow("Добавить родительский тег");
                keyboard.AddRow("Добавить дочерний тег");
                keyboard.AddRow("Вывести все родительские теги");

                await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForTagAction);

                await client.SendTextMessageAsync(chatId, builder.ToString(), ParseMode.Markdown, replyMarkup : keyboard.Markup);

                break;

            case "Вывести все мероприятия":
                List <Event> events = context.Events.ToList();
                if (events.Count > 0)
                {
                    for (var i = 0; i < events.Count; i++)
                    {
                        builder.AppendLine($"{i+1}: {events[i].Name}");
                    }
                }
                else
                {
                    builder.AppendLine("Нету ивентов");
                }

                await client.SendTextMessageAsync(chatId, builder.ToString());

                break;

            default:
                await client.SendTextMessageAsync(chatId, "Я вас не понимаю");

                break;
            }
        }