Разное

Как создать telegram бота: 15 сервисов для простого создания ботов в Telegram — Сервисы на vc.ru

Содержание

инструкции и примеры по созданию ботов в Телеграмм

Из-за такой востребованности Телеграмма среди интернет-читателей его запросто можно использовать для продвижения собственного бренда. Так что сегодня мы разберемся, как создать бота в телеграмме, для чего его можно использовать и поделимся лучшими примерами.

Что такое Telegram-бот?

Бот, или по-другому чат-бот, является специальным алгоритмом, системой определенных компьютерных действий, которые формируют автоматическую переписку с настоящим собеседником. Работа осуществляется не при помощи искусственного интеллекта, а благодаря анализу поступившего сообщения и генерированию подходящего ответа из готовой базы.

Качественно и детально проработанные боты для Telegram могут не только реагировать на поступающие сообщения от потенциальных клиентов, но также отвечать на вопросы и даже консультировать.

Функции и возможности ботов Телеграм

Прежде чем мы попробуем рассказать, как сделать бота в Телеграме, давайте выясним, для чего он вообще может понадобиться и какую помощь можно получить от телеграм-робота?

Основные причины создания бота:

  • работа в одно время сразу со многими клиентами;
  • проведение консультации по основным вопросам для потенциального клиента;
  • сокращение загруженности консультантов горячей линии;
  • сокращение затрат на дополнительных консультантов;
  • отбор и направление клиентов со сложными вопросами напрямую операторам и консультантам.

Как создать бота в Телеграм? Пошаговая инструкция

Есть многочисленные сервисы для создания ботов, платные и бесплатные, встроенные в сам Телеграм и сторонние. Базовый способ разработки через Телеграм мы рассмотрим в этой статье, а если вам хочется большего — используйте Manychat. Это сторонний сервис, который упрощает процесс создания, предлагает готовые наработки и дополненный функционал.

Удобнее делать чат-бот на компьютере, потому что придется воспользоваться многочисленными дополнительными файлами. Но если сильно захотеть и хорошо постараться, можно сделать это и с телефона. Итак, техникой запаслись, теперь приступаем к операции под названием «Как создать бота в Telegram».

  1. Для начала необходимо загрузить и установить сам Телеграм на компьютер или телефон.
  2. Как только мессенджер установлен, заходим в приложение и вводим слово «Manybot» в поисковой строке (как всегда, оно обозначена картинкой лупы).
  3. Когда увидите результаты поиска, кликните на кнопку «Start» снизу в правом углу.
  4. Далее нажимаем на «Добавить нового бота».
  5. В ответ на эти действия всплывет окошко с сообщением от службы Телеграмм, в котором они подробно объяснят, как добавить бота в канал Telegram. Далее действуем по предложенной инструкции.
  6. По условиям мессенджера, затем нужно перейти в профиль BotFather. Если что, в инструкции есть ссылка, выделенная синим цветом.
  7. Теперь кликаем на «Send Message», чтобы перейти к диалогу с этим «собеседником».
  8. Вводим команду «start», чтобы увидеть перечень команд, которые будут доступны при добавлении бота.
  9. Выбираем команду «newbot» и ждет ответного сообщения.
  10. Теперь самое время придумать уникальное название для своего бота (имейте в виду, что оно должно быть на английском языке и с окончанием «bot»). Введите и отправьте его, когда придет ответ. Обязательно сохраните API-токен, который будет ключом для доступа к вашему боту.
  11. Опять переходим к Manybot. Сюда вставляем сохраненный API-токен и ждем ответной реакции.
  12. Затем нужно отослать цели создания бота (для чего он понадобился и как будет функционировать). Если не хотите морочить с этим голову, пропустите этот шаг с помощью кнопки «Skip». В ответ вы должны получить отчет о завершении создания бота.
  13. Как только уведомление пришло, нашу операцию «Как добавить бота в Telegram» можно считать завершенной. Последнее сообщение должно включать ссылку, по которой вы сможете пригласить людей из своих контактов. Там же можно найти перечень универсальных команд для постинга в соц. сетях.

Как проверить функциональность бота?

Чтобы убедиться, что созданный нами робот действительно «на ходу», нужно его самостоятельно проверить. Для этого просто воспользуйтесь строкой поиска в мессенджере. Только вводите не технический ник, то, которое будут использовать ваши подписчики.

Если на этапе программирования и создания все было сделано верно, то ваш бот отобразится в строке поиска и отреагирует на сообщение.

Как самому сделать бота в Телеграме: добавляем команды

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

  1. Введите слово «Commands» и далее название самой команды.
  2. Теперь наберите ответную реакцию бота на эту команду. Она может включать одно или несколько сообщений с картинками видео- и аудиоматериалами. Сохраняем и ждем отчета о создании команды.

Таким же образом можно добавлять множество других команд. Их количество в мессенджере неограниченно.

Чтобы отредактировать уже созданную команду, нужно сделать следующее:

  1. Печатаем «Commands» и название самой команды.
  2. Кликаем на «Показать команду», после чего ждем ответ от Телеграм.
  3. В ответе высветится кнопка, которая предложит скорректировать ответ бота. К чему мы и приступаем.

Бот и автоматический постинг

Теперь мы в теме, как создать чат-бота в Телеграме, самое время освоить еще одну полезную функцию мессенджера. Она позволяет автоматически публиковать разные записи из других социальных сетей в вашем канале. Так они будут отображаться в новостях у подписчиков. Такой автопостинг работает с Твиттером, Ютубом и ВКонтакте. Чтобы настроить эту функцию, нужно сделать несколько простых шагов:

  1. Вводим в боте «Autoposting».
  2. Внизу должны появиться кнопки с социальными сетями. Нужно выбрать ту, записи которой мы хотим «копировать» и в чат-бот.
  3. Теперь необходимо ввести ссылку на вашу страницу, откуда боту нужно будет транслировать публикации. Совсем необязательно проходить авторизацию, можно даже оставить ссылку на чужую страницу.

Как запланировать пост в чат-боте?

Не секрет, что охват аудитории находится в прямой зависимости от времени публикации. Чаще всего опытный человек, который занимается контентом и его планированием, умеет определить оптимальный момент для постинга. Это время, когда запись увидит максимум подписчиков и потенциальных клиентов.

Но бывают ситуации, когда нет возможности подготовить и опубликовать пост. Тогда можно сделать это заранее. Для этого и существует отложенный постинг. Суть его заключается в следующем: создать публикацию можно, когда угодно, а отправить – когда необходимо. Здесь вы неограниченны. Можно поставить на постинг через 10 минут, а можно и через несколько дней.

Чтобы подготовить отложенную запись, нужно сделать следующее:

  1. В своем боте и введите «Newpost».
  2. Теперь пишем сам пост со всеми необходимыми вложениями.
  3. В нижней части экрана будут 4 кнопки. Предпоследней вы найдете как раз ту, что отвечает за отложенную публикацию. Кликайте на нее.
  4. Далее необходимо указать время, соответствующее вашему часовому поясу на данный момент.
  5. Затем вводим то время, когда нам нужно, чтобы в боте появилась подготовленная запись.
  6. Сохраняем пост.

Кстати, выполнять эти действия по «настройке» часов с вашим поясом нужно лишь единожды, во время первого планирования записи. Дальше это будет автоматически, бот запомнит ваше время. Нужно будет вводить только время для публикации.

Бот-телеграм: инструкция по созданию дополнительных кнопок

Чтобы свести свои действия к минимуму, можно создать особые кнопки команд. В результате, чтобы не набирать вручную каждое задание, можно просто выбрать в меню ту кнопку, которая отвечает за нужное нам «задание». Команда автоматически отправится. Итак, что же нужно сделать для этого:

  1. Вводим уже знакомое нам слово «Commands».
  2. В нижней части должна высветиться кнопка для настройки главного меню (обычно первый ряд с правой стороны). Кликайте!
  3. Нужно кликнуть на «Добавить пункт в меню».
  4. Из перечня выбираем нужную команду.
  5. Придумайте и напечатайте «имя» для созданной кнопки.

Все, теперь вам не нужно будет вводить полностью название команды. Достаточно просто кликнуть на кнопку.

Полезные примеры Телеграм-ботов

Делимся с вами списком чат-ботов в Телеграмме, которые будут вас вдохновлять на создание собственного и приносить пользу в повседневной жизни.

  1. @music – для истинных ценителей классической музыки: можно послушать и скачать любимые композиции прямо в Телеграмме.
  2. @misis_sch_bot – вот так удобно в форме чат-бота выполнено расписание МИСиС.
  3. @FastAid_bot – ну и для тех, кто внезапно оказался в экстремальной ситуации и не хочет гуглить, есть бот по оказанию первой помощи.
  4. @EcoideaBot — поможет вам правильно сортировать мусор.

Сам процесс создания чат-бота в Телеграмм может сначала показаться долгим и нудным. На самом деле это очень интересно, а результат – во много раз упрощенная работа – будет наградой за ваши старания.

Как написать Telegram бота: практическое руководство

6 Апрель 2016, Python,
313755 просмотров

