Как создать бота в telegram без программирования. Как создать бота в телеграмм

Пишем ему /start и получаем список всех его команд.
Первая и главная - /newbot - отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя - в конце оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.

Для начала работы этого уже достаточно. Особо педантичные могут уже здесь присвоить боту аватар, описание и приветственное сообщение.

Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot/getMe , говорят, не всегда работает с первого раза.

2. Программирование

Создавать бота буду на Python3, однако благодаря адекватности этого языка алгоритмы легко переносятся на любой другой.

Telegram позволяет не делать выгрузку сообщений вручную, а поставить webHook, и тогда они сами будут присылать каждое сообщение. Для Python, чтобы не заморачиваться с cgi и потоками, удобно использовать какой-нибудь реактор, поэтому я для реализации выбрал tornado.web. (для GAE удобно использовать связку Python2+Flask)

Каркас бота:

URL = "https://api.telegram.org/bot%s/" % BOT_TOKEN MyURL = "https://example.com/hook" api = requests.Session() application = tornado.web.Application([ (r"/", Handler), ]) if __name__ == "__main__": signal.signal(signal.SIGTERM, signal_term_handler) try: set_hook = api.get(URL + "setWebhook?url=%s" % MyURL) if set_hook.status_code != 200: logging.error("Can"t set hook: %s. Quit." % set_hook.text) exit(1) application.listen(8888) tornado.ioloop.IOLoop.current().start() except KeyboardInterrupt: signal_term_handler(signal.SIGTERM, None)
Здесь мы при запуске бота устанавливаем вебхук на наш адрес и отлавливаем сигнал выхода, чтобы вернуть поведение с ручной выгрузкой событий.

Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.

Class Handler(tornado.web.RequestHandler): def post(self): try: logging.debug("Got request: %s" % self.request.body) update = tornado.escape.json_decode(self.request.body) message = update["message"] text = message.get("text") if text: logging.info("MESSAGE\t%s\t%s" % (message["chat"]["id"], text)) if text == "/": command, *arguments = text.split(" ", 1) response = CMD.get(command, not_found)(arguments, message) logging.info("REPLY\t%s\t%s" % (message["chat"]["id"], response)) send_reply(response) except Exception as e: logging.warning(str(e))
Здесь CMD - словарь доступных команд, а send_reply - функция отправки ответа, которая на вход принимает уже сформированный объект Message .

Собственно, её код довольно прост:

Def send_reply(response): if "text" in response: api.post(URL + "sendMessage", data=response)

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

3. Команды

Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:

Def help_message(arguments, message): response = {"chat_id": message["chat"]["id"]} result = ["Hey, %s!" % message["from"].get("first_name"), "\rI can accept only these commands:"] for command in CMD: result.append(command) response["text"] = "\n\t".join(result) return response

Структура message["from"] - это объект типа User , она предоставляет боту информацию как id пользователя, так и его имя. Для ответов же полезнее использовать message["chat"]["id"] - в случае личного общения там будет User, а в случае чата - id чата. В противном случае можно получить ситуацию, когда пользователь пишет в чат, а бот отвечает в личку.

Команда /start без параметров предназначена для вывода информации о боте, а с параметрами - для идентификации. Полезно её использовать для действий, требующих авторизации.

После этого можно добавить какую-нибудь свою команду, например, /base64:

Def base64_decode(arguments, message): response = {"chat_id": message["chat"]["id"]} try: response["text"] = b64decode(" ".join(arguments).encode("utf8")) except: response["text"] = "Can"t decode it" finally: return response

Для пользователей мобильного Telegram, будет полезно сказать @BotFather, какие команды принимает наш бот:
I: /setcommands
BotFather: Choose a bot to change the list of commands.
I: @******_bot
BotFather: OK. Send me a list of commands for your bot. Please use this format:

Command1 - Description
command2 - Another description
I:
whoisyourdaddy - Information about author
base64 - Base64 decode
BotFather: Success! Command list updated. /help

C таким описанием, если пользователь наберет /, Telegram услужливо покажет список всех доступных команд.

4. Свобода

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

UPD: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/) (https://core.telegram.org/bots#privacy-mode)

Чтобы бот получал все сообщения в группах пишем @BotFather команду /setprivacy и выключаем приватность.

Для начала в Handler добавляем обработчик:

If text == "/": ... else: response = CMD[""](message) logging.info("REPLY\t%s\t%s" % (message["chat"]["id"], response)) send_reply(response)
А потом в список команд добавляем псевдо-речь:

RESPONSES = { "Hello": ["Hi there!", "Hi!", "Welcome!", "Hello, {name}!"], "Hi there": ["Hello!", "Hello, {name}!", "Hi!", "Welcome!"], "Hi!": ["Hi there!", "Hello, {name}!", "Welcome!", "Hello!"], "Welcome": ["Hi there!", "Hi!", "Hello!", "Hello, {name}!",], } def human_response(message): leven = fuzzywuzzy.process.extract(message.get("text", ""), RESPONSES.keys(), limit=1) response = {"chat_id": message["chat"]["id"]} if leven < 75: response["text"] = "I can not understand you" else: response["text"] = random.choice(RESPONSES.get(leven)).format_map({"name": message["from"].get("first_name", "")}) return response
Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map - удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.

5. Не текст.

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

Для примера расширим словарь RESPONSES:

RESPONSES["What time is it?"] = ["", "{date} UTC"]
И будем отлавливать текст :

If response["text"] == "": response["sticker"] = "BQADAgADeAcAAlOx9wOjY2jpAAHq9DUC" del response["text"]
Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:

Def send_reply(response): if "sticker" in response: api.post(URL + "sendSticker", data=response) elif "text" in response: api.post(URL + "sendMessage", data=response)
И все, теперь бот будет время от времени присылать стикер вместо времени:

6. Возможности

Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).

