/// <summary>
        /// Backs to previous menu
        /// </summary>
        private void BackToPreviousMenu()
        {
            if (_previousMenus.Count < 1)
            {
                SendMessage(Resources.Resources.NowhereBack, nameof(BackToPreviousMenu));

                return;
            }

            _messageFromUserExpected = false;
            _expectedAct             = default;
            _currentMenu             = _previousMenus[^ 1];
 public LessonStartNotification()
 {
     List<string> strings = new List<string>();
     for (int i = MINNOTIFICATIONTIME; i <= MAXNOTIFICATIONTIME; i += INTERVAL)
         strings.Add($"{i} min.");
     strings.Add("/annuleer");
     _keyboard = ReplyKeyboardMarkup.GetKeyboardForValues(strings, 3);
 }
 static async Task RequestContact(Message message)
 {
     var RequestReplyKeyboard = new ReplyKeyboardMarkup(new[]
     {
         KeyboardButton.WithRequestContact("Contact"),
     });
     await Bot.SendTextMessageAsync(
         chatId : message.Chat.Id,
         text : "Who are you?",
         replyMarkup : RequestReplyKeyboard
         );
 }
Ejemplo n.º 4
0
        public override async Task Execute(Message message, TelegramBotClient botClient)
        {
            var rkm = new ReplyKeyboardMarkup();

            rkm.Keyboard = await _service.GetKeyboards("./InfoKz.json", "Бас мәзір");

            string text   = @"Жаңа коронавирус инфекциясы (COVID-19) – бұл жақында ашылған коронавирустардың соңғысы туындататын жұқпалы ауру.
Коронавирустар – адамдарды да, жануарларды да ауруға шалдықтыруы мүмкін вирустардың кең тобы.
";
            var    chatId = message.Chat.Id;
            await botClient.SendTextMessageAsync(chatId, text, parseMode : Telegram.Bot.Types.Enums.ParseMode.Html, true, true, 0, rkm);
        }
Ejemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="e"></param>
        /// <returns></returns>
        private static async Task TrySendToCompany(CallbackQueryEventArgs e)
        {
            var lang   = new DataContext().Languages.FirstOrDefault(f => f.ChatId == e.CallbackQuery.From.Id);
            var langId = lang != null ? lang.LanguageId : 1;
            var orders = await OrdersService.GetByPositionChatIdDate(e.CallbackQuery.From.Id, 1);

            if (orders != null)
            {
                string suxoypar      = langId == 1 ? "💨Suxoy tuman" : "💨Сухой пар";
                string naqt          = langId == 1 ? "💵 Naqd to'lash" : "💵 Платить наличными";
                string card          = langId == 1 ? "💳 Karta raqam orqali to'lash" : "💳 Оплата по номеру карты";
                string cardNum       = langId == 1 ? "Karta raqam:" : "Номер карты:";
                var    texts         = e.CallbackQuery.Data == "paynaqt" ? "💵 Naqd to'lash" : "💳 Karta raqam orqali to'lash";
                var    textForClient = e.CallbackQuery.Data == "paynaqt" ? "" : "";
                double allsum        = 0;
                var    ordersText    = "";
                var    client        = await ClientService.GetByChatId(e.CallbackQuery.From.Id);

                foreach (var order in orders)
                {
                    allsum     = allsum + (order.ServiceModel?.Price * order.Count).Value;
                    ordersText = ordersText + "\n" + order.ServiceModel?.Name + "\n" + "\t" + order.ServiceModel?.Name + " " + order.Count + " x" + " " + order.ServiceModel?.Price + "=" + (order.ServiceModel?.Price * order.Count);
                    if (order.SuxoyPar != null)
                    {
                        ordersText += ordersText = "\n  " + suxoypar + " = 0";
                        allsum     += 0;
                    }
                    ordersText += "\n\n---------\n\n";
                    OrdersService.AddOrUpdate(new Orders()
                    {
                        Id = order.Id, ChatId = order.ChatId, ServiceId = order.ServiceId, Longitude = order.Longitude, Lotetude = order.Lotetude, Position = 2, DateOrder = order.DateOrder, Count = order.Count
                    });
                }
                ordersText = ordersText + "Umumiy: " + allsum + " so'm";
                var companys = CompanyService.GetAll();
                foreach (var item in companys)
                {
                    string text = $"Klient- {client.Name} Telefon nomeri- {client.Phone}" + "\n" + ordersText + "\n --------- \n To'lov turi: " + texts;
                    Bot.SendTextMessageAsync(item.ChatId, text);
                    var longetude = float.Parse(orders.FirstOrDefault().Longitude);
                    var lotetude  = float.Parse(orders.FirstOrDefault().Lotetude);
                    Bot.SendLocationAsync(item.ChatId, lotetude, longetude);
                }
                var RequestReplyKeyboard = new ReplyKeyboardMarkup(new[] { new KeyboardButton() });
                ordersText = ordersText + "\n \n" + textForClient;
                var inline = new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithCallbackData(langId == 1 ? "Ish yakunlandi" : "Работа завершена", "done") } });
                Bot.EditMessageTextAsync(e.CallbackQuery.From.Id, messageId: e.CallbackQuery.Message.MessageId, ordersText, replyMarkup: inline);
            }
            else
            {
                InliniButtonForServices(e);
            }
        }
