Курс по созданию бота Телеграмм. Урок второй.
Здравствуйте! В этом уроке что такое веб-приложения, ASP.NET и JSON и как это всё работает и выберем "профессию" нашему боту. Пошли!
Веб-приложения
Если вы не знали, да, C# используется для веба, и это его "фишка". Если C++ отлично работает с памятью и в общем с железом, то C# мастер в вебе. На нем делают логику сайта (т.е. Бэкэнд) и с этим он отлично справляется.
Так, что такое веб-приложения? Веб-приложения - это приложения, которые получают или отправляют какую-то информацию из интернета, например в случае с ботом это JSON с сервера Телеграмм, и использует его для работы. Веб-приложения как посредник между сервером и пользователем. Приведу пример работы бота
- Бот отправляет серверу Телеграмм, что ему нужны данные. (запрос на обновление)
- Сервер в свою очередь эти данные отправляет. (обновление данных)
- Наша программа получает эти данные и использует их для выполнения задач. (обработка данных)
- Потом бот отправляет на сервер сообщение, и оно приходит пользователю. (отправка обработанных данных)
Вот так всё просто. Конечно, это отличается от веб-сайта.
работа веб-приложения на картинке
ASP.NET - что это и зачем оно?
ASP.NET - это платформа для создания веб-приложений на фреймворке .NET от Microsoft. Он - основной инструмент C# разработчика в вебе. В отличии от старенького ASP, ASP.NET использует новые функции и возможности фремворка .NET, но при этом визуально сильно на него похож, что намного упрощает переход с ASP на ASP.NET.
От куда бот берет данные?
При создании бота (с помощью Bot Father, но об этом потом) тебе даётся токен - специальный ключ. (его вы нив коем случае не должны сообщать третьим лицам, иначе они смогут отправлять сообщения от лица вашего бота) Как раз этот ключ и позволяет боту брать данные. Вы можете тоже самое сделать через браузер, если введёте в адресную строку https://api.telegram.org/botтут вписываем токен вашего бота
/getUpdates и вы получите все новые данные бота, т.е. новые сообщения, имя отправителя и т.д. Все это будет в паре строк, ведь данные не "запарсены" и показаны в JSON. Без этого ключа никому не взять данные, так что не переживайте, что какой-нибудь бот сможет прочитать данные других пользователей или кто-то сможет читать данные бота (если он не хакер)
Это пример с видео Романа Сакутина
Что за JSON, о котором так много разговора?
JSON - текстовый формат обмена данными, основанный на JavaScript, т.е. он используется у сайтов на JavaScript. Что это значит для нас? А это значит, что наш любимый C# не сможет его прочитать просто так, а для этого нам нужен специальный парсер JSON, который парсит JSON в нормальный читаемые данные (по крайней мере для C#) Я нашел один парсер - он называется SimpleJSON.cs, однако он не совсем удобен, ведь все данные преобразуются в ноды, а не в классы. (если что, в C# есть и свои методы для парсинга, но они мне показались ну слишком сложными) Это значит, что нам придётся как в словаре искать данные, а не просто обращаться к ним, как к классам. Конечно, это немного усложняет использование данных, но не сильно. С другой стороны - нам не надо ничего делать, кроме как использовать данные.
Находим профессию боту!
Теперь, когда мы закончили со всеми заумными словами, давайте приступим к самому интересному, т.е. к выбору деятельности программы. Это также сложно, как и выбор имени программы... Давайте самый легкий пример - викторина. Бот будет кидать вопрос, а пользователь должен угадать. Давай вопросов будет по 5 на 3 темы. В общей сложности 15. (на это подтолкнула эта картинка)
картинка взята с "15 вопросов - Викторина на выживание"
Примечание
- Есть специальный онлайн-парсер, с которым вы сможете спарсерить данные с
api.telegram.org
, если вам это зачем-то нужно. - Нашел вот эту странницу на форума CyberForum, где есть способ парсинга JSON без SimpleJSON. Если хочется/умеете, разбирайтесь.
На этом всё. Надеюсь, получилось хорошо и информативно. Пожалуйста, пишите комментарии под уроками - это легко, просто авторизуйтесь через Телеграмм или Google. Вы сможете рассказывать, что вы не поняли и получать ответы или предлагать свои идеи или правки. Спасибо за внимание!