Как самостоятельно создать бота в Телеграмм — пошаговая инструкция в картинках. Как создать бота в телеграмм без программирования Чат бот телеграмм как написать

Пишем ему /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 API. А вот, чтобы создавать простые чат боты, которые могут быть очень полезными и отвечать на вопросы подписчиков канала или группы вместо вас, достаточно знать несколько родительских ботов, которые созданы специально для этих целей. Об этом и поговорим. В этом посте покажу, как создать бота в телеграм .

В чем могут пригодиться чат боты Телеграм?

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

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

Оценили возможности? Тогда переходим к созданию нашего бота!

Создаем чат бот в Телеграм

Для создания своего чат бота в телеграм нам понадобятся 2 существующих бота:

  • BotFather (@BotFather) - это официальный бот телеграм, который создает и регистрирует другие боты в мессенджере;
  • Manybot (@Manybot) - это конструктор ботов, с помощью которого вы можете создавать меню своего бота и назначать каждой кнопке меню определенные команды. Бот не является официальным и вполне возможно, что существуют и другие боты-конструкторы, которые вы можете использовать.


Создание и регистрация бота в Telegram

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

Начните диалог с ботом, нажав на кнопку “Начать” или “Start”. Бот выдаст вам список всех команд, которые доступны в его арсенале. Рядом с каждой командой имеется небольшое пояснение. У нас пока нет бота, так что на данном этапе нас интересует только команда /newbot. Кликните по ссылке с этой командой или отправьте боту её сообщением.

BotFather предложит вам придумать название для вашего бота. Учтите, что в паре BotFather (@BotFather), BotFather - это название бота, а @BotFather - это юзернейм или имя бота в телеграм. На данном этапе нас просят ввести название. Я создаю бота для своего чата и пишу свое название - “SICh Bot”. Очевидно, вы должны использовать свое.

Далее BotFather предложит ввести юзернейм или имя бота в телеграм. Имя бота должно быть уникальным (то есть, двух ботов с одинаковыми именами в телеграм быть не может) и оканчиваться на слово “bot”. Название также не может содержать пробелов. В моем случае я буду использовать имя бота - “sich_info_bot”. Вы используйте свое. Если имя занято, BotFather сообщит об этом и предложит выбрать другое имя.

Далее, после выбора имени бота, BotFather сообщит о создании вашего нового бота, адрес, по которому он доступен, а также токен. Токен понадобится нам в дальше, когда мы будем конструировать меню и команды в Manybot.

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

Прежде чем перейти к конструированию функционала нашего бота, давайте задержимся в BotFather и приведем наш бот в порядок, добавив описание, логотип и сообщение приветствия. Для этого отправьте боту команду “/help”, чтобы BotFather показал список всех доступных команд снова.

Здесь нас интересуют 3 команды:

  • /setdescription - устанавливает приветственное сообщение, которое увидит пользователь, впервые открывший страницу бота;
  • /setabouttext - устанавливает описание бота, которое будет отображаться в разделе информации о боте;
  • /setuserpic - устанавливает логотип бота.

Вводя поочередно эти команды и следуя инструкции, вы сможете установить для своего бота приветственное сообщение, описание и логотип, после чего ваш бот станет выглядеть намного лучше. А нам останется лишь оживить чат бот, с помощью конструктора команд Manybot.


Учим бота принимать команды и отвечать на них

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

Введите в поиске @Manybot и начните с ним диалог. Бот предложит вам выбрать язык, на котором будут вестись дальнейшие беседы. Выберите из предложенных тот язык, на котором должен говорить ваш бот. Я выбираю “Русский”.

Далее Manybot предложит вам добавить своего бота. Для этого нажмите кнопку в меню - “Добавить нового бота”. Manybot предложит вам создать бота в BotFather и скопировать его токен в переписку с Manybot. Так как бота мы уже создали, нам остается просто скопировать токен нашего бота в переписку с Manybot.

Перейдите в BotFather и введите команду “/token”. Выберите в меню бота, чей токен нужно скопировать и BotFather вышлет вам его в сообщении.

Скопируйте полученный токен и переходите в Manybot, который вас ждет. В переписке с Manybot, нажмите кнопку в меню - “Я скопировал токен”, вставьте токен в поле для ввода сообщений и отправьте Manybot.

Если все сделано верно, Manybot сообщит о том, что токен вашего бота принят и предложит ввести пару слов о том, что будет делать ваш бот. Вы можете пропустить этот шаг, нажав в меню кнопку “Пропустить”, так как все описания и приветственные сообщения мы уже устанавливали выше в BotFather.

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

В меню нашего бота появилось несколько кнопок. Это меню будете видеть только вы, так как являетесь администратором бота. Итак, вы можете:

  • Отправить сообщение в ленту бота, которое увидят все пользователи телеграм, подписанные на ваш бот;
  • Создать команды для бота, вроде /hello, а также настроить меню, которое будет отображаться у подписчиков бота. За это отвечает раздел - “Пользовательские команды”;
  • Ответы на формы. О них поговорим ниже;
  • Ну и настройки, где вы можете настроить автопостинг в бот с каналов телеграм, изи из социальных сетей.

Перейдите в раздел “Пользовательские команды”, чтобы научить своего бота первой инструкции. Следующим шагом выберите - “Создать команду”.

Manybot предложит ввести название команды, которое должно быть написано на английском языке и начинаться со слеша. В качестве первой команды, я введу - “/aboutchat”.

Далее, вы можете ввести то сообщение, или целую серию сообщений, которые должен получить подписчик бота, если введет указанную выше команду. Я ввел сообщение с несколькими другими командами, которые также собираюсь создать. По окончанию ввода всех сообщений, нажмите кнопку “Сохранить”, в меню бота. Manybot сообщит о том, что ваша команда успешно создана.

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

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

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

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

При создании команды для нашего бота, мы использовали простую отправку сообщений. То есть, как только пользователь введет команду, бот тут же передаст ему соответствующее сообщение. Мы можем создать команду, введя которую подписчик бота получит сообщение с вопросом. Подписчик может ввести свой ответ, которых бот сохранит. Давайте создадим такую кнопку, нажав которую пользователь телеграм получит вопрос, на который можно ответить. Для этого перейдите в раздел “Пользовательские команды” в меню бота, затем нажмите кнопку “Создать команду” и введите название команды. Например, “/youraccount”.

Далее, выберите в меню пункт - “Добавить вопрос”. Вы можете указать простой вопрос, на который нужно дать короткий ответ, можете задать вопрос, на который нужно дать развернутый ответ, или задать вопрос с вариантами ответа. Выберите подходящий пункт. Я выбрал - “Обычный вопрос”. После этого бот поппросит ввести вопрос. Введите вопрос и нажмите кнопку “Сохранить”.

Для новой команды с вопросом вы можете создать кнопку в меню также, как мы делали выше. Я назвал вторую кнопку - “Вопрос". Нажав её, пользователь получит вопрос, ответ на который бот сохранит. Вот что будет, если зайти не как администратор.

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

На этом, пожалуй, все!

Полезный пост? Забирай его к себе в социальные сети, чтобы не потерять!

Все знают Павла Дурова - создателя социальной сети "ВКонтакте". В 2013 году, после продажи предыдущего проекта, он со своей командой основал мессенджер Telegram. С помощью этого портала можно читать книги, качать музыку, смотреть погоду, шифровать данные и так далее. В "Телеграмме" много и других полезных функций.

Преимущества Telegram перед другими мессенджерами

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

С недавних пор одной из особенностей этого мессенджера является создание личных ботов. Что это такое? Как сделать бота в "Телеграмме" без навыков программирования? Зачем они вообще нужны? Об этом и многом другом пойдет речь в этой статье.

Боты Telegram

