March 26, 2019

История о том, как мы создавали чат бот для Telegram.


!!НАШ БЛОГ ПЕРЕЕХАЛ!!

Мы создали свой сайт! Все материалы, опубликованные в этом блоге, переехали туда.

Наш новый сайт maddevelop.ru


В общем, все началось с того, что появилась идея создать бот, чтобы Вы, наши подписчики, смогли протестировать свои знания по языкам программирования. Проще говоря, бот должен содержать в себе различного рода тренировочные задания. Но мы столкнулись с некоторыми сложностями.

Первый вариант статьи должен был содержать описание погодного бота, созданного на основе ASP.Net Core Web API, но мы столкнулись с тем, что бот просто так не запустился... В связи с тем, что у нас в стране полным ходом (нет) идет блокировка сервиса Telegram, достучаться до него получится только с помощью VPN. И поэтому приняли решение описать все с самого начала. Постараемся по максимуму рассказать о тех подводных камнях, которые можно встретить во время разработки бот

Информацию искали в самых различных источниках, очень помог официальный мануал от команды Telegram.

Начнем с самого начала, а именно с регистрации нового бота. Поехали!

Регистрация нового бота.

Создаем бота через другого бота (вот такая вот загогулина :D ). Для этого находим в поиске @BotFather и добавляем его к себе в чаты.

Далее отправляем /start, он выдает весь список возможных команд. Нам нужна команда /newbot. Он предложит нам выбрать название бота и id, с помощью которого можно будет его найти.

После выбора этих параметров BotFather отправит сообщение, в котором будет поздравление с созданием нового бота и (самое главное) токен нашего бота, его то мы и будем использовать.

После можно найти своего бота по id и произвести дополнительную настройку, добавить описание и аватарку.

Все программы будут создаваться на C# и иногда будем применять технологию .Net Core. В качестве среды разработки бы выбран VS Code (Просто у нас несколько ноутбуков, один из них на Ubuntu и там стоит Code. В целом очень даже хороший редактор кода. Обязательно сделаем статью по некоторым основам работы с этой программой)

Проверяем работоспособность на простейшей программе.

Создадим папку (Например Example 1) и откроем ее в VS Code. Через терминал введем команду

dotnet new console

тем самым у нас создастся новый консольный проект, который содержит только файл Program.cs.

Через диспетчер NiGet установим в наш проект пакет Telegram.Bot. В файле Program.cs добавим с помощью директивы #using

using Telegram.Bot;
using Telegram.Bot.Args;

И в классе Programm напишем такую программу.

class Program {
    static ITelegramBotClient botClient;

    static void Main() {
      botClient = new TelegramBotClient("<Token>");

      var me = botClient.GetMeAsync().Result;
      Console.WriteLine(
        quot;Привет всем! Я пользователь {me.Id} и меня зовут {me.FirstName}."
      );
    }
  }

Программа просто создает объект интерфейса ITelegramBotClient и с помощью метода

botClient.GetMeAsync()

Получаем свойство Result, которое содержит всякого рода информацию о нашем боте.

Но возможно, даже на этом этапе у Вас выскочит Exception. Он скажет о том, что клиент не смог получить доступ к удаленному серверу за обозримое время, а это значит, что результатов Вы не получите. Для решения этой проблемы можно использовать VPN.

О том, как это все сделать мы расскажем в следующей статье из этой серии. Приведем несколько разных примеров, как это реализовать, а Вы выберете самый удобный для себя.



Ещё больше интересной информации на нашем Telegram-канале.