Субботний бот для Телеграма

Для автоматизации своих ежедневных нужд (кого я обманываю,- because i can) за субботу мною был написан небольшой телеграмовский бот @FTrainBot. О том, что для этого нужно, и будет эта заметка (GitHub).

Всё начинается с добавления к себе в контакты @BotFather. После этого, с помощью управляющих команд (/start и /newbot) в режиме диалога регистрируем информацию о нашем боте и получаем API ключ для взаимодействия с ним (а так же добавляем своего бота в список контактов).

Далее можно приступать к программированию.

Существует огромное множество библиотек и примеров на разных языках программирования сильно упрощающие разработку. Т.к. я занимаюсь программированием под .NET, то остановился на C#. Telegram.bot. Library.

Всё что вам потребуется затем- это указание ранее выданного API ключа и запуск приложения. Всё,- теперь вы можете начинать отправлять своему боту сообщения и команды (и начинать писать логику их обработки).

Я выбрал достаточно простой кейс- мне требуется ежедневно узнавать информацию о ближайших электричках по маршруту дом-работа-дом. Получив одну из 5 команд, бот обращается в стороннее апи (яндекс.расписание согласовывает заявку до 3-х дней, поэтому пришлось прибегнуть к старому доброму грабингу и парсингу сайтов), форматирует ответ и возвращает его в виде текста.

ftrainbot

Важно: для доступности 24х7 ваше приложение с ботом должно быть постоянно запущено,- например, на одном из выделенных серверов с вашими приложениями/сервисами. Никаких внешних IP или регистрации DNS’ов для этого не требуется.

Будьте осторожны: локальный запуск бота никак не отличается от боевого, т.к. вся идентификация бота строится исключительно на API ключе (таким образом, в процессе разработки бот будет так же отлавливать сообщения пользователей, которые им пользуются). Уверен, что существуют решения для разделения боевого и тестового контуров бота, но мне они не потребовались.

Исходники доступны на GitHub, а сам бот по ссылке (или имени при поиске) @FTrainBot.

Written on December 18, 2016