Ejemplo n.º 6
0
        private ReplyKeyboardMarkup CreateStartKeyboard()
        {
            var keyboard = new ReplyKeyboardMarkup(new[]
            {
                groupProvider
                .GetAllGroups()
                .Select(x => new KeyboardButton(x))
                .ToArray()
            });

            return(keyboard);
        }
Ejemplo n.º 7
0
        private async Task <ReplyKeyboardMarkup> GetMenu(string command)
        {
            IEnumerable <League> leagues = await _leagueRepository.GetAll(version);

            League currentLeague = leagues.FirstOrDefault(p => p.Name == command);
            List <List <KeyboardButton> > buttons = CreateButtons(currentLeague, command);
            ReplyKeyboardMarkup           menu    = new ReplyKeyboardMarkup(buttons);

            // menu.Keyboard = buttons;

            return(menu);
        }
Ejemplo n.º 8
0
        public ReplyKeyboardMarkup GetReplyKeyboardMarkupByCategories()
        {
            var rkm = new ReplyKeyboardMarkup();

            //rkm.ResizeKeyboard = true;
            rkm.Keyboard =
                new[]
            {
                Messages.Categories.Select(c => new KeyboardButton(c))
            };
            return(rkm);
        }
Ejemplo n.º 9
0
        public static async Task SendMessage(long chatId, string text, ReplyKeyboardMarkup markup)
        {
            if (markup != null)
            {
                await SendButtonMessage(chatId, text, markup);
            }

            else
            {
                await Bot.SendTextMessageAsync(chatId, text);
            }
        }
Ejemplo n.º 10
0
 public async void SendTextMessageAsync(ChatId chatId, string message, ReplyKeyboardMarkup keyboard = null)
 {
     if (string.IsNullOrEmpty(message))
     {
         return;
     }
     if (keyboard == null)
     {
         keyboard = Keyboards.Main;
     }
     await TelegramBot.SendTextMessageAsync(chatId : chatId, text : message, parseMode : Telegram.Bot.Types.Enums.ParseMode.Default, disableWebPagePreview : true, disableNotification : false, replyToMessageId : 0, replyMarkup : keyboard);
 }
Ejemplo n.º 11
0
        private static ReplyKeyboardMarkup CreateKeyboard()
        {
            var keyboard = new ReplyKeyboardMarkup(new[]
            {
                new []
                {
                    new KeyboardButton("Назад")
                }
            });

            return(keyboard);
        }
Ejemplo n.º 12
0
        protected void ShowOptions(Message message)
        {
            //get selected option
            var options = RefusalTypeRepository.List();

            var keyboard = new ReplyKeyboardMarkup(GetKeyboard(options), false, true);

            Api.SendTextMessageAsync(message.Chat.Id, TelegramBotMessages.AskRefusalText, false, false, 0,
                                     keyboard, ParseMode.Default, CancellationToken.None);

            UpdateCurrentState(message.Chat.Id, RefusalWorkflowStatusType.ShowedOptions);
        }
Ejemplo n.º 13
0
        private ReplyKeyboardMarkup RestartKeyboard()
        {
            var keyboard = new ReplyKeyboardMarkup(new[]
            {
                new []     // first row
                {
                    new KeyboardButton("شروع دوباره"),
                }
            });

            return(keyboard);
        }