В последнее время Telegram у всех на слуху. Нужно отдать должное отделу маркетинга этого приложения, шумиху подняли на славу. Одной из основных «фишек» Telegram является его якобы защищённость — по словам Павла Дурова вся переписка между пользователями шифруется. Более того, ни одна спец.служба мира не будет иметь доступ к вашим сообщениям. Но в данной статье речь не об этом. Сегодня хотелось бы поговорить о не менее крутой фишке в Telegram, а именно о ботах. Помимо того, что в сети уже полно информации о различного рода Telegram ботах (github бот, например), мессенджер открыл своё API для разработчиков, и теперь каждый может создать своего собственного бота с блэкджеком и плюшками.

В статье я приведу пример написания онлайн бота с использованием Python и Django фреймворка. То есть мы «запилим» полноценное веб-приложение, которое будет крутиться на удалённом хосте и принимать команды от пользователей. Весь исходный текст доступен в моём github репозитории.


Документация, описывающая процесс взаимодействия с ботами Telegram находится тут. Чтобы не изобретать велосипед, я нашел неплохую Python библиотеку, реализующую все основные функции ботов — telepot. Как я уже упоминал ранее, для того, чтобы обслуживать пользователей нашего бота мы будет разрабатывать веб-приложение, используя Django фреймворк.

Как создать Telegram бота?

Для начала нам необходимо зарегистрировать в Telegram нашего будущего бота. Это делается следующим образом:

  • Необходимо установить приложение Telegram на телефон или компьютер. Скачать приложение можно тут
  • Добавляем к себе в контакт-лист бота с именем BotFather
  • Запускаем процедуру «общения» с ботом нажатием кнопки Start. Далее перед нами предстанет список команд точно как на скриншоте.
  • Для того, чтобы создать нового бота необходимо выполнить команду /newbot и следовать инструкциям. Обратите внимание, что username для бота должен всегда содержать в конце слово bot. Например, DjangoBot или Django_bot.

  • Для нашего бота я выбрал имя PythonPlanetBot, так как его основная функция заключается в парсинге RSS feed сайта Python Planet и выдача информации о последних постах пользователю 🙂

После создания бота, обратите внимание на строку с текстом:

Use this token to access the HTTP API:

За которой следует т.н. token по которому мы будем манипулировать нашим ботом. Помимо функции создания telegram бота, BotFather также имеет ряд других возможностей:

  • Присвоить боту описание
  • Установить аватар
  • Поменять token

и так далее. Полное описание доступных команд можно увидеть на первом скриншоте.

Приступаем к кодированию

Как я ранее уже упоминал, мы будем писать веб-приложение на Django. Но стоит отметить, что это делать необязательно. Можно обойтись и обычным Python скриптом, правда в этом случае необходимо будет периодически опрашивать Telegram на предмет новых запросов от пользователей бота (используя метод getUpdates) и увеличивая offset для получения самых последних данных без повторений. В Telegram существует два взаимоисключающих метода получения команд/сообщений для вашего бота.

  • Использование вызова API метода getUpdates
  • Установка Webhook

Установка Webhook заключается в передаче боту специального URL адреса на который будет поступать POST запрос каждый раз, когда кто-то начнёт посылать сообщения боту. Именно этот вариант мы и будем использовать для взаимодействия между ботом и его пользователем. Для того, чтобы задать URL, необходимо использовать API метод setWebhook. Отмечу, что URL должен начинаться с https, то есть иметь защищённое SSL соединение с валидным сертификатом. Telegram разрешает использовать самоподписанный сертификат, правда для этого необходимо в методе setWebhook передавать также публичный ключ в PEM формате (ASCII base64). Либо же можно получить валидный бесплатный SSL сертификат от Let’s Encrypt.

Подробнее о getUpdates и setWebhook можно почитать соответственно здесь и тут.

Итак, вернёмся к python библиотеке для работы с Telegram — telepot. На текущий момент самой последней её версий является 6.7. Устанавливаем её в виртуальное окружение python virtualenv:


pip install telepot

Самый простой вариант взаимодействия с Telegram ботом на Python выглядит следующим образом:


import telepot
token = '123456'
TelegramBot = telepot.Bot(token)
print TelegramBot.getMe()

Переменной token присваиваем значение токена, полученного при создании бота через BotFather. В итоге после выполнения этих команд мы получим:


{u'username': u'PythonPlanetBot', u'first_name': u'Python Planet Bot', u'id': 199266571}

Поздравляю! Мы вызывали самый простой API запрос getMe, который возвращает информацию о боте: username, id, first_name.

Добавим нашего бота к себе в контакт-лист и пошлём ему первую стандартную команду /start

Выполняем код:


TelegramBot.getUpdates()
[{u'message': {u'date': 1459927254, u'text': u'/start', u'from': {u'username': u'adilkhash', u'first_name': u'Adil', u'id': 31337}, u'message_id': 1, u'chat': {u'username': u'adilkhash', u'first_name': u'Adil', u'type': u'private', u'id': 7350}}, u'update_id': 649179764}]

Процесс общения с telegram ботом происходит по HTTPS; для передачи данных используется JSON. Метод getUpdates возвращает список/массив из объектов типа Update. Внутри Update находится объект Message. Для стандартного взаимодействия с ботом нас фактически интересует именно объект Message, у которого мы считываем атрибут text, хранящий в себе текст, переданный боту и объект chat, в котором лежит информация о пользователе, инициировавшем общение с нашим Telegram ботом. Также имеется параметр update_id, который служит в качестве offset параметра при вызове метода getUpdates. То есть update_id+1 вернёт все сообщения, поступившие после последнего update_id, при этом все предыдущие сообщения будут удалены.


TelegramBot.getUpdates(649179764+1)
[{u'message': {u'date': 1459928527, u'text': u'hello bro', u'from': {u'username': u'adilkhash', u'first_name': u'Adil', u'id': 31337}, u'message_id': 13, u'chat': {u'username': u'adilkhash', u'first_name': u'Adil', u'type': u'private', u'id': 7350}}, u'update_id': 649179765}]

На этапе написания простейшего Telegram бота нам этих вызовов достаточно. Приступим к написанию Django приложения для обслуживания наших пользователей.

Простая функция парсинга RSS фида Planet Python выглядит вот так:


# -*- coding: utf8 -*-
from xml.etree import cElementTree
import requests
def parse_planetpy_rss():
    """Parses first 10 items from http://planetpython.org/rss20.xml
    """
    response = requests.get('http://planetpython.org/rss20.xml')
    parsed_xml = cElementTree.fromstring(response.content)
    items = []
    for node in parsed_xml.iter():
        if node.tag == 'item':
            item = {}
            for item_node in list(node):
                if item_node.tag == 'title':
                    item['title'] = item_node.text
                if item_node.tag == 'link':
                    item['link'] = item_node.text
            items.append(item)
    return items[:10]

Здесь я использую python библиотеку requests для работы с HTTP в самом простейшем варианте без обработки ошибок. Django «вьюшка» выглядит следующим образом:


TOKEN = '<Our_Bot_Token>'
TelegramBot = telepot.Bot(TOKEN)
def _display_help():
    return render_to_string('help.md')
def _display_planetpy_feed():
    return render_to_string('feed.md', {'items': parse_planetpy_rss()})
class CommandReceiveView(View):
    def post(self, request, bot_token):
        if bot_token != TOKEN:
            return HttpResponseForbidden('Invalid token')
        commands = {
            '/start': _display_help,
            'help': _display_help,
            'feed': _display_planetpy_feed,
        }
        try:
            payload = json.loads(request.body.decode('utf-8'))
        except ValueError:
            return HttpResponseBadRequest('Invalid request body')
        else:
            chat_id = payload['message']['chat']['id']
            cmd = payload['message'].get('text')  # command
            func = commands.get(cmd.split()[0].lower())
            if func:
                TelegramBot.sendMessage(chat_id, func(), parse_mode='Markdown')
            else:
                TelegramBot.sendMessage(chat_id, 'I do not understand you, Sir!')
        return JsonResponse({}, status=200)
    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        return super(CommandReceiveView, self).dispatch(request, *args, **kwargs)

CommandReceiveView ждёт POST запрос на себя, парсит его и отвечает исходя из заданной команды. Полноценное Django приложение можно найти по этой ссылке. Стоит отметить в коде использование ещё одного API вызова — sendMessage. Этот метод отправляет сообщение заданному пользователю, используя при этом chat_id и сам текст сообщения. Chat_id — это уникальный идентификатор чата между пользователем и ботом (его идентификатор есть в ответе на запрос getUpdates). У Telegram ботов есть одно ограничение, они не могут посылать сообщения пользователям, которые предварительно не инициировали общение с ним. По-видимому это сделано дабы избежать массового создания спам-ботов.

Я предполагаю, что вы уже клонировали мой репозиторий, настроили окружение и установили все необходимые зависимости: Django, requests, telepot. Если же вы не знаете как это сделать, то совсем скоро я напишу цикл статей о разработке веб-приложений на Python, включая разбор экосистемы: разработка, настройка, деплой. Если вам это интересно, то отпишитесь, пожалуйста, в комментариях к этой статье. Хочется получить обратную связь 🙂