Вспоминая , могу сказать, что теперь извращений меньше, а работа прозрачнее.

7. Ограничения

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

К счастью, Telegram также умеет работать и по ручному обновлению, поэтому не меняя кода можно создать еще одну службу Puller, которая будет выкачивать их и слать на локальный адрес:

While True: r = requests.get(URL + "?offset=%s" % (last + 1)) if r.status_code == 200: for message in r.json()["result"]: last = int(message["update_id"]) requests.post("http://localhost:8888/", data=json.dumps(message), headers={"Content-type": "application/json", "Accept": "text/plain"}) else: logging.warning("FAIL " + r.text) time.sleep(3)

P.S. По пункту 7 нашел удобное решение - размещение бота не у себя, а на heroku, благо все имена вида *.herokuapp.com защищены их собственным сертификатом.

UPD: Telegram улучшили Бот Апи, из-за чего, теперь не обязательно иметь отдельную функцию для отправки сообщений при установленном вебхуке, а в ответ на POST запрос можно отвечать тем же сформированным JSON с ответным сообщением, где одно из полей устанавливается как ч "method": "sendMessage" (или любой другой метод, используемый ботом).

Теги:

  • telegram
  • введение
  • python3
Добавить метки

В последнее время 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). Либо же можно получить от 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]

Пишем ему /start и получаем список всех его команд.
Первая и главная - /newbot - отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя - в конце оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.

Для начала работы этого уже достаточно. Особо педантичные могут уже здесь присвоить боту аватар, описание и приветственное сообщение.

Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot/getMe , говорят, не всегда работает с первого раза.

2. Программирование

Создавать бота буду на Python3, однако благодаря адекватности этого языка алгоритмы легко переносятся на любой другой.

Telegram позволяет не делать выгрузку сообщений вручную, а поставить webHook, и тогда они сами будут присылать каждое сообщение. Для Python, чтобы не заморачиваться с cgi и потоками, удобно использовать какой-нибудь реактор, поэтому я для реализации выбрал tornado.web. (для GAE удобно использовать связку Python2+Flask)

Каркас бота:

