Акмалов Артур

Proxmox Telegram Bot Linux

Proxmox Telegram Bot Linux

Ubuntu LXC - aiogram bot server

Proxmox Telegram Bot Linux

Введение:

Имеется сервер Proxmox, созаданный в телеграм бот (BotFather), готовый код программы на Python с использованием aiogram. Все запускается и работает на PyCharm, протестирован и отлажен, желание перенести на сервер чтобы освободить рабочий ПК. 

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

Цель:

Запустить телеграм бота написаного на Python aiogram в LXC на сервере Proxmox.

Create LXC Container

Использую стандартный шаблон: ubuntu-21.04-standard_21.04-1_amd64.tar.gz

Далее создаю все стандартно по минимуму: Disk 10Gb, 2 Cores. 512 RAM

Запускаю и обновляю систему:

apt-get update && apt-get upgrade -y 

Устанавливаю Python и библиотеку aiogram

apt install python3-pip
pip install aiogram 

В боте планируется отправлять сообщения на русском поэтому ставлю русские локали. Часовой пояс сразу так же укажу свой

locale-gen en_US.UTF-8 ru_RU.UTF-8
dpkg-reconfigure locales

timedatectl set-timezone asia/yekaterinburg 

Start Telegram Bot

Создаю папку для проекта

mkdir TgBot 

Создаю Python файл

И внутри вставляю простой код для проверки работы. Данный бот повторяет все что ему написали.

nano main.py 
from aiogram import Bot, Dispatcher, executor, types

API_TOKEN = 'your own token'

bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)


@dp.message_handler(commands=['start', 'help'])
async def send_welcome(message: types.Message):
    await message.reply("Hi Привет")


@dp.message_handler()
async def echo(message: types.Message):
    await message.answer(message.text)
    print (f"{message.from_user.id} Написал: {message.text}" )

if __name__ == '__main__':
    executor.start_polling(dp) 

Выхожу с редактора, сохраняю и запускаю бота

python3 main.py 

Проверяю в телеграм

Proxmox Telegram Bot Linux

Все отлично бот работает, по русски отвечает

Дополнения

Сервис systemd

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

Вариантов много, например:
1. Запустить скрипт в bash с nohup.
2. Запускать скрипт в сессии tmux и просто детачиться из неё. Сессия продолжит работать. Это всё тот же ручной запуск скрипта.
3. Создать сервис systemd.
4. Запускать в фоне с помощью supervisor.

Правильнее всего для бота который будет 24 часа в сутки работать на сервере, будет именно создание сервиса (3 вариант)

GitHub

Для удобной отладки, редактирования и обновления кода желательно установить Git

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии