Как написать простого бота для ВК и Телеграм
Мы уже упоминали, как мы предоставляем бесплатные VPS для студентов, чтобы они учились программировать. Один из наших подопечных Павел сделал простеньких телеграм и ВК ботов для FAQ. Они очень простые, тем не менее, начинающему программисту не помешают комментарии опытных ребят — поэтому публикуем его рассказ — Павел будет рад, если в комментариях ему дадут советы.
Я — студент Новосибирского Государственного Технического Университета, не так давно мы с парочкой моих друзей реализовали площадку для продвижения проектов во всех возможных областях научной деятельности. Мы помогаем «сводить» заинтересованных преподавателей и студентов всех ВУЗов Сибири, чтобы проектная научная деятельность развивалась по территории Сибири и РФ.
Студенты и преподаватели часто обращались ко мне с вопросами и я решил автоматизировать этот процесс, написав ботов для ВК и Телеграм.
На вход они принимают сообщения, а на выходе выдают либо текстовый ответ, либо специальную структуру данных, замаскированное под сообщение: инлайновые или висячие клавиатуры.
Я использовал Python версии 3.6 просто потому, что он самый простой для меня. Кодил в PyCharm Community Edition. Весь код опубликован на GitHub. Удачи!
1. Предварительные приготовления для телеграм-бота
1.1 Получение токена от BotFather в телеграмме
Первым делом, нам нужно «зарегистрировать» нашего бота в Telegram.
Для этого, в поисковике телеги ищем BotFather
далее, делаем всё также, как на скриншотах:

После нажимаем на команду /newbot или же прописываем вручную.

Надо придумать уникальное имя для бота, придумываем и получаем соответствующий токен.

1.2 Переходим в любой редактор кода и создаем файл config.py
Перед созданием данного файла, нам нужно выбрать директорию, в которой будет реализован весь функционал бота. Если вы используете PyCharm Community/Professional Edition, то предлагаю просто создать новый проект, и писать там весь функционал бота.
Если Вы используете любой другой редактор, такой как Sublime Text 3, например, то Вам самостоятельно придётся создать директорию, создать виртуальное окружение, и работать из консоли со всеми предварительными тестами. Во избежание трудностей, предлагаю скачать продукт PyCharm Community Edition от компании JetBrains, с помощью данного продукта можно обойти действия, описанные в предыдущем абзаце, так как данный продукт сделает их самостоятельно, от Вас потребуется только указать путь до интерпретатора Python в конфигурациях PyCharm, с помощью которого и будет работать Ваш бот.
В данном файле (config.py) будет храниться только токен, который нам дал BotFather, поэтому пишем:
1.3 Cоздаём главный файл — bot.py
Делаем cледующие импорты и для соответствующих библиотек, в консоли прописываем закоментированные строчки:
Далее, нам необходимо использовать наш токен:
Этими действиям мы устанавливаем то, что мы будем накручивать функционал именно для того бота, для которого нам и дал токен BotFather.
2. Разворачиваем функционал
Начнём с того, что для того, чтобы пользователю запустить бота, нам необходимо прописать команды для старта они могут быть разными, например, /start или /go и вообще любыми, какие Вы сочтёте нужными.
Для обработки команд нам потребуется message_handler , с помощью которого и будет реализован весь функционал обработки команд для старта и завершения, если Вы сочтёте нужным добавить завершение. Как только придёт команда /go или /start , message_handler с соответствующими командами сравнит, совпадают ли строки и если совпадают, то обработает соответствующей функцией.
Каждая функция, как и в примере сейчас, должна принимать один параметр — сообщение от пользователя, которое будет обработано соответствующей функции «в обёртке» декоратора. А также, каждая функция (или связка функций) должна возвращать соответсвующее сообщение от бота.
В этой функции реализовано сразу два действия: отправка приветственного сообщения и создание встроенной клавиатуры — ReplyKeyboardMarkup , которая будет открыта, пока мы не завершим выполнения бота соответсвующей командой. Об этом будет сказано ниже.
Итак, пройдёмся по строчкам:
В строках 20-21: открывается стикер по тому пути к директории, в которой я его сохранил, после чего отправляется.
Строки 22-28: создаем встроенную клавиатуру, добавляя туда три элемента.
Строки 30-37: описано создание и отправка приветственного сообщения
Как вы можете заметить, метод send_message в строке 30, позволяет использовать HTML, для форматирования текста.
Строками ниже, добавим запуск самого бота, который будет хоститься, пока не случится ошибка или же, пока мы Сами его не закроем.
Сделаем первый запуск! Для этого, в PyCharm-е нажмём зеленую кнопку старт в правом верхнем углу или же, можно запустить из консоли командой: python bot.py

