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; } }
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; } } }
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); }
// обработка сообщений юзера 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); } }