Как создать бота для телеграмма с нуля
Как создать бота для телеграмма с нуля
Создание и хостинг телеграм бота. От А до Я
Привет, хабрчане! Какой бы заезженной не была тема создания телеграм бота на 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, здесь он нужен, ведь мы будем загружать этот файл на хероку.
Поздравляю!
Работа окончена, бот работает удалённо.
Ссылки
Заключение
Если кому-то было интересно, то цель написания статьи выполнена. Если кому-то хочется увидеть статью про более сложного бота (с вебхуками, подключенной БД с настройками пользователей и т.д.) — пишите.
Как написать простого бота для ВК и Телеграм
Мы уже упоминали, как мы предоставляем бесплатные VPS для студентов, чтобы они учились программировать. Один из наших подопечных Павел сделал простеньких телеграм и ВК ботов для FAQ. Они очень простые, тем не менее, начинающему программисту не помешают комментарии опытных ребят — поэтому публикуем его рассказ — Павел будет рад, если в комментариях ему дадут советы.
Я — студент Новосибирского Государственного Технического Университета, не так давно мы с парочкой моих друзей реализовали площадку для продвижения проектов во всех возможных областях научной деятельности. Мы помогаем «сводить» заинтересованных преподавателей и студентов всех ВУЗов Сибири, чтобы проектная научная деятельность развивалась по территории Сибири и РФ.
Студенты и преподаватели часто обращались ко мне с вопросами и я решил автоматизировать этот процесс, написав ботов для ВК и Телеграм.
На вход они принимают сообщения, а на выходе выдают либо текстовый ответ, либо специальную структуру данных, замаскированное под сообщение: инлайновые или висячие клавиатуры.
Я использовал Python версии 3.6 просто потому, что он самый простой для меня. Кодил в PyCharm Community Edition. Весь код опубликован на GitHub. Удачи!
1. Предварительные приготовления для телеграм-бота
1.1 Получение токена от BotFather в телеграмме
Первым делом, нам нужно «зарегистрировать» нашего бота в Telegram.
Для этого, в поисковике телеги ищем BotFather
далее, делаем всё также, как на скриншотах:
После нажимаем на команду /newbot или же прописываем вручную.
Надо придумать уникальное имя для бота, придумываем и получаем соответствующий токен.
1.2 Переходим в любой редактор кода и создаем файл config.py
Перед созданием данного файла, нам нужно выбрать директорию, в которой будет реализован весь функционал бота. Если вы используете PyCharm Community/Professional Edition, то предлагаю просто создать новый проект, и писать там весь функционал бота.
Если Вы используете любой другой редактор, такой как Sublime Text 3, например, то Вам самостоятельно придётся создать директорию, создать виртуальное окружение, и работать из консоли со всеми предварительными тестами. Во избежание трудностей, предлагаю скачать продукт PyCharm Community Edition от компании JetBrains, с помощью данного продукта можно обойти действия, описанные в предыдущем абзаце, так как данный продукт сделает их самостоятельно, от Вас потребуется только указать путь до интерпретатора Python в конфигурациях PyCharm, с помощью которого и будет работать Ваш бот.
В данном файле (config.py) будет храниться только токен, который нам дал BotFather, поэтому пишем:
1.3 Cоздаём главный файл — bot.py
Делаем cледующие импорты и для соответствующих библиотек, в консоли прописываем закоментированные строчки:
Далее, нам необходимо использовать наш токен:
Этими действиям мы устанавливаем то, что мы будем накручивать функционал именно для того бота, для которого нам и дал токен BotFather.
2. Разворачиваем функционал
Начнём с того, что для того, чтобы пользователю запустить бота, нам необходимо прописать команды для старта они могут быть разными, например, /start или /go и вообще любыми, какие Вы сочтёте нужными.
Каждая функция, как и в примере сейчас, должна принимать один параметр — сообщение от пользователя, которое будет обработано соответствующей функции «в обёртке» декоратора. А также, каждая функция (или связка функций) должна возвращать соответсвующее сообщение от бота.
Итак, пройдёмся по строчкам:
В строках 20-21: открывается стикер по тому пути к директории, в которой я его сохранил, после чего отправляется.
Строки 22-28: создаем встроенную клавиатуру, добавляя туда три элемента.
Строки 30-37: описано создание и отправка приветственного сообщения
Как вы можете заметить, метод send_message в строке 30, позволяет использовать HTML, для форматирования текста.
Строками ниже, добавим запуск самого бота, который будет хоститься, пока не случится ошибка или же, пока мы Сами его не закроем.
Сделаем первый запуск! Для этого, в PyCharm-е нажмём зеленую кнопку старт в правом верхнем углу или же, можно запустить из консоли командой: python bot.py
Результат первого запуска:
2.1 Обработка нажатия на кнопки и создание inline keyboard
Так как любое сообщение — это текст, то мы будем обрабатывать именно текстовые сообщения.
Сделаем следующее и аналогично разберём по строчкам:
Строка 339 — обработчик любых текстовых сообщений
Строка 341 предназначена для того, чтобы сказать, что если данное сообщение предназначено боту, то сравни эту строку с теми, что здесь обрабатываются и отправь ответ.
Строки 353-355 — отправляют текст, вместе с нашей Inline Keyboard.
В условиях ниже представлены аналогичные представления обработки сообщений.
Итак, сделаем запуск:
2.2 Обработка InlineKeyboardButton
Итак, разберём построчно:
Строка 269 — объявляем обработчик, который будет обрабатывать каждую из нажатых кнопок с использованием лямбда-функции
Строки 273-278 — В данном блоке if, мы просто обрабатываем сообщение и отправляем сообщение пользователю.
Строки 279-283 — Делают аналогичное действие, что и в предыдущем условном блоке.
Так просто и обрабатываются inline keyboards.
3. Завершаем работу бота
Данная функция будет аналогичной функции обработки команд для старта бота, поэтому Вы сможете легко понять её функционал:
Здесь происходит следующее:
ВК БОТ
Перейдём к реализации бота Вконтакте, написанном на том же родном языке Python, его основное отличие от предыдущего в том, что он был написан с использованием ООП, а именно класса. Внешне, он выполняет ту же миссию. Сама библиотека для написания вк бота намного проще телеграмм бота, поэтому разобраться в ней самостоятельно не составит большого труда. Итак, начнём.
1. Предварительные подготовления
Установим следующие библиотеки по тем же технологиям:
▍1.1 Получение токена для сообщества Вконтакте.
Берем ключ и переходим в среду разработки и делаем следующее:
На этом, закончим подготавления.
2. Разворачиваем функционал
Первым делом создадим файл manage.py
Cоздадим прототип встроенной клавиатуры ( всё с помощью документации VkBotAPI ).
Затем переводим её в формат json, как требуется в документации:
Пример инлайн клавиатуры:
Не забываем все используемые клавиатуры переводить в формат json:
После создания всех прототипов, мы можем перейти к следующему шагу. ( к этому файлу мы позже вернёмся и доработаем обработку общения пользователя и нашего vk-бота )
▍2.1 Основной функционал (создаем файл vk_bot.py)
Мы не будем разрабатывать методы, которые будут выполнять, например, функцию парсинга времени или погоды, назовем их второстепенными. Я покажу лишь основной метод, который будет обращаться к этим второстепенным методам, для обработки тех или иных сообщений от пользователя. В конце статьи я выложу ссылку на свой GitHub, где Вы сможете самостоятельно просмотреть интересующий Вас функционал любого из метода. Итак:
Последнее свойство класса — inputMes — это особый словарь, у которого значения ключей — это текст из файла answers.py, где я расположил текст в виде строк, поэтому, чтобы не загромождать код я и вынес основной текст в другой файл.
3. Возвращаемся в manage.py и дописываем функционал
Теперь в первых строках нам необходимо проимпортить файл vk_bot. А также нам потребуется библиотека random.
После того, как мы объявили longpoll, дописываем основной функционал.
Как можете заметить, в условных блоках if и elif — присутствует обработка тех сообщений, которые подразумевают под собой вывод инлайн или встроенной клавиатуры (в данном примере — выводятся только инлайн клавиатуры). Сюда также можно добавить более сложные обработки сообщений, после которых обработка будет метаться туда сюда по блокам if и elif. Таким образом бот будет работать, пока не «упадёт с ошибкой».
Другое дело обстоит с блоком else, здесь мы обращаемся как раз ко классу нашего Бота, после чего он аналогичным способом находит обработку сообщения и выводит результат. Это можно назвать вложенной обработкой, а так как вложенностей лучше избегать, то лучше использовать тот метод программирования бота, который как раз-таки реализован в телеграмм боте.
Заключение
Надеюсь, что после прочтения данной статьи, Вы как минимум поняли основной принцип создания своего Telegram или Vk бота, а как максимум — легко сможете написать своего бота.
Как вы можете видеть, создать его функционал очень просто, особенно, если вы знаете основы языка Python.
Весь код опубликован в моём профиле GitHub:
Делаем телеграм бота за 5 минут: быстрый старт с продвинутым шаблоном
В последнее время я сделал настолько много ботов для телеграмма, что крайне преисполнился в том, как их писать, как хостить, да и в принципе выработал красивый шаблон для быстрого их создания.
Сразу могу предложить посмотреть на то, что получиться в конце этого туториала. Для этого я запустил бота с идентичном шаблону кодом.
Также стоит отметить, что хостинг в этом примере бесплатный, но его хватает для разумной нагрузки.
А еще сразу скажу, что далее будет все на питоне. Вот. Сказал. Не буду больше ходить вокруг да около, у нас всего 5 минут (помните, да?). Приступим!
Пошаговая инструкция
1) Создаем репозиторий на гитхабе из моего шаблона
2) Регистрируемся на Heroku
3) Создаем новое приложение
4) Привязываем наш репозиторий к проекту на Heroku
5) Настраиваем автоматический deployment
6) Смотрим на адрес, где будет висеть наш бот
7) Настраиваем переменные среды
VALUE
Рандомная строка из букв для безопастности
Еще одна рандомная строка из букв для безопастности
Адрес полученный в пункте 6 (например fancy-panda.herokuapp.com). Обратите внимание на формат!
Токен для бота, куда будут отправляться логи (оставьте пустым, если хотите отключить логирование в телеграм)
user_id, куда будут отправляться логи (получить в боте @userinfobot)
8) Собираем наше приложение и ждем пока оно запустится
9) Заходим по адресу из пункта 6 и добавляем к ссылке пароль. Получиться что-то такое: fancy-panda.herokuapp.com/?password=
10) Устанавливаем webhook, переходя по ссылке на подобие fancy-panda.herokuapp.com/set_webhook?password=
Тестируем
Теперь, когда мы закончили все настраивать, пора посмотреть, что же мы «натворили».
Пример работы из коробки
Пример работы логирования
Добавляем функционал
Теперь, когда у вас есть рабочий бот, который сам разворачивается и запускается в облаке, пришло время добавить свои функции. Для примера такую:
Думаю, дальше ограничивает вас только воображение. (ну почти)
Применение в проектах
Все любят, когда есть примеры работы. На основе этого шаблона я сделал бота wifi_qr_bot, который генерирует QR-коды для подключения к WiFi. Это упрощает жизнь, ведь пароль у вас длинный (безопасность, все дела), а вводить его на каждом новом устройстве вам лень.
Выводы
Вот мы и сделали нашего бота, который хостится в облаке. Он уже многое умеет в плане логирования. Для логирования я написал отдельную библиотеку, tg-logger. Если интересно, как она работает, то потыкайте в демо бота. Если все еще интересно, прочитайте мою статью. Такие пироги с котятками.
Как создать бота в Телеграм: пошаговая инструкция
Изначально Telegram был обычным мессенджером для базовой отправки сообщений. Чуть позже он начал обрастать новыми функциями. Многим Телега начала заменять другие социальные сети и даже самые разные сервисы интернета.
Чем полезен Telegram
На сегодняшний день, Телеграм — это огромный интернет-комбайн, где можно:
Практически во всех вышеперечисленных случаях помогают именно боты. Например, для прослушивания музыки помогает бот, который переносит музыку из плейлистов ВКонтакте и загружает в свой канал. А при продаже товаров запускается бот, с помощью которого можно листать список товаров, класть их в корзину и оттуда оформлять покупку.
Без помощи ботов это было бы сделать очень затруднительно. Если проще, то боты в Telegram автоматизируют какое-либо действие.
Впрочем, ранее мы уже писали о популярных ботах в Телеграме вот здесь.
Создание бота в Telegram: пошаговая инструкция
Итак, пойдем по порядку. Для создания своего бота нам понадобится юзернейм @BotFather, вот этот:
Нажимаем «Запустить», и в ответном сообщении сразу присылается меню. Оно на английском, но ничего сложного нет.
Выбираем /newbot, далее в сообщении пишем название своего нового бота.
Далее указываем username бота, по которому его можно будет найти, обязательно чтобы юзернейм заканчивался на «bot».
Наше рабочее название будет «GTOnidzuka_bot», далее мы его переименуем. Если юзернейм занят, то выбираем другой. Также BotFather присылает уникальный ключ, подобие пароля от бота, его никому нельзя показывать.
После того выбора имени нашего бота можно найти в поиске Телеграм или зайти на него по ссылке.
Теперь нам доступно редактирование бота. С помощью команд можно изменить аватарку, общее название, описания и т.д. Также в боковую кнопку «Меню» можно зашить ссылку на сайт или социальную сеть.
Основные команды в BotFather:
Наш бот создан и отображается в поиске, но пока еще ничего не умеет.
С помощью уникального токена и юзернейма бота можно подключить к различным сервисам и платформам.
Для нашей компании мы попробуем подключить бота через Manybot, он практически единственный позволяет пользоваться ботом для бизнеса бесплатно.
Для начала переходим на официальный сайт и пролистываем вниз страницы, где есть кнопка со ссылкой в Телеграм.
Итак, попадаем в Телегу к Manybot и там имеется русский интерфейс, что очень радует.
Тут нам и пригодится наш ранее скопированный ключ. Вставляем его в строку и отправляем. Далее нужно написать пару слов о том, что будет делать наш бот. У нас будет простой инфобот. Так и запишем.
Для теста мы создали новый канал. Но если есть уже хороший раскрученный канал, то можно внедрить и его.
Чтобы у бота в нем была власть, он должен быть администратором этого канала. Заходим в канал, добавляем нашего бота и даем ему все разрешения на управление каналом.
Для подключения канала к боту, нужно отправить тестовое сообщение. И да, нам пришло уведомление в канале. Простейшие функции уже работают.
Теперь мы можем настроить автопостинг, отложенный постинг и создавать другие команды.
Окей, давайте создадим парочку команд:
Первая команда будет отправлять ссылку на наши услуги. Для этого заходим в «Отца ботов», печатаем /setcommands и выбираем нашего бота. Также можно воспользоваться кнопками меню, кому как удобнее.
В строке пишем название команды, оно может быть любым, главное на латинице и через тире пишем описание команды, у нас это «Услуги и цены», далее нажимаем «Сохранить».
Команда создана, но она пуста. Теперь ей нужно задать действие. Для этого переходим в наш бот, далее в «Пользовательские команды», среди них выбираем наш «bang» и жмем «Редактировать ответы команды».
Сейчас нужно напечатать сообщение к команде — это как раз и есть ответное действие на ее вызов. Ранее мы решили, что при вызове команды, ответом будет ссылка на наш сайт. Поэтому просто вставляем ссылку.
Теперь при вызове команды /bang, в ответе будет ссылка на наш сайт.
Заметили, что также есть кнопка «Добавить вопрос»? Это некая форма обратной связи, если его добавить, то при вызове команды пользователю будет задан этот вопрос.
Добавим нетривиальное сообщение. После отправки нашего вопроса, предложим два варианта ответа для выбора пользователя.
Так выглядит итоговый результат. После того как пользователь тапнет на одну из кнопок, нам придет уведомление об ответе.
А вот и новые ответы на форму:
Если пользователь тапнет на «Хочу заказать услугу», то пользователя можно найти и написать ему.
Как вариант, можно добавить вопрос, на который пользователь сам ответит и будет иметь возможность прислать свой номер телефона для связи.
Далее мы создали еще несколько команд по похожему принципу. Сделали мы это для того, чтобы добавить полноценное меню с кнопками. Ведь пользователям будет очень неудобно вручную каждый раз набирать команду.
На этот раз добавили команды для всех подразделов нашего блога. Перед этим добавив команду /blog, она будет корневой.
Для удобства и лучшего восприятия все команды заканчиваются на blog, так как если мы решим добавить команды с услугами, будет проще в них ориентироваться.
Итак, у нас есть много команд, которые мы будем обрамлять в удобные кнопки меню. Но сперва «зашиваем» в команды ссылки на наши подразделы блога как это описано выше.
Для добавления кнопок жмем на «Пользовательские команды», а далее кликаем на «Настроить главное меню».
Затем нажимаем на «Добавить пункт меню». Из ранее добавленных команд выбираем доступную, задаем ей имя, которое будет отображаться и кликаем «Сохранить».
Таким образом мы добавили кнопки для всех основных команд. Также добавили кнопки социальных сетей и контактов.
Вот так теперь выглядит наш бот.
При переходе в социальные сети появляются их кнопки:
А при переходе в блог сперва появляется опрос:
Конечно, не совсем логично, новичкам сперва бы блог почитать, но от постоянных читателей нам важен фидбек.
И далее появляются его подразделы.
В целом, если публиковать статьи в том же Telegraph и добавлять их в бота, то материалы можно читать, даже не выходя из Telegram.
Если зайти с другого аккаунта, бот отображается вот так:
Наш бот подключен к тестовому каналу, через него (бота), можно отправлять сообщения пользователям. К примеру, оповещение о новой записи в блоге, например.
Для этого в главном меню бота нажимаем на «Отправить новое сообщение пользователям», печатаем наше сообщение и жмем «Отправить пост подписчикам».
Прежде чем отправить пост, можно посмотреть, как он будет выглядеть, или задать время для публикации.
Спустя пару секунд придет уведомление о новой статье в блоге.
Также мы прикрутили автопостинг с помощью RSS-ленты. Кстати, в одной из наших статей писали, что это и как ее подключить, рекомендуем прочесть здесь.
Помимо RSS, можно подключить и Youtube.
Так просто?
Вуаля — теперь наш совсем простой бот умеет показывать нужную информацию пользователю, хоть и за счет ссылок, а также принимать обратную связь. Конечно же, функционал этим не ограничивается и с помощью ботов можно создать нечто большее, но это уже совсем другая история.
А если вы еще не подписаны на наш канал, то советую исправить это недоразумение. 🙂 Делимся только полезными новостями из мира SEO и интернет-маркетинга.
© 1PS.RU, при полном или частичном копировании материала ссылка на первоисточник обязательна.
Технический SEO-специалист сервиса 1PS.RU
Понравилась статья?
Спасибо, мы старались!
Кстати, вы подписаны на нашу рассылку? Если нет, то самое время познакомиться с Катей.
Сожалеем, что не оправдали ваши ожидания ((
Возможно, вам понравятся другие статьи блога.
45 чел. оценили, средняя оценка 4.9
Скидка 7% на продвижение вашего бизнеса
Скидка на любые наши услуги, которая поможет немножко сэкономить или привести чуть больше клиентов за те же деньги. Активируйте, чтобы не потерялась.
Telegram-бот на Python за полчаса с aiogram
Напишем простой диалоговый Telegram-бот на Python, который в дальнейшем можно дополнить различными функциями, и задеплоим его.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
Настройка
Откройте Telegram, найдите @BotFather и начните беседу. Отправьте команду /newbot и следуйте инструкциям. Вы получите:
Обязательно сохраните токен, так как это ключ для взаимодействия с ботом.
Установка Python
Для написания Telegram-бота на Python, нужно установить сам язык. Если вы пользуетесь Windows, скачать Python можно с официального сайта. Версия важна. Нам подойдет Python не ниже версии 3.7. Если же у вас Linux или macOS, то, скорее всего, у вас стоит Python 3.6. Как обновиться, можете почитать здесь.
Тем, кто только начал изучение этого языка, будет также полезна дорожная карта Python-разработчика.
Установка pip
Установка aiogram
Установить данный фреймворк для Telegram Bot API с помощью pip:
Hello, bot!
Давайте напишем простенькую программу приветствия. Для начала следует импортировать библиотеки и создать экземпляры Телеграм бота и диспетчера:
Теперь напишем обработчик текстовых сообщений, который будет обрабатывать входящие команды /start и /help :
Добавим ещё один обработчик для получения текстовых сообщений. Если бот получит «Привет», он также поздоровается. Все остальные сообщения будут определены, как нераспознанные:
Запускаем Telegram бота, написанного на Python, следующим образом:
Примечание Так мы задаём боту непрерывное отслеживание новых сообщений. Если бот упадёт, а сообщения продолжат поступать, они будут накапливаться в течение 24 часов на серверах Telegram, и в случае восстановления бота прилетят ему все сразу.
Ну вот и всё, простенький бот в Телеграмме на языке Python готов.
Docker
Сейчас мало кто не слышал про Docker, но если вдруг не слышали — вот хорошая статья. Для нашего проекта потребуется самый простой Dockerfile:
Каталог проекта должны при этом содержать следующие файлы:
Для локальных тестов достаточно установить Docker (linux, mac, windows), после чего в папке проекта собрать и запустить контейнер с помощью команд:
my_app — это просто название нашего контейнера, вместо которого можно использовать другое имя.
-d — специальный флаг, который запускает контейнер в фоне и позволяет дальше работать в терминале. Это называется detached mode.
Деплой на AWS
Прежде всего нам понадобится аккаунт на Docker Hub. Это аналог GitHub, только не с исходниками кода, а с уже созданными контейнерами. Работа с Docker Hub выглядит достаточно просто:
Загружаем его на докерхаб:
Для проверки успешности загрузки можете запустить контейнер из Docker Hub с помощью команды:
Далее загрузим наш контейнер в AWS Elastic Beanstalk. Для этого потребуется аккаунт на AWS. Если его нет, необходимо зарегистрироваться. Вас попросят ввести данные карты для верификации, но переживать не стоит, ведь мы воспользуемся бесплатным годовым триалом. Чтобы поиграться, этого более чем достаточно, а вот если вы захотите вывести проект в продакшен, следует перейти на VPS — это даст больше контроля и гибкости.
Проверяем работу нашего Telegram bot:
Заключение
Поздравляем! Теперь вы знаете, как писать роботов для Telegram на Python.
Бота можно дополнять другими функциями, например, добавить отправку файлов, опрос или клавиатуру.
Кстати, в телеграмме есть аж целых два типа клавиатур:
Но и это полностью рабочий Телеграм-бот на Python: дополните словарём, и получите полноценную беседу. Также можете опробовать функциональность нашего Telegram-бота.
В «настоящих проектах» не обойтись без базы данных. Тут на помощь приходит docker-compose, который позволяет объединить несколько контейнеров в один сервис. Таким образом, например, можно создать приложение и положить его в контейнер, а базу данных, как отдельный сервис, поместить в другой контейнер, и с помощью docker-compose наладить между ними связь.
Также для более серьёзной разработки лучше использовать выделенный виртуальный сервер (VPS): он даёт гораздо больше гибкости и свободы, чем тот же AWS. А самое главное, он более приближён к «боевой» разработке. Схема работы тут будет даже проще, чем с AWS: вам просто нужно установить Docker, спуллить образ с Docker Hub и запустить его.
Как создать telegram бот на C# быстро?
Добрый день, уважаемые друзья!
В этой статье мы рассмотрим заготовку для создания телеграм бота на C#. В связи с последними обновлениями TelegramBotAPI, большая часть удачных с моей точки зрения публикаций на эту тему несколько устарело. Потому я принял решение написать статью на эту тему.
Чуть подробнее
Мы будем пользоваться библиотеками Telegram.Bot и Telegram.Bot.Extentions.Polling, обновления будем получать периодически опрашивая Telegram сервер на наличие новых обновлений. Webhook’и мы использовать не будем. Тпру, подождите меня забрасывать гнилыми помидорами, матерые кодеры! Да, метод получения обновлений основанный на Webhook’ах лучше, но Polling проще в реализации поскольку не нужно получать SSL-сертификат и бот можно запустить сразу после написания кода без дополнительных заморочек. На этом новичок может застопориться. К тому же есть ряд нюансов при использовании Webhook’ов на моем сервере. Если они есть у меня, значит они могут быть и у Вас. Потому используем метод периодического опроса сервера Телеграма на наличие новых обновлений. Ладно, уважаемый читатель, если Вы все еще со мной не согласны и желаете получить сертификат и работать на Webhook’ах, можешь почитать о получении сертификата в этой статье.
Существующие схемы работы telegram бота
Мне нравится схема работы telegram бота на C#, описанная в этой статье. Считаю ее хорошим примером. Вот код:
Там ничего лишнего. Создаем объект TelegramBotClient чтобы взаимодействовать с нашим ботом с помощью библиотеки, прописываем ему токен, который выдал нам BotFather. Далее создаем событие OnMessage, обрабатываем его методом BotOnMessageReceived и запускаем клиент.
Однако с выходом более новых версий TelegramBotAPI оказалось, что такая схема больше не работает. Более того, боты, написанные на более ранних версиях Telegram.Bot перестают работать после обновления библиотеки.
Нужно использовать другую схему. Давайте попробуем в этом разобраться.
Пошаговая инструкция
Итак ниже я набросал следующий список шагов, которые приведут вас к рабочему telegram боту.
1. Запускаем Visual Studio Community, создаем консольное приложение.
Если у Вас отсутствует Visual Studio Community, Вы можете установить ее используя статью или несколько устаревшее видео. При этом желательно выбирать установку Visual Studio Community 2022 как наиболее актуальную версию на текущий момент.
2. Добавляем в консольное приложение библиотеку Telegram.Bot, Telegram.Bot.Extentions.Polling и Netonsoft.Json
Открытие NuGet
Поиск библиотеки
Установка пакета
По завершению у Вас должны быть установлены и отображены названия пакетов, которые мы установили.
Netonsoft.Json применимо к нашей заготовке нужна для того, чтобы у нас была возможность вывести на консоль сообщение от пользователя.
3. Создаем telegram бот в BotFather. Копируем его api key для работы.
Находим в telegram BotFather, отправляем ему /newbot, название и логин бота
BotFather должен нам предоставить API key, который мы должны вставить в код-каркас в следующем шаге в строке
static ITelegramBotClient bot = new TelegramBotClient(«TOKEN»);
4. В файл Program.cs вставляем следующий код-каркас:
5. Редактируем код под свои нужды и задачи.
Итак что мы можем сделать когда пользователь отправил нашему боту сообщение?
Во-первых мы можем вывести ее на консоль. Для этого в Nuget установим либу Newtonsoft и пропишем в методе HandleUpdateAsync.
Конечно, мы можем проверить что он нам прислал. И если текст сообщения будет тем, который мы ждем, выполнить определенные действия.Например если пользователь нажал кнопку Start и тем самым отправил боту текст «/start», мы можем отправить ему в ответ «Добро пожаловать на борт, добрый путник!».
if (update.Type == Telegram.Bot.Types.Enums.UpdateType.Message)
Здесь мы проверяем тип обновления. Если пользователь отправил нам сообщение, выполняем ниже описанные действия.
var message = update.Message;
Создаем новую переменную для удобства и записываем в нее всю информацию о пришедшем сообщении.
if (message.Text.ToLower() == «/start»)
Проверяем какой текст отправил пользователь. Если текст сообщения в нижнем регистре (.ToLower()) является словом «/start», то пишем ему сообщение «Добро пожаловать на борт, добрый путник!». И останавливаем выполнение метода командой return.
Целесообразно также данные этого пользователя записать в какую-нибудь базу данных. Например MySQL, PostgreSQL или еще какую-то. Или просто в файл. Напишите в комментариях если Вам это интересно.
А если пользователь отправит боту другое сообщение, например «Здравствуй», мы можем написать боту, например, «Здоров, братан! И тебе не хворать»
await botClient.SendTextMessageAsync(message.Chat, «Здоров, братан! И тебе не хворать!»);
Думаю принцип вы поняли.
Не забудьте вставить в код API key от Вашего бота там, где написано TOKEN.
Для удобства записал видео.
Заключение
Итак в этой статье мы с вами создали telegram бот с нуля и протестировали его на работоспособность. Созданную заготовку можно будет использовать в дальнейшем для создания полномасштабных коммерческих проектов.
Инструкция: Создание бота для 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 имя_пользователя@адрес_домена.
После ввода пароля, печатаем для нашего поддомена простую команду:
Пишем простого чат-бота для Telegram на PHP
Шукюров Заур, разработчик @KinomanBot и @GaidarForum_bot, написал руководство по созданию простого чат-бота на PHP.
24 июня 2015 года разработчики Telegram открыли платформу для создания ботов (программ, которые выполняют определенные действия по заданному алгоритму).
За полтора года работы платформы набралось много интересных чат-ботов, решающих множество проблем и позволяющих с пользой провести время в мессенджере.
Шаг 1: регистрация бота у @BotFather
Прежде чем начать писать код, нового бота нужно зарегистрировать у «папы всех ботов» — @BotFather, чтобы получить токен (ключ) для работы с Telegram API.
Регистрация проходит в 5 простых этапов:
1) Открываете чат с @BotFather;
2) Вводите или выбираете из списка команду /newbot;
3) Отправляете желаемое название для бота;
4) Пишете юзернейм бота, по которому его будут находить через поиск. Обязательно на конце вашего юзернейма должно быть слово «bot» или «_bot». Например, NetologyRSSbot;
5) По желанию можно сразу настроить полное или краткое описание, список команд и аватарку.
По итогу регистрации получаем наш токен — 375466075:AAEARK0r2nXjB67JiB35JCXXhKEyT42Px8s.
Будьте осторожны: никогда и никому не показывайте токен, иначе ваш бот может быть скомпрометирован. Если по несчастливой случайности кто-то нехороший все-таки узнал ваш токен, то заменить его можно всё в том же @BotFather, нажав на кнопку «Revoke current token» в разделе «API Token».
Шаг 2: выбираем способ обработки запросов
Исходя из официальной документации, Telegram API основан на простых HTTP-запросах. Существует всего два различных способа обрабатывать запросы, которые пользователи будут посылать боту:
1) проверять «вручную», используя «Long Polling»;
2) доверить всё Telegram, поставив «Webhook». В этом случае любой запрос от пользователя Telegram сам будет посылать нам на сервер.
Мы остановимся на втором варианте, но у него есть ограничение: у вас на сайте обязательно должен быть установлен SSL-сертификат, чтобы все запросы проходили через безопасный протокол HTTPS. Самоподписанные и бесплатные сертификаты «Let’s Encrypt», которые поддерживает большинство хостингов, также подходят.
Пример настройки самоподписанного сертификата из официальной документации Telegram.
Шаг 3: пишем код
Писать код бота будем на PHP, но чтобы не изобретать заново колесо, воспользуемся уже готовой и очень удобной библиотекой.
Открыв в браузере эту ссылку, должен прийти JSON-ответ со значением «Webhook was set», что будет означать, что вебхук установлен, и теперь все запросы от пользователей будут присылаться по адресу файла-обработчика.
Переходим к самому главному — обработке этих самых запросов и написанию функционала бота.
Ниже представлен полный листинг файла-обработчика:
Разберем всё по порядку.
1. Сначала мы подключаем скачанную библиотеку, указав путь (лучше полный) до файла автозагрузчика.
2. Создаем экземпляр класса в переменной $telegram и передаем в него наш токен.
В переменной $result получаем информацию о сообщении, которое пришлет нам Telegram.
3. Затем определяем главные переменные: текстовое сообщение, уникальный идентификатор пользователя и его юзернейм. Если предстоит работа с БД, то не забывайте про фильтрацию (или лучше используйте PDO).
4. Создаем нашу клавиатуру, состоящую из трех кнопок.
5. Теперь, когда мы обозначили все переменные, можно перейти к обработке полученного сообщения. Для этого можно использовать конструкцию switch-case либо if-else. Так как принципиальной разницы между ними нет, остановимся на втором варианте, как наиболее привычном.
В самом начале проверяем, заполнена ли переменная $text и является ли сообщение пользователя текстовым.
Если нет, то отправляем пользователю с помощью метода sendMessage сообщение с просьбой ввести текстовое сообщение.
6. Рассмотрим вариант, когда пользователь прислал сообщение с командами /start или /help
В этом случае помимо текста из переменной $reply будет подгружаться клавиатура, состоящая из трёх кнопок: «Последние статьи», «Картинка» и «Гифка».
Реализуется это с помощью метода replyKeyboardMarkup, параметрами которого являются:
8. Для отправки картинки используется метод sendPhoto, для отправки гифки – sendDocument. В обоих случаях Telegram позволяет передавать прямую ссылку на файл, что безусловно очень удобно, но не так быстро, как если бы мы передавали file_id уже отправленной на сервера Telegram картинки или гифки.
9. Для получения последних статей используется простой парсинг RSS ленты Нетологии при помощи встроенной в PHP функции simplexml_load_file.
В параметрах метода sendMessage можно заметить два новых значения:
10. В качестве смайла (стрелка вправо) используются символы \xE2\x9E\xA1. Список всех смайлов в таком виде можно найти на специальном сайте.
11. После того, как вы протестируете бота и будете уверены в его работоспособности, можно отправлять его на всеобщее обозрение.
Благодаря удобному API, боты Telegram могут стать хорошей платформой для автоматизации рутинных действий, настройки уведомлений, удобному и быстрому получению информации и созданию игр.
Бесплатными площадками для продвижения могут послужить каталоги ботов Telegram Bot Store, TeleChappy или 50bots.
А анализировать активность пользователей можно с помощью бесплатного инструмента для аналитики ботов от Яндекса — Botan.
Руководство: как сделать простого бота для Телеграм на JS для новичка в программировании
Я начал погружение в мир IT лишь три недели назад. Серьезно, три недели назад я даже не понимал синтаксиса HTML, а знакомство с языками программирования заканчивалось школьной программой по Pascal 10-летней давности. Однако я решился поехать в IT-лагерь, для детей которого было бы неплохо сделать бота. Я решил, что это вряд ли так сложно.
С этого начался длинный путь, в рамках которого я:
Скажу сразу, это статья для начинающих — чтобы просто понять, как делать элементарные вещи с самой нулевой точки.
А еще — для продвинутых программистов — просто чтобы их немного посмешить.
1. Как писать код на JS?
Я понимал, что стоит для начала хотя бы разобраться в синтаксисе языка. Выбор пал на JavaScript, просто потому что следующим шагом для меня было создание приложения на ReactNative. Я начал с курса на Codecademy и остался в большом восторге. Первые 7 дней бесплатно. Реальные проекты. Рекомендую. Прохождение его заняло порядка 25 часов. На самом деле далекоооо не все из него пригодилось. Вот так примерно выглядит структура курса и подробно первый блок.
2. Как зарегистрировать бота?
В начале мне очень помогла вот эта статья из блога некоего Арчакова. Он разжевывает самое начало. Но главное, что там есть — это инструкция по регистрации бота. Лучше я не напишу, и поскольку это самая легкая часть, просто напишу суть. Нужно создать бота и получить его API. Это делается через другого бота — @BotFather. Найдите его в telegram, напишите ему, пройдите простой путь и получите (сохраните!) API-ключ (это набор цифр и букв). Он пригодился мне позже.
3. Как выглядит код бота?
После долгого изучения статей, я понял, что стоит использовать какую-то библиотеку (сторонний код в формате модуля), чтобы не мучаться с изучением API телеграма и созданием с нуля больших кусков кода. Я нашел фреймворк telegraf, который нужно было как-то подключить к чему-то при помощи npm или yarn. Примерно так я понимал тогда, из чего состоит развертывание бота. Смеяться здесь. Я не обижусь. Больше всего при последующем создании бота мне помогли примеры, указанные внизу страницы:
3. Как создать собственный облачный сервер за 100 рублей
После долгих поисков я понял, что команда ‘npm’ из картинки выше относится к командной строке. Командная строка есть везде, но чтобы получилось ее исполнить, нужно поставить NodePackageManager. Проблема была в том, что программировал я на PixelBook с ChromeOS. Я пропущу здесь большой блок про то, как я познавал Linux — для большинства это пустое и ненужное. Если у вас есть Windows или MacBook, у вас уже есть консоль.
Если в двух словах, я поставил Linux через Crostini.
Однако в процессе я понял, что для постоянной работы бота (а не только когда у меня включен компьютер) мне нужен облачный сервер. Я выбрал vscale.io Я закинул 100 рублей, купил самый дешевый сервер Ubuntu (см.картинку).
4. Как подготовить сервер для запуска бота
После этого я понял, что нужно сделать на сервере какую-то папку, в которую я положу файл с текстом кода. Для этого в консоли (запускать прямо на сайте через кнопку «Открыть консоль») я вбил
bot — это стало название моей папки. После этого я установил npm и Node.js, что позволит запускать мне потом код из файликов с разрешением *.js
Очень рекомендую на этом этапе настроить подключение к серверу через свою консоль. Вот инструкция Это позволит работать с сервером напрямую через консоль своего компьютера.
5. Как написать код первого бота.
А вот теперь просто открытие для меня. Любая программа — это просто строки текста. Их можно вбить куда угодно, сохранить с нужным расширением и все. Ты прекрасен. Я использовал Atom, но реально, можно просто в блокноте стандартном писать. Главное — сохранить потом файл в нужном расширении. Это как написать текст в Word и сохранить.
Я сделал новый файл, в который вставил код из примера на странице telegraf и сохранил в файл index.js (вообще не обязательно называть файл так, но так принято). Важно — вместо BOT_TOKEN вставьте свой API-ключ из второго пункта.
6. Как закинуть код на сервер через github
Теперь мне нужно было закинуть как-то этот код на сервер и запустить его. Для меня это стало челленджем. В итоге, после долгих мытарств я понял, что проще будет создать файл на github, который позовляет обновлять код при помощи команды в консоли. Я зарегал аккаунт на github и сделал новый проект, куда и загрузил файл. После этого мне нужно было понять, как же настроить загрузку файлов с моего аккаунта (открытого!) на сервер в папку bot (если вдруг вы вышли из нее — просто напишите cd bot).
7. Как загрузить файлы на сервер через github ч.2
Мне нужно было поставить на сервер программу, которая будет загружать файлы с git. Я поставил git на сервер, вбив в консоль
После этого мне нужно было настроить загрузку файлов. Для этого я вбил в командную строку
В итоге все из проекта загрузилось на сервер. Ошибкой на данном этапе было, что я, по сути, сделал вторую папку внутри уже существующей папки bot. Адрес до файла выглядел как */bot/bot/index.js
Я решил пренебречь этой проблемой.
И чтобы подгрузить библиотеку telegraf, которую мы запрашиваем в первой строке кода, вбейте в консоль команду.
8. Как запустить бота
Для запуска я ввел в консоль
Если нет никакой ошибки — все хорошо, бот работает. Ищите его в телеграме. Если ошибка есть — применяйте свои знания из 1 пункта.
9. Как запустить бота в фоновом режиме
Достаточно быстро вы поймете, что бот работает только тогда, когда вы сами сидите в консоли. Чтобы решить эту проблему я использовал команду
После этого появится экран с каким-то текстом. Это значит, что все хорошо. Вы на виртуальном сервере на облачном сервере. Чтобы понять лучше, как это все работает — вот статья. Просто заходите в свою папку и вбивайте команду по запуску бота
10. Как работает бот и как расширить его функционал
Что же умеет наш бот из примера? Он умеет
говорить «Welcome!» в момент старта (попробуйте поменять текст)
в ответ на стандартную команду /help отправлять сообщение «Send me a sticker»
в ответ на стикер отправлять одобрение
отвечать «Hey there», если ему пишут ‘hi’
bot.launch()
Если вы посмотрите код на github, то быстро поймете, что сильно далеко от этого функционала я не ушел. Что активно используется, так это функция ctx.replyWithPhoto Она позволяет отправлять заданное фото или gif в ответ на определенный текст.
Значимая часть кода была написана детьми 11-13 лет, которым я дал доступ к боту. Они ввели свои user-case. Думаю, легко определить, какая часть сделана была ими.
Например, на сообщение «джейк» приходит гифка с известным персонажем из мультика Adventure Time.
Чтобы развивать бота дальше, подключать клавиатуру нужно смотреть примеры, например, отсюда
11. Как обновлять код и перезапускать бота
Не забывайте, что надо обновлять код не только на github, но и на сервере. Делать это просто — стопим бота (нажать ctrl+c),
— вводим в консоль, находясь в целевой папке, git pull
— вновь запускаем бота командой node index.js
Многие вещи, описанные в этом файле, будут супер очевидны для продвинутых программистов. Однако когда я сам пытался одним махом перепрыгнуть пропасть до мира ботов, мне очень не хватало подобного гайда. Гайда, в котором не пропускается очевидные и простые для любого IT-специалиста вещи.
В дальнейшем я планирую пост про то, как сделать свое первое приложение на ReactNative в таком же стиле, подписывайтесь!
Как создать чат-бота в Телеграм самостоятельно
Аудитория Telegram прошла рубеж в 27 млн активных пользователей в России еще в 2020 году и остается самой быстрорастущей для мессенджеров. По понятным причинам бизнес переходит в Telegram, используя боты для продаж и коммуникации с клиентами. Их можно научить отправлять сообщения-автоответы, добавлять переменные, отправлять веб-хуки, сохранять данные про пользователей, сегментировать аудиторию и делать много другого полезного по работе с клиентами.
Нужно помнить, что бот для Телеграм — это все еще приложение, программа. Создать бота может кто угодно, но вот чтобы обучить, нужно уметь программировать. Если вам незнакомы понятия Python, JavaScript или Flask, API, cgi и HTTP-интерфейс, вряд ли получится написать бота вручную. Но есть решение — конструкторы. В этой статье мы расскажем, как создать бота для телеграмма с нуля, если вы не программист. Но сначала общие сведения.
Общие сведения
Бот — это интерактивное приложение, программа, если хотите — интерфейс к вашему серверу. Бот умеет запускать разные варианты предустановленных сценариев в ответ на нажатие кнопки или какое-то слово. По сути, бот имитирует живое общение.
Зачем нужны боты
Чтобы автоматически обрабатывать и отправлять сообщения. Пользователь может написать вашему боту в обычном чате или канале, и тот ему ответит по заранее разработанному скрипту. Он имитирует живое общение и может выпытывать у юзеров полезную для бизнеса информацию: номера телефонов, э-мейлы, анкетные данные и переносить их в переменные. Его можно научить выполнять команды, рассылать сообщения, отвечать на вопросы клиентов и делать все то, что менеджер раньше делал вручную.
Это можно использовать в бизнесе:
Любые из этих действий можно упаковать в бота и не делать это вручную. Главное — грамотно продумать логику его поведения. Для примера: вот как выглядит бот для продажи курсов и консультаций от семейного психолога.
Что могут делать боты
Боту можно поручить любую функцию, которую в мессенджере может выполнить человек. Он не просто выполнит ее лучше, но и во много раз быстрее.
В самом Telegram говорят, что бота можно научить делать что угодно, если это не мытье посуды.
BotFather
Как создать бота в Телеграмме самому и бесплатно? Для этого есть… БОТ! Знакомьтесь, отец всех ботов — @BotFather.
С его помощью можно настраивать ранее созданных ботов или создавать новых. Напишите ему, следуйте инструкциям и он поможет вам сделать бота самостоятельно, добавить его и активировать. Правда, все инструкции на английском языке. Ниже — наш пошаговый алгоритм для создания бота на русском.
Как создать бота в Телеграм
1. Запустить @BotFather и получить базовый список команд для работы с ботами. Первая и самая главная — /newbot, создание нового бота. Программа предложит нам придумать название нашему роботу.
2. Придумать название. Можно вписать любое имя, какое хочется. оно будет отображаться в контактах и чатах.
3. Придумать логин. Пишем боту придуманное название и он предлагает нам выбрать для бота логин. Программа предупредит, что логин должен заканчиваться на «bot». Логин должен быть уникальным, программа не пропустит имя пользователя, если оно уже занято. А еще он должен быть написан на латинице (с цифрами и нижним подчеркиванием), содержать от 5 до 32 символов.
3. Сохранить токен. Бот-отец пришлет вам токен вашего бота. Сохраните его в текстовом файле, например, в блокноте. Это ключ для доступа к HTTP API, с помощью которого вы будете программировать робота, получать и отправлять сообщения. Запомнить получится вряд ли, выглядит он примерно вот так:
4. Добавить аватар, описание, приветственное сообщение. Жмем /help и получаем перечень базовых команд. Тут будут в том числе команды для изменения описания (/setdescription), информации о боте (/setabouttext), для загрузки аватара (/setuserpic) и другие. Мы их продублировали в разделе про настройки.
Теперь бот создан, сохранен и активирован. Но чтобы научить его выполнять какие-то функции и отвечать на команды, бот нужно обучить. Для этого нужно работать с языками программирования, уметь писать код и использовать Bot API — HTTP-интерфейс для работы с ботами в Telegram. Или воспользоваться одним из сервисов-конструкторов. Они помогают создавать логику работы ботов без особых проблем и навыков программирования. О них ниже.
Создание токена
При регистрации бота мессенджер генерирует токен автоматически и выдает в ответном сообщении. Если вы потеряете его или утратите к нему доступ, @BotFather напомнит вам ключ и при необходимости генерирует новый. Для этого заходим к @BotFather → вводим команду /mybots → выбираем необходимого бота и нажимаем кнопку «API Token». Бот выдаст текущий ключ от бота. Если нужно сгенерировать новый, жмем кнопку «Revoke current token». Готово.
Настройки бота
Все настройки бота осуществляются по принципу: пишешь @BotFather команду → он отвечает и предлагает ввести новую настройку → делаешь настройку и отправляешь боту → бот одобряет ее или просит внести правки. Вот список команд, которые можно использовать при базовой настройке:
/setname — коррекция имени робота
/setdescription — коррекция описания. Это краткая характеристика создаваемого бота, что он умеет. Это описание будет видно другим пользователям
/setabouttext — коррекция информации. Это описание профиля, еще короче, чем дескрипшн. Если человек даст кому-то ссылку на вашего бота, то второй человек получит это короткое описание вместе со ссылкой
/setuserpic — коррекция аватарки. Иллюстрация — это всегда хорошо, люди смогут идентифицировать вашего бота в списке контактов по картинке
/setcommands — коррекция перечня команд робота. Это команды в формате «/команда». Их увидят пользователи при использовании вашего бота
/setprivacy — настройка приватности. Нужна на случай, если вы хотите подключить бота в группу включить или ограничить его возможность видеть групповые сообщения
/deletebot — удаляет вашего бота
Полный список команд для настройки вашего робота в @BotFather можно вызвать командой /help.
9 сервисов для простого создания ботов в Telegram
Окей, мы разобрались, как создать бота в Телеграмме. Для этого не нужно уметь программировать, достаточно задать в пару простых команд. Но этого мало — бот еще ничего не умеет. Чтобы создать функционального бота, нужно учиться программировать или использовать специальные сервисы. В них можно прописать логику простого и полезного робота.
Вот вам помощь — 9 продвинутых конструкторов, которые помогут создать и обучить вашего бота без жертвоприношений и изучения кода. Многие из них помогут сделать это бесплатно. Пользуйтесь.
1. Manybot
Сервис разработал бота, который содержит набор подсказок, как создавать ботов. Есть инструкции и видеоуроки на Ютубе. Тут вам помогут:
Стоимость: бесплатно (с рекламой сервиса). На сайте отсутствует информация про тарифы или иные условия, кроме стандартного.
Для чего подойдет: для создания простеньких ботов без многоуровневых меню. Создавать меню с более чем четырьмя уровнями вложенности проблематично через интерфейс бота — не хватает визуализации логики.
2. Botobot
Платформа для создания на базе Телеграм-бота своего онлайн-магазина. Вы можете загружать свои товары через эксель, а пользователи увидят их в виде каталога в телеграм. Бот сможет принимать платежи, делать клиентские рассылки, подключаться к CRM и делать много других полезных штук, например:
Настроить бота не сложно: заполняете в личном кабинете необходимые поля, вписываете токен, и конструктор сам видоизменяет внешний вид вашего бота по заданным параметрам. Запуск бота-магазина реально занимает 15 минут. Но выстроить сложную логику или как-то видоизменить внешний вид меню не получится.
Стоимость. Есть 4 тарифа:
Для чего подойдет: для интернет-магазина.
3. Bottap
Диалоговый конструктор чат-ботов со стандартным набором функций, шаблонами диалогов для нескольких видов бизнеса (кафе, интернет-магазин, доставка пиццы, маникюрный салон, фитнес-тренер) и конструктором для создания собственного кастомного диалога. У сервиса приятный интуитивно понятный интерфейс и не сложное меню. Есть удобные бизнес-фишки:
Для запуска бота нужно сделать минимум действий: вставить в настройках токен бота, создать новый диалог, подключить диалог к боту и готово. Когда вам придет новый заказ из бота, площадка пришлет на e-mail сообщение, а вся необходимая информация отобразится в заказах.
Стоимость: для простеньких задач, вроде создания расписания или учебного бота есть бесплатный тариф «Фан-бот». Если нужен полный функционал с CRM, рассылками, статистикой и поддержкой, нужен тариф «Бизнес-бот» за 490 ₽/месяц.
Для чего подойдет: для бизнеса и создания средних по глубине вложенности ботов.
4. Chatforma
Серьезный, функциональный, но сложный для восприятия конструктор. Чтобы понять логику меню, лучше ознакомиться с обучающими материалами — есть видеоуроки. Если разобраться, найдете в сервисе весь необходимый функционал:
В целом ничего необычного, но есть все, что нужно для создания сложного бота.
Стоимость: есть бесплатная триал-версия для ознакомления с сервисом без ограничения по функциям, но с лимитом в 300 пользователей, работает 14 дней. Дальше — 1000 ₽/месяц за одного бота. Если число юзеров переваливает за 100 тысяч — дополнительно 10 000 ₽/месяц. Дополнительно можно заказать консультацию специалистов сервиса за 3000 ₽ и разработку логики-сценария чат-бота по индивидуальному тарифу.
Для чего подойдет: для создания бота любой сложности, от простого опросника, до сложного интернет-магазина или консультанта.
5. Botmaker
Сервис со стандартным функционалом, ориентированный в первую очередь на разработчиков ботов, которые будут их перепродавать после создания. Тут можно создать бота в телеграм-канал или для бизнеса. Он будет отправлять разного вида сообщения, выставлять формы ввода, делать рассылки и т.д. Приятно удивил простой интерфейс, в котором можно разобраться без специального обучения. Но мы бы не советовали его игнорировать. Из интересного:
Сам конструктор реализован в нескольких вариантах интерфейса для работы с обычными и модульными кнопками. Потратите некоторое время, чтобы разобраться, но в целом ничего сложного.
Стоимость: есть бесплатный тариф без ограничений по времени и количеству созданных ботов. Но в них не будет доступен функционал так называемых «боевых ботов»: возможность передачи админских прав, осуществления рассылок по подписчикам и получения данных из раздела «Аналитика». Чтобы эти функции работали, нужно купить один из платных планов:
Для чего подойдет: для разработки бота любой сложности на перепродажу.
6. Info bot
Примитивный по внешнему виду и функционалу сервис. Понравилось наличие визуального конструктора, в котором можно построить логическую цепочку диалога в виде блок-схемы. Но разобраться в нем — целое дело. Нет никаких подсказок и заголовков, все нужно додумывать самостоятельно. В чем-то до конца разобраться так и не получилось. В сервисе можно:
Стоимость: бесплатная версия работает 10 дней, потом нужно выбрать один из трех тарифов:
Для чего подойдет: для создания онлайн-магазинов и ботов для бизнеса, если разберетесь.
7. Puzzlebot
Сильный сервис для создания ботов любой сложности с удобным интерфейсом, мощным функционалом и понятным визуальным конструктором. Создать бота реально просто: перемещаешь блоки и выстраиваешь связи. В конструкторе есть стандартные функции «как у всех» и много чего оригинального, например:
Стоимость: есть бесплатный план с рекламой и ограничениями по количеству подписчиков (до 150), ботов, команд в конструкторе и по функционалу. Полный набор функций есть в любом из платных тарифов. Но у них тоже есть ограничения:
Для чего подойдет: для создания бота любой сложности.
Недостатки: наличие ограничений даже в платных тарифах.
8. Flow XO
Англоязычный сервис со стандартным набором функций для бизнеса и широкими возможностями для разработчиков. Есть много шаблонов диалогов для разных видов бизнеса, включая бронирование номера или столика, заказ услуги, еды или билетов, ответы на часто задаваемые вопросы, поиск на основании местоположения пользователя и т.д. Визуальный конструктор интересный, но сложный и не всегда поддается логике, разобраться с первого раза не получилось.
Функционал стандартный, из того, что понравилось:
Для чего подойдет: для создания ботов для бизнеса любой сложности, но придется потратить время, чтобы разобраться.
9. Botmother
Botmother — сильный кроссплатформенный конструктор и CMS для чат-ботов. Площадка имеет инструменты для создания, редактирования и развертывания чат-ботов не только в Telegram, но и в Viber, WhatsApp, Facebook, ВКонтакте и Одноклассниках. Их приятного — сложный, но мощный визуальный конструктор, бота можно собрать из готовых блоков-модулей для разных типов сообщений, тут же наполнить их текстом и загрузить в мессенджер. В любом из них, включая Telegram, бот будет работать одинаково. При сборке можно использовать базовые и продвинутые компоненты, такие как логирование, группа кнопок с подсказками или нативный запрос.
Стоимость: есть пробный период — без ограничений по функционалу, но всего на 3 дня. Затем бот перестанет отвечать — нужно выбрать тарифный план и оплатить подписку:
Для чего подойдет: для создания ботов для бизнеса любой сложности.
Что в итоге
Бот в Телеграм — это интерактивное приложение. Его можно запустить самостоятельно с помощью специального бота @BotFather. Но чтобы он умел отвечать на команды и работал для бизнеса, его нужно обучить. Это умеют только программисты.
Если не умеешь программировать, можно использовать специальные конструкторы. Это сервисы, в которых можно собрать логику поведения чат-бота, а конструктор сам его запрограммирует.
Минус использования конструктора — необходимость оплаты подписки для получения бизнес-опций. Многие площадки дают бесплатный доступ к конструктору, но ограничивают возможности разработчика или созданного бота. Чтобы не только создать бота, но и вести с его помощью бизнес, нужно покупать подписку. Оплачивать ее придется постоянно: при отказе от подписки бот перестает отвечать на команды.
На рынке представлено множество конструкторов ботов. Они отличаются по функциональности, интерфейсу, возможностям и ценам на тарифные планы. При выборе площадки нужно соотносить цену, качество предоставляемых услуг и возможности сервиса. На наш взгляд, лучшее соотношение показали платформы Botobot, Bottap и Puzzlebot. Есть и другие хорошие площадки, но эти оказались дешевле других при прочих равных.
Источники информации:
- http://habr.com/ru/company/ruvds/blog/542066/
- http://habr.com/ru/post/549178/
- http://1ps.ru/blog/smm-i-smo/2022/kak-sozdat-bota-v-telegram-poshagovaya-instrukcziya/
- http://tproger.ru/articles/telegram-bot-create-and-deploy/
- http://habr.com/ru/post/657583/
- http://vc.ru/selectel/22593-howto-bot-selectel
- http://habr.com/ru/company/netologyru/blog/326174/
- http://habr.com/ru/post/447006/
- http://okocrm.com/blog/kak-sozdat-chat-bota-v-telegram-samostoyatelno/