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()