Результат первого запуска:

2.1 Обработка нажатия на кнопки и создание inline keyboard
Так как любое сообщение — это текст, то мы будем обрабатывать именно текстовые сообщения.
Сделаем следующее и аналогично разберём по строчкам:
Строка 339 — обработчик любых текстовых сообщений
Строка 341 предназначена для того, чтобы сказать, что если данное сообщение предназначено боту, то сравни эту строку с теми, что здесь обрабатываются и отправь ответ.
Строки 344 — 351 — создаём инлайновую клавиатуру InlineKeyboardMarkup и помещаем в эту клавиатуру 5 элементов, которые также можно будет обработать по установленной callback_data . Элементы данной клавиатуры будут расположены друг под другом, так как в строке 344, мы установили row_width = 1 , что обозначает самую широкую грань одной кнопки, поэтому они и будут расположены друг под другом.
Строки 353-355 — отправляют текст, вместе с нашей Inline Keyboard.
В условиях ниже представлены аналогичные представления обработки сообщений.
Итак, сделаем запуск:
2.2 Обработка InlineKeyboardButton
Как было сказано выше, каждый элемент InlineKeyboardButton имеет параметр callback_data , и именно по этим параметрам будет обрабатываться каждая кнопка. Для этого нам потребуется обработчик инлайновой клавиатуры callback_query_handler .
Итак, разберём построчно:
Строка 269 — объявляем обработчик, который будет обрабатывать каждую из нажатых кнопок с использованием лямбда-функции
Строки 273-278 — В данном блоке if, мы просто обрабатываем сообщение и отправляем сообщение пользователю.
Строки 279-283 — Делают аналогичное действие, что и в предыдущем условном блоке.
Также, в данных блоках можно определить аналогичную инлайновую клавиатуру, только тогда придётся создать ещё один обработчик callback_data , аналогичный обработчику callback_query_handler , показанный на скриншоте выше.

Так просто и обрабатываются inline keyboards.
3. Завершаем работу бота
Данная функция будет аналогичной функции обработки команд для старта бота, поэтому Вы сможете легко понять её функционал:
Здесь происходит следующее:
-
Отправляется прощальный стикер.
ВК БОТ
Перейдём к реализации бота Вконтакте, написанном на том же родном языке Python, его основное отличие от предыдущего в том, что он был написан с использованием ООП, а именно класса. Внешне, он выполняет ту же миссию. Сама библиотека для написания вк бота намного проще телеграмм бота, поэтому разобраться в ней самостоятельно не составит большого труда. Итак, начнём.
1. Предварительные подготовления
Установим следующие библиотеки по тем же технологиям:
▍1.1 Получение токена для сообщества Вконтакте.
- На главной странице сообщества найти раздел «Управление»
- Работа с API
- Создать ключ. Выбираете нужные для вас пункты, которые будут доступны боту.
Берем ключ и переходим в среду разработки и делаем следующее:
На этом, закончим подготавления.
2. Разворачиваем функционал
Первым делом создадим файл manage.py
Cоздадим прототип встроенной клавиатуры ( всё с помощью документации VkBotAPI ).
Затем переводим её в формат json, как требуется в документации:
Пример инлайн клавиатуры:
Не забываем все используемые клавиатуры переводить в формат json:
Создадим функцию write_msg , для того, чтобы не мучиться с постоянной отправкой сообщений от бота:
После создания всех прототипов, мы можем перейти к следующему шагу. ( к этому файлу мы позже вернёмся и доработаем обработку общения пользователя и нашего vk-бота )
▍2.1 Основной функционал (создаем файл vk_bot.py)
Мы не будем разрабатывать методы, которые будут выполнять, например, функцию парсинга времени или погоды, назовем их второстепенными. Я покажу лишь основной метод, который будет обращаться к этим второстепенным методам, для обработки тех или иных сообщений от пользователя. В конце статьи я выложу ссылку на свой GitHub, где Вы сможете самостоятельно просмотреть интересующий Вас функционал любого из метода. Итак:
Последнее свойство класса — inputMes — это особый словарь, у которого значения ключей — это текст из файла answers.py, где я расположил текст в виде строк, поэтому, чтобы не загромождать код я и вынес основной текст в другой файл.
Итак, основной метод класса — это new_message , который принимает один параметр — message , который обрабатывается соответствующим условным блоком и возвращает какое -то значение обратно туда, откуда был вызван.
3. Возвращаемся в manage.py и дописываем функционал
Теперь в первых строках нам необходимо проимпортить файл vk_bot. А также нам потребуется библиотека random.
После того, как мы объявили longpoll, дописываем основной функционал.
Как можете заметить, в условных блоках if и elif — присутствует обработка тех сообщений, которые подразумевают под собой вывод инлайн или встроенной клавиатуры (в данном примере — выводятся только инлайн клавиатуры). Сюда также можно добавить более сложные обработки сообщений, после которых обработка будет метаться туда сюда по блокам if и elif. Таким образом бот будет работать, пока не «упадёт с ошибкой».
Другое дело обстоит с блоком else, здесь мы обращаемся как раз ко классу нашего Бота, после чего он аналогичным способом находит обработку сообщения и выводит результат. Это можно назвать вложенной обработкой, а так как вложенностей лучше избегать, то лучше использовать тот метод программирования бота, который как раз-таки реализован в телеграмм боте.
Заключение
Надеюсь, что после прочтения данной статьи, Вы как минимум поняли основной принцип создания своего Telegram или Vk бота, а как максимум — легко сможете написать своего бота.
Как вы можете видеть, создать его функционал очень просто, особенно, если вы знаете основы языка Python.
Как узнать свой токен телеграм