URL = "https://api.telegram.org/bot%s/" % BOT_TOKEN MyURL = "https://example.com/hook" api = requests.Session() application = tornado.web.Application([ (r"/", Handler), ]) if __name__ == "__main__": signal.signal(signal.SIGTERM, signal_term_handler) try: set_hook = api.get(URL + "setWebhook?url=%s" % MyURL) if set_hook.status_code != 200: logging.error("Can"t set hook: %s. Quit." % set_hook.text) exit(1) application.listen(8888) tornado.ioloop.IOLoop.current().start() except KeyboardInterrupt: signal_term_handler(signal.SIGTERM, None)
Здесь мы при запуске бота устанавливаем вебхук на наш адрес и отлавливаем сигнал выхода, чтобы вернуть поведение с ручной выгрузкой событий.

Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.

Class Handler(tornado.web.RequestHandler): def post(self): try: logging.debug("Got request: %s" % self.request.body) update = tornado.escape.json_decode(self.request.body) message = update["message"] text = message.get("text") if text: logging.info("MESSAGE\t%s\t%s" % (message["chat"]["id"], text)) if text == "/": command, *arguments = text.split(" ", 1) response = CMD.get(command, not_found)(arguments, message) logging.info("REPLY\t%s\t%s" % (message["chat"]["id"], response)) send_reply(response) except Exception as e: logging.warning(str(e))
Здесь CMD - словарь доступных команд, а send_reply - функция отправки ответа, которая на вход принимает уже сформированный объект Message .

Собственно, её код довольно прост:

Def send_reply(response): if "text" in response: api.post(URL + "sendMessage", data=response)

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

3. Команды

Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:

Def help_message(arguments, message): response = {"chat_id": message["chat"]["id"]} result = ["Hey, %s!" % message["from"].get("first_name"), "\rI can accept only these commands:"] for command in CMD: result.append(command) response["text"] = "\n\t".join(result) return response

Структура message["from"] - это объект типа User , она предоставляет боту информацию как id пользователя, так и его имя. Для ответов же полезнее использовать message["chat"]["id"] - в случае личного общения там будет User, а в случае чата - id чата. В противном случае можно получить ситуацию, когда пользователь пишет в чат, а бот отвечает в личку.

Команда /start без параметров предназначена для вывода информации о боте, а с параметрами - для идентификации. Полезно её использовать для действий, требующих авторизации.

После этого можно добавить какую-нибудь свою команду, например, /base64:

Def base64_decode(arguments, message): response = {"chat_id": message["chat"]["id"]} try: response["text"] = b64decode(" ".join(arguments).encode("utf8")) except: response["text"] = "Can"t decode it" finally: return response

Для пользователей мобильного Telegram, будет полезно сказать @BotFather, какие команды принимает наш бот:
I: /setcommands
BotFather: Choose a bot to change the list of commands.
I: @******_bot
BotFather: OK. Send me a list of commands for your bot. Please use this format:

Command1 - Description
command2 - Another description
I:
whoisyourdaddy - Information about author
base64 - Base64 decode
BotFather: Success! Command list updated. /help

C таким описанием, если пользователь наберет /, Telegram услужливо покажет список всех доступных команд.

4. Свобода

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

UPD: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/) (https://core.telegram.org/bots#privacy-mode)

Чтобы бот получал все сообщения в группах пишем @BotFather команду /setprivacy и выключаем приватность.

Для начала в Handler добавляем обработчик:

If text == "/": ... else: response = CMD[""](message) logging.info("REPLY\t%s\t%s" % (message["chat"]["id"], response)) send_reply(response)
А потом в список команд добавляем псевдо-речь:

RESPONSES = { "Hello": ["Hi there!", "Hi!", "Welcome!", "Hello, {name}!"], "Hi there": ["Hello!", "Hello, {name}!", "Hi!", "Welcome!"], "Hi!": ["Hi there!", "Hello, {name}!", "Welcome!", "Hello!"], "Welcome": ["Hi there!", "Hi!", "Hello!", "Hello, {name}!",], } def human_response(message): leven = fuzzywuzzy.process.extract(message.get("text", ""), RESPONSES.keys(), limit=1) response = {"chat_id": message["chat"]["id"]} if leven < 75: response["text"] = "I can not understand you" else: response["text"] = random.choice(RESPONSES.get(leven)).format_map({"name": message["from"].get("first_name", "")}) return response
Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map - удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.

5. Не текст.

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

Для примера расширим словарь RESPONSES:

RESPONSES["What time is it?"] = ["", "{date} UTC"]
И будем отлавливать текст :

If response["text"] == "": response["sticker"] = "BQADAgADeAcAAlOx9wOjY2jpAAHq9DUC" del response["text"]
Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:

Def send_reply(response): if "sticker" in response: api.post(URL + "sendSticker", data=response) elif "text" in response: api.post(URL + "sendMessage", data=response)
И все, теперь бот будет время от времени присылать стикер вместо времени:

6. Возможности

Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).

