В этом видео я покажу как установить телеграм бота на хостинге (сервере), также настроим сервер и установим всё необходимое для нормальной работы бота на aiogram с Базой Данных PostgreSQL.
========================================
Установка PyCharm + Python — https://youtu.be/Vts5X16VGiE
Установка PostgreSQL и pgAdmin4 — https://youtu.be/wtfxV7QXYKo
========================================
Полезные ссылки:
Подписка на канал — https://www.youtube.com/c/Redlyy?sub_confirmation=1
Плейлист по разработке асинхронного телеграм бота на Python — https://youtube.com/playlist?list=PLPELDof3v08efHGT3gVLPCXG5cKRo50Nn
========================================
Команды для сервера:
sudo apt update Обновляем пакеты на сервере
sudo apt -y upgrade Обновляем пакеты на сервере
dpkg-reconfigure locales Устанавливаем нужные нам языки
LANG=en_US.UTF-8 Выбираем язык с нужной кодировкой
sudo apt -y install python3-pip Устанавливаем pip3
За 10 минут — выгрузка (деплой) телеграм-бота на хостинг и его запуск.
sudo apt -y install build-essential libssl-dev libffi-dev python3-dev Устанавливаем несколько дополнительных пакетов и средств разработки
sudo apt install -y python3-venv Устанавливаем виртуальное окружение(VENV)
sudo apt -y install postgresql postgresql-contrib Устанавливаем postgresql и дополнительный пакет -contrib, который содержит дополнительные утилиты и функциональные возможности
sudo -i -u postgres Заходим из под пользователя postgres
createuser —interactive Создаем новую роль
sudo adduser gino Добавляем нововго пользователя
createdb gino Создаем базу данных gino
alter role gino login password ‘Vlad1234’; Изменяем пароль для пользователя gino
sudo apt -y install screen Устанавливаем screen(нужен для запуска отдельного окна в фоне)
Команды для скрина:
screen -S screen_name — Создаем новый скрин
screen -ls — Посмотреть список запущенных скринов
screen -r screen_name — Открыть уже запущенный скрин
Ctrl + A + D — Свернуть запущенный скрин
Ctrl + A и ввести команду :quit — Выключить скрин
#Redly #Python #Telegram #TelegramBot #Деплой #Бот #Deploy
Источник: best-coding.ru
Как установить БОТА telegram на обычный хостинг
Listen to this article
Чтобы открыть контент, необходимо пройти быструю регистрацию или войти в свой профиль. После этого Вы получите полный доступ ко всем материалам на портале.
Установка Telegram бота на ХОСТИНГ (СЕРВЕР) | Настройка сервера
Спасибо что вы с нами!
Создание и хостинг телеграм бота
Привет, хабрчане! Какой бы заезженной не была тема создания телеграм бота на python3, я не нашёл инструкций, где показан путь от первой строчки кода до деплоинга бота (по крайней мере все методы, что я видел, немного устарели). В этой статье я хочу показать процесс создания бота от написания BotFather-у до деплоинга бота на Heroku.
Статья получилась длинной, советую пробежаться глазами по содержанию и кликнуть по интересующему вас пункту.
P.S. Пишите если нужна статья по созданию более сложного бота, т.е. с вебхуками, БД с настройками юзеров и т.д.
- BotFather.
- Установка и настройка pipenv. Первый запуск.
- Хэндлеры. Отвечаем на команды и сообщения.
- Основы взаимодействия. Ответ на команды.
- Основы взаимодействия. Ответ на текстовые сообщения.
- Основы взаимодействия. Ответ на картинки, документы, аудио и прочие.
- Строим цепочку ответов.
- Добавляем парсер в цепочку.
- Теория. Методы взаимодействия с ботом.
- Маркапы. Добавляем клавиатуры для быстрого ответа.
- Деплоим бота на Heroku.
- Ссылки.
- Заключение.
BotFather
Для начала нам надо зарегистрировать нашего бота в Telegram. Для этого:
Пишем /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. Также мы построили небольшое ветвление, для ответа на определённые сообщения, а также ответ на случай непонятного боту сообщения.
Основы взаимодействия. Ответ на картинки, документы, аудио и прочие.
Для ответа на картинки, стикеры, документы, аудио и т.д. нужно всего лишь поменять 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, так будет проще читать код.
По итогу парсер возвращает нам строку с заголовками статей, основываясь на наших запросах.
Пробуем, используя полученные знания, написать бота связанного с парсером. Я решил создать отдельный класс (это скорее всего неправильный метод, но это уже относится к питону, а не к основной теме статьи), и в объекте этого класса хранить изменяемые данные.