Итак, веб-приложение на Django запущено. Как же начать тестировать бота? А всё очень просто — необходимо симулировать действия Telegram сервиса. Для этого нам понадобится HTTP клиент и тело запроса. В качестве HTTP клиента я часто использую Chrome плагин под названием Postman, а тело запроса мы возьмём напрямую из данных, полученных с помощью API вызова getUpdates.

После запуска runserver, URL на который необходимо посылать запрос выглядит следующим образом:

http://127.0.0.1:8000/planet/b…BOT_TOKEN/

где BOT_TOKEN — это токен нашего бота. Смотрим скриншот:

 

А давайте-ка отправим команду feed для получения списка новостей из Planet Python:

На скриншотах видно, что бот адекватно отреагировал на нашу команду вывести список последних 10 постов.

Следующим шагом является деплой нашего Django приложения на удалённый хост и последующий вызов метода setWebhook для передачи URL на который будет посылаться POST запрос от сервиса Telegram каждый раз при поступлении команд боту от пользователей. Об этом мы поговорим в следующей заметке.

Пишем telegram-бота на python с помощью библиотеки telebot часть 1 / Хабр

Лирическое отступление

Боты сегодня — это многофункциональный инструмент, как для бизнеса, так и для развлечений. Лично я считаю, что за ними будущее. Конечно, прочитав эту статью, вы не сможете создавать большие проекты, но заинтересоваться и начать — вполне.

Установка и настройка

Для начала давайте скачаем сам python. Сделать это можно на официальном сайте. Не забудьте поставить галочку add to PATH во время установки! После установки python’a нам понадобится хороший редактор кода. На помощь приходит компания JetBrains со своим бесплатным PyCharm. Мы уже близко, осталось скачать библиотеку telebot. Для этого заходим в командную строку и пишем:

pip install pytelegrambotapi

Если всё прошло успешно, мы можем продолжать!

VPN

Думаю все знают о блокировки telegram в России и единственным решением как всегда остаётся vpn. Лично я рекомендую Windscribe, т.к. вам дают 2 гб. трафика совершенно бесплатно!

Bot Father

В поиске telegram находим Bot Farher’a и создаем своего бота с помощью команды /newbot. Затем вводим имя и юзернейм. Обратите внимание, что юзернейм должен оканчиваться на bot!

Как вы видите нам выдали специальный api токен, с помощью которого вы сможете управлять своим ботом (в моём случае это: 776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM). Свой токен Вы можете запомнить, но я рекомендую его записать.

Код

Настал момент, которого ждали все. Открываем PyCharm и создаем новый проект.

Тут рекомендую поставить всё как у меня (название, конечно можно изменить). После создания проекта, давайте создадим файл, в котором будет наш код. Кликните правой кнопкой по папке с вашем проектом, затем New → Python File. Отлично, начнем писать код. Импортируем библиотеку telebot, с помощью:

import telebot

Теперь нужно создать переменную bot. На самом деле имя переменной может быть каким угодно, но я привык писать bot.

bot = telebot.TeleBot('ваш токен')

Напишем декоратор bot.message_handler(), с помощью которого наш бот будет реагировать на команду /start. Для этого в круглых скобках пишем commands=[‘start’]. В итоге у нас должно получиться это:

@bot.message_handler(commands=['start'])

Если Вы попробуете запустить своего бота (ПКМ->Run), то у вас ничего не выйдет. Во первых в конце кода мы должны прописать bot.polling(). Это нужно для того, чтобы бот не выключился сразу, а работал и проверял, нет ли на сервере нового сообщения. А во вторых наш бот если уж и будет проверять наличие сообщений, то всё равно ничего ответить не сможет. Пора это исправлять! После нашего декоратора создаем функцию start_message, которая будет принимать параметр message (название функции может быть любым). Далее давайте реализуем отправку сообщения от самого бота. В функции пропишем bot.send_message(message.chat.id, ‘Привет, ты написал мне /start’). Смотрите, что у Вас должно получиться:

import telebot

bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM')

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, 'Привет, ты написал мне /start')

bot.polling()

Проверим…

Отлично, наш бот работает! Чтобы он отвечал не только на команды, но и на сообщения, создадим новый декоратор bot.message_handler(), а в круглые скобочки напишем content_types=[‘text’]. Вообще существует множество видов контента, к примеру location, photo, audio, sticker и т.д. Но нам же нужно отвечать на текст, верно? Поэтому создаём функцию send_text, принимающую параметр message. В функции пропишем условие:

@bot.message_handler(content_types=['text'])
def send_text(message):
    if message.text == 'Привет':
        bot.send_message(message.chat.id, 'Привет, мой создатель')
    elif message.text == 'Пока':
        bot.send_message(message.chat.id, 'Прощай, создатель')

Если текст сообщения будет равен «Привет», то бот отвечает «Привет, мой создатель», а если текст сообщения будет равен «Пока», то бот ответит «Прощай, создатель». Тут думаю всё понятно. Но вы скорее всего задались вопросом, а если пользователь пропишет «привет», ну или «пРиВет», как быть в этой ситуации? Всё достаточно просто! В условии, после message.text напишите функцию .lower(), а в тексте все заглавные буквы замените на строчные. Теперь наш бот отвечает не только на «привет», но и на «ПривеТ», и даже «пРиВеТ».

Вот что у вас должно получиться:

import telebot

bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM')

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, 'Привет, ты написал мне /start')

@bot.message_handler(content_types=['text'])
def send_text(message):
    if message.text.lower() == 'привет':
        bot.send_message(message.chat.id, 'Привет, мой создатель')
    elif message.text.lower() == 'пока':
        bot.send_message(message.chat.id, 'Прощай, создатель')

bot.polling()

Отлично, с текстом мы разобрались, но как же отправить к примеру стикер? Всё просто! У каждого стикера есть свой id, соответственно зная id мы сможем его отправить. Получить id стикера можно двумя способами. Первый (простой) — через специального бота «What’s the sticker id?»

Ну и второй способ, для тех, кто не ищет лёгких путей. Создаем новый декоратор bot.message_handler(), вот только в скобочки пишем content_types=[‘sticker’]. Далее всё как обычно. Создаем функцию, принимающую параметр message, а вот в ней пропишем print(message). Запускаем бота.

Смотрите, как только я отправил стикер, он сразу же вывел информацию в консоль, и в самом конце будет наш id стикера (file_id). Давайте сделаем так, чтобы когда пользователь отправил боту «я тебя люблю», то бот ему ответил стикером. Создавать новый декоратор не нужно, мы просто допишем условие, которое было до этого. Вот только вместо bot.send_message() пропишем bot.send_sticker(), а вместо текста напишем id стикера.

Поздравляю, всё получилось! Думаю как отправить аудио, фото, и геолокацию, вы разберетесь сами. Я же хочу показать вам, как сделать клавиатуру, которую бот покажет вам при старте. Это уже будет сделать сложнее. Создаем переменную keyboard1, в которую запишем telebot.types.ReplyKeyboardMarkup(). Эта функция вызывает клавиатуру. Далее создадим ряды, но помните, что рядов может быть не больше 12! Для того, чтобы их создать, пишем keyboard1.row(). В круглые скобочки запишите всё что хотите, лично я напишу «Привет» и «Пока». Теперь, чтобы вызвать клавиатуру, допишем reply_markup=keyboard1 к функции отправки сообщения при старте. Вот, что у вас должно получиться:

keyboard1 = telebot.types.ReplyKeyboardMarkup()
keyboard1.row('Привет', 'Пока')

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, 'Привет, ты написал мне /start', reply_markup=keyboard1)

Запускаем бота…

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

keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True)

Ну а на этом всё! Конечно, это не все возможно ботов в telegram, но основные возможности я вам показал. Спасибо за внимание.

Исходный код:

import telebot

bot = telebot.TeleBot('<ваш токен>')
keyboard1 = telebot.types.ReplyKeyboardMarkup()
keyboard1.row('Привет', 'Пока')

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, 'Привет, ты написал мне /start', reply_markup=keyboard1)

@bot.message_handler(content_types=['text'])
def send_text(message):
    if message.text.lower() == 'привет':
        bot.send_message(message.chat.id, 'Привет, мой создатель')
    elif message.text.lower() == 'пока':
        bot.send_message(message.chat.id, 'Прощай, создатель')
    elif message.text.lower() == 'я тебя люблю':
        bot.send_sticker(message.chat.id, 'CAADAgADZgkAAnlc4gmfCor5YbYYRAI')

@bot.message_handler(content_types=['sticker'])
def sticker_id(message):
    print(message)

bot.polling()

Если у вас возникли вопросы — можете мне написать в telegram dimagorovtsov

пишем с нуля на примере бота с курсом валют

Это пошаговое руководство по созданию бота для Telegram. Бот будет показывать курсы валют, разницу между курсом раньше и сейчас, а также использовать современные встроенные клавиатуры.

Время переходить к делу и узнать наконец, как создавать ботов в Telegram.