Вспоминая , могу сказать, что теперь извращений меньше, а работа прозрачнее.

7. Ограничения

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

К счастью, Telegram также умеет работать и по ручному обновлению, поэтому не меняя кода можно создать еще одну службу Puller, которая будет выкачивать их и слать на локальный адрес:

While True: r = requests.get(URL + "?offset=%s" % (last + 1)) if r.status_code == 200: for message in r.json()["result"]: last = int(message["update_id"]) requests.post("http://localhost:8888/", data=json.dumps(message), headers={"Content-type": "application/json", "Accept": "text/plain"}) else: logging.warning("FAIL " + r.text) time.sleep(3)

P.S. По пункту 7 нашел удобное решение - размещение бота не у себя, а на heroku, благо все имена вида *.herokuapp.com защищены их собственным сертификатом.

UPD: Telegram улучшили Бот Апи, из-за чего, теперь не обязательно иметь отдельную функцию для отправки сообщений при установленном вебхуке, а в ответ на POST запрос можно отвечать тем же сформированным JSON с ответным сообщением, где одно из полей устанавливается как ч "method": "sendMessage" (или любой другой метод, используемый ботом).

Теги: Добавить метки

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

Общие сведения

1. Что могут делать роботы?

Вот несколько примеров использования ботов:

  • Интеграция с другими сервисами . Например, бот может отправлять комментарии или управлять «умным домом». Или, например, отправлять вам уведомления при совершении каком-то действия или события (Примеры: GitHub Bot , Image Bot ).
  • Утилиты и инструменты . Бот может отображать погоду, переводить тексты или предупреждать о предстоящих событиях по вашему запросу (Например: бот опросов ).
  • Одно- и многопользовательские игры . Бот может поиграть с вами в шашки или шахматы, проводить викторины и так далее. (Пример: Trivia bot ).
  • Социальные сервисы . Робот может находить вам собеседника, основываясь на ваших общих интересах и увлечениях. (Пример: HotOrBot ).
  • Все, что вам захочется . Бота можно запрограммировать для чего угодно. Разве что посуду они помыть не смогут.

2. Как работают боты?

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

Самое интересное в роботах это то, что для их создания вам не нужно изучать низкоуровневые методы работы с MTProto и шифрованием — общение с роботом организовано при помощи обычного HTTPS интерфейса с упрощёнными методами Telegram API. Мы назвали его .

3. Как создать робота?

Для этого есть... Робот. Просто напишите пользователю @BotFather и следуйте его инструкциям. Как только вы создали бота и получили свой ключ (токен) авторизации, переходите в раздел , чтобы начать настраивать вашего робота.

4. Чем бот отличается от обычного аккаунта?

Суперспособности

У роботов Telegram есть много уникальных возможностей — например, , дополнительные интерфейсы для , и специальные для групп.

Встроенный режим

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

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


Игры

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



Под капотом у игр — HTML5, поэтому вы можете создавать игры любой сложности. На данный момент командой Telegram созданы несколько демо-игр:

Клавиатуры

Одна из самых необычных возможностей Bot API — кастомизированные клавиатуры . При передаче сервером ответа есть возможность передать команду на отображение специальной клавиатуры с предустановленными вариантами ответа (см. ). Клиент Telegram, получив сообщение, отобразит пользователю вашу клавиатуру. Нажатие на клавишу сразу же отправит на сервер соответствующую команду. Таким образом можно значительно упростить взаимодействие робота с пользователем.

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


