Описание запуска через docker

This commit is contained in:
Ilia Miheev
2026-03-10 23:39:32 +03:00
parent d8f3fca2cb
commit d04312808d
3 changed files with 46 additions and 9 deletions
+2 -1
View File
@@ -1,2 +1,3 @@
venv/ .venv/
.env .env
.idea/
+32
View File
@@ -1,3 +1,35 @@
## Телеграм бот для преобразования текста в QR код ## Телеграм бот для преобразования текста в QR код
Присылаете боту текст, в ответ получаете QR код и небольшую информацию о тексте Присылаете боту текст, в ответ получаете QR код и небольшую информацию о тексте
## Инструкция по запуску
- Создать в директории на удалённом сервере файл docker-compose.yaml
```bash
sudo nano docker-compose.yaml
```
- В него написать следующий текст:
```txt
services:
bot_qr:
image: iliamiheev/bot_qr:latest
container_name: bot_qr
env_file:
- .env
```
Далее Ctrl + O, Enter, Ctrl + X
- В этой же директории создать файл с переменными окружения
```bash
sudo nano .env
```
- В него занести единственную переменную — токен от телеграм бота
```txt
API_TOKEN={{ВАШ ТОКЕН}}
```
- Все приготовления завершены, запустить бота
```bash
sudo docker compose up -d
```
- Теперь на машине должен быть запущен контейнер с именем bot_qr. Проверить это можно введя
```bash
sudo docker ps
```
+10 -6
View File
@@ -15,13 +15,17 @@ if API_TOKEN is None:
bot = telebot.TeleBot(API_TOKEN) bot = telebot.TeleBot(API_TOKEN)
photoName = None
@bot.message_handler(commands=['start']) @bot.message_handler(commands=['start'])
def start(mess): def start(mess):
bot.send_message(mess.chat.id, 'Привет. Я генерирую QR коды. Отправь мне текст и я его преобразую') bot.send_message(mess.chat.id, '''Привет. Я генерирую QR коды. Отправь мне текст и я его преобразую.
Код проекта можно посмотреть в <a href="https://github.com/IliaMiheev/bot_qr">репозитории</a> на GitHub''', parse_mode='html')
def gen_qr(text): def gen_qr(text, id):
global photoName
photoName = f"qrcode_{id}.png"
# Создаем экземпляр класса QRCode # Создаем экземпляр класса QRCode
qr = qrcode.QRCode( qr = qrcode.QRCode(
version=1, version=1,
@@ -35,17 +39,17 @@ def gen_qr(text):
# Создаем изображение QR-кода # Создаем изображение QR-кода
img = qr.make_image(fill_color="black", back_color="white") img = qr.make_image(fill_color="black", back_color="white")
# Сохраняем изображение QR-кода # Сохраняем изображение QR-кода
img.save("qrcode.png") img.save(photoName)
@bot.message_handler(content_types=['text']) @bot.message_handler(content_types=['text'])
def generate_qr_code(mess): def generate_qr_code(mess):
gen_qr(mess.text) gen_qr(mess.text, mess.from_user.id)
text = f'<b>Сообщение:</b> {mess.text}\n<b>Слов в сообщении:</b> {len(mess.text.split())}\n<b>Символов в сообщении:</b> {len(mess.text)}' text = f'<b>Сообщение:</b> {mess.text}\n<b>Слов в сообщении:</b> {len(mess.text.split())}\n<b>Символов в сообщении:</b> {len(mess.text)}'
with open('qrcode.png', 'rb') as qr_photo: with open(photoName, 'rb') as qr_photo:
bot.send_photo(mess.chat.id, qr_photo) bot.send_photo(mess.chat.id, qr_photo)
bot.send_message(mess.chat.id, text, parse_mode='html') bot.send_message(mess.chat.id, text, parse_mode='html')
remove('qrcode.png') remove(photoName)
print('Бот запущен') print('Бот запущен')
bot.polling() bot.polling()