Шаг №0: немного теории об API Telegram-ботов

Начать руководство стоит с простого вопроса: как создавать чат-ботов в Telegram?

Ответ очень простой: для чтения сообщений отправленных пользователями и для отправки сообщений назад используется API HTML. Это требует использования URL:

https://api.telegram.org/bot/METHOD_NAME

Токен — уникальная строка из символов, которая нужна для того, чтобы установить подлинность бота в системе. Токен генерируется при создании бота. METHOD_NAME — это метод, например, getUpdates, sendMessage, getChat и так далее.

Токен выглядит приблизительно так:

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

Для выполнения запросов используются как GET, так и POST запросы. Многие методы требуют дополнительных параметров (методу sendMessage, например, нужно передать chat_id и текст). Эти параметры могут быть переданы как строка запроса URL, application/x-www-form-urlencoded и application-json (кроме загрузки файлов). Еще одно требование — кодировка UTF-8.

После отправки запроса к API, вы получаете ответ в формате JSON. Например, если извлечь данные с помощью метода getME, ответ будет такой:

GET https://api.telegram.org/bot<token>/getMe
{
   ok: true,
   result: {
       id: 231757398,
       first_name: "Exchange Rate Bot",
       username: "exchangetestbot"
   }
}
Подписывайтесь на телеграм каналы

Если значение ‘ok’ — true, значит запрос был успешным и результат отобразится в поле ‘field’. Если false — в поле ‘description’ будет сообщение об ошибке.

Список всех типов данных и методов API Telegram-бота можно найти здесь (ENG) или с переводом здесь (ру) .

Следующий вопрос: как получать пользовательские сообщения?

Есть два варианта.

Первый — вручную создавать запросы с помощью метода getUpdates. В качестве объекта вы получите массив объектов Update. Этот метод работает как технология длинных опросов (long polling), когда вы отправляете запрос, обрабатываете данные и начинаете повторяете процесс. Чтобы избежать повторной обработки одних и тех же данных рекомендуется использовать параметр offset.

Второй вариант — использовать webhooks. Метод setWebhook нужно будет применить только один раз. После этого Telegram будет отправлять все обновления на конкретный URL-адрес, как только они появятся. Единственное ограничение — необходим HTTPS, но можно использовать и сертификаты, заверенные самостоятельно.

Как выбрать оптимальный метод? Метод getUpdates лучше всего подходит, если:

  1. Вы не хотите или не можете настраивать HTTPS во время разработки.
  2. Вы работаете со скриптовыми языками, которые сложно интегрировать в веб-сервер.
  3. У бота высокая нагрузка.
  4. Вы меняете сервер бота время от времени.

Метод с Webhook лучше подойдет в таких случаях:

  1. Вы используете веб-языки (например, PHP).
  2. У бота низкая нагрузка, и нет смысла делать запросы вручную.
  3. Бот на постоянной основе интегрирован в веб-сервер.

В этом руководстве будет использоваться метод getUpdates.

Еще один вопрос: как создать зарегистрировать бота?

@BotFather используется для создания ботов в Telegram. Он также отвечает за базовую настройку (описание, фото профиля, встроенная поддержка и так далее).

Существует масса библиотек, которые облегчают процесс работы с API Telegram-бота. Вот некоторые из них:

По своей сути, все эти библиотеки — оболочки HTML-запросов. Большая часть из них написана с помощью принципов ООП. Типы данных Telegram Bot API представлены в виде классов.

В этом руководстве будет использоваться библиотека pyTelegramBotApi.

Шаг №1: реализовать запросы курсов валют

Весь код был проверен на версии Python==3.7 c использование библиотек:
pyTelegramBotAPI==3.6.6
pytz==2019.1
requests==2.7.0

Полезно: Краткое руководство по библиотеке Python Requests

Начать стоит с написания Python-скрипта, который будет реализовывать логику конкретных запросов курсов валют. Использовать будем PrivatBank API. URL: https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5.

Пример ответа:

[
    {
        ccy:"USD",
	base_ccy:"UAH",
        buy:"25.90000",
        sale:"26.25000"
    },
    {
	ccy:"EUR",
        base_ccy:"UAH",
        buy:"29.10000",
        sale:"29.85000"
    },
    {
        ccy:"RUR",
        base_ccy:"UAH",
        buy:"0.37800",
        sale:"0.41800"
    },
    {
        ccy:"BTC",
        base_ccy:"USD",
        buy:"11220.0384",
        sale:"12401.0950"
    }
]

Создадим файл pb.py со следующим кодом:

import re  
import requests  
import json  
  
  
URL = 'https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5'  
  
  
def load_exchange():  
    return json.loads(requests.get(URL).text)  
  
  
def get_exchange(ccy_key):  
    for exc in load_exchange():  
        if ccy_key == exc['ccy']:  
            return exc  
    return False  
  
  
def get_exchanges(ccy_pattern):  
    result = []  
    ccy_pattern = re.escape(ccy_pattern) + '.*'  
  for exc in load_exchange():  
        if re.match(ccy_pattern, exc['ccy'], re.IGNORECASE) is not None:  
            result.append(exc)  
    return result

Были реализованы три метода:

  • load_exchange: загружает курсы валют по указанному URL-адресу и возвращает их в формате словаря(dict).
  • get_exchange: возвращает курсы валют по запрошенной валюте.
  • get_exchanges: возвращает список валют в соответствии с шаблоном (требуется для поиска валют во встроенных запросах).

Шаг №2: создать Telegram-бота с помощью @BotFather

Необходимо подключиться к боту @BotFather, чтобы получить список чат-команд в Telegram. Далее нужно набрать команду /newbot для инструкций выбора название и имени бота. После успешного создания бота вы получите следующее сообщение:

Done! Congratulations on your new bot. You will find it at telegram.me/<username>. 
You can now add a description, about section and profile picture for your bot, see /help for a list of commands. 
By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. 
Just make sure the bot is fully operational before you do this.

Use this token to access the HTTP API:
<token> (here goes the bot’s token)

For a description of the Bot API, see this page: https://core.telegram.org/bots/api

Его нужно сразу настроить. Необходимо добавить описание и текст о боте (команды /setdescription и /setabouttext), фото профиля (/setuserpic), включить встроенный режим (/setinline), добавить описания команд (/setcommands). Потребуется использовать две команды: /help и /exchange. Стоит описать их в /setcommands.

Теперь, когда настройка закончена, можно переходить к написанию кода. Прежде чем двигаться дальше, рекомендуется почитать об API и ознакомиться с документацией библиотеки, чтобы лучше понимать то, о чем пойдет речь дальше.

Шаг №3: настроить и запустить бота

Начнем с создания файла config.py для настройки:

TOKEN = '<bot token>'  
TIMEZONE = 'Europe/Kiev'
TIMEZONE_COMMON_NAME = 'Kiev'

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

Создадим файл bot.py. Нужно импортировать все необходимые библиотеки, файлы с настройками и предварительно созданный pb.py. Если каких-то библиотек не хватает, их можно установить с помощью pip.

import telebot
import config
import pb
import datetime
import pytz
import json
import traceback


P_TIMEZONE = pytz.timezone(config.TIMEZONE)
TIMEZONE_COMMON_NAME = config.TIMEZONE_COMMON_NAME

Создадим бота с помощью библиотеки pyTelegramBotAPI. Для этого конструктору нужно передать токен:

bot.py

bot = telebot.TeleBot(config.TOKEN)
bot.polling(none_stop=True)

Шаг №4: написать обработчик команды /start

Теперь чат-бот на Python работает и постоянно посылает запросы с помощью метода getUpdates. Параметр none_stop отвечает за то, чтобы запросы отправлялись, даже если API возвращает ошибку при выполнении метода.

Из переменной бота возможно вызывать любые методы API Telegram-бота.

Начнем с написания обработчика команды /start и добавим его перед строкой bot.polling(none_stop=True):

@bot.message_handler(commands=['start'])  
def start_command(message):  
    bot.send_message(  
        message.chat.id,  
        'Greetings! I can show you exchange rates.\n' +  
        'To get the exchange rates press /exchange.\n' +  
        'To get help press /help.'  
  )

Как можно видеть, pyTelegramBotApi использует декораторы Python для запуска обработчиков разных команд Telegram. Также можно перехватывать сообщения с помощью регулярных выражений, узнавать тип содержимого в них и лямбда-функции.

В нашем случае если условие commands=['start'] равно True, тогда будет вызвана функция start_command. Объект сообщения (десериализованный тип Message) будет передан функции. После этого вы просто запускаете send_message в том же чате с конкретным сообщением.

Это было просто, не так ли?

Шаг №5: создать обработчик команды /help

Давайте оживим обработчик команды /help с помощью встроенной кнопки со ссылкой на ваш аккаунт в Telegram. Кнопку можно озаглавить “Message the developer”.