За более подробной информацией обращайтесь к описанию метода .

Команды

Команды представляют собой более гибкий способ общения с роботом. Рекомендуется следующий синтаксис:

/команда [необязательный] [аргумент]

Команда должна начинаться с символа косой черты «/» и не может быть длиннее 32 символов. Команды могут состоять из букв латинского алфавита, цифр и подчёркивания. Несколько примеров:

/get_messages_stats
/set_timer 10min Alarm!
/get_timezone London, UK

Сообщения, начинающиеся с косой черты, будут всегда доставляться боту (точно также, как и при ответе на его сообщения и на @упоминания бота в чате). Приложения Telegram будут:

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

/start@TriviaBot /start@ApocalypseBot

Это происходит автоматически, если вы выбираете команду из списка доступных.

Глобальные команды

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

При попытке начать общение с роботом, пользователь увидит кнопку Старт . На странице профиля бота также будут доступны ссылки Помощь и Настройки .

Режим приватности

Ботов часто добавляют в группы, чтобы получать различную информацию — новости, уведомления и т.д. Однако, при добавлении бота вы наверняка спрашивали себя: «А что если этот маленький засранец пересылает всю групповую переписку куда-то „налево“?» Именно поэтому у роботов есть режимы приватности .

Робот с включенным режимом приватности не будет получать всех сообщений, а только сообщения, удовлетворяющие этим условиям:

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

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

Внешнее связывание

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

Если вы потеряли или утратили доступ к токену, отправьте команду /token , чтобы сгенерировать новый.

Настройки

  • /setname — Изменить имя робота.
  • /setdescription — Изменить описание робота, представляющее собой короткий текст с описанием бота. Пользователи увидят его в самом начале, под заголовком «Что умеет этот робот?».
  • /setabouttext — Изменить информацию о боте, ещё более короткий текст, отображающийся в профиле бота. Ещё, если кто-то поделится вашим ботом, то вместе со ссылкой на него отправится этот текст.
  • /setuserpic — Изменить аватарку бота. Картинки — всегда хорошо.
  • /setcommands — Изменить список команд бота. Каждая команда состоит из собственно командного слова, начинающегося с символа косой черты («/„) и короткого описания. Пользователи увидят список команд при вводе символа “/».
  • /setjoingroups — Определяет, можно ли добавлять вашего бота в группы.
  • /setprivacy — Определяет, все ли сообщения видит ваш бот в группах. В выключенном состоянии роботу будут отправляться все сообщения.
  • /deletebot — Удалить бота и его имя пользователя.
Пожалуйста, имейте в виду, что для применения настроек на сервере, возможно, потребуется некоторое время.

Здравствуйте! Прикольные виртуальные машины, обладающие примитивным, но забавным искусственным интеллектом, являются своеобразной фишкой мессенджера. Боты в telegram оснащены удобным api и пишутся на php ― это позволяет создавать их вроде флибусты, качающий с сайта создателя книги и организующий удобный поиск. Сегодня мы остановимся на нем, а также расскажем об иных творениях талантливых пользователей мессенджера.

Что такое боты в телеграмм, список и каталог ботов

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

Найти их можно в специализированном магазине (Bot store, storebot.me). Правда, учтите, что в их каталогах можно купить рекламу и таким образом выйти в «Популярные».

Теперь давайте разберем эту тему подробнее.

Как работают боты в telegram и как ими пользоваться

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

Алгоритм у большинства следующий:

  • Найти его в мессенджере (об этом ниже).
  • Дать в чат команду, например, «get image», или воспользоваться графическим меню с удобными кнопками.
  • Получить результат.

Как видите, ничего сверхъестественного.

Как найти бота в телеграмм

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

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

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

Как добавить (подключить) бота в telegram

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

Как добавить своего лчного, вы узнаете немного ниже.

Если речь идет о «добавить в список чатов» ― просто кликните на его имя в строке результатов поиска, а после нажмите на «Начать» внизу.

Как сделать экспорт и импорт списка ботов в telegram

