Esempio n. 1
0
        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); // отсылаем пустое, чтобы убрать "часики" на кнопке
                }
            };
        }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
        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
                );
        }
Esempio n. 6
0
        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;
            }
        }
Esempio n. 7
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 - запуск бота
                        /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;
            }
        }
Esempio n. 8
0
        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);
                }
            }
        }
Esempio n. 9
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} 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;
            }
            }
        }
Esempio n. 10
0
        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}");*/
        }
Esempio n. 11
0
        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;
            }
            }
        }
Esempio n. 12
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;
            }
        }
Esempio n. 13
0
        // 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!"
                                   );
            }
        }