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

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

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

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

Определение

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

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

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

Чат-боты распространены на сайтах всех типов.

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

Сфера применения

Для чего же может потребоваться бот в Телеграмме?

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

Они способны провести консультацию по товару и/или услуге, условиям работы организации и т. п.

Для какой же цели той или иной фирме может потребоваться такой бот:

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

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

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

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

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

Создание

Телеграмм позволяет создавать боты и даже имеет ряд встроенных алгоритмов для их разработки и активации.

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

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

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

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

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

Но можно сделать это и с телефона.

1 После того, как процесс установки Телеграмма будет завершен, откройте приложение и в строке поиска, помеченной символом лупы, наберите Manybot ;

2 Нажмите кнопку Поиск в окне или кнопку Ввод на клавиатуре для выполнения поиска;

3 Как только появятся результаты поиска, нажмите кнопку Start , расположенную в нижней части окна программы справа;

4 Нажмите на кнопку Добавить нового бота ;

5 В ответ в окне сообщений появится служебное сообщение от Телеграмм , содержащее инструкцию для ваших дальнейших действий по созданию бота – необходимо следовать именно ей;

6 Согласно инструкции, перейдите в учетную запись @BotFather путем нажатия на синюю ссылку с названием аккаунта;

7 Теперь нажмите кнопку Send Message для того, чтобы начать переписку с данным «пользователем»;

8 Введите команду /start и в ответ на нее вы получите список команд, которые можно использовать при создании бота;

9 Отправьте команду /newboot ;

10 Дождитесь ответа ;

11 Отправьте придуманное вами оригинальное имя бота – именно оно будет отображаться при поиске;

12 Теперь дождитесь ответа и отправьте техническое имя бота – оно должно быть написано на английском языке и заканчиваться на «bot»;

13 На этом этапе желательно скопировать API-токен ;

14 Снова возвращаемся к @Manybot ;

15 Вставляйте туда скопированный на предыдущем этапе API-токен ;

16 Дождитесь ответа;

17 Теперь впечатайте цели вашего бота – то, для чего он нужен и как он будет работать;

18 Можно пропустить этот шаг – для этого введите /skip ;

19 Дождитесь ответа , уведомляющего о том, что создание бота завершено.

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

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

Теперь необходимо проверить, нормально ли работает ваш бот.

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

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

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

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

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

Для этого проделайте следующее:

1 Наберите /commands в поле ввода;

2 Наберите имя создаваемой команды ;

3 Наберите тот текст, который бот будет выдавать в ответ на данную команду – это может быть одно или несколько сообщений, которые могут включать картинки, музыку, видео;

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

Редактура уже созданной команды также допустима, для этого проделайте следующее:

1 Введите /commands , /имя_команды ;

2 Нажмите на кнопку Показать команду и появится ответ, который приходит пользователю на такую команду;

3 Соответственно, кнопка Редактировать ответы команды позволит вам отредактировать ответ, который выдает команда пользователю.

Twitter , или RSS.

Для настройки такой трансляции сделайте следующее:

1 Наберите в своем боте команду /autoposting ;

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

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

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

Однако он не подходит, например, для консультирования клиентов.

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

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

А если вы не подписались на бота от сайт, то пришла пора сделать это! @iPhonesRu_Bot

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

Есть два пути создания ботов. Первый - написать приложение с помощью Telegram API, а второй - воспользоваться сервисом для создания ботов. Один из таких, manybot.io , мы будем использовать в статье.

Устанавливаем Telegram

Инструкцию из статьи можно выполнить в версии Telegram для любой платформы:

  • Windows/Linux/OS X (по ссылке откроется версия для операционной системы с которой сидите)

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

Создаем бота

1. Набираем в поиске Manybot, кликаем на значок бота и нажимаем на кнопку Start :

2. Нажимаем на кнопку Добавить нового бота :

4. Переходим в @BotFather , нажимаем кнопку Start и вводим команду /newbot :

6. Вводим имя бота, которое будет отображаться при поиске и техническое имя бота, копируем полученный API-токен:

7. Возвращаемся в @Manybot и вставляем в него API-токен из буфера обмена:

8. Указываем описание бота:

9. Бот готов:

10. Находим свой бот через поиск и начинаем пользоваться:

Создаем свою команду

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

1. Набираем /commands :


2. Набираем имя новой команды и текст, который она будет выдавать в ответ (при желании к тексту можно прикрепить файлы):


3. Нажимаем кнопку Сохранить и дожидаемся завершения создания команды:

Для того, чтобы отредактировать команду /hello надо набрать /commands , /hello :

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

Добавляем пункт в меню

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

1. Набираем /commands :

2. Нажимаем на кнопку Настроить главное меню , а затем на кнопку Добавить пункт меню :

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

Включаем автопостинг из соцсетей

В ботах можно настроить трансляцию новостей из Twitter, Youtube, VK или RSS.

1. Набираем команду /autoposting :


2. Нажимаем кнопку с нужной соцсетью и указываем ссылку на страницу:

Создаем отложенный пост

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

1. Набираем команду /newpost :


2. Вводим текст поста и нажимаем на кнопку Отложить пост , указываем текущее время:


3. Указываем время поста и сохраняем пост:

Собираем данные

Еще с помощью ботов можно проводить опросы среди подписчиков:

1. Набираем /commands , выбираем пункт меню Создать команду и вводим имя для новой команды:

2. Нажимаем на кнопку Добавить вопрос , выбираем тип ответа и вводим текст вопроса:

Пишем ему /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
Добавить метки

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

Группы, каналы и боты в «Телеграм» могут стать полезными помощниками, если вы решили заняться коммерческой деятельностью посредством ресурсов сети Интернет . Многие крупные компании успешно используют инструменты «Telegram» для работы с клиентами. Открыть своё сообщество , канал или запустить робота – дело несложное, а пользу принесёт большую. В боте могут применяться различные опции от информирования людей о предстоящих акциях, скидках и других новостях, онлайн-консультаций до совершения покупок. Для магазинов это дополнительная возможность повысить продажи.

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

Как создать бота в Телеграмм

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

Процесс создания начинается с обращения к боту BotFather, родителю роботов «Telegram». С его помощью и сделано большинство помощников для различных целей. Создаём собственного бота, используя отца семейства, для этого нужно:

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

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

  1. Конструктор позволит настроить бота без специальных знаний программиста. Для этого в «Telegram» необходимо найти и добавить робота @Chatfuel, после чего дать ему команду /addbot и ввести токен, который был получен от BotFather. Ваше новоиспечённое детище сохранится на сервисе Paquebot, откуда можно будет программировать его под любые свои нужды, в том числе настроить бот автопродаж «Телеграмм».
  2. Flow XO. Сервис, специализирующийся на бизнес-ботах. Некоторые опции платформы бесплатны, но основной функционал имеет различные тарифы.
  3. Сервис позволяет создать магазин в «Телеграмме», причём можно не привязывать его к уже существующему сайту. Воспользовавшись роботом @botoboto_bot, вы сможете обзавестись собственным ботом-продавцом. Botobot могут использовать бесплатно магазины, включающие до 20 товаров, свыше этой цифры сервисом предусмотрены тарифы.

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