Боты в "Телеграмме" - это некоторая разновидность чат-ботов, но в виде зарегистрированного пользователя. У таких юзеров имена оканчиваются словом bot. Они способны выполнять различные действия. Широкая многофункциональность в грамотных руках значительно упростит жизнь других пользователей.

Как начать общаться с ботами?

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

Создание бота без навыков программирования

Как сделать бота в "Телеграмме"? Всего через пять минут после ознакомления с инструкцией по созданию вы сможете повторить процесс и создать собственного даже без навыков программирования:

  1. В браузере вы должны найти сайт manybot, который позволяет бесплатно создать собственного бота.
  2. На сайте вы увидите большую кнопку: «Создать бота».
  3. После нужно нажать «Открыть Telegram» немного ниже.
  4. Далее необходимо зарегистрироваться в мессенджере.
  5. Когда вы зайдете в Telegram, то увидите два окна: Chats и New message. Под названием второго окна в поисковой строке наберите Botfather.
  6. Нажмите на найденного бота. Вы перешли в чат, под которым находится кнопка Start, ее нужно нажать.
  7. Для создания нового бота напишете в чат /newbot, после чего собеседник ответит просьбой придумать имя новому помощнику. Например, назовем бота Nonprog.
  8. После этого вас просят придумать ник вашему боту, окончание которого должно обязательно заканчиваться на bot. Он будет выглядеть так: Nonprogbot.
  9. После проделанных выше операций собеседник пришлет токен. Он будет выглядеть приблизительно так: 493493:AAEOrog63 (это номер бота в "Телеграмме", но найти его потом можно будет уже по другому номеру). Вот эту строчку нужно скопировать в буфер обмена мышкой или горячими клавишами Ctrl+C.
  10. В поисковой строке введите фразу manybot, после чего напишите /Addbot, а затем /start.
  11. С вами начинает диалог новый бот. Прочитав его сообщение, нажимаем кнопку внизу «Добавить нового бота». Он пришлет инструкцию, ответом на которую будет кнопка «Я скопировал токен».
  12. Вставьте токен.
  13. Далее можете придумать описание вашему боту, а можете сделать это позже, нажав кнопку «Пропустить».
  14. Вернувшись в окно с поисковой строкой, пропишите в ней имя своего помощника. Если все правильно, то создание бота в "Телеграмме" окончено. Перейдите в диалог с ним и активируйте его кнопкой Start.

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

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

Можно ли заработать на ботах?

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

Создание и продажа ботов для компаний

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

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

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

  1. Weathermen - этот отличный бот заменит вам все погодные виджеты и приложения. Несмотря на актуальные сводки информации на пять дней вперед, этот бот автоматически уведомляет вас о погодных условиях, стоит только написать, какой именно день вас интересует.
  2. Mycoocbot заменит сборник рецептов блюд. Просто напишите ингредиенты, которые есть у вас в холодильнике, и получите несколько вариантов ужина.
  3. To PDF - бот с узкой специализацией. Он конвертирует документы в PDF-файлы. Мелочь, но приятно, не нужно искать специальные сервисы в интернете, которые к тому же в большинстве своем платные.
  4. Pronunciationbot - незаменимый друг при изучении иностранных языков. Не знаете, как правильно звучит слово английское слово? Просто впишите его, и бот вам пришлет озвучку. Поддерживает много языков.
  5. YouTube Downloader - чат-бот, с помощью которого вы скачаете любое видео с YouTube. В интернете и так уже существует много способов, чтобы это сделать, но зачем напрягаться, если есть такой бот. Просто вводите ссылку на видео, и он присылает ссылки на скачивание в разных форматах.

Полезные боты для бизнеса и работы

Боты в "Телеграмме" предназначены не только для развлечений. Многие из них помогут в бизнесе, учебе и работе:

  1. RussionPost - пожалуй, один из самых нестандартных ботов, так как через него можно пообщаться с сотрудниками Почты России. Забудьте про разные почтовые приложения, клиенты. Этот бот заменит их все.
  2. Exchange Rates bot - очень полезный бот в бухгалтерской сфере. Он позволяет следить за курсами валют, переводить разные суммы из одной валюты в другую. Даёт обширную информацию вплоть до графиков.
  3. Taxigram - чат-бот, который поможет вам заказать такси или узнать, где это можно сделать. В данном сервисе пока работают несколько компаний, но в скором времени и ваше такси обязательно туда попадет. Просто вводите пункт А и пункт Б, после чего бот вышлет вам фотографию карты с вашим маршрутом.
  4. Yandeks - один из мощнейших ботов. Имеет очень широкий функционал, начиная с чтения книг, заканчивая поиском конкретной информации. Кроме того, этот бот отображает новости во многих сферах жизни.
  5. SberBank - про этого помощника говорить много не нужно. Официальный бот Сбербанка, с помощью которого можно проводить все операции, отправляя сообщения в чат. Безусловно, будет полезен многим предпринимателям.

1,199 Время чтения: 6 мин.

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

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

Что такое бот

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

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

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

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

Где скачать

Мессенджер доступен как на мобильных устройствах, так и на компьютере.

Поддерживаются смартфоны, работающие на базе всех 3-х популярных операционных систем:

  1. Windows Phone;
  2. Android.

Также поддерживаются все компьютерные операционные системы:

  1. Windows;
  2. Linux;
  3. Mac OS.

Скачать приложение для смартфонов, планшетов и компьютеров можно на официальном сайте — telegram.org .

Внимание! Доступ к данному ресурсу в РФ может быть ограничен. Для отображения сайта рекомендуется использовать прокси-серверы или частные виртуальные сети (VPN).

Регистрация в Телеграмме

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

Это статья с сайта vseofinansah точка ru. Если вы ведите эту статью на другом сайте, значит ее украли.

После скачивания приложения процедура регистрации осуществляется следующим образом:

  • ввод номера мобильного телефона;

  • ввод кода из СМС для подтверждения телефона;

  • указание фамилии, имени и добавление фотографии;

  • нажатие “Зарегистрироваться”.

Процесс создания бота

Для этого:

  • в поле “Найти” главного меню мессенджера вводим “Botfather”, и нажимаем “ENTER”;

  • выбираем первого в списке бота (который отмечен галочкой);
  • кликаем “Запустить”, чтобы начать чатиться с ним;

  • знакомимся с перечнем доступных команд – среди всего множества, нам требуется команда “/newbot” (можно написать это как в поле “Написать сообщение”, так и просто кликнуть по этой команде в перечне, см. картинку для подробностей);

  • далее прописываем в поле “Написать сообщение” имя для нашего нового робота (на латинице) (примечание – создать бота можно только со свободным именем, если оно уже занято, Телеграмм выдаст соответствующее информационное сообщение — на картинке ниже представлено сообщение о незанятости имени);

  • теперь нужно придумать логин (он также должен быть не занят) (внимание – логин обязательно должен заканчиваться на “bot”, например, “cookbot”, “clothesbot”, “avtobot” и др.).

После успешного задания логина перед пользователем высветится информационное сообщение “Use this token to access the HTTP API”. Токен нужно скопировать и сохранить где-либо (например, в блокноте Windows) – он нам пригодится в дальнейшем.

  • в строку поиска чатов вводим “Manybot”;
  • выбираем из найденного перечня пользователей “@Manybot”;

  • знакомимся с основным функционалом этого помощника по созданию собственных роботов;
  • жмем “Запустить”;

  • далее из предложенного перечня выбираем русский язык;
  • кликаем по кнопке “Добавить нового бота” (как вариант, в строке сообщения пишем “/addbot”);

  • нажимаем “Я скопировал токен”;
  • непосредственно копируем токен, который выдал предыдущий бот “Botfather”, и вставляем его в строку для отправки новых сообщений;
  • дожидаемся появления информационного сообщения о том, что токен принят.

Дальше начинается “технический этап” — необходимо написать описание бота – то есть что он будет делать, что умеет и др. (если создатель робота не желает задавать описание, необходимо отправить Manybot сообщение “/skip”).

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

Настройка бота

После перехода в чат с нашим вновь созданным ботом первое действие – это настройка пользовательских команд, то есть тех запросов, на которые бот будет отвечать определенным образом.

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

Для создания новой команды необходимо:

  • нажать “Пользовательские команды”;
  • далее – “Создать команду”.

Запросы можно задать примерно такого рода:

  1. /bestclothesforwomen;
  2. /bestclothesformen;
  3. /mostbeautifulclothes;
  4. /clothesforbigmen;
  5. /clothesforchildren и прочее.

Итак, задаем нашу первую команду. Пусть это будет “/bestclothesforwomen”.

  • “Добавить вопрос” – можно добавить один или несколько уточняющих вопросов, которые бот будет задавать пользователю (например, на этот запрос “/bestclothesforwomen” робот сможет задать уточняющие – какой размер одежды, цвет и прочее);
  • “Включить режим случайного сообщения” – создатель бота может, к примеру, прописать 20 ссылок, ведущих на сайты интернет-магазинов с лучшей одеждой для женщин, а бот будет случайным образом выбирать любую ссылку из этих 20 и показывать ее пользователю.

Если не требуется ни уточняющих вопросов, ни режима случайного сообщения, то ответ, который бот будет выдавать на запрос, просто нужно прописать в поле для нового сообщения. Например, можно написать “Перейдите на сайт такой-то такой-то” (см. картинку).

Следующий этап – настройка параметров главного меню. Пример такой настройки:

  1. клик “Пользовательские команды”;
  2. далее – “Настроить гл. меню”;
  3. затем – “Добавить пункт меню”;
  4. нажатие по нашей команде “/bestclothesforwomen” (или по другой, которую нужно добавить в меню, если их несколько);
  5. ввод с клавиатуры названия пункта меню, по нажатию на который пользователь будет получать ответ на свой запрос (очевидно, что в нашем примере назвать пункт следует “Лучшая одежда для женщин”).

Возвращаемся в главное меню бота и видим, что над пунктом “Отправить новое сообщение подписчикам” появился наш – “Лучшая одежда для женщин”.

Кликаем по нему и видим, что бот возвращает нужный нам ответ – “Перейдите на сайт: www.bestclothesforwomen.ru”.

Дополнительную помощь и инструкции можно получить, кликнув по соответствующим пунктам главного меню бота:

  • “Помощь”;
  • “Инструкции”.

Как заработать на ботах

Создать робота-помощника – это еще только полдела. Рекомендуется и зарабатывать на этом! (чтобы не тратить свои силы на разработку и поддержку “детища” попусту).

Существует 2 основных способа извлечения прибыли:

  1. разработка роботов на заказ;
  2. либо же участие в различных конкурсах от Павла Дурова, поучаствовать в которых могут любые создатели ботов.

Примечание. Оба способа заработка, в основном, подходят только для программистов, реализующих функционал API Телеграмма для написания ботов “с нуля”. Цена многофункционального робота начинается от 15000 рублей. Заказчиками выступают, как правило, юридические лица (реже – физические).

Создавать роботов под заказ при помощи конструкторов малоприбыльно. А все потому, что функции бота ограничиваются разработчиком такого конструктора. Если писать код “с нуля”, бот сможет отвечать практически на любой вопрос и выдавать уникальный ответ под каждого отдельного взятого пользователя (и под его потребности).

Примерная цена за продажу бота, созданного при помощи конструктора – 500 рублей. Заказов такого рода мало.

Что касается конкурсов, то Павел Дуров частенько проводит их. Среди создателей ботов разыгрываются гранты, сумма каждого из которых – не менее 25000 долларов США.

Следить за новостями о появлении новых конкурсов можно в официальном паблике “Новости Telegram” в социальной сети ВКонтакте. А непосредственно поучаствовать в них можно, вступив в группу “Telegram Challenge”.

Пишем ему /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" (или любой другой метод, используемый ботом).

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