- Добавьте в список контактов бота @MyTelegramID_bot.
Начните с ним диалог командой /start, в ответном сообщении вы узнаете цифры идентификатора.
Можете использовать также бота @GetMyIDBot или @my_id_bot для этой цели. - Заполучить chat id можно также при помощи сторонних ресурсов, вроде сервиса cmsru/kak-poluchit-chat-id-telegram/. Для этого нужно отправить любое сообщение своему боту и указать bot token в соответствующем поле.
- Воспользуйтесь методом getUpdates для получения ID чата. Для привязки бота API к своему аккаунту, создавая его, скопируйте ключ-токен, который пришлёт вам Botfather. Затем напишите первое сообщение своему роботу, ID генерируется во время его отправки. Далее пропишите в адресной строке браузера: https://api.telegram.org/bot<token>/getUpdates, где <token> – это ваш ключ. Если запрос отправлен правильно, после всех манипуляций вы получите в ответ массив, содержащий также ID. Когда идентификатор получен, можно продолжать дальнейшую работу с ним, например, попробовать отправить себе сообщение, воспользовавшись методом sendMessage.
Telegram API: Отправка Сообщений — Бот Для Уведомлений
Telegram Messenger
Создание Бота в Telegram
Получение Chat ID
Telegram Bot API: Отправка Сообщения
Терминал в Linux
Ник в Telegram
Что такое ник в Telegram
- Откройте главное меню. Для этого на телефоне свайпните вправо, на компьютере – нажмите три полоски слева вверху.


- Выберите настройки.
- На компьютере дополнительно нажмите «Изменить профиль».

- Вы увидите поле, где будет отображаться псевдоним. На телефоне кликните по надписи «Не задано», а на компьютере – «Выбрать имя пользователя». Теперь введите ник.


- длина ника – от 5 до 32 символов;
- пишем только латиницей;
- допускаются цифры 0–9, нижнее тире _;
- можно использовать строчные и заглавные буквы.
- Свайпом вправо на смартфоне или кликом по трем полоскам слева вверху на ПК запустите главное меню.


- Откройте «Настройки». На ПК дополнительно щелкните «Изменить профиль».

- Появившееся меню покажет вам ник.
- Открываем главное меню.
- Запускаем настройки (на компьютере «Настройки» / «Изменить профиль»).
- Щелкаем по username.
- Изменяем имя пользователя.
- Нажимаем на смартфоне галочку справа вверху, на компьютере – «Сохранить».


- цветную клавиатуру из магазина приложений;
- эмодзи.

