Меню Рубрики

Установка и настройка бота

Создание и хостинг телеграм бота. От А до Я

Привет, хабрчане! Какой бы заезженной не была тема создания телеграм бота на python3, я не нашёл инструкций, где показан путь от первой строчки кода до деплоинга бота (по крайней мере все методы, что я видел, немного устарели). В этой статье я хочу показать процесс создания бота от написания BotFather-у до деплоинга бота на Heroku.

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

P.S. Пишите если нужна статья по созданию более сложного бота, т.е. с вебхуками, БД с настройками юзеров и т.д.

BotFather

Для начала нам надо зарегистрировать нашего бота в Telegram. Для этого:

В поиске вбиваем @BotFather и переходим в диалог с Отцом Ботов.

Пишем /newbot. Указываем имя бота (то, что отображается в диалогах). Указываем его логин, по которому его можно булет найти.

P.S. Оно должно заканчиваться на Bot/bot

Вот. Нам дали API ключ и ссылку на бота. Желательно сохранить API ключ и перейти в диалог с ботом, чтобы потом не копаться в переписке с BotFather

Дальше добавим ему пару команд: пропишем /setcommands и одним сообщением, т.к. /setcommands не добавляет команды, а задаёт их с нуля, пошлём ему команды.

all — спарсить заголовки с вкладки «ВСЁ ПОДРЯД»
top — спарсить заголовки с вкладки «ЛУЧШЕЕ»

На этом работа с 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. Также мы построили небольшое ветвление, для ответа на определённые сообщения, а также ответ на случай непонятного боту сообщения.

Читайте также:  Установка касперский фри 2016

Основы взаимодействия. Ответ на картинки, документы, аудио и прочие.

Для ответа на картинки, стикеры, документы, аудио и т.д. нужно всего лишь поменять 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.

В написании маркапов нет ничего сложного. Нужно лишь создать маркап, указать пару параметров, создать пару кнопок и добавить их в маркап, далее просто указываем reply_markup=markup в send_message .

В параметры маркапа указываем ширину строки и изменение размеров кнопок, иначе они огромны.

Применим полученные знания к нашему боту.

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

Деплоим бота на Heroku.

Для начала надо зарегистрироваться на Хероку и на Гитхабе.

Теперь создаём репозиторий на гитхабе. (нажмите плюсик слева от вашего аватара)
Сейчас нам нужен Procfile (Procfile.windows для windows). Создаём его и записываем в него bot: python3 bot.py

Теперь удаляем TOKEN из bot.py, здесь он не нужен, ведь мы будем загружать этот файл на гитхаб. Через тот же терминале, что использовали для запуска бота, заливаем файлы на гитхаб. (Предворительно удалите папку __pycache__).

Читайте также:  Установка испытания диэлектрических защитных средств

Гит просит логин и пароль, спокойно вводим и преступаем к деплоингу бота на хероку. Пишем всё в том же терминале.

Теперь возвращаем TOKEN в bot.py, здесь он нужен, ведь мы будем загружать этот файл на хероку.

Чтобы выключить бота
И, не забываем перед залитием на гитхаб и удалить TOKEN из нашего bot.py. Ведь нам не нужно, чтобы кто-то им пользовался. Можно конечно воспользоваться .gitignore и вынести токены в отдельный фай.

Поздравляю!

Работа окончена, бот работает удалённо.

Ссылки

Заключение

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

источник

Общие моменты настройки ботов в Телеграм

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

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

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

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

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

Так как для этого нужны знания PHP он нанял нескольких программистов. После того, как настройка бота была завершена весь процесс управления его функционалом производится с помощью специальных команд: /start – для запуска, /setdate – установка даты для публикации материала, /settime – установка времени.

Это позволило администратору данной площадки упростить процесс публикации контента.

Настройка бота Телеграм

Конечно же, нет никакой необходимости в том, чтобы писать бота с нуля. Перед тем, как настроить бота в Телеграм , вам нужно найти его. Для этого введите его логин в поиске мессенджера. Для примера возьмем аккаунт поисковика Яндекс @ya.

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

Для этого напишите в переписке /settings.

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

В меню появятся дополнительные функции, которые вы также можете наблюдать в поисковой системе Яндекс: Новости, Переводчик, Курсы валют и т.д.

Как настроить ботов Телеграм через профиль

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

В открывшемся меню выберите пункт «Показать профиль».

В окне информации нажмите «Настройки».

В случае с приложением для мобильных устройств выполните следующие действия:

  1. Откройте приложение Telegram.
  2. Зайдите в нужный вам аккаунт бота.
  3. В открывшемся окне чата нажмите на иконку из трех точек в правом верхнем углу.
  4. Выберите пункт «Настройки».

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

Настройка ботов с помощью BotFather

Вы можете создать нового бота и задать свои функции и команды. Для этого вам понадобится аккаунт @BotFather.

Читайте также:  Установка концевого крана вагона

Найдите его в поиске приложения Телеграм и откройте.

Здесь вы можете перейти по ссылкам и получить подробную информацию о том, что такое боты в Telegram и API. Если у вас есть какие-либо вопросы касательно работы с API бота, то вы можете обратиться в техническую поддержку @BotSupport.

Для начала работы нажмите запустить. Перед вами откроется полный список команд для управления BotFather: создание и настройка ботов.

Введите команду /newbot в чат.

Дальше система попросит вас указать его название. Введите команду /setname и укажите имя.

После этого система оповестит об успешном завершении процесса установки имени.

Теперь нужно указать описание. Для этого введите /setdescription.

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

Создаем и настраиваем дополнительные функции боту

Теперь перейдем к установке аватарки для нашего акаунта. Для этого нужно ввести /setuserpic. После того, как команда введена – прикрепите фотографию.

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

На этом процесс установки аватарки завершен.

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

Чтобы начать этот процесс введите /setcommands в чате. Команды вводятся без знака «/». Вводите их в формате command1 – description.

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

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

У созданного вами аккаунта имеются три глобальные команды:

  1. /start – этот синтаксис используется для запуска.
  2. /help – синтаксис открывает окно помощи: информация об аккаунте, описание, инструкция.
  3. /settings – эта команда позволяет другим пользователям настраивать вашего бота под свои нужды.

Общие проблемы

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

Не срабатывают команды. Иногда появляется такая проблема, что на некоторых ботах не работают команды, которые отвечают за процесс настроек. Если это аккаунт, созданный не вами, а другими пользователями Telegram, то причинами этого могут стать:

  • вы неверно ввели команду;
  • разработчик удалил этот синтаксис или случился баг;

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

Если команды не срабатывают в боте, созданном вами через FatherBot, то вам нужно снова задать ее через синтаксис /setcommands. К сожалению, иногда случаются баги, из-за которых некоторые команды исчезают и их нужно указать заново.

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

источник

Добавить комментарий

Adblock
detector