private static async void BotOnMessageEcho(object sender, MessageEventArgs messageEventArgs) { var message = messageEventArgs.Message; if (message == null || message.Type != MessageType.Text) { return; } switch (message.Text) { case "": { break; } default: { await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); var keyboard = new InlineKeyboardMarkup( InlineKeyboardButton.WithUrl("Talk to me in private", "https://t.me/cutebaby0630_Bot")); await Bot.SendTextMessageAsync(chanelId, "你剛才說:" + message.Text); break; } } }
/// <summary> /// Вызывает команду /// </summary> /// <param name="message">принимает сообщение</param> /// <param name="client">Ссылка на экземпляр бота</param> public async void Execute(Message message, TelegramBotClient client) { var chatId = message.Chat.Id; var messageId = message.MessageId; //var keyboard = new InlineKeyboardMarkup //( // new InlineKeyboardButton[][] // { // // First row // new InlineKeyboardButton[] // { // // First column // InlineKeyboardButton.WithCallbackData("one","callback1"), // // Second column // InlineKeyboardButton.WithCallbackData("two","callback2"), // }, // } //); var keyboard = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(new[] { new [] // first row { InlineKeyboardButton.WithUrl("1.1", "www.pornhub.com"), InlineKeyboardButton.WithCallbackData("1.2", "callback1"), }, new [] // second row { InlineKeyboardButton.WithCallbackData("2.1", "callback2"), InlineKeyboardButton.WithCallbackData("2.2"), } }); await client.SendTextMessageAsync(chatId, "Жамкни!", replyMarkup : keyboard); client.OnCallbackQuery += async(object sender, Telegram.Bot.Args.CallbackQueryEventArgs ev) => { var CBQMessage = ev.CallbackQuery.Message; if (ev.CallbackQuery.Data == "callback1") { await client.AnswerCallbackQueryAsync(ev.CallbackQuery.Id, "Ты выбрал " + ev.CallbackQuery.Data, true); } else if (ev.CallbackQuery.Data == "callback2") { await client.SendTextMessageAsync(CBQMessage.Chat.Id, "тест", replyToMessageId : CBQMessage.MessageId); await client.AnswerCallbackQueryAsync(ev.CallbackQuery.Id); // отсылаем пустое, чтобы убрать "часики" на кнопке } }; }
private static async void Hello(int messageId) { var inlineKeyboard = new InlineKeyboardMarkup( new[] { new[] { InlineKeyboardButton.WithUrl("Анкета на сайте", "https://docs.google.com/forms/d/e/1FAIpQLSfQxh28HQ600V2cVyh6GXDaQUzVQpnjkWQwEQkmQwkYfnyRpg/viewform"), InlineKeyboardButton.WithCallbackData("Заполнить у бота") }, new[] { InlineKeyboardButton.WithUrl("Положение о персональных данных", "https://www.auchan.ru/pokupki/personalnye-dannye.html?ndspecialkey=1") } }); await _botClient.SendTextMessageAsync(messageId, "Выберите пункт меню", replyMarkup : inlineKeyboard); }
private static async void Bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e) { var message = e.Message; if (message == null || message.Type != MessageType.Text) { return; } var name = message.From.FirstName; Console.WriteLine(message.Text + " от " + name); switch (message.Text) { case "/start": var text = "Команда для вызова меню - /menu"; await Bot.SendTextMessageAsync(e.Message.From.Id, text); break; case "/menu": var inlineKeyboard = new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithUrl("Кинопоиск", "https://www.kinopoisk.ru/"), InlineKeyboardButton.WithUrl("IMDb", "https://www.imdb.com/") }, new[] { InlineKeyboardButton.WithCallbackData("Поиск случайного фильма") } }); await Bot.SendTextMessageAsync(message.From.Id, "Выбери пункт меню", replyMarkup : inlineKeyboard); break; default: break; } }
static async Task SendInlineKeyboard(Message message) { await Bot.SendChatActionAsync(message.Chat.Id, ChatAction.Typing); await Task.Delay(500); var inlineKeyboard = new InlineKeyboardMarkup(new[] { new [] { InlineKeyboardButton.WithCallbackData("1.1", "1.2"), }, new [] { InlineKeyboardButton.WithUrl("Залететь на Хабр", "https://habr.com/ru/"), } }); await Bot.SendTextMessageAsync( chatId : message.Chat.Id, text : "choose your destiny", replyMarkup : inlineKeyboard ); }
private static async void Bot_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e) { var message = e.Message; if (message == null || message.Type != MessageType.Text) { return; } string name = $"{message.From.FirstName} {message.From.LastName}"; Console.WriteLine($"{name} отправил сообщение :'{message.Text}'"); switch (message.Text) { case "/start": string text = "@Список команд: " + "/start -запуск бота, " + " /callback - вывод меню, " + "/keyboard - вывод клавиатуры "; await Bot.SendTextMessageAsync(message.From.Id, text); break; case "/callback": var inlineKeyboard = new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithUrl("Rozetka", "https://rozetka.com.ua/"), InlineKeyboardButton.WithUrl("Citrus", "https://www.citrus.ua/") }, new[] { InlineKeyboardButton.WithCallbackData("Картинка"), InlineKeyboardButton.WithCallbackData("Видео") } }); await Bot.SendTextMessageAsync(message.From.Id, "Выберите пункт меню", replyMarkup : inlineKeyboard); break; case "/keyboard": var replyKeyboard = new ReplyKeyboardMarkup(new[] { new[] { new KeyboardButton("Привет"), new KeyboardButton("Как делишки?") }, new[] { new KeyboardButton("Контакт") { RequestContact = true }, new KeyboardButton("Геолокация") { RequestLocation = true } } } ); await Bot.SendTextMessageAsync(message.Chat.Id, "Сообщение", replyMarkup : replyKeyboard); break; default: var response = apiAi.TextRequest(message.Text); string answer = response.Result.Fulfillment.Speech; if (answer == "") { answer = "Сорри, но я тебя не понял"; } await Bot.SendTextMessageAsync(message.From.Id, answer); break; } }
private static async void BotOnMessageReceived(object sender, Telegram.Bot.Args.MessageEventArgs e) { var message = e.Message; if (message == null || message.Type != MessageType.Text) { return; } string name = $"{message.From.FirstName} {message.From.LastName}"; Console.WriteLine($"{name} отправил сообщение: {message.Text}"); switch (message.Text) { case "/start": string text = @"Список команд: /start - запуск бота /menu - вывод меню /keyboard - ввод с клавиатуры"; await Bot.SendTextMessageAsync(message.From.Id, text); break; case "/menu": var inlineKeyboard = new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithUrl("VK ILUSHA", "https://vk.com/special0ps"), InlineKeyboardButton.WithUrl("VK ANDRUSHA", "https://vk.com/id231468284") }, new[] { InlineKeyboardButton.WithCallbackData("Картинка"), InlineKeyboardButton.WithCallbackData("Видео") } }); await Bot.SendTextMessageAsync(message.From.Id, "Выберите пункт меню", replyMarkup : inlineKeyboard); break; case "/keyboard": var replyKeyboard = new ReplyKeyboardMarkup(new[] { new[] { new KeyboardButton("Привет"), new KeyboardButton("Как дела?") }, new[] { new KeyboardButton("Контакт") { RequestContact = true }, new KeyboardButton("Геолокация") { RequestLocation = true } } }); await Bot.SendTextMessageAsync(message.Chat.Id, "Сообщение", replyMarkup : replyKeyboard); break; default: var response = apiAi.TextRequest(message.Text); string answer = response.Result.Fulfillment.Speech; if (answer == "") { answer = "Я тебя не понимаю:("; } await Bot.SendTextMessageAsync(message.From.Id, answer); break; } }
static async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken) { if (update.Type == UpdateType.Message && update.Message != null && update.Message.Type == MessageType.Text) { long chatId = update.Message.Chat.Id; string messageText = update.Message.Text; if (messageText == "/start") { string menu = "/start - запуск\n/inline - меню\n/keyboard - сообщения\n/clearkeyboard - убрать кнопки"; await botClient.SendTextMessageAsync(chatId, menu, cancellationToken : cancellationToken); } else if (messageText == "/inline") { InlineKeyboardMarkup inlineKeyboard = new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithUrl("VK", "https://vk.com/mishanya167"), InlineKeyboardButton.WithUrl("LinkedIn", "https://www.linkedin.com/in/%D0%BC%D0%B8%D1%85%D0%B0%D0%B8%D0%BB-%D0%BA%D0%BE%D0%B2%D0%B0%D0%BB%D1%91%D0%B2-79637b164/") }, new[] { InlineKeyboardButton.WithCallbackData("Дата и время", "DateTime"), InlineKeyboardButton.WithCallbackData("Картинка", "Photo") } }); await botClient.SendTextMessageAsync(chatId, "Выберите пункт меню: ", replyMarkup : inlineKeyboard, cancellationToken : cancellationToken); } else if (messageText == "/keyboard") { ReplyKeyboardMarkup replayKeyBoard = new ReplyKeyboardMarkup(new[] { new[] { new KeyboardButton("Привет"), new KeyboardButton("Как дела?") }, new[] { KeyboardButton.WithRequestContact("Контакт"), KeyboardButton.WithRequestLocation("Геолокация") } }); await botClient.SendTextMessageAsync(chatId, "Выберите сообщение.", replyMarkup : replayKeyBoard, cancellationToken : cancellationToken); } else if (messageText == "/clearkeyboard") { await botClient.SendTextMessageAsync(chatId, "Кнопки убраны.", replyMarkup : new ReplyKeyboardRemove(), cancellationToken : cancellationToken); } else { SessionsClient sessionsClient = await SessionsClient.CreateAsync(); SessionName sessionName = new SessionName("small-talk-srqi", Guid.NewGuid().ToString()); QueryInput queryInput = new QueryInput { Text = new TextInput { Text = messageText, LanguageCode = "ru-Ru" } }; DetectIntentResponse response = await sessionsClient.DetectIntentAsync(sessionName, queryInput); if (response.QueryResult.FulfillmentMessages.Count > 0) { await botClient.SendTextMessageAsync(chatId, response.QueryResult.FulfillmentText, cancellationToken : cancellationToken); } else { await botClient.SendTextMessageAsync(chatId, "Прости, я тебя не понимаю.", cancellationToken : cancellationToken); } } } if (update.Type == UpdateType.CallbackQuery && update.CallbackQuery.Message != null) { string data = update.CallbackQuery.Data; if (data == "DateTime") { await botClient.AnswerCallbackQueryAsync(update.CallbackQuery.Id, DateTime.Now.ToString(), cancellationToken : cancellationToken); } if (data == "Photo") { await botClient.SendPhotoAsync(update.CallbackQuery.Message.Chat.Id, "https://big-rostov.ru/wp-content/uploads/2021/04/i-7-1.jpg", cancellationToken : cancellationToken); } } }
private static async void BotOnMessageReceived(object sender, Telegram.Bot.Args.MessageEventArgs e) { var message = e.Message; if (message == null || message.Type != MessageType.Text) { return; } string name = $"{message.From.FirstName} {message.From.LastName}"; Console.WriteLine($"{name} sent message: {message.Text}"); switch (message.Text) { case "/start": { string text = @"List of commands: /start - launch bot; /inline - show menu; /keyboard - show keyboard;"; await Bot.SendTextMessageAsync(message.From.Id, text); break; } case "/keyboard": { var replyKeyboard = new ReplyKeyboardMarkup(new[] { new[] { new KeyboardButton("Привет!"), new KeyboardButton("Как дела?") }, new[] { new KeyboardButton("Контакт") { RequestContact = true }, new KeyboardButton("Геолокация") { RequestLocation = true } } }); await Bot.SendTextMessageAsync(message.Chat.Id, "Message", replyMarkup : replyKeyboard); break; } case "/inline": { var inlineKeyboard = new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithUrl("VK", "https://vk.com/id11833696"), InlineKeyboardButton.WithUrl("Telegram", "https://t.me/trakhimovichilya") }, new[] { InlineKeyboardButton.WithCallbackData("картинка"), InlineKeyboardButton.WithCallbackData("видео") } }); await Bot.SendTextMessageAsync(message.From.Id, "Select menu", replyMarkup : inlineKeyboard); break; } default: { var response = apiAi.TextRequest(message.Text); string answer = response.Result.Fulfillment.Speech; if (answer == "") { answer = "Прости, я тебя не понял. Я тупой еще :(."; } await Bot.SendTextMessageAsync(message.From.Id, answer); break; } } }
private static async void BotOnCallbackQueryReceived(object sender, CallbackQueryEventArgs e) { var message = e.CallbackQuery.Message; string data = e.CallbackQuery.Data; switch (data) { case "Абитуриент": var keyboard_first = new InlineKeyboardMarkup(new[] { new [] { InlineKeyboardButton.WithCallbackData("Как поступить в SU?", "first") }, new [] { InlineKeyboardButton.WithCallbackData("Список документов для поступления", "second") }, new [] { InlineKeyboardButton.WithCallbackData("В какое время можно подать документы? Можно ли сделать это в субботу или воскресенье?", "third") }, new [] { InlineKeyboardButton.WithCallbackData("Могу ли я подать документы лично, если мне меньше 18 лет? Или обязательно присутствие родителей?", "four") }, new [] { InlineKeyboardButton.WithCallbackData("Контакты приемной комиссии?", "five") }, new [] { InlineKeyboardButton.WithCallbackData("График работы приемной комиссии?", "six") } }); await Bot.SendTextMessageAsync(message.Chat.Id, e.CallbackQuery.Message.Text, replyMarkup : keyboard_first); Bot.OnCallbackQuery += async(object sc, CallbackQueryEventArgs ev) => { var message = ev.CallbackQuery.Message; switch (ev.CallbackQuery.Data) { case "first": await Bot.SendTextMessageAsync(message.Chat.Id, "Зарегистрироваться в онлайн режиме по адресу kb.satbayev.university"); break; case "second": await Bot.SendTextMessageAsync(message.Chat.Id, "1. Заявление на поступление 2.Аттестат о среднем общем или диплом о начальном профессиональном или среднем профессиональном образовании(оригинал) 3.Фото формата 3х4 – 6шт 4.Медицинская справка по форме 086 - У 5.Прививочная карта по форме 063 6.Снимок флюорографии 7.Документ, подтверждающий преимущественное право 8.Сертификат ЕНТ или комплексного тестирования 9.Свидетельство о присуждении гранта(при его наличии) 10.Копия удостоверении личности 11.Приписное свидетельство "); break; case "third": await Bot.SendTextMessageAsync(message.Chat.Id, "Подать документы можно в рабочие часы Приёмной комиссии. Они будут объявлены ближе к старту приёмной кампании."); break; case "four": await Bot.SendTextMessageAsync(message.Chat.Id, "Вы можете подать документы и самостоятельно, только не забудьте взять с собой паспорт. Но помните: если вы поступаете на место на коммерческой основе, то заключить договор, будучи несовершеннолетним, вы самостоятельно не сможете — необходимо присутствие родителя. Кроме того, если вам меньше 18, вам обязательно нужно будет принести форму согласия на обработку ваших персональных данных, подписанную родителем или опекуном (без неё документы не примут!)."); break; case "five": await Bot.SendTextMessageAsync(message.Chat.Id, "Республика Казахстан, г. Алматы, ул. Сатпаева 22а, Главный учебный корпус (ГУК). Вход со стороны ул. Байтурсынова. +7 (727) 292 7301 +7 (727) 292 7779 +7 (727) 320 4112 [email protected]"); break; case "six": await Bot.SendTextMessageAsync(message.Chat.Id, "График работы: пн - пт, с 8:30 до 17:30 сб, с 9:00 до 17:00 "); break; } }; break; case "Бакалавриат": var keyboard_second = new InlineKeyboardMarkup(new[] { new [] { InlineKeyboardButton.WithCallbackData("Есть ли общежитие? Какие критерии и требования для получения комнаты в общежитии SU?", "first"), }, new [] { InlineKeyboardButton.WithCallbackData("Имеется ли в университете военная кафедра? Есть ли необходимость доплаты за военную кафедру?", "second"), }, new [] { InlineKeyboardButton.WithCallbackData("Что такое кредитная технология обучения?", "third"), }, new [] { InlineKeyboardButton.WithCallbackData("Какие студентческие сообщества есть в университете?", "forth"), }, new [] { InlineKeyboardButton.WithCallbackData("Как вступить в один из таких сообществ?", "fifth"), }, new [] { InlineKeyboardButton.WithCallbackData("При каких обстоятельствах студент лишается гранта", "sixth"), } }); await Bot.SendTextMessageAsync(message.Chat.Id, e.CallbackQuery.Message.Text, replyMarkup : keyboard_second); Bot.OnCallbackQuery += async(object sc, CallbackQueryEventArgs ev) => { var message = ev.CallbackQuery.Message; switch (ev.CallbackQuery.Data) { case "firth": await Bot.SendTextMessageAsync(message.Chat.Id, "Да, в SU есть общежитие. Для того, чтобы получить место в общежитии необходимо написать заявление, все заявления в конце августа рассматривает комиссия. В первую очередь места предоставляются иногородним первокурсникам для благополучной адаптации и привыканию к новому месту жительства в первый год обучения. Вторым не маловажным условием для получения места в общежитии является материальное положение студента (при наличии подтверждающих документов)."); break; case "second": await Bot.SendTextMessageAsync(message.Chat.Id, "В университете имеется военная кафедра, зачисление юношей на военную подготовку производится после 1 курса на конкурсной основе. Для обучения на военной кафедре выделяется государственный заказ."); break; case "third": await Bot.SendTextMessageAsync(message.Chat.Id, "Кредитная технология обучения – способ организации учебного процесса, при котором обучающиеся в определенных границах имеют возможность индивидуально планировать последовательность образовательной траектории."); break; case "forth": await Bot.SendTextMessageAsync(message.Chat.Id, "«Жас Отан», «Лига Волонтеров», Дебатные клубы, Enactus, Society of Automotive Engineers, American Association of Petroleum Geologists, Society of Petroleum Engineers"); break; case "fifth": await Bot.SendTextMessageAsync(message.Chat.Id, "Ежегодно в сентябре проводится «Ярмарка студенческих сообществ», во время которой каждый желающий может открыть и презентовать свое сообщество или вступить в то сообщество, которое ему понравилось."); break; case "sixth": await Bot.SendTextMessageAsync(message.Chat.Id, "Обучающиеся, обладатели образовательных грантов, оставленные на повторный курс обучения, лишаются образовательного гранта и продолжают свое дальнейшее обучение на платной основе. Если годовой gpa будет меньше 1,6 то студент теряет государственный образовательный грант. Если студент в итоге за дисциплину получает удовлетворительную оценку, то студент теряет стипендию."); break; } }; break; case "Преподаватель": var keyboard_third = new InlineKeyboardMarkup(new[] { new [] { InlineKeyboardButton.WithUrl("Академический календарь", "https://drive.google.com/uc?export=download&id=10Z7T0DhO08kwQLA76YI1aYqkP8ZVxBSK"), }, new [] { InlineKeyboardButton.WithUrl("Скачать форму отчета", "https://drive.google.com/uc?export=download&id=1nEEsECD2od_zsFZlgLMWKUnB3f3VOK0T"), }, new [] { InlineKeyboardButton.WithCallbackData("", "third"), }, new [] { InlineKeyboardButton.WithCallbackData("", "forth"), }, new [] { InlineKeyboardButton.WithCallbackData("", "fifth"), }, new [] { InlineKeyboardButton.WithCallbackData("", "sixth"), } }); await Bot.SendTextMessageAsync(message.Chat.Id, e.CallbackQuery.Message.Text, replyMarkup : keyboard_third); break; case "МК": var keyboard_fourth = new InlineKeyboardMarkup(new[] { new [] { InlineKeyboardButton.WithCallbackData("Главный учебный корпус", "first") }, new [] { InlineKeyboardButton.WithCallbackData("Горно-металлургический институт имени О. Байконурова", "second") }, new [] { InlineKeyboardButton.WithCallbackData("Медицинский пункт", "third") }, new [] { InlineKeyboardButton.WithCallbackData("Нефтянной корпус", "four") }, new [] { InlineKeyboardButton.WithCallbackData("Военная кафедра", "five") } }); await Bot.SendTextMessageAsync(message.Chat.Id, e.CallbackQuery.Message.Text, replyMarkup : keyboard_fourth); Bot.OnCallbackQuery += async(object sc, CallbackQueryEventArgs ev) => { var message = e.CallbackQuery.Message; switch (ev.CallbackQuery.Data) { case "first": float Latitude1 = 43.236422f; float Longitude1 = 76.929755f; await Bot.SendLocationAsync(message.Chat.Id, Latitude1, Longitude1); break; case "second": float Latitude2 = 43.236520f; float Longitude2 = 76.931572f; await Bot.SendLocationAsync(message.Chat.Id, Latitude2, Longitude2); break; case "third": float Latitude3 = 43.237319f; float Longitude3 = 76.934405f; await Bot.SendLocationAsync(message.Chat.Id, Latitude3, Longitude3); break; case "four": float Latitude4 = 43.237093f; float Longitude4 = 76.931374f; await Bot.SendLocationAsync(message.Chat.Id, Latitude4, Longitude4); break; case "five": float Latitude5 = 43.231572f; float Longitude5 = 76.934406f; await Bot.SendLocationAsync(message.Chat.Id, Latitude5, Longitude5); break; } }; break; } /*if (buttonText == "Картинка") * { * await Bot.SendTextMessageAsync(e.CallbackQuery.From.Id, "https://cdn.lifehacker.ru/wp-content/uploads/2019/06/telegram_1560950950.jpg"); * } * else if (buttonText == "Документ") * { * // await Bot.SendTextMessageAsync(e.CallbackQuery.From.Id, "https://drive.google.com/uc?export=download&id=0B3Rr6xomyKzhc09hSW4xOGt2SmlHYl95ZWpRYnVOZkhwa0NJ"); * } * * await Bot.AnswerCallbackQueryAsync(e.CallbackQuery.Id, $"Вы нажали кнопку {buttonText}");*/ }
private async static void BotOnMessageReceived(object sender, MessageEventArgs e) { var message = e.Message; if (message == null || message.Type != MessageType.Text) { return; } string name = $"{message.From.FirstName } {message.From.LastName}"; Console.WriteLine($"{name} sent text: '{message.Text}'"); User userrr = new User(); ClassStatusList st = JsonConvert.DeserializeObject <ClassStatusList>(File.ReadAllText(stpath)); int index = 0; bool contains = false; UserStatus usrstatus = new UserStatus(); for (int i = 0; i < st.statuses.Count; i++) { if (st.statuses[i].Id == Convert.ToString(message.From.Id)) { contains = true; usrstatus = st.statuses[i]; index = i; break; } } if (contains == false) { usrstatus.status1 = 0; usrstatus.status2 = 0; usrstatus.Id = Convert.ToString(message.From.Id); st.statuses.Add(usrstatus); } switch (st.statuses[index].status1) { case 0: { switch (message.Text) { case "/start": { string text = @"Список команд: /gettoptracks - Топ-10 треков /gettrack - Найти трек по названию /getartistinfo - Информация об исполнителе /getfavorite - Список избранных"; await Bot.SendTextMessageAsync(message.From.Id, text); usrstatus.status1 = 0; usrstatus.status2 = 0; usrstatus.Id = Convert.ToString(message.From.Id); st.statuses[index] = usrstatus; File.WriteAllText(stpath, JsonConvert.SerializeObject(st)); break; } case "/gettoptracks": { var json = JsonConvert.SerializeObject(userrr); var data = new StringContent(json, Encoding.UTF8, "application/json"); userrr.Id = Convert.ToString(message.From.Id); HttpClient client = new HttpClient(); var response = await client.PostAsync($"https://localhost:44348/api/Music/GetTopTracks", data); string result = response.Content.ReadAsStringAsync().Result; ClassTracks useritem = JsonConvert.DeserializeObject <ClassTracks>(result); List <List <InlineKeyboardButton> > inlineKeyboardList = new List <List <InlineKeyboardButton> >(); foreach (var track in useritem.tracks.track) { //if (track.url.Length <= 60) { List <InlineKeyboardButton> ts = new List <InlineKeyboardButton>(); ts.Add(InlineKeyboardButton.WithUrl(track.name + " - " + track.artist.name, track.url)); ts.Add(InlineKeyboardButton.WithCallbackData("+", Convert.ToString(message.From.Id) + "⁜" + track.name + "⁜" + track.artist.name)); inlineKeyboardList.Add(ts); } } var inline = new InlineKeyboardMarkup(inlineKeyboardList); await Bot.SendTextMessageAsync(message.From.Id, "Топ-10 треков:", replyMarkup : inline); usrstatus.status1 = 0; usrstatus.status2 = 1; st.statuses[index] = usrstatus; File.WriteAllText(stpath, JsonConvert.SerializeObject(st)); break; } case "/getartistinfo": { await Bot.SendTextMessageAsync(e.Message.Chat.Id, "Введите исполнителя"); st.statuses[index].status1 = 1; File.WriteAllText(stpath, JsonConvert.SerializeObject(st)); break; } case "/gettrack": { await Bot.SendTextMessageAsync(e.Message.Chat.Id, "Введите название песни"); st.statuses[index].status1 = 2; File.WriteAllText(stpath, JsonConvert.SerializeObject(st)); break; } case "/getfavorite": { userrr.Id = Convert.ToString(message.From.Id); var json = JsonConvert.SerializeObject(userrr); var data = new StringContent(json, Encoding.UTF8, "application/json"); HttpClient client = new HttpClient(); var response = await client.PostAsync($"https://localhost:44348/api/Music/GetFavorite", data); string result = response.Content.ReadAsStringAsync().Result; if (result == "BAD") { await Bot.SendTextMessageAsync(e.Message.Chat.Id, "Списка нету"); break; } List <SearchTrackMain> js = JsonConvert.DeserializeObject <List <SearchTrackMain> >(result); List <List <InlineKeyboardButton> > inlineKeyboardList = new List <List <InlineKeyboardButton> >(); foreach (var track in js) { List <InlineKeyboardButton> ts = new List <InlineKeyboardButton>(); ts.Add(InlineKeyboardButton.WithUrl(track.name + " - " + track.artist, track.url)); ts.Add(InlineKeyboardButton.WithCallbackData("х", Convert.ToString(message.From.Id) + "⁜" + track.name + "⁜" + track.artist)); inlineKeyboardList.Add(ts); } var inline = new InlineKeyboardMarkup(inlineKeyboardList); if (js.Count != 0) { await Bot.SendTextMessageAsync(message.From.Id, "Список фаворитов:", replyMarkup : inline); } else { await Bot.SendTextMessageAsync(message.From.Id, "Список фаворитов пуст."); } usrstatus.status1 = 0; usrstatus.status2 = 2; st.statuses[index] = usrstatus; File.WriteAllText(stpath, JsonConvert.SerializeObject(st)); break; } default: { break; } } break; } case 1: //для getartistinfo { try { st.statuses[index].status1 = 0; File.WriteAllText(stpath, JsonConvert.SerializeObject(st)); userrr.Id = Convert.ToString(message.From.Id); userrr.Artist = e.Message.Text; var json = JsonConvert.SerializeObject(userrr); var data = new StringContent(json, Encoding.UTF8, "application/json"); HttpClient client = new HttpClient(); var response = await client.PostAsync($"https://localhost:44348/api/Music/GetArtistInfo", data); string result = response.Content.ReadAsStringAsync().Result; ClassListArtistInfo useritem = JsonConvert.DeserializeObject <ClassListArtistInfo>(result); await Bot.SendTextMessageAsync(message.From.Id, $"Artist: {useritem.artist.name}\n\nBio: {useritem.artist.bio.summary}."); break; } catch { await Bot.SendTextMessageAsync(message.From.Id, "Было введено некорректное имя исполнителя."); break; } } case 2: //для gettrack { st.statuses[index].status1 = 0; st.statuses[index].status2 = 1; userrr.Id = Convert.ToString(message.From.Id); userrr.Name = e.Message.Text; var json = JsonConvert.SerializeObject(userrr); var data = new StringContent(json, Encoding.UTF8, "application/json"); HttpClient client = new HttpClient(); var response = await client.PostAsync($"https://localhost:44348/api/Music/GetTrack", data); string result = response.Content.ReadAsStringAsync().Result; ClassResults useritem = JsonConvert.DeserializeObject <ClassResults>(result); List <List <InlineKeyboardButton> > inlineKeyboardList = new List <List <InlineKeyboardButton> >(); foreach (var track in useritem.results.trackmatches.track) { if (track.url.Length <= 60) { List <InlineKeyboardButton> ts = new List <InlineKeyboardButton>(); ts.Add(InlineKeyboardButton.WithUrl(track.name + " - " + track.artist, track.url)); ts.Add(InlineKeyboardButton.WithCallbackData("+", Convert.ToString(message.From.Id) + "⁜" + track.name + "⁜" + track.artist)); inlineKeyboardList.Add(ts); } } var inline = new InlineKeyboardMarkup(inlineKeyboardList); if (result == "It's bad") { await Bot.SendTextMessageAsync(message.From.Id, "Ничего не найдено. Попробуйте ввести название по-другому."); } else { await Bot.SendTextMessageAsync(message.From.Id, "Найденные треки:", replyMarkup : inline); } File.WriteAllText(stpath, JsonConvert.SerializeObject(st)); break; } default: { goto case 0; } } }
private static async void BotOnMessageReceived(object sender, Telegram.Bot.Args.MessageEventArgs e) { var message = e.Message; if (message == null || message.Type != MessageType.Text) { return; } string name = $"{message.From.FirstName} {message.From.LastName}"; Console.WriteLine($"{name} отправил(-а) сообщение: '{message.Text}'"); switch (message.Text) { case "/start": string text = @" Список команд: /start - запустить бота /hello - поприветствовать /callback - вывод меню /keyboard - клавиатура"; await Bot.SendTextMessageAsync(message.From.Id, text); break; case "/callback": // для отправки меню var inlineKeyboard = new InlineKeyboardMarkup(new[] { new [] // первая строка { InlineKeyboardButton.WithUrl("Github", "Github.com"), InlineKeyboardButton.WithUrl("Instagram", "instagram.com"), InlineKeyboardButton.WithUrl("Telegram", "https://t.me/") }, new [] // вторая строка { InlineKeyboardButton.WithCallbackData("Point 1"), InlineKeyboardButton.WithCallbackData("Point 2"), } }); await Bot.SendTextMessageAsync(message.From.Id, "Выберите пункт меню", replyMarkup : inlineKeyboard); break; case "/keyboard": // клавиатура var replyKeyboard = new ReplyKeyboardMarkup(new [] { new [] { new KeyboardButton("Профиль"), new KeyboardButton("О боте") }, new [] { new KeyboardButton("Контакт"), new KeyboardButton("Геолокация") } }); await Bot.SendTextMessageAsync(message.Chat.Id, "Сообщение", replyMarkup : replyKeyboard); break; case "/hello": string text1 = @"Приветствую!"; await Bot.SendTextMessageAsync(message.From.Id, text1); break; default: var response = apiAi.TextRequest(message.Text); // ответ юзеру string answer = response.Result.Fulfillment.Speech; // получаем ответ от диалогфлоу if (answer == "") { answer = "Прости, моя твоя не понимать :( "; } await Bot.SendTextMessageAsync(message.From.Id, answer); break; } }
// async OnMessage event task for the bot // it has to be async so the bot can be always listening private async static void BotClient_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e) { // Normal text message. Checks wether the message does have text. // in case it does, the bot answers. #region Text Message if (e.Message.Text != null) { Console.WriteLine($"Received text message in chat {e.Message.Chat.Id}."); // the bot sends asynchronously a message to the chat await botClient.SendTextMessageAsync( chatId : e.Message.Chat.Id, text : "You said:\n" + e.Message.Text ); } #endregion // Normal text message, with all the properties // a text message can have. #region Text message with properties Message textMessage = await botClient.SendTextMessageAsync( chatId : e.Message.Chat, // or a chat id: 123456789 text : "Trying *all the parameters* of `sendMessage` method", parseMode : ParseMode.Markdown, disableNotification : true, replyToMessageId : e.Message.MessageId, replyMarkup : new InlineKeyboardMarkup(InlineKeyboardButton.WithUrl( "Check sendMessage method", "https://core.telegram.org/bots/api#sendmessage" )) ); #endregion // Almost all of the methods for sending messages return you // the message you just sent. #region Messages return you the message you sent (as an object) Console.WriteLine( $"{textMessage.From.FirstName} sent message {textMessage.MessageId} " + $"to chat {textMessage.Chat.Id} at {textMessage.Date.ToLocalTime()}. " + // if you don't use ToLocalTime(), the bot will show the UTC time. $"It is a reply to message {textMessage.ReplyToMessage.MessageId} " + $"and has {textMessage.Entities.Length} message entities." ); #endregion // Photo message. It gets the image from a URL on the internet. // All images can have captions. You can use HTML or Markdown on them. #region Photo Message Message photoMessage = await botClient.SendPhotoAsync( chatId : e.Message.Chat, photo : "https://github.com/TelegramBots/book/raw/master/src/docs/photo-ara.jpg", caption : "<b>Ara bird</b>. <i>Source</i>: <a href=\"https://pixabay.com\">Pixabay</a>", parseMode : ParseMode.Html ); #endregion // Sticker message. Sticker files should be in WebP format. // Sends two messages. The first one gets the sticker by passing HTTP URL // to WebP sticker file, and the second by reusing the file_id of the // first sticker (kinda like a cache?) #region Sticker Messages Message stickerMessage1 = await botClient.SendStickerAsync( chatId : e.Message.Chat, sticker : "https://github.com/TelegramBots/book/raw/master/src/docs/sticker-fred.webp" ); Message stickerMessage2 = await botClient.SendStickerAsync( chatId : e.Message.Chat, sticker : stickerMessage1.Sticker.FileId ); #endregion // Audio message. Opens it in Media Player. MP3 Format. // Telegram can read metadata from the MP3 file (that's why // there are commented properties; the bot gets the same // properties, but from the file metadata!) #region Audio Message Message audioMessage = await botClient.SendAudioAsync( e.Message.Chat, "https://github.com/TelegramBots/book/raw/master/src/docs/audio-guitar.mp3" /*, * performer: "Joel Thomas Hunger", * title: "Fun Guitar and Ukulele", * duration: 91 // in seconds */ ); #endregion // Voice message. Not opened in Media Player (played directly // on the chat). OGG Format. // In this case, the OGG file is on our disk! #region Voice Message Message voiceMessage; using (var stream = System.IO.File.OpenRead("C:/Users/Biel/source/repos/TelegramBot/voice-nfl_commentary.ogg")) { voiceMessage = await botClient.SendVoiceAsync( chatId : e.Message.Chat, voice : stream, duration : 36 ); } #endregion // You can send MP4 files as a regular video or as a video note. // Other video formats must be sent as a file. // Video message. They can have caption, reply, and reply markup // (like other multimedia messages) // You can optionally specify the duration and the resolution // of the video. In this case the video is streamed, // meaning the user can partly watch the video on stream, without // having to download it completely. #region Video Message Message videoMessage = await botClient.SendVideoAsync( chatId : e.Message.Chat, video : "https://raw.githubusercontent.com/TelegramBots/book/master/src/docs/video-countdown.mp4", thumb : "https://raw.githubusercontent.com/TelegramBots/book/master/src/2/docs/thumb-clock.jpg", supportsStreaming : true ); #endregion // Video note message. They are shown in circles to the user. // They are usually short (1 minute or less). // You can send a video note only by the video file or // reusing the file_id of another video note. // (sending it by its HTTP URL is not supported currently) #region Video Note Message Message videoNoteMessage; using (var stream = System.IO.File.OpenRead("C:/Users/step/Source/Repos/TelegramBotExamples/video-waves.mp4")) { videoNoteMessage = await botClient.SendVideoNoteAsync( chatId : e.Message.Chat, videoNote : stream, duration : 47, length : 360 // value of width/height ); } #endregion // Poll message. They can be sent only to groups and channels. // You can optionally send a keyboard with a poll, // both inline and a regular one. #region Poll Message Message pollMessage = await botClient.SendPollAsync( chatId : "@group_or_channel_username", question : "Did you ever hear the tragedy of Darth Plagueis The Wise?", options : new [] { "Yes for the hundredth time!", "No, who's that?" } ); #endregion // To stop the poll, you need to know original chat and message ids // (you get them from the Poll object you get on SendPollAsync, the pollMessage) #region Closing a Poll Poll poll = await botClient.StopPollAsync( chatId : pollMessage.Chat.Id, messageId : pollMessage.MessageId ); #endregion // Filtering messages for commands if (e.Message.Text == "/sayhello") { Message sayHello = await botClient.SendTextMessageAsync ( chatId : e.Message.Chat.Id, text : "Hello! Glad to see you!" ); } if (e.Message.Text == "/saygoodbye") { Message sayHello = await botClient.SendTextMessageAsync ( chatId : e.Message.Chat.Id, text : "Bye! Have a nice day!" ); } }