- Активируйте строку поиска кликом.
- Наберите «@userinfobot».
- Запустите программу, нажав «/start».
- Сервис сразу же выдаст ваш ID, а вместе с ним username, имя и фамилию.
- назовитесь приверженцем какого-нибудь течения («@nigilist»);
- используйте прозвище из детства или которым называют вас коллеги;
- напишите имя и/или фамилию известного персонажа: @bazarov, @donkikhot;
- соедините вместе два слова на ваш выбор: @blackwhite, @lovefree.
- Зайдите на сайт.
- Слева выберите «Генераторы», в выпадающем меню – «Ники».
- Запустите сайт.
- Там, где находится описание псевдонима, нажмите «Подробнее».
- Кликните «Генератор никнеймов».
- Откройте сайт.
- Проскролльте вниз и выберите «Генератор случайных ников».
- Запускаем настройки (на компьютере «Настройки» / «Изменить профиль»).
- Найдите раздел «Имя пользователя». Кликните по нему.
- Внизу находится ссылка, по которой откроется чат с вами. Нажмите на нее. Телефон (или ПК) автоматически скопирует ее в буфер обмена.


Инструкция по работе с BotFather ботом
BotFather – самый простой способ для регистрации, настройки и управления другими telegram-ботами. Работа с ним проста и не требует специфических навыков. С помощью BotFather можно зарегистрировать неограниченное количество новых ботов. Единственным условием для регистрации нового бота – является его уникальный username.
Команды BotFather бота
BotFather станет отличным решением для тех, кто не разбирается в программировании и не хочет доверять создание и управление своим ботом посторонним людям или сторонним организациям.
Как зарегистрировать нового бота с помощью BotFather?
Взаимодействие с BotFather осуществляется при помощи простых команд. Например, для того, чтобы зарегистрировать нового бота, достаточно отправить в чат команду /newbot и следовать простым инструкциям:
- Придумать имя бота, которое будет отображаться в чатах и контактах. В дальнейшем его можно будет сменить. Тут все зависит только от вашей фантазии и требований;
- Придумать username – это уже сложнее: имя должно быть уникальным и оканчиваться на «bot». Допускаются буквы латинского алфавита, цифры и символ подчеркивания (пример – «MySuper_wow_bot»). Общее количество символов не менее 5 и не более 32;
- Если все в порядке, то в ответ мы получим сообщение с токеном. Токен необходим для работы с Bot API посредством http-протокола. Нельзя передавать его другим и желательно не терять. Хорошим решением будет скопировать его: сохранить в текстовый файл и положить в надежное, всегда доступное место – например, облачное хранилище.
После регистрации можно приступать к облагораживанию бота: установить аватар, добавить описание и прочее.
Получение сообщения с токеном
Что умеет BotFather?
Помимо регистрации бота, с помощью BotFather можно осуществлять его настройку и управление.
Внешний вид
К примеру, если вдруг вам разонравилось имя бота, то его можно сменить командой /setname.
Смена имени бота
Установить аватарку можно командой /setuserpic, а изменить или добавить краткое описание – командой /setdescription. Изменение информации в профиле выполняется командой /setabouttext. На этом кастомизацию внешнего вида бота можно считать законченной, и можно заняться его функциональными возможностями.
Функционал
Это то, ради чего все и затевалось. Картинка и описание – это, конечно тоже важно, но все же, главное в боте – это его возможности. Возможности зависят от набора команд, которые способен обработать бот.
Для установки списка команд введите /setcommands в окне чата.
Установка команд
Команды вводятся без слеша, в формате «command1 — описание команды»
Вот примеры написания основных команд и их расшифровка:
- /newbot – зарегистрировать нового бота
- /mybots – редактировать своих ботов [бета]
Редактирование
- /setname – изменить имя бота;
- /setdescription – изменить описание бота;
- /setabouttext – изменить информацию о боте;
- /setuserpic – изменить фотографию профиля бота;
- /setcommands – изменить список команд;
- /deletebot – удалить бота.
Настройки бота
- /token – генерировать токен авторизации;
- /revoke – отозвать токен доступа к боту;
- /setinline – включить встроенный режим (позволяет обращаться напрямую к боту из любого канала, группы или чата, написав его имя в поле отправки сообщений) (https://core.telegram.org/bots/inline);
- /setinlinegeo – переключать запросы местоположения при использовании бота во встроенном режиме. (https://core.telegram.org/bots/inline#location-based-results);
- /setinlinefeedback – изменить настройки обратной связи (сбор статистики наиболее часто отправляемых боту команд) (https://core.telegram.org/bots/inline#collecting-feedback);
- /setjoingroups – определяет возможность добавления вашего бота в группы;
- /setprivacy – переключить режим конфиденциальности в группах (https://core.telegram.org/bots#privacy-mode).
- /mygames – редактируйте свои игры (https://core.telegram.org/bots/games) [бета];
- /newgame – создать новую игру (https://core.telegram.org/bots/games);
- /listgames – получить список ваших игр;
- /editgame – редактировать игру;
- /deletegame – удалить существующую игру.
Таким образом можно добавить любые необходимые команды и завершить настройку.
Итоги
Вот так просто, не обладая навыками программирования, можно за несколько минут зарегистрировать полноценного бота в Telegram. А если потратить немного времени на оформление и создание специализированных команд, ты вы получите полностью индивидуального собственного бота, функционал и возможности которого будут зависеть только от вас.
Функциональные возможности токена бота в Telegram, и как его получить

Полезное
Знать, что такое токен бота в «Телеграме», необходимо при настройке параметров рассылки или управлении плагинами CMS WordPress. Также эта информация потребуется при создании либо настройке нового бота для мессенджера.
Общая информация о токене бота в «Телеге»
За автоматические обработку запросов и отправку сообщений в мессенджере ТГ отвечают боты. Взаимодействие пользователей с ними происходит посредством запросов и команд через Bot API, отправляемых из личных и групповых чатов с использованием технологий защищенного соединения HTTPS.
Предназначение и функции
Основное предназначение ботов – автоматизировать обработку и уменьшить время отклика на запросы пользователя с одновременным упрощением процедуры взаимодействия.
Абонент должен общаться с ботом непосредственно из поля ввода в любом чате или группе. Робот должен самостоятельно распознавать команды и данные, предназначенные для него.
Эффективно использовать бот в играх на основе технологий HTML5 в группах и приватных чатах.
Применение 5-й версии языка разметки позволяет создавать игры неограниченной сложности, такие как Math Battle, HTML5 Casino Game или Corsairs.
Примерный набор функций используемых ботов:
- интеграция с прочими сервисами (реакция на GitHub Bot, рассылка уведомлений, управление устройствами Smart House);
- использование в инструментах и утилитах (информирование о погоде, перевод текстов, применение в органайзере, опросах);
- участие в многопользовательских играх в качестве одной из сторон (шашки, шахматы, например TriviaBot);
- применение в социальных сервисах (подбор персонала, набор базы данных).
Преимущества использования
Роботы «Телеграма» имеют много преимуществ перед простыми командными пакетами: клавиатуры с индивидуальным расположением символов, настройкой интерфейса под вкусы пользователя, установку особого режима секретности для группы.
При риске утечки информации возможно задать роботу специальный режим приватности.
В таком случае он будет видеть сообщения, соответствующие требованиям:
- начинаются с косой черты «/»;
- содержат знак «@» и название;
- являются ответом на его вопросы;
- содержат служебную информацию (о смене группы или добавлении пользователя и т. д.).
Этот режим улучшает защищенность данных, сокращает объем просматриваемого потока информации и включен по умолчанию во всех ботах. Участники конференции видят текущее состояние режима приватности.
Создание и настройка
Пользователи мессенджера с 24.06.2015 создают приложения, применяя возможности Telegram Bot API. Программы обращаются по указанному URL, передают параметры и в качестве ответа получают JSON-объект.
Настройка робота производится командами:
- /setname – его наименование;
- /setdescription – текстовое описание приложения;
- /setabouttext – изменение информации о профиле;
- /setuserpic – установка аватарки;
- /setcommands – добавление к списку команд (начинается с косой черты «/»);
- /setjoingroups – присоединение приложения к группе;
- /setprivacy – задание режима приватности;
- /deletebot – удаление робота.
Как узнать токен бота в мессенджере
Любой робот обладает уникальным номером, который позволяет безошибочно распознавать его, и называется «токеном». Зная его, можно быть уверенным, что вызвано будет только ваше приложение и все изменения коснутся лишь его. Для этого надо получить токен с помощью BotFather.
Действия при получении токена в «Телеграме»:
- войти в аккаунт, к которому привязан робот;
- ввести «botfather»;
- перейти в открывшийся чат;
- дать команду /start;
- отправить команду /newbot;
- указать имя бота;
- напечатать username, содержащий окончание «bot»;
- получить сообщение и сохранить токен формата «275583446:ABHIzTtZVniffedfiNpYB-_zsAcs2kLEjRsdW»;
- продолжить работу с ним в конструкторе.
Если в ответе нет токена, проверьте оригинальность имени бота, отсутствие совпадений с другими службами. Также учитывайте временной лаг для вступления в силу измененных настроек приложения.