@bot.message_handler(commands=['help'])  
def help_command(message):  
    keyboard = telebot.types.InlineKeyboardMarkup()  
    keyboard.add(  
        telebot.types.InlineKeyboardButton(  
            'Message the developer', url='telegram.me/artiomtb'  
  )  
    )  
    bot.send_message(  
        message.chat.id,  
        '1) To receive a list of available currencies press /exchange.\n' +  
        '2) Click on the currency you are interested in.\n' +  
        '3) You will receive a message containing information regarding the source and the target currencies, ' +  
        'buying rates and selling rates.\n' +  
        '4) Click “Update” to receive the current information regarding the request. ' +  
        'The bot will also show the difference between the previous and the current exchange rates.\n' +  
        '5) The bot supports inline. Type @<botusername> in any chat and the first letters of a currency.',  
        reply_markup=keyboard  
    )

Как видно в примере выше, был использован дополнительный параметр (reply_markup) для метода send_message. Метод получил встроенную клавиатуру (InlineKeyboardMarkup) с одной кнопкой (InlineKeyboardButton) и следующим текстом: “Message the developer” и url='telegram.me/artiomtb'.

Код выше выглядит вот так:

Шаг №6: добавить обработчик команды /exchange

Обработчик команды /exchange отображает меню выбора валюты и встроенную клавиатуру с 3 кнопками: USD, EUR и RUR (это валюты, поддерживаемые API банка).

@bot.message_handler(commands=['exchange'])  
def exchange_command(message):  
    keyboard = telebot.types.InlineKeyboardMarkup()  
    keyboard.row(  
        telebot.types.InlineKeyboardButton('USD', callback_data='get-USD')  
    )  
    keyboard.row(  
        telebot.types.InlineKeyboardButton('EUR', callback_data='get-EUR'),  
        telebot.types.InlineKeyboardButton('RUR', callback_data='get-RUR')  
    )  
  
    bot.send_message(  
        message.chat.id,   
        'Click on the currency of choice:',  
        reply_markup=keyboard  
    )

Вот как работает InlineKeyboardButton. Когда пользователь нажимает на кнопку, вы получаете CallbackQuery (в параметре data содержится callback-data) в getUpdates. Таким образом вы знаете, какую именно кнопку нажал пользователь, и как ее правильно обработать.

Вот как работает ответ /exchange:

Шаг №7: написать обработчик для кнопок встроенной клавиатуры

В библиотеке pyTelegramBot Api есть декоратор @bot.callback_query_handler, который передает объект CallbackQuery во вложенную функцию.

@bot.callback_query_handler(func=lambda call: True)  
def iq_callback(query):  
    data = query.data  
    if data.startswith('get-'):  
        get_ex_callback(query)

Давайте реализуем метод get_ex_callback:

def get_ex_callback(query):  
    bot.answer_callback_query(query.id)  
    send_exchange_result(query.message, query.data[4:])

Метод answer_callback_query нужен, чтобы убрать состояние загрузки, к которому переходит бот после нажатия кнопки. Отправим сообщение send_exchange_query. Ему нужно передать Message и код валюты (получить ее можно из query.data. Если это, например, get-USD, передавайте USD).

Реализуем send_exchange_result:

def send_exchange_result(message, ex_code):  
    bot.send_chat_action(message.chat.id, 'typing')  
    ex = pb.get_exchange(ex_code)  
    bot.send_message(  
        message.chat.id, serialize_ex(ex),  
        reply_markup=get_update_keyboard(ex),  
	parse_mode='HTML'  
    )

Все довольно просто.

Сперва отправим состояние ввода в чат, так чтобы бот показывал индикатор «набора текста», пока API банка получает запрос. Теперь вызовем метод get_exchange из файла pb.py, который получит код валюты (например, USD). Также нужно вызвать два новых метода в send_message: serialize_ex, сериализатор валюты и get_update_keyboard (который возвращает клавиатуре кнопки “Update” и “Share”).

def get_update_keyboard(ex):  
    keyboard = telebot.types.InlineKeyboardMarkup()  
    keyboard.row(  
        telebot.types.InlineKeyboardButton(  
            'Update',  
	    callback_data=json.dumps({  
                't': 'u',  
		'e': {  
                    'b': ex['buy'],  
		    's': ex['sale'],  
		    'c': ex['ccy']  
                }  
            }).replace(' ', '')  
        ),  
	telebot.types.InlineKeyboardButton('Share', switch_inline_query=ex['ccy'])  
    )  
    return keyboard

Запишем в get_update_keyboard текущий курс валют в callback_data в форме JSON. JSON сжимается, потому что максимальный разрешенный размер файла равен 64 байтам.

Кнопка t значит тип, а e — обмен. Остальное выполнено по тому же принципу.

У кнопки Share есть параметр switch_inline_query. После нажатия кнопки пользователю будет предложено выбрать один из чатов, открыть этот чат и ввести имя бота и определенный запрос в поле ввода.

Методы serialize_ex и дополнительный serialize_exchange_diff нужны, чтобы показывать разницу между текущим и старыми курсами валют после нажатия кнопки Update.

def serialize_ex(ex_json, diff=None):  
    result = '<b>' + ex_json['base_ccy'] + ' -> ' + ex_json['ccy'] + ':</b>\n\n' + \  
             'Buy: ' + ex_json['buy']  
    if diff:  
        result += ' ' + serialize_exchange_diff(diff['buy_diff']) + '\n' + \  
                  'Sell: ' + ex_json['sale'] + \  
                  ' ' + serialize_exchange_diff(diff['sale_diff']) + '\n'  
    else:  
        result += '\nSell: ' + ex_json['sale'] + '\n'  
    return result


def serialize_exchange_diff(diff):  
    result = ''  
    if diff > 0:  
        result = '(' + str(diff) + ' <img draggable="false" data-mce-resize="false" data-mce-placeholder="1" data-wp-emoji="1" alt="<img draggable="false" data-mce-resize="false" data-mce-placeholder="1" data-wp-emoji="1" alt="<img draggable="false" data-mce-resize="false" data-mce-placeholder="1" data-wp-emoji="1" alt="<img draggable="false" data-mce-resize="false" data-mce-placeholder="1" data-wp-emoji="1" alt="<img draggable="false" data-mce-resize="false" data-mce-placeholder="1" data-wp-emoji="1" alt="↗️" src="https://s.w.org/images/core/emoji/2.3/svg/2197.svg">" src="https://s.w.org/images/core/emoji/2.3/svg/2197.svg">" src="https://s.w.org/images/core/emoji/2.3/svg/2197.svg">" src="https://s.w.org/images/core/emoji/72x72/2197.png">" src="https://s.w.org/images/core/emoji/72x72/2197.png">)'  
    elif diff < 0:  
        result = '(' + str(diff)[1:] + ' <img draggable="false" data-mce-resize="false" data-mce-placeholder="1" data-wp-emoji="1" alt="<img draggable="false" data-mce-resize="false" data-mce-placeholder="1" data-wp-emoji="1" alt="<img draggable="false" data-mce-resize="false" data-mce-placeholder="1" data-wp-emoji="1" alt="<img draggable="false" data-mce-resize="false" data-mce-placeholder="1" data-wp-emoji="1" alt="<img draggable="false" data-mce-resize="false" data-mce-placeholder="1" data-wp-emoji="1" alt="↘️" src="https://s.w.org/images/core/emoji/2.3/svg/2198.svg">" src="https://s.w.org/images/core/emoji/2.3/svg/2198.svg">" src="https://s.w.org/images/core/emoji/2.3/svg/2198.svg">" src="https://s.w.org/images/core/emoji/72x72/2198.png">" src="https://s.w.org/images/core/emoji/72x72/2198.png">)'  
    return result

Как видно, метод serialize_ex получает необязательный параметр diff. Ему будет передаваться разница между курсами обмена в формате {'buy_diff': <float>, 'sale_diff': <float>}. Это будет происходить во время сериализации после нажатия кнопки Update. Когда курсы валют отображаются первый раз, он нам не нужен.

Вот как будет выглядеть бот после нажатия кнопки USD:

Шаг №8: реализовать обработчик кнопки обновления

Теперь можно создать обработчик кнопки Update. После дополнения метода iq_callback_method он будет выглядеть следующим образом:

@bot.callback_query_handler(func=lambda call: True)  
def iq_callback(query):  
    data = query.data  
    if data.startswith('get-'):  
        get_ex_callback(query)  
    else:  
        try:  
            if json.loads(data)['t'] == 'u':  
                edit_message_callback(query)  
        except ValueError:  
            pass

Если данные обратного вызова начинаются с get- (get-USD, get-EUR и так далее), тогда нужно вызывать get_ex_callback, как раньше. В противном случае стоит попробовать разобрать строку JSON и получить ее ключ t. Если его значение равно u, тогда нужно вызвать метод edit_message_callback. Реализуем это:

def edit_message_callback(query):  
    data = json.loads(query.data)['e']  
    exchange_now = pb.get_exchange(data['c'])  
    text = serialize_ex(  
        exchange_now,  
	get_exchange_diff(  
            get_ex_from_iq_data(data),  
	    exchange_now  
        )  
    ) + '\n' + get_edited_signature()  
    if query.message:  
        bot.edit_message_text(  
            text,  
	    query.message.chat.id,  
	    query.message.message_id,  
	    reply_markup=get_update_keyboard(exchange_now),  
	    parse_mode='HTML'  
	)  
    elif query.inline_message_id:  
        bot.edit_message_text(  
            text,  
	    inline_message_id=query.inline_message_id,  
	    reply_markup=get_update_keyboard(exchange_now),  
	    parse_mode='HTML'  
	)