Но такой возможности пока нет даже в планах.

Как можно удалить бота в телеграмм

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

Чтобы избавиться от подписки, следуйте такому алгоритму:

  • Зайдите в чат с роботом.
  • Нажмите на его иконку вверху.
  • Найдите кнопку «Остановить и заблокировать».
  • Нажмите правой клавишей на чат.
  • Выберите «Очистить историю» и «Удалить диалог».

Как настроить бота в телеграмм - параметры команд

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

Для создания в первую очередь необходимы команды вроде «sendmessage». А отправлять их надо к … отцу всея ботов.

Сделайте следующее:

  • Найдите @BotFather.
  • Напишите ему /start.
  • Наберите /newbot , затем имя будущей программы.

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

Почему бот не соединяется с сервером telegram

Но даже если вам удалось создать своего робота, запрограммировать его ― не то при помощи готовых примеров, не то самостоятельно ― тут может ожидать засада. Сервер мессенджера попросту не отвечает.

В голову уже лезут различные параноидальные мысли: а вдруг вы дали себя обмануть? А если вас как-то заблокировали и лишили права создавать? Все же list bot висит на видном месте, там целые группы запущенных программ, а у вас ничего не выходит…

Но не переживайте ― это просто временная неполадка. Попробуйте позднее, у вас все получится.

За что может быть заблокирован telegram bot

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

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

Почему в телеграмм bot не отвечает

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

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

Также бот может быть попросту заблокирован.

Что такое telegram bot api

Загадочный «api curl file id» ― это набор определенных команд, так сказать, платформа для написания искусственного интеллекта. Без нее написать робота вроде «Antonca» было бы невозможным.

Фактически, записывать команды в робота вы можете по ссылке, а в программе использовать встроенные методы ввода и вывода информации. Если бы APi не было, вы бы прописывали эти команды на машинном коде из нулей и единиц.

Можно ли взломать бота в телеграмм

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

Но это попросту невозможно ― если только вам не дадут уникальную ссылку на робота, конечно. Так что не стоит заниматься такими нехорошими делами. Берите в руки учебник, идите на «Хабру», учите программирование. Иначе никак!

Как разработать и создать бота в telegram - пишем сами или в конструкторе

Создание такой программы ― это довольно сложный, запутанный процесс. Мы не будем описывать его полностью, поскольку это сугубо профессиональная информация. Для начала почитайте на официальном сайте про API, изучите xml и парочку языков программирования, только потом создавайте «yourerobot».

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

Как самому легко написать бота для telegram

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

Учтите: простой человек так сделать не сможет, поэтому создать портфолио лучше другим образом.

Все еще заинтересованы? Тогда идите в библиотеку и на форумы для чайников ― получать знания.

Пишем бота для telegram на языке python - примеры

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

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

Данное творение просто копирует сообщение пользователя и пересылает его обратно.

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

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

Но изучить его довольно трудно: он серверный, требуется выделенный хостинг. Поэтому готовьтесь к довольно непростому и тернистому пути. Основные принципы "возни" с ботами изложены на картинке.

Данный скрипт подходит для отправки любых сообщений с текстом по команде.

Пишем бота для telegram на c# - примеры

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

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

Пример взаимодействия с роботом вы сможете увидеть тут - github.com/MrRoundRobin/telegram.bot. Это полноценный бот с кучей файлов и открытым кодом. Рекомендуется к изучению.

Пишем бота для телеграмм на java

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

Но что-то простое для начала ― вполне. Для вас мы даже вновь отыскали пример неплохого робота с открытым исходным кодом (github.com/rubenlagus/TelegramBots).

Flibusta bot в telegram - обзор

Робот под названием «me flibustamirrorbot» был прекрасным книжным другом. С ним было проще простого: задавай команду, назначай сортировку по авторам и качай понравившиеся произведения.

Данная программа существовала на основе довольно популярного хранилища «Флибуста».

Почему не работает flibusta bot в телеграмм

Почему написано в прошлом времени? Да потому что за столь ярое нарушение авторских прав ее попросту забанили на просторах СНГ. Конечно, вы все еще сможете найти его в списке. Даже можете написать ему ― никто вам этого не запретит.

Вот только ответа вы больше никогда не дождетесь: он ответит вам только холодным молчанием.

Робот антон в телеграмм - обзор

Ну, уж про этого робота знают точно все. Его главная функция ― русифицировать программу. Впрочем, это не единственное, что Антошка умеет. Так же он может узнавать погоду и отправлять саркастические новости с сайта «Лента.ру».

Запретные боты в telegram - обзор

И сейчас мы вам поведаем о… Да ни о чем мы вам не поведаем. Запрещенные боты они на то и запрещенные, что рассказывать о них нельзя. Никакого порно, никаких экстремистских лозунгов.

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

Музыкальный бот в telegram - обзор

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

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

Vk bot для телеграмм - обзор

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

Впрочем, окончательно закончен он будет еще очень нескоро.

Полезные, популярные и самые интересные боты для telegram

Ну и в конце мы предоставим вам свой личный набор роботов. Они довольно сложные, используют не только простую команду «sendmessage» или перенос строки, а еще и массу сложных алгоритмов. Такие роботы ― это полноценный виртуальный интеллект, написанный на «delphi», «wordpress», «perl» или иных языках. И для их написания не использовался встроенный конструктор nodejs.

Такой бот может постить для канала по rss, качать torrent, как, например, ru tracker или быть помощником и ежедневником. Некоторые могут даже взаимодействовать с raspberry. Часто такие роботы используют webhook ― удобную систему уведомлений, а иные часто пользуются asp net.

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

Вот наш топ (при поиске удаляйте все пробелы и добавляйте в начале @):

  • ImageSearchBot ― бот от yandex. Он может искать gif или фото по запросу. А у google, кстати, такого нет. И зря: gmail бы очень пригодился.
  • ru_tracker_bot ― торрент, который запустил рутрекер. Это, кстати, еще один плюс в копилку сайта: у torent rutor такого нет.
  • FreeBooksBot ― позволяет искать книги на всеми известной Флибусте. Правда, там нет аудиокниг.
  • transnow_bot ― переводчик, способный выдавать сразу несколько вариантов слов на английском и русском языке.
  • Weatherman _bot ― показывает погоду по регионам на ближайшие пять дней.
  • stickers ― поможет найти массу интересных стикеров. Фактически, это inline ― то есть, встроенный создателем ― бот.
  • telerobot ― это тот самый Антон, о котором мы уже говорили.
  • uzb_telegram_bot ― это так называемый uzbek botlar робот с актуальными новостными сводками.
  • GitHub Bot ― робот ресурса, чем-то похожего на программистский форум с интересными кусками кода, написанный на ruby.
  • Superhrbot ― предназначен для удобного поиска вакансий в разных городах и странах.
  • Nnmclub _bot ― еще один торрент-трекер, сайт которого не так давно закрыли.
  • Qiwi _bot ― киви, помогающий проверить баланс счета или перевести средства на иной кошелек.
  • Weatherbot ― еще один довольно удобный бот с прогнозом погоды на ближайшие несколько суток.
  • Botfather ― нет, ну а что? Популярнее его не найти.
  • Planetside 2_bot ― различные новости о популярной игре.
  • Economika _bot ― делится всяческими сведениями из мира экономики.
  • Pikabu bestbot ― присылает лучшие посты с известного ресурса.
  • Newlovebot ― фактически моделирует раздел «Знакомства».
  • kinomanbot ― выберет фильм или сериал, найдет, где его транслируют, и закажет билеты.
  • strictmother_bot ― строгая мама на все ответит отказом, но зато признается тебе в любви. Еще бы в таком стиле дядю Федора сделали…
  • pushkin_bot ― по запросу находит массу нежных стихов классиков.
  • russianpdd_bot ― pddbot, позволяющий подготовиться к экзамену в ГИБДД.

"Нехороших" с porno и прочими непотребностями мы вам показывать не будем ― не мечтайте.

Выводы

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

Плюсы и минусы ботов

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

Видеообзор




Top