From d04312808d3fb2bb570b30aa3768f4bd9da4b1d3 Mon Sep 17 00:00:00 2001 From: Ilia Miheev Date: Tue, 10 Mar 2026 23:39:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 +++-- Readme.md | 34 +++++++++++++++++++++++++++++++++- bot_qr.py | 16 ++++++++++------ 3 files changed, 46 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index d558a03..940489f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -venv/ -.env \ No newline at end of file +.venv/ +.env +.idea/ diff --git a/Readme.md b/Readme.md index e9af6cc..c5953f6 100644 --- a/Readme.md +++ b/Readme.md @@ -1,3 +1,35 @@ ## Телеграм бот для преобразования текста в QR код -Присылаете боту текст, в ответ получаете QR код и небольшую информацию о тексте \ No newline at end of file +Присылаете боту текст, в ответ получаете 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 +``` diff --git a/bot_qr.py b/bot_qr.py index 9281dc6..62afa3f 100644 --- a/bot_qr.py +++ b/bot_qr.py @@ -15,13 +15,17 @@ if API_TOKEN is None: bot = telebot.TeleBot(API_TOKEN) +photoName = None @bot.message_handler(commands=['start']) def start(mess): - bot.send_message(mess.chat.id, 'Привет. Я генерирую QR коды. Отправь мне текст и я его преобразую') + bot.send_message(mess.chat.id, '''Привет. Я генерирую QR коды. Отправь мне текст и я его преобразую. +Код проекта можно посмотреть в репозитории на GitHub''', parse_mode='html') -def gen_qr(text): +def gen_qr(text, id): + global photoName + photoName = f"qrcode_{id}.png" # Создаем экземпляр класса QRCode qr = qrcode.QRCode( version=1, @@ -35,17 +39,17 @@ def gen_qr(text): # Создаем изображение QR-кода img = qr.make_image(fill_color="black", back_color="white") # Сохраняем изображение QR-кода - img.save("qrcode.png") + img.save(photoName) @bot.message_handler(content_types=['text']) def generate_qr_code(mess): - gen_qr(mess.text) + gen_qr(mess.text, mess.from_user.id) text = f'Сообщение: {mess.text}\nСлов в сообщении: {len(mess.text.split())}\nСимволов в сообщении: {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_message(mess.chat.id, text, parse_mode='html') - remove('qrcode.png') + remove(photoName) print('Бот запущен') bot.polling()