Как это работает? Очень просто:

  1. Загружаем текущий курс валюты (exchange_now = pb.get_exchange(data['c'])).
  2. Генерируем текст нового сообщения путем сериализации текущего курса валют с параметром diff, который можно получить с помощью новых методов (о них дальше). Также нужно добавить подпись — get_edited_signature.
  3. Вызываем метод edit_message_text, если оригинальное сообщение не изменилось. Если это ответ на встроенный запрос, передаем другие параметры.

Метод get_ex_from_iq_data разбирает JSON из callback_data:

def get_ex_from_iq_data(exc_json):  
    return {  
        'buy': exc_json['b'],  
	'sale': exc_json['s']  
    }

Метод get_exchange_diff получает старое и текущее значение курсов валют и возвращает разницу в формате {'buy_diff': <float>, 'sale_diff': <float>}:

def get_exchange_diff(last, now):  
    return {  
        'sale_diff': float("%.6f" % (float(now['sale']) - float(last['sale']))),  
	'buy_diff': float("%.6f" % (float(now['buy']) - float(last['buy'])))  
    }

get_edited_signature генерирует текст “Updated…”:

def get_edited_signature():  
    return '<i>Updated ' + \  
           str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + \  
           ' (' + TIMEZONE_COMMON_NAME + ')</i>'

Вот как выглядит сообщение после обновления, если курсы валют не изменились:

И вот так — если изменились:

Шаг №9: реализовать встроенный режим

Реализация встроенного режима значит, что если пользователь введет @ + имя бота в любом чате, это активирует поиск введенного текста и выведет результаты. После нажатия на один из них бот отправит результат от вашего имени (с пометкой “via bot”).

@bot.inline_handler(func=lambda query: True)  
def query_text(inline_query):  
    bot.answer_inline_query(  
        inline_query.id,  
        get_iq_articles(pb.get_exchanges(inline_query.query))  
    )

Обработчик встроенных запросов реализован.

Библиотека передаст объект InlineQuery в функцию query_text. Внутри используется функция answer_line, которая должна получить inline_query_id и массив объектов (результаты поиска).

Используем get_exchanges для поиска нескольких валют, подходящих под запрос. Нужно передать этот массив методу get_iq_articles, который вернет массив из InlineQueryResultArticle:

def get_iq_articles(exchanges):  
    result = []  
    for exc in exchanges:  
        result.append(  
            telebot.types.InlineQueryResultArticle(  
                id=exc['ccy'],  
	        title=exc['ccy'],  
	        input_message_content=telebot.types.InputTextMessageContent(  
                    serialize_ex(exc),  
		    parse_mode='HTML'  
		),  
	        reply_markup=get_update_keyboard(exc),  
	        description='Convert ' + exc['base_ccy'] + ' -> ' + exc['ccy'],  
	        thumb_height=1  
	    )  
        )   
    return result

Теперь при вводе “@exchangetestbost + пробел” вы увидите следующее:

Попробуем набрать usd, и результат мгновенно отфильтруется:

Проверим предложенный результат:

Кнопка “Update” тоже работает:

Отличная работа! Вы реализовали встроенный режим!

Выводы

Поздравляем! Теперь вы знаете, как сделать бота для Telegram, добавить встроенную клавиатуру, обновление сообщений и встроенный режим. Можете похлопать себя по спине и поднять тост за нового бота.

Источник: How to make a bot: a guide to your first Python chat bot for Telegram

Тест на знание python

Какой будет результат выполнения этого кода?

Продолжить

Какой будет результат выполнения кода — print(type(lambda: None)) ?

Продолжить

Что выведет этот код?

Продолжить

Что выведет этот код?

Продолжить

Какой будет результат выполнения кода в python 3 — print(3/5) ?

Продолжить

Продолжить

{{title}}

{{image}}

{{content}}

{{/global}}

Поделиться результатами через

Благодарность ❤

Вы можете поддержать проект, отправить благодарность

Создание Telegram бота как способ заработка

Сегодня Telegram есть у всех. Его основные преимущества – простота, удобство использования и, конечно, безопасность. Кроме того, Telegram  используется для личной переписки. Здесь создают ботов – для автоматизации ответов и мгновенного реагирования на команды, которые задает пользователь. Создание Telegram бота  – эффективный способ заработка, продвижения товаров и услуг.

Содержание статьи

Зачем нужен Telegram bot, и как он работает          

Бот представляет специально созданный алгоритм, который выполняет различные поручения. Более того, Telegram бот анализирует поведение пользователей. И в соответствие с этим генерирует подходящий ответ – для решения поставленных задач.

Представим ситуацию – вы постоянно слушаете музыку. И, возможно, чтобы найти любимый трек вы пользуетесь чат ботом @vkmusic_bot_news. Ведь этой простой и доступный способ для поиска и прослушивания самых популярных композиций. Для этого нужно –  отправить сообщение с названием песни или именем автора. И Телеграм бот выдаст варианты по вашему запросу. Следовательно, чат-бот служит достойной заменой сторонним приложениям на смартфоне. Ищешь. Находишь. И сразу же слушаешь.

Что можно делать с помощью Telegram бота:

  • вести канал по интересующей вас тематике;
  • размещать заранее подготовленные посты;
  • проводить опросы и получать отзывы;
  • делать рассылку сообщений – для клиентов и партнеров

 

Телеграм бот – отличная возможность для тех, кто хочет повысить качество обслуживания аудитории. И в конечном счете зарабатывать достойные деньги.

 

Создание бота в Telegram самостоятельно: инструкция

Чтобы создать бота в Телеграмме  с нуля, необходимо зайти в программу и написать боту с именем @BotFather. Затем заходим в сам чат и отправляем ему команду /newbot.

Следующим шагом во взаимодействии с нашим виртуальным помощником является придумывание уникального имени. К примеру, вы выбрали себе –  demomy56042_bot.

Отлично. Вам пришла ссылка и токен. Обязательно сохраните себе эти данные, поскольку в дальнейшем они вам очень пригодятся. Что дальше? Выбираем аватар, описание, сообщение-приветствие – для привлечения внимания аудитории.

Популярные конструкторы для разработки Telegram ботов
  1. Moneybot. За счет такого конструктора вы без проблем создадите меню, разделы меню, сможете отрегулировать форму для обратной связи. Преимущество сервиса – используется для небольших проектов, предполагает разработку меню не более четырех уровней. Добавить бота при этом можно совершенно бесплатно. И это несомненно привлекает огромное количество пользователей.
  1. Botobot. Сервис, оптимальный для создания так называемого бот-магазина. Отметим, что все актуальные товары загружаются через Excel. Из плюсов – возможность производить рассылки новостей. Если говорить о недостатках, то это, во-первых, отсутствие настроек в меню.  Вот-вторых, здесь действует ограничение по количеству загружаемых позиций на бесплатной основе. Минимальная стоимость – 640 р. в месяц.
  1. Bottap. Конструктор ботов Telegram с расширенным спектром функций, который адаптирован под нужды среднего бизнеса. Чем он хорош? Здесь без проблем можно создать меню, сгенерировать формы обратной связи – для общения, реализовать свой интернет-магазин с каталогом. Кроме того, здесь предусмотрены тарифы на платной и бесплатной основе – исходя из конкретных запросов пользователя. Минимальный платный тариф – 390 р. в месяц.
Какие еще есть конструкторы для создания ботов в Telegram
  1. PazzleBot. Конструктор, который позволит сделать виртуального помощника любому желающему. Он подходит для реализации обыкновенных возможностей. А также сложных команд – для учета статистики в наиболее полном объеме. Минимальный платный тариф – 490 р. в месяц.
  1. Chatforma. Добавить данного бота в Telegram не представляет никаких сложностей. Все обучающие материалы пользователи получают непосредственно после регистрации. И да, теперь напоминать о себе стало возможно с помощью персонализированной рассылки или воронки продаж. Бот отличается, прежде всего, тем, что функционирует на базе различных CRM-платформ, функционирует с системами бронирования и так далее. Среди недостатков отметим отсутствие мобильной версии для Chatforma. Минимальный оплата – 2000 р. в месяц. А это  в разы дороже  по сравнению с другими ботами.
  1. Botmaker. Представленный Telegram бот обладает самым необходимым функционалом. Сюда входит отправка разнообразных сообщений, рассылок и так далее. Оговорим, что в сервис внедрены такие необычные модули, как запись на услугу, приглашение, вызов специалиста. Это, пожалуй, основная особенность данного бота. Из минусов обозначим отсутствие мобильной версии для пользователей. Минимальный платный тариф – 29500 р. в месяц. Расход неоправданно высокий. Особенно, если вы находитесь на начальном этапе продвижения своего бизнеса.

 

