Подправлена структура проекта, сообщения бота вынесены из кода, обновлены зависимости
Бот вынесен из корня в src/bot_qr.py. Строки интерфейса вынесены в language.json, чтобы не хардкодить их в коде. В requirements.txt обновлены зависимости под новый запуск.
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
from dotenv import load_dotenv
|
||||
from sys import exit as sexit
|
||||
import os
|
||||
import json
|
||||
|
||||
import telebot
|
||||
import qrcode
|
||||
|
||||
# Загрузить переменные из файла .env и language.json
|
||||
load_dotenv()
|
||||
with open('./src/language.json', 'r', encoding='utf-8') as file:
|
||||
language = json.load(file)
|
||||
|
||||
# Получить значение переменной
|
||||
API_TOKEN = os.getenv("API_TOKEN")
|
||||
|
||||
if API_TOKEN is None or API_TOKEN == "":
|
||||
print(language['no_token'])
|
||||
sexit(1) # Завершаем программу с кодом ошибки 1
|
||||
|
||||
|
||||
bot = telebot.TeleBot(API_TOKEN)
|
||||
photoName = None
|
||||
|
||||
@bot.message_handler(commands=['start'])
|
||||
def start(mess):
|
||||
bot.send_message(mess.chat.id, language['start'], parse_mode='html')
|
||||
|
||||
|
||||
def gen_qr(text, id):
|
||||
global photoName
|
||||
photoName = f"qrcode_{id}.png"
|
||||
# Создаем экземпляр класса QRCode
|
||||
qr = qrcode.QRCode(
|
||||
version=1,
|
||||
error_correction=qrcode.constants.ERROR_CORRECT_H,
|
||||
box_size=10,
|
||||
border=1,
|
||||
)
|
||||
# Добавляем данные в QR-код
|
||||
qr.add_data(text)
|
||||
qr.make(fit=True)
|
||||
# Создаем изображение QR-кода
|
||||
img = qr.make_image(fill_color="black", back_color="white")
|
||||
# Сохраняем изображение QR-кода
|
||||
img.save(photoName)
|
||||
|
||||
|
||||
@bot.message_handler(content_types=['text'])
|
||||
def generate_qr_code(mess):
|
||||
gen_qr(mess.text, mess.from_user.id)
|
||||
text = language['qr_info'].format(
|
||||
text=mess.text,
|
||||
words=len(mess.text.split()),
|
||||
chars=len(mess.text)
|
||||
)
|
||||
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')
|
||||
os.remove(photoName)
|
||||
|
||||
print(language['bot_started'])
|
||||
bot.polling()
|
||||
print(language['bot_stopped'])
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"start": "Привет. Я генерирую QR коды. Отправь мне текст и я его преобразую. Код проекта можно посмотреть в <a href=\"https://github.com/IliaMiheev/bot_qr\">репозитории</a> на GitHub",
|
||||
"no_token": "Отсутствует токен телеграм бота. Загрузи токен в переменные окружения и бот сможет начать работу",
|
||||
"bot_started": "Бот запущен",
|
||||
"bot_stopped": "Бот отключён",
|
||||
"qr_info": "<b>Сообщение:</b> {text}\n<b>Слов в сообщении:</b> {words}\n<b>Символов в сообщении:</b> {chars}"
|
||||
}
|
||||
Reference in New Issue
Block a user