Ejemplo n.º 14
0
        private static ReplyKeyboardMarkup CreatePreStartKeyboard()
        {
            var keyboard = new ReplyKeyboardMarkup(new[]
            {
                new []
                {
                    new KeyboardButton("Начать")
                }
            });

            return(keyboard);
        }
Ejemplo n.º 15
0
        /// <summary>
        ///
        /// </summary>
        public webhookController()
        {
            bot = new Api(botToken);

            //تعریف کیبورد
            main_menu_key = new ReplyKeyboardMarkup
            {
                Keyboard        = new KeyboardButton[][] { new KeyboardButton[] { "ارسال عکس" }, new KeyboardButton[] { "درباره", "راهنما" } },
                ResizeKeyboard  = true,
                OneTimeKeyboard = true,
            };
        }
Ejemplo n.º 16
0
        public void CreateInstanceAndCheckParameters()
        {
            const string responseText = "Hello";
            var          keybord      = new ReplyKeyboardMarkup(new KeyboardButton[] { "FirstButton", "SecondButton" });
            var          response     = new Response(responseText)
            {
                ReplyMarkup = keybord
            };

            Assert.AreEqual(responseText, response.Text);
            Assert.IsTrue(keybord.Equals(response.ReplyMarkup));
        }
Ejemplo n.º 17
0
        static void Main()
        {
            Console.WriteLine("Start!");

            var bot = new BotClient("<your bot token>");

            bot.SetMyCommands(new BotCommand("reply", "ReplyMarkup"), new BotCommand("del", "Delete"));

            // Long Polling
            var updates = bot.GetUpdates();

            while (true)
            {
                if (updates.Length > 0)
                {
                    foreach (var update in updates)
                    {
                        switch (update.Type)
                        {
                        case UpdateType.Message:
                            if (update.Message.Text.Contains("/reply"))
                            {
                                var keyboard = new ReplyKeyboardMarkup
                                {
                                    Keyboard = new KeyboardButton[][] {
                                        new KeyboardButton[] {
                                            new KeyboardButton("Button 1"), //column 1 row 1
                                            new KeyboardButton("Button 2")  //column 1 row 2
                                        },                                  // column 1
                                        new KeyboardButton[] {
                                            new KeyboardButton("Button 3")  //col 2 row 1
                                        }                                   // column 2
                                    },
                                    ResizeKeyboard = true
                                };;
                                bot.SendMessage(update.Message.Chat.Id, "new keyboard", replyMarkup: keyboard);
                            }
                            if (update.Message.Text.Contains("/del"))
                            {
                                bot.SendMessage(update.Message.Chat.Id, "remove reply keyboard", replyMarkup: new ReplyKeyboardRemove());
                            }
                            break;
                        }
                    }
                    updates = bot.GetUpdates(offset: updates.Max(u => u.UpdateId) + 1);
                }
                else
                {
                    updates = bot.GetUpdates();
                }
            }
        }
Ejemplo n.º 18
0
        public void SendMessage(string mytext)
        {
            client.OnMessage += BotClient_OnMessage;
            client.StartReceiving();

            async void BotClient_OnMessage(object sender, MessageEventArgs e)
            {
                var keyboard = new ReplyKeyboardMarkup();
                var buttons  = new List <KeyboardButton[]>();
                var button   = new List <KeyboardButton>();

                button.Add(new KeyboardButton(DefaultNames.one_time_event));
                button.Add(new KeyboardButton(DefaultNames.custom_event));
                button.Add(new KeyboardButton(DefaultNames.period_event));
                buttons.Add(button.ToArray());
                keyboard.Keyboard = buttons.ToArray();
                if (e.Message.Text != null)
                {
                    if (e.Message.Text == DefaultNames.one_time_event)
                    {
                        await client.SendTextMessageAsync
                        (
                            chatId : e.Message.Chat,
                            text : mytext,
                            replyMarkup : keyboard
                        );
                    }
                    if (e.Message.Text == DefaultNames.custom_event)
                    {
                        await client.SendTextMessageAsync
                        (
                            chatId : e.Message.Chat,
                            text : mytext,
                            replyMarkup : keyboard
                        );
                    }
                    if (e.Message.Text == DefaultNames.period_event)
                    {
                        await client.SendTextMessageAsync
                            (chatId : e.Message.Chat,
                            text : mytext,
                            replyMarkup : keyboard
                            );
                    }
                    await client.SendTextMessageAsync
                        (chatId : e.Message.Chat,
                        text : "Go!!!",
                        replyMarkup : keyboard
                        );
                }
            }
        }
Ejemplo n.º 19
0
        public async Task RequestLocation()
        {
            ReplyKeyboardMarkup RequestReplyKeyboard = new ReplyKeyboardMarkup(new[]
            {
                KeyboardButton.WithRequestLocation("Location"),
            });

            await TelegramBotClient.SendTextMessageAsync(
                chatId : Update.Message.Chat.Id,
                text : "Send your location please 😉",
                replyMarkup : RequestReplyKeyboard
                );
        }
Ejemplo n.º 20
0
        public static async void ShowButton(ITelegramBotClient _bot, MessageEventArgs args)
        {
            var buttonNext = new KeyboardButton("Next");
            var buttonBack = new KeyboardButton("Back");
            var markup     = new ReplyKeyboardMarkup(new[]
            {
                buttonBack,
                buttonNext
            });

            markup.OneTimeKeyboard = false;
            await _bot.SendTextMessageAsync(args.Message.Chat.Id, " ", replyMarkup : markup);
        }
        public void ShowMainMenu(long chatId)
        {
            var keyboard = new ReplyKeyboardMarkup(new[]
            {
                new[]
                {
                    new KeyboardButton("Рассчитай ингредиент"),
                    new KeyboardButton("Покажи сохраненные рецепты")
                }
            });

            BotClient.SendTextMessageAsync(chatId, "Нажимай на кнопочки - будет весело!", replyMarkup: keyboard);
        }
Ejemplo n.º 22
0
 static async Task RequestContactAndLocation(Message message)
 {
     var RequestReplyKeyboard = new ReplyKeyboardMarkup(new[]
     {
         KeyboardButton.WithRequestLocation("Location"),
         KeyboardButton.WithRequestContact("Contact"),
     });
     await botClient.SendTextMessageAsync(
         chatId : message.Chat.Id,
         text : "Who or Where are you?",
         replyMarkup : RequestReplyKeyboard
         );
 }
Ejemplo n.º 23
0
        /// <summary>
        /// Создание клавиатуры для пользователя
        /// </summary>
        static ReplyKeyboardMarkup UsersDefaultKeyboard()
        {
            ReplyKeyboardMarkup keyboard = new ReplyKeyboardMarkup(new[]
            {
                new []     // first row
                {
                    new KeyboardButton("*Путешествие"),
                    new KeyboardButton("*Бросок кубика"),
                },
            }, true, false);

            return(keyboard);
        }
Ejemplo n.º 24
0
        public static void SetupReplyMarkup()
        {
            var buttonHome        = new KeyboardButton("Дома");
            var buttonStroll      = new KeyboardButton("Гуляю");
            var buttonForAStroll  = new KeyboardButton("Еду на прогулку");
            var buttonFromAStroll = new KeyboardButton("Еду с прогулки");

            var raw1 = new[] { buttonStroll, buttonForAStroll };
            var raw2 = new[] { buttonHome, buttonFromAStroll };
            var raws = new[] { raw1, raw2 };

            ReplyMarkup = new ReplyKeyboardMarkup(raws, true);
        }
Ejemplo n.º 25
0
        public async Task ExecuteCommand(string chatId, User userJoined, User userLeft)
        {
            var keyboard = new ReplyKeyboardMarkup(new[]
            {
                new KeyboardButton(BotCommands.AndroidApp),
                new KeyboardButton(BotCommands.IosApp),
                new KeyboardButton(BotCommands.Return)
            }, true);

            var msg = await _messagesService.GetAppMsg();

            await _telegramBotClient.SendTextMessageAsync(chatId, msg, ParseMode.Default, false, false, 0, keyboard);
        }
Ejemplo n.º 26
0
        protected DialogCommandBase(int label)
        {
            Label = label;

            if (!string.IsNullOrWhiteSpace(ReturnCommandMessage))
            {
                ReturnKeyboardMarkup = new ReplyKeyboardMarkup(new[] { new KeyboardButton(ReturnCommandMessage) })
                {
                    OneTimeKeyboard = true,
                    ResizeKeyboard  = true
                };
            }
        }
Ejemplo n.º 27
0
 internal static async Task RequestContact(TelegramBotClient bot, int userId)
 {
     var replyKeyBoard = new ReplyKeyboardMarkup(new[]
     {
         new [] { new KeyboardButton("Поделиться своим контактом")
                  {
                      RequestContact = true
                  } },
         new [] { new KeyboardButton("\ud83c\udf81 Хочу подарить \ud83c\udf81") },
     }, resizeKeyboard: true);
     string msg = "Для сохранения подарков, Вы должны зарегистрироваться, отправив нам свой контакт, нажав соответсвующую кнопку на клавиатуре.";
     await bot.SendTextMessageAsync(userId, msg, replyMarkup : replyKeyBoard);
 }
Ejemplo n.º 28
0
        /// <summary>
        /// Ответ с клавиатурой
        /// </summary>
        /// <param name="msg">Сообщение</param>
        /// <param name="keyboard">Клавиатура</param>
        /// <param name="args">Аргументы</param>
        /// <param name="chat">Чат ИД</param>
        private static void WithKeyboardSending(string msg, ReplyKeyboardMarkup keyboard, MessageEventArgs args = null, ChatId chat = null)
        {
            TelegramBotClient Bot = SimpleTBot.GetBot();

            if (chat is null)
            {
                Bot.SendTextMessageAsync(args.Message.Chat.Id, msg, replyMarkup: keyboard);
            }
            else
            {
                Bot.SendTextMessageAsync(chat, msg, replyMarkup: keyboard);
            }
        }
Ejemplo n.º 29
0
        private async Task SendReplyKeyboard(Message message)
        {
            var replyKeyboardMarkup = new ReplyKeyboardMarkup(
                new[]
            {
                new[] { KeyboardButton.WithRequestLocation("Location"), "1" },
                new[] { KeyboardButton.WithRequestContact("Contact"), "2" },
            },
                true
                );

            await _client.SendTextMessageAsync(message.Chat.Id, Strings.Choose, replyMarkup : replyKeyboardMarkup);
        }
Ejemplo n.º 30
0
 private void PrepareKeyboard()
 {
     if (_user.Symptoms == Symptoms.None)
     {
         AnswerKeyboard = new ReplyKeyboardMarkup(new List <KeyboardButton>
         {
             new KeyboardButton
             {
                 Text = "[TBD]В начало"
             }
         }, oneTimeKeyboard: true);
     }
 }
Ejemplo n.º 31
0
        public async override Task Execute(Message message, ITelegramBotClient client)
        {
            string text = MessageConstant.CHOOSE_LEAGUE;

            if (message.Text == MessageConstant.DEVELOP)
            {
                text = "В разработке:\n1. Бот будет сам уведомлять когда игра\n\nСвязь с разработчиком\n0955923228";
            }

            ReplyKeyboardMarkup keyboard = await GetMenu();

            await client.SendTextMessageAsync(message.Chat.Id, text, ParseMode.Html, false, false, 0, keyboard);
        }