Создание чат бота в Telegram для заработка – целесообразно ли это?   

Телеграм – современный канал продаж с внушительным приростом пользователей. Многие сегодня большинству социальных сетей предпочитают именно Telegram. Поэтому, безусловно есть смысл воспользоваться ботом – для автоматизации процессов и в дальнейшем наращивания клиентской базы.

Чат или обзвон? Как привлечь новых клиентов? Ответ, кажется, очевиден. Проще писать в чат, чем тратить лишние часы на разговоры, уговоры и прочие манипуляции. Обычно это сопровождается дискомфортом, нарушением личных границ и прочими неудобствами.

Разработка ботов в Telegram подходит не только для предпринимателей. Также ими свободно могут распоряжаться пользователи мессенджера. Ведь это отличный способ для реализации самых смелых идей и стратегий.

 

Вот идеи, которые можно взять себе на заметку:

  • Подключение к неофициальной партнерской сети. Для этого создается полезный помощник, который подключен к разнообразным партнерским каналам. Естественно, люди будут пользоваться им и в дальнейшем получать рекламу. А вы за показы сможете получать денежные бонусы – пропорционально их количеству.
  • Продажа готовых программ. Вначале необходимо также создать бота, затем добавить команды. По вашему усмотрению, усовершенствовать функционал. И уже после этого пускать в продажу готовый продукт.
  • Заработок на рекламе. С использованием Telegram бота можно не напрягаясь раскачать канал в социальной сети. После этого его уже целесообразно монетизировать – с помощью рекламы или иными способами раскрутки.

 

Бот Telegram «Номер телефона»

Основная цель данного бота – поиск сведений о человеке в соответствие с регионом его проживания. С роботом @MsisdnInfoBot вы сможете максимально просто пробить информацию об операторе.

Прежде чем это сделать, следует добавить к себе представленного бота.

Из выбранных телефонных номеров вы вводите в строку поиска номер в формате +7 (…) или 8…, также можно забить непосредственно само цифровое значение.

Далее в отчетном сообщении вы получаете информацию о регионе, в котором зарегистрирован человек, а также к какому оператору принадлежит его номер.

 

AvinfoBot Telegram

AvinfoBot Telegram создан для получении сведений о владельце автомобиля – по госномеру, ФИО, телефонному номеру или фотографии с госномером.

Довольно полезный бот, который дает возможность узнать, находилась ли машина в ДТП. Какие у нее были владельцы и т.д. Безусловно, личную или строго конфиденциальную информацию об автовладельце вы не получите. Зато сведения, которые могут пригодиться при покупке транспортного средства – всегда, пожалуйста.

Нередки случаи, когда нелегально люди продают машины, на которых числится множество штрафов. Ситуация не из приятных, поскольку потом, если вдруг вы надумаете продать такой автомобиль, придется действовать через суд, ждать годы и тратить свое личное время.  Только тогда его в лучшем случае снимут  с учета.  А на вас перестанут действовать ограничения в тех или иных действиях.

 

Вывод

Итак, в нашей статье мы разобрались, что создание бота в Telegram – довольно сложный и трудоемкой процесс. Однако это очень интересно с точки зрения упрощения многих алгоритмов – для грамотного ведения бизнеса и дальнейшего получения прибыли. Это можно сделать самостоятельно. Или, как вариант, воспользоваться конструкторами для создания Telegram ботов  – исходя из поставленных задач.

 

Читайте также:

Создание бота в Telegram — видео, способы, статьи, алгоритм

Современные технологии оказывают влияние все на сферы жизнедеятельности человека. Сегодня люди не просто ходят на работу и получают фиксированную заработную плату. Но ищут более прибыльные и менее ресурсозатратные способы заработка. Сегодня активные пользователи используют не только страницы социальных сетей для дополнительно заработка, но и мессенджеры. Одним из молодых, но самым популярным и с большими возможностями для бизнеса является проект Павла Дурова – Telegram. С момента создания мессенджер преобразился, появились новые опции. Ведение бизнеса и получение прибыли на “непаханном поле” приманивает большое количество пользователей. Телеграм – отличная площадка не только для общения, обмена видео и фото, но и для заработка. Не плохо заработать можно на ботах. Что это такое и какими функциями они наделены, читайте ниже. Ниже вы найдете ответ на вопрос как создать бота в телеграме.

Функции и возможности ботов телеграм

Для чего существуют боты? Если вкратце, то бот – это автоматизированный сервис. Он бывает узко-тематическим, бывает торговым, информационным. Он создан таким образом, чтобы самостоятельно, без помощи живого человека вести автоматизированную переписку. Как он работает? Бот-программа написана таким образом, что происходит автоматический анализ входящей информации. Проанализировав текст входящего сообщения, ресурс самостоятельно начинает подбирать из существующих фраз в библиотеке более подходящую согласно алгоритму и программе. Делая такие манипуляции за считанные секунды, бот может заменить человека в чате. Боты существуют:

  • для создания опросов, голосований;
  • для дополнительного заработка, для ставок, развлечений;
  • для размещения контента, автопостинг публикаций;
  • для продажи товаров и услуг, различной ценной информации.

Боты можно использовать готовыми, а можно создавать самостоятельно, используя специальные сервисы или языки программирования.

Какое применение могут быть у ботов? Рассмотрим несколько вариантов:

  1. обеспечивает быструю связь с большим количеством клиентов, например, для автоматизированной продажи чего-либо;
  2. могут служит консультантами по общим вопросам, по техподдержке продукта;
  3. помогают сократить расход личного времени на ведение аккаунтов нескольких социальных сетей;
  4. могут продвигать ваши статьи, продукты, информацию неогранниченному числу заинтересованных пользователей.

Телеграм на сегодняшний день отличная площадка не только общения, обмена медиа файлами, но и для ведения бизнеса.

Создание бота

Создание любой программы, которая предназначена для пользования разными социальными сетями требует определенных знаний и навыков. Основная задача при создании бота в Telegram правильно спрокетировать его и довести до совершенства без ошибок. Как и любое приложение, создание бота требует соблюдение определенного алгоритма действий. Не приступайте к последующим этапам, пока не завершили предыдущие. Уверенные пользователи ПК утверждают, что создать самый простой подобный сервис можно всего лишь за 15 минут, смотря какие возможности бота вам нужны. Для создания своего собственного сервиса необходимо по минимум хотя бы понимать и знать язык программирования. Сегодня большое количество сайтов, статей, посвящены данной теме.

Алгоритм создания

В первую очередь необходимо определиться, для чего мы хотим его создать. Просто накидайте на листке бумаги цели бота и то как он будет работать (алгоритм). Таким образом будет легче двигаться дальше. Необходимо зарегистрировать будущее «чадо», чтобы получить ID и токен для работы с ним. Сделать это можно с помощью официального бота для Telegram – @BotFather. Сначала добавляете его в свои контакты, далее следуйте его инструкциям. В ответ придет сообщение с перечнем команд. Выбираете нужную команду. Пишите имя, в конце фразы добавляете слово bot. На данном этапе можно совершить всю настройку оформления, выбрать и установить аватар, краткое описание и приветственное сообщение для пользователей, которые им будут пользоваться.

Важно! Рекомендуем заранее продумать название своего продукта, чтобы процесс прошел быстрее. Никаких ограничений нет.

Для всестороннего и подробного изучения вопроса советую вам ознакомиться с видео по созданию ботов для телеграм: Также существуют специальные сервисы, например https://manybot.io/ru, для создания бота без навыков программирования.

Проверка функциональности

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

Создание команд

Разработка ботов процесс увлекательный, но трудоемкий. Как вписать команды, зависит от того с какой платформой работаете. Например, если рассматривать платформу ManyBot, то после завершения регистрации на втором этапе в меню появятся кнопки с разным функционалом. Кликаете по кнопке «создать команду». Название может быть любым, главное ее содержание, суть. Любая команда начинается со слэш – «/».

Автопостинг и отложенный пост

Программа может быть настроена таким образом, что самостоятельно будет выкладывать посты с определенным промежутком времени. Автопостинг и постинг, очень удобны, если ведете активный аккаунт на многих информационных площадках. Именно для этих целей используют дополнительные сервисы. Советую дополнительно прочитать статьи на эту тему: как создать Bot для Telegram: https://vc.ru/selectel/22593-howto-bot-selectel https://habr.com/ru/post/262247/ https://waytostart.ru/blog/telegram-bot https://tlgrm.ru/docs/bots

Чат бот Телеграм — виды и принципы создания бота

Чат ботов для каналов телеграм достаточно много и они постоянно совершенствуются и создаются новые. В данной статье мы собрали лучшие боты на русском языке с различным списком команд, которые позволяют беспрепятственно общаться и делиться информацией с другими пользователями.

Виды ботов в телеграме

