Ejemplo n.º 1
0
        private static async void OnMessageReceived(object sender, Telegram.Bot.Args.MessageEventArgs e)
        {
            var message = e.Message;

            if (message == null || message.Type != MessageType.Text)
            {
                return;
            }

            int chatId = message.From.Id;

            switch (message.Text)
            {
            case Commands.Start:
                await BotClient.SendTextMessageAsync(chatId, "Круто", replyMarkup : Keyboards.Menu());

                break;

            case Commands.Add:
                if (eventsInProccess.ContainsKey(chatId))
                {
                    eventsInProccess[chatId] = new Event();
                }
                else
                {
                    eventsInProccess.Add(chatId, new Event());
                }
                Status = Status.WantToAdd;
                await BotClient.SendTextMessageAsync(chatId, "Выберите месяц", replyMarkup : Keyboards.Months());

                break;

            case Commands.List:
                var list = await Data.Events(chatId);

                await BotClient.SendTextMessageAsync(chatId, ListOfEvents(list));

                break;

            case Commands.EditList:
                var events = await Data.Events(chatId);

                Status = Status.WantToEditList;
                await BotClient.DeleteMessageAsync(chatId, message.MessageId);

                await BotClient.SendTextMessageAsync(chatId, ListOfEventsForEdit(events));

                break;

            default:
                if (Status == Status.DaySelected)
                {
                    Event currentEvent = eventsInProccess[chatId];
                    currentEvent.Name = message.Text;
                    Status            = Status.None;
                    await Data.AddEvent(chatId, currentEvent);

                    await BotClient.SendTextMessageAsync(chatId, $"Вы добавили {currentEvent.Name} на дату {currentEvent.Day} {currentEvent.Month.Name}.");
                }
                else if (Status == Status.WantToEditList)
                {
                    int id = GetEventId(message.Text);
                    await Data.DeleteEvent(chatId, id);

                    await BotClient.SendTextMessageAsync(chatId, "Event deleted.");
                }
                break;
            }
        }
Ejemplo n.º 2
0
        private static async void OnCallbackQueryReceived(object sender, Telegram.Bot.Args.CallbackQueryEventArgs e)
        {
            string data         = e.CallbackQuery.Data;
            int    chatId       = e.CallbackQuery.From.Id;
            Event  currentEvent = eventsInProccess[chatId];

            if (Status == Status.WantToAdd)
            {
                if (Months.Any(o => string.Equals(o.Name, data, StringComparison.OrdinalIgnoreCase)))
                {
                    Month month = Months.First(o => string.Equals(o.Name, data, StringComparison.OrdinalIgnoreCase));
                    currentEvent.Month = month;
                    Status             = Status.MonthSelected;
                    await BotClient.DeleteMessageAsync(chatId, e.CallbackQuery.Message.MessageId);

                    await BotClient.SendTextMessageAsync(chatId, $"Окей. Месяц - {month.Name}. Теперь выберите число:", replyMarkup : Keyboards.Days(month));
                }
            }
            else if (Status == Status.MonthSelected)
            {
                currentEvent.Day = Int32.Parse(data);
                Status           = Status.DaySelected;
                await BotClient.DeleteMessageAsync(chatId, e.CallbackQuery.Message.MessageId);

                await BotClient.SendTextMessageAsync(chatId, $"Отлично, {currentEvent.Month.Name} {currentEvent.Day}. Теперь напишите название события:");

                //eventsInProccess[chatId] = currentEvent;
            }
        }