Ejemplo n.º 32
0
        public override bool Execute()
        {
            string suggestionId;
            if (string.IsNullOrEmpty(Arguments))
            {
                Console.WriteLine(GetType().Name + ": Sending 'Enter suggestion number' prompt");
                try
                {
                    TelegramApi.SendMessage(Message.From, "Введите номер предложения");
                }
                catch (Exception e)
                {
                    throw new Exception(GetType().Name + ": An error occurred while sending prompt", e);
                }

                Console.WriteLine(GetType().Name + ": Waiting for a message that contains show title");
                try
                {
                    suggestionId = TelegramApi.WaitForMessage(Message.From).Text;
                }
                catch (Exception e)
                {
                    throw new Exception(GetType().Name + ": An error occurred while waiting for a message that contains show title", e);
                }
            }
            else
            {
                suggestionId = Arguments;
            }

            ReplyKeyboardMarkup replyRateKB = new ReplyKeyboardMarkup();
            replyRateKB.Keyboard = new string[][]
                    {
                        new string[] {"/+","/-"},
                        new string[] {"/back"}

                    };
            replyRateKB.OneTimeKeyboard = true;
            replyRateKB.ResizeKeyboard = true;
            replyRateKB.Selective = false;

            int sId = int.Parse(suggestionId);

            using (var db = new AppDbContext())
            {
                Suggestion suggestion;
                //Rating rating;
                try
                {
                    suggestion = db.GetSuggestionById(sId);
                }
                catch (Exception e)
                {
                    throw new Exception(GetType().Name + ": An error occurred while searching suggestion #" + suggestionId + " in database", e);
                }

                if (suggestion != null)
                {
                    Console.WriteLine(GetType().Name + ": Searching user with TelegramId: " + Message.From.Id + " in database");
                    User user;
                    try
                    {
                        user = db.GetUserByTelegramId(Message.From.Id);
                    }
                    catch (Exception e)
                    {
                        throw new Exception(GetType().Name + ": An error occurred while searching user in database", e);
                    }

                    bool newUser = false;
                    if (user == null)
                    {
                        user = new User
                        {
                            TelegramUserId = Message.From.Id,
                            FirstName = Message.From.FirstName,
                            LastName = Message.From.LastName,
                            Username = Message.From.Username
                        };
                        newUser = true;
                    }

                    if (newUser)
                    {
                        Console.WriteLine(GetType().Name + ": " + user + " is new User");
                    }
                    else
                    {
                        Console.WriteLine(GetType().Name + ": User " + user + " already exists");
                    }

                    Rating rating;

                    try
                    {
                        var _user = db.Users.Include(u => u.Ratings).FirstOrDefault(r => r.Id==user.Id);
                        rating = _user.Ratings.FirstOrDefault(r => r.Suggestion.Id == suggestion.Id);
                    }
                    catch (Exception e)
                    {
                        throw new Exception(GetType().Name + ": An error occurred while checking for rating", e);
                    }
                    /* if (rating == null)
                     {
                         rating = new Rating
                         {
                             User = user,
                             Suggestion = suggestion,
                             isRatedUp = true
                         }
                     }*/

                    //}

                    //do
                    //{
                    //using (var db = new AppDbContext())
                    //{

                    /*if (suggestion.AddedBy == userRated)
                        replyRateKB.Keyboard[1] = new string[] { "/delete" };*/

                    if (rating != null)
                    {
                        if (rating.isRatedUp)
                        {
                            replyRateKB.Keyboard[0] = new string[] { "/-" };
                        }
                        else
                        {
                            replyRateKB.Keyboard[0] = new string[] { "/+" };
                        }
                    }
                    else
                    {
                        replyRateKB.Keyboard[0] = new string[] { "/+", "/-" };
                    }

                    try
                    {
                        TelegramApi.SendMessage(Message.From, suggestion.ToString(), replyRateKB);
                    }
                    catch (Exception e)
                    {
                        throw new Exception(GetType().Name + ": An error occurred while sending suggest description", e);
                    }

                    Message message;
                    try
                    {
                        message = TelegramApi.WaitForMessage(Message.From);
                    }
                    catch (Exception e)
                    {
                        throw new Exception(GetType().Name + ": An error occurred while waiting for a message with rate action", e);
                    }

                    /*if (suggestion.AddedBy != userRated)
                    {*/
                    if (rating != null)
                    {
                        if (message.Text == "/+" && !rating.isRatedUp)
                        {
                            suggestion.Rate += 1;
                            db.Ratings.Remove(rating);
                        }
                        else if (message.Text == "/-" && rating.isRatedUp)
                        {
                            suggestion.Rate -= 1;
                            db.Ratings.Remove(rating);
                        }
                    }
                    else
                    {
                        if (message.Text == "/+")
                        {
                            suggestion.Rate += 1;
                            rating = new Rating()
                            {
                                User = user,
                                Suggestion = suggestion,
                                isRatedUp = true
                            };
                            db.Ratings.Add(rating);
                        }
                        else if (message.Text == "/-")
                        {
                            suggestion.Rate -= 1;
                            rating = new Rating()
                            {
                                User = user,
                                Suggestion = suggestion,
                                isRatedUp = false
                            };
                            db.Ratings.Add(rating);
                        }
                    }
                    //}
                    db.SaveChanges();
                }
                else
                {
                    Console.WriteLine(GetType().Name + ": Suggestion does not exist");
                    try
                    {
                        TelegramApi.SendMessage(Message.From, "Suggestion does not exist");
                    }
                    catch (Exception e)
                    {
                        throw new Exception(GetType().Name + ": An error occured while sending notification of nonexistent suggestion", e);
                    }
                }
                //} while (message.Text != "/+" && message.Text != "/-" && message.Text != "/delete" && message.Text != "/back");
            }
            Status = true;
            return true;
        }
Ejemplo n.º 33
0
 internal static void Send(string message, long id, bool clearKeyboard = false, ReplyKeyboardMarkup customMenu = null)
 {
     Bot.Send(message, id, clearKeyboard, customMenu);
 }