Существует много различных чатов для ботов в telegram, рассмотрим несколько наиболее популярных:

  • контролер – дает возможность форматировать текст и отслеживать статистику канала с возможностью удаления отложенных публикаций;
  • лайкБот – создает «inline» для лайков в телеграм;
  • голосовалка – используется для создания опросов;
  • поллБот – выполняет опросы в группах и каналах;
  • группБатлер – блокировка и удаление участников за несоблюдение правил чата;
  • агент – генерирует приветственный текст для новых подписчиков;
  • принт – форматирует текст, добавляет ссылки и реакции.

Принцип работы бота

Что такое боты для чата в телеграм? Данные приложения – это специальный алгоритм в telegram, который используется для ведения диалога в автоматическом режиме с реальным участником канала.

Работают такие чат для ботов в телеграм с использованием специальной системы аналитики входящих смс и подбора нужного варианта ответа из определенной базы вариантов. Искусственный интеллект в данном случае не при чем.

Обратите внимание! Бывают случаи, когда роботом в telegram может быть выбран неуместный ответ, однако, такие ситуации возникают достаточно редко. Как правило, правильно созданный робот умеет не только вести качественный диалог с участником, но и грамотно отвечать на его вопросы и проводить консультации.

Создание чат-бота в telegram

Как сделать бота для чата в telegram? Лучше всего заниматься созданием робота на персональном компьютере, поскольку данная процедура предполагает применение большого количества файлов.

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

Рассмотрим пошаговую инструкцию, как сделать чат для bot в telegram:

  1. После установки telegram для канала нужно открыть приложение и поисковой строке ввести надпись «Many бот».
  2. Затем запускаем поиск.
  3. После первого появления результатов нужно нажать кнопку «Старт», которая находится в нижнем правом угле программы.
  4. Далее выбираем вкладку спроектировать нового чат bota.
  5. После этой процедуры в окошке сообщений должно появиться уведомление от телеграм, в котором содержится полная инструкция ваших дальнейших действий. Руководствоваться нужно ей.
  6. По этой инструкции вам понадобиться найти учетную запись «BotFather» и выбрать ссылку синего цвета с именем аккаунта.
  7. Следом выбираем вкладку «Send Message», которая позволяет начать диалог с выбранным пользователем.
  8. Далее вводим команду «Старт» и получаем список команд, которые потребуется применить при создании робота.
  9. Отправляем команду «новый бот» и ждем ответа.
  10. Следом отправляем название для робота, оно должно быть оригинальным и запоминающимся, поскольку оно отображается в поисковых запросах. Помимо этого оно должно быть написанным на английском языке с соответствующим окончанием.
  11. Затем обязательно копируем токен и снова переходим в «Manybot», чтобы вставить скопированный токен.
  12. Ждем уведомление.
  13. Остается только описать возможности чат робота – каким образом он будет работать, и какого его предназначение.
  14. Приложение для канала сделано и его можно применять.

Обратите внимание! В ответном смс от telegram вам будет прислана ссылка. Она потребуется, чтобы внести ваших пользователей из списка в приложение.

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

Как шаг за шагом создать Telegram BOT без ввода кода | автор: Антонио Миньяно

Если вы еще этого не сделали, распакуйте проект внутри папки, тогда переименуйте .envExample в .env (см. позже, если вы работаете в Windows) и отредактируйте следующую строку, вставив свой API токен , выданный BotFather :

 TELEGRAM_TOKEN = «<ВАШ_ТОКЕН_ЗДЕСЬ>» 

Если вы работаете в Windows:
У вас могут возникнуть проблемы с переименованием файла, просто откройте меню «Пуск» и введите «cmd», затем откройте « Командная строка »и выполните следующие действия:

Теперь пришло время проявить творческий подход.
Откройте файл answers.json и давайте взглянем на него.

Здесь хранятся все ответы, легко увидеть структуру, объединение этих «объектов», которые содержат триггеры, и ответы на каждый из этих триггеров.

Конечно, это всего лишь пример с тремя ответами, вы можете получить намного больше.

Давайте проанализируем, как он состоит:

  • триггеры : конкатенация строк, которые запускают ответ
  • ответов : конкатенация «дочерних объектов»

В каждом из ответов есть

  • ответ : это то, что должно быть отправлено как сообщение
  • тип : он определяет тип ответа, может быть « текст» , « аудио» или « image »

В зависимости от типа ответ должен иметь значимое значение: в случае, если тип равен audio или image , значение ответа должно быть допустимым путем к файл на вашем компьютере, даже если настоятельно рекомендуется поместить такие носители в папку «media» .

На данный момент протестированы расширения для носителей: «.jpg», «.gif» и «.mp3».

В командной строке введите следующую команду (внутри папки проекта), чтобы загрузить все зависимости, необходимые боту:

 npm install 

Мы почти закончили, теперь, когда все настроено, можно наконец запускаем нашего бота. В той же консоли , которую мы использовали для установки всех зависимостей, которые мы должны запустить:

 npm start 

И это результат

Вы можете заметить, что в консоли есть несколько сообщений [INFO], которые помогут вам сохранить отслеживать, кто использует вашего бота, та же информация хранится в файле, который вы найдете в папке проекта, под названием debug.журнал .

Бот может быть остановлен и повторно запущен без каких-либо проблем
Если вы хотите запустить его на машине без головы, такой как Raspberry, вы можете найти способ, чтобы он не мешал другим приложениям, прочтите мою другую статью о Экран Unix:

.

встроенных ботов

Помимо отправки команд в личных сообщениях или группах, пользователи могут взаимодействовать с вашим ботом с помощью встроенных запросов . Если встроенные запросы включены, пользователи могут вызвать вашего бота, введя его имя пользователя и запрос в поле ввода текста в любом чате . Запрос отправляется вашему боту в виде обновления. Таким образом, люди могут запрашивать контент у вашего бота в любых своих чатах, группах или каналах, вообще не отправляя никаких сообщений.

Чтобы включить эту опцию, отправьте команду / setinline в @BotFather и укажите текст-заполнитель, который пользователь увидит в поле ввода после ввода имени вашего бота.

См. Соответствующие методы и объекты в Руководстве по API для ботов.

Встроенные результаты

Встроенные боты поддерживают всех типов контента , доступных в Telegram (всего 20). Они могут отправлять стикеры, видео, музыку, локации, документы и многое другое.

Клиенты могут отображать результаты с вертикальной или горизонтальной прокруткой, в зависимости от типа контента:

Как только пользователь нажимает на элемент, он немедленно отправляется получателю, а поле ввода очищается.

Переключение режимов inline / PM

Некоторым встроенным ботам может быть полезен процесс начальной настройки, например, подключение их к учетной записи на внешней службе (например, YouTube). Мы добавили простой способ переключения между приватным чатом с ботом и любым чатом, в котором пользователь хочет делиться встроенными результатами.

Вы можете отобразить специальную кнопку «Перейти в личку» над встроенными результатами (или вместо них). Эта кнопка откроет приватный чат с ботом и передаст параметр по вашему выбору, чтобы вы могли запросить у пользователя соответствующие действия по настройке. После этого вы можете использовать встроенную клавиатуру с кнопкой switch_inline_query , чтобы отправить пользователя обратно в исходный чат.

Примеры ботов
@youtube — показывает кнопку «Войти на YouTube», а затем предлагает персонализированные результаты.

Руководство: переход на PM

Результаты на основе местоположения

Встроенные боты могут запрашивать данные о местоположении у своих пользователей. Используйте команду / setinlinegeo с @BotFather, чтобы включить это. Ваш бот будет запрашивать у пользователя разрешение на доступ к их местоположению всякий раз, когда он отправляет встроенный запрос.

Пример бота
@foursquare — этот бот запросит разрешение на доступ к местоположению пользователя, а затем предоставит результаты с геотаргетингом.

Вирусное распространение

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

Когда пользователь нажимает на имя пользователя бота в заголовке сообщения, упоминание автоматически вставляется в поле ввода. При вводе символа @ в поле ввода появляется список предложений, в которых представлены недавно использованные встроенные боты.

Сбор отзывов

Чтобы узнать, какие из предоставленных результатов ваши пользователи отправляют своим партнерам по чату, отправьте @Botfather команду / setinlinefeedback .Если этот параметр включен, вы будете получать обновления результатов, выбранных вашими пользователями.

Обратите внимание, что это может создать проблемы с загрузкой популярных ботов — вы можете получить больше результатов, чем фактические запросы из-за кеширования (см. Параметр cache_time в answerInlineQuery). В этих случаях мы рекомендуем отрегулировать настройку вероятности, чтобы получить 1/10, 1/100 или 1/1000 результатов.

Примеры встроенных ботов

Вот несколько примеров встроенных ботов, на случай, если вам интересно увидеть один в действии.Попробуйте любой из этих вариантов:
@gif — поиск GIF
@vid — поиск видео
@pic — поиск изображений Яндекс
@bing — поиск изображений Bing
@wiki — поиск в Википедии
@imdb — поиск IMDB
@bold — выделите жирным, курсивный или фиксированный системный текст

NEW
@youtube — Подключите свою учетную запись для получения персонализированных результатов
@music — Поиск и отправка классической музыки
@foursquare — Найдите и отправьте адреса мест проведения
@sticker — Найдите и отправьте стикеры на основе эмодзи

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *