Как стать автором
Обновить

Комментарии 33

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

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

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


Я лично люблю скрещивать Django и python-telegram-bot для таких целей.

Спасибо за статью! Полезнее, чем видео школьников на ютубе

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

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

> спящим хироку сервером
На том же хероку можно привязать карточку и получить 1 незасыпаемый сервер бесплатно. Новые решения всегда есть, как и недочеты старых :)
А причем тут все что написано в статье и в ответе на комментарий? зачем пудрить мозги людям. Есть прямолинейный путь для работы с хероку. По факту ни одного ответа по делу не дано, статья фуфло на уровне с желтой прессой, мамкин ботописец решил сделать чудовище Франкенштейна и по пути сэкономить 450р.

Виртуальные машины за 450р. в месяц не нужны, когда есть raspberry pi zero w за 1700 рублей навсегда.
Настроил бота, воткнул в розетку и забыл год назад. А внутри десяток ботов на nodejs в системДе висят и не отваливаются.

Это если у вас никогда нет проблем с интернетом и питанием. Или же есть возможность и желание зарезервировать две эти системы. На проде использовать ИМХО не вариант.

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

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

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

А если несколько человек из поддержки ответят на один вопрос, то бот отправит их все? У пользователя не возникнет мысли, что у бота раздвоение личности?


Что если поддержка тоже будет писать боту, который автоматом будет раскидывать вопросы между доступными сотрудниками?

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

с раздвоением личности все просто: достаточно донести, что это бот для поддержки и по ту сторону может быть N людей.
Отвеченные сообщения и так помечаются самим телеграмом соответствующим значком. Если все сотрудники поддержки в одной группе, то они это увидят.
да! Число реплаев на сообщение они недавно добавили. Очень полезно, не думал, что это можно использовать в таком ключе.
пользуемся аналогичным решением, но проблема есть с масштабированием, а именно когда уже много-много пользователей подряд пишут боту, становится трудно отследить кому ответили, кому нет. а ведь еще нужно следить за цепочкой сообщений с конкретным пользователем, чтобы продолжать беседу на одной линии… как разделить каждого пользователя на отдельный чат пока не научились :(
Абсолютно согласен. Проблема есть. Решить ее можно так:
1) Есть общий чат поддержки, куда аналогично сваливаются все сообщения от юзеров
2) Под сообщением юзера есть кнопка «уйти в личку», и агент поддержки уже может через личные сообщение боту продолжить общение.
3) Через час-два простоя режим «отправляю сообщения юзера Х агенту поддержки У в личку» отключается, и новые сообщения уже падают в общий чат.
3) Если при этом логгировать все сообщения, то можно добавить кнопку «покажи все предыдущие сообщения».

3) лучше команду конец тикета у юзера и/или оператора

вот бы ещё видео как и что делать. я бы подписался

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

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

Успешно используем связку https://livehelperchat.com/ + livehelperchat messenger для андроид. Софт первоклассный и самое главное модель распространения близка по духу. Очень уж хочется чтобы автору перечисляли побольше пожертвований.


Удобный API. Поддержка может вдумчиво работать с компа. Конкретно у нас этот части торчит на сайте как стандартный веб-чатик, а также в него настроена интеграция из нескольких телеграм-ботов (чаты уходят в разные департаменты). Писанины на python много, но могу поделиться основными кусками, если кому надо.

Есть еще такой проектик — such.chat
У них есть своя веб морда с чатиками. Вполне годная штука.
Бесплатная версия с их подписью и лимитами.
Спасибо. Да, таких аналогов много — у всех есть подпись. Именно из-за нее я и написал себе такой MVP
Потому что я не видел этого репозитория. Возможно, если бы я знал о нем, я бы не написал статью.

Однако есть отличия двух проектов: мой написан на питоне, минималистичен, деплоится в 1 клик на бесплатном хероку. Тот, что по ссылке, обладает большим функционалом, который, возможно, закрывает UX дыры моей реализации.
При такой реализации как у вас, есть проблема с ответом на вопросы пользователей, которые запретили ссылку на свой аккаунт в пересылаемых сообщениях.

Там тогда
update.message.reply_to_message.forward_from == Null

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

Возможно я недостаточно хорошо изучил вопрос, но в голову пришло только два варианта получения id исходного чата для отправки туда ответа:
  • Использовать хранилище на сервере
  • Вставлять id исходного чата прямо в текст пересылаемого оттуда сообщения, чтобы потом распарсить и достать
Да, такая проблема всплыла и уже висит в Issues на гитхабе.
Кажется, что лучше подойдет второй случай, чтобы решение оставалось миниатюрным
>>Планируя дизраптнуть платный аналог, необходимо продумать онбординг.
Извините, но нельзя ли не на англо-суржике, а по-русски?
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.