Ejemplo n.º 34
0
 internal static void Send(string message, long id, bool clearKeyboard = false, ReplyKeyboardMarkup customMenu = null)
 {
     //message = message.Replace("`",@"\`");
     if (clearKeyboard)
     {
         var menu = new ReplyKeyboardHide { HideKeyboard = true };
         Api.SendTextMessage(id, message, replyMarkup: menu, disableWebPagePreview: true);
     }
     else if (customMenu != null)
     {
         Api.SendTextMessage(id, message, replyMarkup: customMenu, disableWebPagePreview: true);
     }
     else
     {
         Api.SendTextMessage(id, message, disableWebPagePreview: true);
     }
 }
 private TelegramBotReply FailedInstruction(Message m, ReplyKeyboardMarkup customKeyboard = null)
 {
     return Message(m, @"Er is iets fout gegaan! Gebruik de toetsen op het toetsenbord.", replyMarkup: customKeyboard ?? keyboard);
 }
Ejemplo n.º 36
0
        private static async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs)
        {
            var message = messageEventArgs.Message;

            if (message == null || message.Type != MessageType.TextMessage) return;

            if (message.Text.StartsWith("/inline")) // send inline keyboard
            {
                await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing);

                var keyboard = new InlineKeyboardMarkup(new[]
                {
                    new[] // first row
                    {
                        new InlineKeyboardButton("1.1"),
                        new InlineKeyboardButton("1.2"),
                    },
                    new[] // second row
                    {
                        new InlineKeyboardButton("2.1"),
                        new InlineKeyboardButton("2.2"),
                    }
                });

                await Task.Delay(500); // simulate longer running task

                await Bot.SendTextMessageAsync(message.Chat.Id, "Choose",
                    replyMarkup: keyboard);
            }
            else if (message.Text.StartsWith("/keyboard")) // send custom keyboard
            {
                var keyboard = new ReplyKeyboardMarkup(new[]
                {
                    new [] // first row
                    {
                        new KeyboardButton("1.1"),
                        new KeyboardButton("1.2"),  
                    },
                    new [] // last row
                    {
                        new KeyboardButton("2.1"),
                        new KeyboardButton("2.2"),  
                    }
                });

                await Bot.SendTextMessageAsync(message.Chat.Id, "Choose",
                    replyMarkup: keyboard);
            }
            else if (message.Text.StartsWith("/photo")) // send a photo
            {
                await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.UploadPhoto);

                const string file = @"<FilePath>";

                var fileName = file.Split('\\').Last();

                using (var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    var fts = new FileToSend(fileName, fileStream);

                    await Bot.SendPhotoAsync(message.Chat.Id, fts, "Nice Picture");
                }
            }
            else if (message.Text.StartsWith("/request")) // request location or contact
            {
                var keyboard = new ReplyKeyboardMarkup(new []
                {
                    new KeyboardButton("Location")
                    {
                        RequestLocation = true
                    },
                    new KeyboardButton("Contact")
                    {
                        RequestContact = true
                    }, 
                });

                await Bot.SendTextMessageAsync(message.Chat.Id, "Who or Where are you?", replyMarkup: keyboard);
            }
            else
            {
                var usage = @"Usage:
/inline   - send inline keyboard
/keyboard - send custom keyboard
/photo    - send a photo
/request  - request location or contact
";

                await Bot.SendTextMessageAsync(message.Chat.Id, usage,
                    replyMarkup: new ReplyKeyboardHide());
            }
        }
