예제 #1
0
 private static async void KeyboardHandler(Message msg)
 {
     var id = msg.Chat.Id;
     var user = Courier.FindById(msg.Chat.Id);
     switch (msg.Text)
     {
         case StaticData.KB_BTN_GRAPHIC:
             // todo need check and more
             var link = Courier.FindById(id)?.PersonalLink;
             var days = WebParser.GetPage(link).GetDays();
             var sb = new StringBuilder();
             foreach (var day in days)
             {
                 sb.AppendLine(day.GetDayData());
                 sb.AppendLine();
             }
             var text = sb.ToString();
             await bot.SendTextMessageAsync(id, text.Replace("Локация старта:", "🗺").Replace("метро", "🚇").Replace("Метро", "🚇").Replace("Время", "⏰"));
             break;
         case StaticData.KB_BTN_FEEDBACK:
             await bot.SendTextMessageAsync(id, StaticData.FEEDBACK);
             Courier.FindById(id).PressHelp = true;
             break;
         case StaticData.KB_BTN_FAQ:
             // todo faq
             await bot.SendTextMessageAsync(id, StaticData.FAQ);
             break;
         case StaticData.KB_BTN_HELP:
             await bot.SendTextMessageAsync(id, StaticData.HELP);
             break;
         case StaticData.KB_BTN_ABOUT:
             await bot.SendTextMessageAsync(id, StaticData.ABOUT);
             break;
         case StaticData.KB_BTN_MY_DATA:
             await bot.SendTextMessageAsync(id, StaticData.MY_DATA);
             break;
         default:
             break;
     }
 }
예제 #2
0
        static void Main()
        {
            bot = new Telegram.Bot.TelegramBotClient("723889901:AAFSFuCmJI62q876qMXOnrZxjGssu6EhI00");

            // загрузка базы курьеров
            Courier.Load();
            Console.WriteLine("База загружена");

            // события TelegramAPI и их обработчики
            bot.OnMessage            += BotOnMessageReceived;
            bot.OnMessageEdited      += BotOnMessageReceived;
            bot.OnCallbackQuery      += BotOnCallbackQueryReceived;
            bot.OnInlineQuery        += BotOnInlineQueryReceived;
            bot.OnInlineResultChosen += BotOnChosenInlineResultReceived;
            bot.OnReceiveError       += BotOnReceiveError;

            bot.StartReceiving(Array.Empty <UpdateType>());


            while (true)
            {
                var input = Console.ReadLine().Trim().ToLower();
                switch (input)
                {
                case "cours":
                    Console.WriteLine(U.StrCol(Environment.NewLine, Courier.Couriers));
                    break;

                case "end":
                case "exit":
                    bot.StopReceiving();
                    return;

                default:
                    break;
                }
            }
        }
예제 #3
0
        public static List <Courier> LoadCourers(string path = StaticData.PATH_COUR_DB)
        {
            var cours = new List <Courier>();
            var doc   = new Excel();

            lastCourDbHash = ComputeMD5Checksum(path);
            doc.FileOpen(path);
            var rows = doc?.Rows?.Skip(1);

            if (rows == null || rows.Count() < 1)
            {
                return(null);
            }
            foreach (var row in rows)
            {
                var id       = (row.ElementAtOrDefault(0) ?? "").ToLong();
                var userName = row.ElementAtOrDefault(1) ?? "";
                var link     = row.ElementAtOrDefault(2) ?? "";
                var status   = row.ElementAtOrDefault(3) ?? "";
                var user     = new Courier(id, userName, link);
                switch (status.Trim().ToLower())
                {
                case "wait":
                    user.UserState = UserState.WaitLink;
                    break;

                case "free":
                    user.UserState = UserState.Free;
                    break;

                default:
                    user.UserState = UserState.None;
                    break;
                }
                cours.Add(user);
            }
            return(cours);
        }
예제 #4
0
        // обработка сообщений юзера
        private static async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs)
        {
            var message = messageEventArgs.Message;

            // сообщение существует и является текстом
            if (message == null)
            {
                return;
            }

            if (message.Type == MessageType.Text)
            {
                var user = Courier.FindById(message.Chat.Id);

                // костыль, чтобы не было ошибки, если юзера еще нет, а кидало сразу на старт
                if (user == null)
                {
                    if (message.Chat.Id == CHAT_FEEDBACK_ID || message.Chat.Id == CHAT_PHOTO_ID)
                    {
                        return;
                    }
                    else if (message.Chat.Id == CHAT_MAILING_ID)
                    {
                        Courier.Mailing(bot, $"{message.Text}");
                        return;
                    }
                    else
                    {
                        Start(message);
                        return;
                    }
                }

                if (message.Chat.Id == CHAT_FEEDBACK_ID || message.Chat.Id == CHAT_PHOTO_ID)
                {
                    return;
                }
                else if (message.Chat.Id == CHAT_MAILING_ID)
                {
                    Courier.Mailing(bot, $"{message.Text}");
                    return;
                }

                // является нажатием кнопки клавиатуры
                if (IsKeyboardKey(message.Text))
                {
                    // обработчик кнопок
                    KeyboardHandler(message);
                }
                // команда типа /start и т.д.
                else if (IsCommand(message.Text))
                {
                    // обработчик команд
                    CommandHandler(message);
                }
                // просто введенный текст
                else
                {
                    // обработчик текста
                    TextHandler(message);
                }
            }
            else if (message.Type == MessageType.Photo && Courier.FindById(message.Chat.Id) != null)
            {
                await bot.ForwardMessageAsync(CHAT_PHOTO_ID, message.Chat.Id, message.MessageId);
            }
        }