Как создать чат-бота или бота для канала в Телеграм: учимся создавать ботов, команды, меню, отложенные посты, опросы и включаем автопостинг из социальных сетей или rss-лент
Всем привет! Сегодня я расскажу вам о том, как создать бота в Телеграм и зачем это может понадобиться владельцу популярного канала. Сразу хочу успокоить – уметь программировать не нужно. Хотя, конечно, если вы заядлый программист, то флаг вам в руки. Говорят, это достаточно просто.
Итак, зачем же нужны боты в Telegram и как их создать новичку? Как настроить меню, добавить команды или активировать автопостинг из социальных сетей? Давайте разбираться.
Зачем нужны боты
Telegram — один из самых популярных мессенджеров в России, постепенно завоёвывающий любовь и признание во всём мире. Его создателем является Павел Дуров, некогда создавший социальную сеть ВКонтакте. Мессенджер обладает множеством функций, при этом он абсолютно бесплатный. Даже стикеры вы можете подключить на халяву или сделать самостоятельно.
Одной из уникальных и очень удобных фишек приложения считаются боты. Они служат для выполнения самых разных задач:
Как видите, вариантов использования много, а ведь я назвал далеко не все. Но, могу вас заверить, без помощи бота создать по настоящему интересный и полезный канал, посты в котором будут привлекать пользователей и подталкивать их к подписке – невозможно.
Способы создания бота в Telegram
Всего существует два способа, как можно сделать помощника для чата или канала. Первый, как вы уже могли догадаться – для программистов. Добавлю только, что для работы придется воспользоваться Telegram API. Я в этом не силен, поэтому выбираю второй вариант. Он не требует никаких дополнительных навыков и вполне подходит новичкам.
Как создать
Для начала вам нужно найти @Manybot и подписаться на него, нажав кнопку «Запустить»:
Чтобы не париться с языком – выбираем «Русский»:
Нажимаем «Добавить нового бота»:
А теперь нужно следовать инструкции, которую пришлют в чат и подключить нового бота. Для этого нажимаем вот сюда:
Активируем его и щелкаем вот по этой команде:
Вводим имя (обязательно латиницей) и нажимаем отправить. Снова вводим название, но уже пользовательское (оно обязательно должно заканчиваться словом «bot»).
Рекомендую просто к уже придуманному имени добавить требуемое окончание.
Остается скопировать следующий API:
И прислать его Manybot:
Описываем назначение нашего бота или скипаем данный шаг.
Поздравляю, вы справились и сделали своего первого бота для чата или канала в Telegram! Теперь его можно подключать (добавить, как подписчика) и обучать различным командам.
Если не знаете, как подключить помощника к каналу, то вот инструкция. Вам нужно:
Для чата процедура идентичная. Ну, если разработчики ничего не изменили. А теперь давайте научимся подключать различные команды.
Прописываем команды
Я не буду особо заморачиваться и сделаю что-нибудь простенькое. Вам главное запомнить принцип, а дальше все пойдет, как по маслу.
Чтобы прописать команду нужно:
Довольно просто, правда? Теперь, когда люди активируют вашего бота и пропишут команду, получат в ответ заранее созданное сообщение.
Чтобы отредактировать уже созданную команду необходимо вернуться в главное меню и зайти в раздел «Пользовательские команды», после чего выбрать нужную:
Как создать меню в боте
Если есть время и желание довести своё творение до ума, то создание красивого меню в вашем боте – отличный выбор. Для этого нужно:
Если вам вдруг приспичило настроить внешний вид, переименовать кнопку или вовсе её удалить, нужно снова зайти в «Команды» и «Настройки меню», после чего нажать на желаемую клавишу. Дальше дело техники, а все возможные варианты настройки вам сразу же покажут:
Полезные фишки
А сейчас я продемонстрирую три крутые фишки, которыми можно воспользоваться после создания бота в Телеграме.
Как включить автопостинг из соц сетей
Первая и самая интересная – автопостинг из социальных сетей (ВК, Twitter, YouTube) или RSS ленты в канал или чат в Telegram. Она позволяет сэкономить уйму времени и упростить продвижение канала. Чтобы её включить, нужно:
Всё, теперь новые записи в соц. сетях или rss ленте будут автоматически дублироваться в чате или канале.
Для ВКонтакте нужна именно публичная страница, с личной такое не прокатит.
Учимся делать отложенные посты
Еще одна полезная функция – отложенные посты. Довольно часто бывают ситуации, когда времени на публикацию нет, а сделать это просто необходимо. Чтобы не забивать голову решением подобных проблем, в Telegram можно заранее продумать темы публикаций, подготовить материал и воспользоваться ботом, который сам все отправит в указанное время.
Итак, для начала вам нужно ввести /newpost или выбрать «Отправить новое сообщение» в меню. Придумываем текст, добавляем картинки или музыку, отправляем всё это боту и нажимаем «Отложить».
Выскочит оповещение, после чего нужно указать текущее время (настраиваем часовой пояс – это делается один раз):
Теперь нужно указать время публикации. Для этого выбираем день и отправляем точное время, нажимаем «Сохранить»:
Готово! В нужный час публикация отобразится у всех пользователей.
Как создать опрос
Последняя важная функция, которую я сейчас разберу – опросы. Ну, тут без комментариев, сами должны понимать, зачем они нужны и как ими воспользоваться для продвижения канала. Моё дело рассказать, как их создать.
Для начала нажмите «Пользовательские команды» и «Создать». Введите и отправьте название:
Нажмите «Добавить вопрос» и выберете его тип (я выбрал обычный):
Введите и отправьте вопрос:
Нажмите сохранить и всё, готово. Кстати, чтобы проверить ответы, вернитесь в главное меню и нажмите «Ответы на формы», после чего найдите и выберете нужную:
Заключение
Как видите, создать бота в Телеграм достаточно просто и быстро. Они полезные, а когда дело доходит до украшения публикаций, проведения опросов и улучшения администрирования – становятся просто незаменимой палочкой выручалочкой в руках админа.
На этом всё. Подписывайтесь и до встречи в следующих статьях. Пока-пока!
Инструкция: Создание бота для Telegram без навыков программирования
Делаем простого бота для публикации новостей в канал и автоматические ответы на вопросы за 6 шагов.
После бурных обсуждений в ИТ-прессе по поводу эффективности чат-ботов, они заняли свою нишу в экосистеме пользователей и компаний. Например, часто проекты внедряют ботов для оповещения о каких-либо событиях, а службы поддержки используют их для того, чтобы быстро отвечать на часто задаваемые вопросы клиентов.
В этой инструкции мы рассмотрим наиболее простой способ создать бота собственными руками и объясним, как он работает.
Начнем с разработки бота, который сможет автоматически отправлять в Telegram-канал новости компании, опубликованные на сайте или в Facebook.
Бот в Telegram создается при помощи другого бота под названием BotFather. Отправляем ему команду /newbot, выбираем имя, которое будет отображаться в списке контактов, и адрес. Например, «Бот для DTF» с адресом «dtf_news_bot».
Если адрес не занят, а имя введено правильно, BotFather пришлет в ответ сообщение с токеном — «ключом» для доступа к созданному боту. Его нужно сохранить и никому не показывать.
Теперь создаём канал с любым названием и адресом, и переходим в его настройки. Всё, что требуется — добавить в список администраторов созданного нами бота — именно он будет публиковать заметки в канал.
Следующий этап — научить бота отправлять новости с сайта в созданный канал. Для этого воспользуемся популярным сервисом для автоматизации IFTTT.
С его помощью можно создавать инструкции для работы бота. В нашем случае она выглядит так: каждый раз, когда в RSS-ленте сайта появляется новая запись, он должен отправлять сообщение в канал Telegram.
Переходим в раздел IFTTT «My Applets», нажимаем на кнопку «New Applet» и далее на ссылку «This». Находим в списке функций триггер Feed, New feed item и указываем URL-адрес нашей RSS-ленты. Например, у WordPress-сайтов она обычно расположена по адресу example.com/feed/.
Вместо RSS-ленты можно отслеживать появление новых записей в Twitter или Facebook-аккаунте — для каждой функции в IFTTT предусмотрены отдельные модули.
Теперь переходим ко второму шагу — выбираем действие, которое будет выполняться при обнаружении новой записи в RSS. Нажимаем на «That» и ищем Maker Webhook, «Make a web request» — с помощью этого модуля можно отправлять запросы к любым сервисам. В нашем случае — к боту в Telegram.
В открывшейся форме в поле URL нужно указать ссылку https://api.telegram.org/botТОКЕН/sendMessage, подставив в неё токен, сгенерированный на первом шаге. Метод: POST, тип контента: application/json.
Body — поле для шаблона запроcа, который будет отправляться в Telegram. В нём указываем, в какой канал нужно отправить сообщение и что в нём должно быть написано:
Если всё настроено верно, бот отправит сообщение из RSS-ленты в канал. У триггера в IFTTT есть задержка, поэтому сообщение, появившееся в RSS-ленте, отправится в Telegram не сразу, а спустя 30-60 минут.
В качестве условия для отправки сообщения можно выбрать любой другой сценарий, доступный на IFTTT. Например, Weather Underground умеет каждый день отправлять сообщение с прогнозом погоды на завтра. Триггер Stocks можно настроить на отправку стоимости акций при закрытии торгов.
Теперь решим более сложную задачу — научим созданного бота отвечать на сообщения пользователей. Например, присылать по команде прайс-лист, контакты или отвечать на часто задаваемые вопросы клиентов.
На этом этапе понадобится веб-хостинг и сертификат SSL, который можно получить бесплатно с помощью сервиса Let’s Encrypt.
Удобнее всего создать отдельный поддомен для бота — например, bot.example.com — и разместить на нём один файл index.php. Внутри файла размещаем код простейшего бота c сайта Telegram.
Если у вас хостинг Vscale, то можно создать для бота отдельный сервер. Это делается при помощи одного клика в панели управления.
В код бота нужно внести всего два изменения:
Теперь необходимо связать Telegram и файл на сервере, чтобы запросы, отправленные боту в мессенджере, обрабатывал наш скрипт.
Для этого понадобится консоль. У разных хостинг-провайдеров она может находиться в разных разделах интерфейса управления сайтом. Кроме того, можно воспользоваться программой Terminal на macOS, введя через неё команду ssh имя_пользователя@адрес_домена.
После ввода пароля, печатаем для нашего поддомена простую команду:
Создание и хостинг телеграм бота. От А до Я
Привет, хабрчане! Какой бы заезженной не была тема создания телеграм бота на python3, я не нашёл инструкций, где показан путь от первой строчки кода до деплоинга бота (по крайней мере все методы, что я видел, немного устарели). В этой статье я хочу показать процесс создания бота от написания BotFather-у до деплоинга бота на Heroku.
Статья получилась длинной, советую пробежаться глазами по содержанию и кликнуть по интересующему вас пункту.
P.S. Пишите если нужна статья по созданию более сложного бота, т.е. с вебхуками, БД с настройками юзеров и т.д.
BotFather
Для начала нам надо зарегистрировать нашего бота в Telegram. Для этого:
В поиске вбиваем @BotFather и переходим в диалог с Отцом Ботов.
Пишем /newbot. Указываем имя бота (то, что отображается в диалогах). Указываем его логин, по которому его можно булет найти.
P.S. Оно должно заканчиваться на Bot/bot
Вот. Нам дали API ключ и ссылку на бота. Желательно сохранить API ключ и перейти в диалог с ботом, чтобы потом не копаться в переписке с BotFather
Дальше добавим ему пару команд: пропишем /setcommands и одним сообщением, т.к. /setcommands не добавляет команды, а задаёт их с нуля, пошлём ему команды.
На этом работа с BotFather закончилась, перейдём к следующей части.
Установка и настройка pipenv. Первый запуск.
Для начала создадим файл, в котором будет основной код бота bot.py. Если бот большой, то сразу создавайте файлы, куда вы вынесете функции, классы и т.д, иначе читаемость кода стремится к нулю. Я добавлю parser.py
Установим pipenv, если его конечно ещё нет.
Установим pipenv в папку проекта.
Установим интересующие нас библиотеки. Я буду работать с PyTelegramBotAPI. Также для парсинга добавим BeautifulSoup4.
Начинаем писать код!
Открываем bot.py, импортируем библиотеки и создаём главные переменные.
Запустим бота. Посмотри наличие ошибок.
Если ошибок не появилось, то продолжим.
Хэндлеры. Отвечаем на команды и сообщения
Пришло время научить бота отвечать нам. Возможно даже сделать его ответы полезными.
Основы взаимодействия. Ответ на команды
Для взаимодействия с пользователем, т.е. для ответа на его команды и сообщения используются хэндлеры.
Начнём с самого простого: ответим на команды /start и /go
Сейчас разберёмся что это и как это работает. Передаём в message_handler параметр commands равный массиву со строками — командами, на которые он будет отвечать описанным ниже образом. (На все эти команды он ответит одинаково). Далее используем send_message, в него записываем id чата (его можно достать из message.chat.id), в который отправить сообщение и, собственно, само сообщение. Нельзя забыть написать bot.polling() в конце кода, иначе бот сразу же выключиться. Почему так мы узнаем позже.
Теперь можно запустить бота и написать ему /start или /go и он ответит.
P.S. Сообщение может быть не только строкой, а, в принципе, чем угодно.
Это json объект, хранящий информацию об отправителе, чате, и самом сообщении.
Основы взаимодействия. Ответ на текстовые сообщения.
Теперь обработаем текстовые сообщения бота. Самое важное что нам нужно знать это то, что текст сообщения храниться в message.text и то, что, чтобы обрабатывать текст в message_handler нужно передавать content_types=[‘text’].
Добавим вот такой код.
Тут мы довабили пару переменных: вынесли текст сообщения (в нижнем регистре, чтобы не было лишних проблем с теми кто пишет капсом, заборчиком и т.д.) в переменную text, вынесли message.chat.id в отдельную переменную, чтобы каждый раз не обращаться к message. Также мы построили небольшое ветвление, для ответа на определённые сообщения, а также ответ на случай непонятного боту сообщения.
Основы взаимодействия. Ответ на картинки, документы, аудио и прочие.
Для ответа на картинки, стикеры, документы, аудио и т.д. нужно всего лишь поменять content_types=[‘text’].
Рассмотрим пример с картинкой, добавив этот код.
text, audio, document, photo, sticker, video, video_note, voice, location, contact, new_chat_members, left_chat_member, new_chat_title, new_chat_photo, delete_chat_photo, group_chat_created, supergroup_chat_created, channel_chat_created, migrate_to_chat_id, migrate_from_chat_id, pinned_message
Строим цепочку ответов.
Пришло время закончить с элементарными действиями и начать что-то серьёзное. Попробуем построить цепочку ответов. Для этого нам понадобиться register_next_step_handler(). Создадим простой пример, на котором и разберёмся как работает register_next_step_handler().
И так, в первой функции добавился bot.register_next_step_handler(msg, askAge), в него мы передаём сообщение, которые хотим послать, и следующий щаг, к которому перейти после ответа пользователя.
Во второй функции всё поинтересней, здесь идёт проверка ввёл ли пользователь число, и, если нет, то функция рекурсивно вызывает сама себя, с сообщением «Возраст должен быть числом, введите ещё раз.». Если пользователь ввёл всё верно, то он получает ответ.
Но, есть тут проблема. Можно повторно вызвать команду /go или /start, и начнётся бардак.
Пофиксить это несложно, добавим переменную для проверки состояния выполнения скрипта.
С построением простых цепочек мы разобрались, пойдём дальше.
Добавляем парсер в цепочку.
Для начала нужен сам парсер. Обратим внимание на то, что во вкладках «Лучшее» и «Всё подряд» есть дополнительные фильтры: сутки, неделя, месяц и ≥10, ≥25, ≥50, ≥100 соответственно.
Парсер конечно можно написать и в 1 функцию, но я разобью на 2, так будет проще читать код.
По итогу парсер возвращает нам строку с заголовками статей, основываясь на наших запросах.
Пробуем, используя полученные знания, написать бота связанного с парсером. Я решил создать отдельный класс (это скорее всего неправильный метод, но это уже относится к питону, а не к основной теме статьи), и в объекте этого класса хранить изменяемые данные.
Теория. Методы взаимодействия с ботом.
Мы используем long polling для получения данных о сообщениях от бота.
Есть же вариант использовать в корне другой метод — вебхуки. Так бот сам будет отправлять нам данные о получении сообщения и т.д. Но этот метод сложнее в настройке, и, для простого показательного бота я решил его не использовать.
Также в дополнительных материалах будут ссылки на всё, что использовалось и о чём говорилось.
Маркапы. Добавляем клавиатуры для быстрого ответа.
Наконец основной код дописан. Теперь можно передохнуть и написать маркапы. Я думаю вы неоднократно видели их, но всё же, приложу скриншот. [SCREENSHOT]
Я выведу маркапы в отдельный файл — markups.py.
В параметры маркапа указываем ширину строки и изменение размеров кнопок, иначе они огромны.
Применим полученные знания к нашему боту.
Ура! С кодом впринципе разобрались. Теперь самое важное — деплоинг бота не хероку.
Деплоим бота на Heroku.
Для начала надо зарегистрироваться на Хероку и на Гитхабе.
Теперь создаём репозиторий на гитхабе. (нажмите плюсик слева от вашего аватара)
Сейчас нам нужен Procfile (Procfile.windows для windows). Создаём его и записываем в него bot: python3 bot.py
Теперь удаляем TOKEN из bot.py, здесь он не нужен, ведь мы будем загружать этот файл на гитхаб. Через тот же терминале, что использовали для запуска бота, заливаем файлы на гитхаб. (Предворительно удалите папку __pycache__).
Гит просит логин и пароль, спокойно вводим и преступаем к деплоингу бота на хероку. Пишем всё в том же терминале.
Теперь возвращаем TOKEN в bot.py, здесь он нужен, ведь мы будем загружать этот файл на хероку.
Поздравляю!
Работа окончена, бот работает удалённо.
Ссылки
Заключение
Если кому-то было интересно, то цель написания статьи выполнена. Если кому-то хочется увидеть статью про более сложного бота (с вебхуками, подключенной БД с настройками пользователей и т.д.) — пишите.
Все создают чат-ботов в Telegram. А мне надо? И как сделать?
Автоворонки, качественная коммуникация с клиентом, быстрая обработка заказов – практически все бизнес-процессы сегодня можно упростить с помощью чат-ботов.
Что такое чат-бот в Telegram
Чат-бот – это отдельный аккаунт в Telegram, который самостоятельно отвечает на сообщения пользователей. Бизнесу этот инструмент дает возможность оптимизировать коммуникацию с клиентами: чат-бот всегда онлайн и отвечает собеседнику в любое время суток, реагирует мгновенно.
Чат-боты помогают повысить потребительскую ценность бизнеса при сравнительно небольших затратах на создание таких инструментов.
51 % клиентов, по данным чат-бота Ubisend, ожидает, что бизнес будет доступен в режиме 24/7.
Еще немного статистики:
Топ-8 сценариев для чат-бота
Использовать чат-бот в Telegram можно по-разному:
Это самые очевидные сценарии использования чат-бота в Telegram. Однако разработчик может настроить бот для решения практически любой задачи.
6 особенностей чат-ботов в Telegram
Как сделать чат-бота в Telegram: пошаговая инструкция
Создаются и управляются боты с помощью другого бота BotFather.
Чтобы создать чат-бота, выполните следующие действия:
Осталось выполнить два действия: добавить созданного бота в администраторы канала и переслать любое сообщение из созданного канала в ControllerBot:
Для этого создайте новый публичный канал через левое меню, нажав кнопку New Chanel:
Чтобы добавить созданного бота в администраторы канала, нужно выбрать его в чатах и нажать кнопку Manage Channel:
. и назначить администратора:
После выполнения двух требований ControllerBot мы успешно подключили канал. Осталось указать город для уточнения часового пояса:
Подтверждаем, нажав «Верно»:
В самом низу нажимаем кнопку «Создать новый пост»:
Бот предложит настроить форматирование. В 95 % случаев подойдет Markdown (прим. ред. – облегченный язык разметки):
Теперь создаем первый пост. Можно написать в нем любой текст, чтобы проверить, как это работает:
ControllerBot возвратит отправленную запись и предложит задействовать дополнительные инструменты:
Внимание: при добавлении URL-кнопки строго соблюдайте предложенный ботом синтаксис. Ему нужно отправить список всех URL-кнопок в одном сообщении.
После подготовки поста его нужно «отправить в мир». Для этого нажмите «Далее»:
. и выберите предпочтительный сценарий публикации:
Синтаксис. Команды. Настройки
Обязательно изучите справочник Bot API. Там вы найдете наиболее полную информацию по запросам, типам и методам используемого HTTP-интерфейса.
Главные команды запомнить несложно:
Если при создании бота вам не хватает стандартных функций, вы можете задействовать дополнительные команды длиной до 32 символов.
Соблюдайте синтаксис: /команда [необязательный] [аргумент]. Например, так мы получаем статистику по боту: /get_messages_stats
Обратите внимание: список команд будет появляться сразу после ввода символа «/». Не забудьте активировать описание команд в «отце ботов».
О некоторых параметрах BotFather мы уже говорили. Это:
Важные команды для чат-ботов
Дополнительных возможностей у бота в Telegram достаточно. Разбирать их все не имеет смысла, так как активно используется лишь небольшая часть.
Теперь посмотрим основные команды BotFather.
В Google и «Яндексе», соцсетях, рассылках, на видеоплатформах, у блогеров