Ejemplo n.º 37
0
        public override bool Execute()
        {
            //Program.Logger.Debug($"{GetType().Name}: Parsing message size. Arguments: {Arguments}");
            int messageSize;
            int.TryParse(Arguments, out messageSize);
            if (messageSize == 0)
            {
                messageSize = MaxPageSize;
            }
            messageSize = Math.Min(messageSize, MaxPageSize);
            //Program.Logger.Debug($"{GetType().Name}: Message size: {messageSize}");

            List<string> suggestions;

            //Program.Logger.Debug($"{GetType().Name}: Retrieving shows list");
            using (var db = new AppDbContext())
            {
                try
                {
                    suggestions = db.Suggestions.Select(s => "/" + s.Id + " " + s.Title + "\nрейтинг: "+ s.Rate  + "\nпредложено " + s.AddedBy.FirstName + " " + s.AddedBy.LastName).ToList();
                }
                catch (Exception e)
                {
                    throw new Exception(GetType().Name + ": An error occurred while retrieving shows list", e);
                }
            }

            List<string> pagesList = new List<string>();
            for (int i = 0; i < suggestions.Count; i += messageSize)
            {
                if (i > suggestions.Count)
                {
                    break;
                }

                int count = Math.Min(suggestions.Count - i, messageSize);
                pagesList.Add(
                    suggestions.GetRange(i, count)
                    .Aggregate("", (s, s1) => s + "\n" + s1)
                    );
            }

            try
            {
                //Program.Logger.Debug($"{GetType().Name}: Sending shows list");

                for (int i = 0; i < pagesList.Count; i++)
                {
                    string page = pagesList[i];
                    ReplyKeyboardMarkup replyKB = new ReplyKeyboardMarkup();
                    replyKB.Keyboard = new string[][]
                    {
                        new string[] {"/next","/stop"}

                    };
                    replyKB.OneTimeKeyboard = true;
                    replyKB.ResizeKeyboard = true;
                    replyKB.Selective = false;

                    if (i != pagesList.Count - 1)
                    {
                        page += "\n/next or /stop";
                        replyKB.Keyboard[0]= new string[] {"/next","/stop"};
                    }

                    if (i == pagesList.Count - 1)
                    {
                        page += "\n/stop";
                        replyKB.Keyboard[0]= new string[] {"/stop"};
                    }
                    TelegramApi.SendMessage(Message.From, page,replyKB);
                    Message message;
                    /*ReplyKeyboardMarkup replyKB = new ReplyKeyboardMarkup();
                    replyKB.Keyboard = new string[][]
                    {
                        new string[] {"/next","/stop"}

                    };
                    replyKB.OneTimeKeyboard = true;
                    replyKB.ResizeKeyboard = true;
                    replyKB.Selective = false;*/
                    ReplyKeyboardMarkup replyRateKB = new ReplyKeyboardMarkup();
                    replyRateKB.Keyboard = new string[][]
                    {
                        new string[] {"/+","/-"}

                    };
                    replyRateKB.OneTimeKeyboard = true;
                    replyRateKB.ResizeKeyboard = true;
                    replyRateKB.Selective = false;
                    string footerText = "";

                    do
                    {
                        message = TelegramApi.WaitForMessage(Message.From);
                        if (message.Text != "/stop" && (i == pagesList.Count - 1 || message.Text != "/next"  ))
                        {
                            //if (message.Text = )
                            string someMatch = SuggestionNumRegex.Match(message.Text).Groups[0].Value;
                            if (someMatch == "" || someMatch == null)
                            {
                                if (i == pagesList.Count - 1)
                                {
                                    footerText = "\n/stop or /+";
                                    replyKB.Keyboard[0]= new string[] {"/stop"};
                                }
                                else
                                {
                                    footerText = "\n/next or /stop or /+";
                                    replyKB.Keyboard[0]= new string[] {"/next","/stop"};
                                }
                                TelegramApi.SendMessage(Message.From, footerText, replyKB);
                            }
                            else
                            {
                                using (var db = new AppDbContext())
                                {
                                    try
                                    {
                                        int sId = int.Parse(someMatch);
                                        Suggestion fullSuggestion = db.Suggestions.Include(s => s.AddedBy).FirstOrDefault(s => s.Id == sId);

                                        /*Console.WriteLine(fullSuggestion.Title + "\nдобавлено " + fullSuggestion.AddedBy.FirstName +
                                            " " + fullSuggestion.AddedBy.LastName +  "\n рейтинг: " + fullSuggestion.Rate + "\n" + fullSuggestion.Text);*/
                                        TelegramApi.SendMessage(Message.From, fullSuggestion.ToString(), replyRateKB);
                                    }
                                    catch (Exception e)
                                    {
                                        throw new Exception(GetType().Name + ": An error occurred while sending suggest description", e);
                                    }
                                }
                            }

                        }
                    } while (message.Text != "/stop" && (i == pagesList.Count - 1 || message.Text != "/next"));

                    if (message.Text == "/stop")
                    {
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw new Exception(GetType().Name + ": An error occurred while sending suggestions list", e);
            }

            Status = true;
            return true;
        }
 public JoinMessageFlow(Game[] games)
 {
     this.games = games;
     keyboard = GetKeyboard();
 }