Generation

fix invalid codeWed, 19 Apr 2023

code from barcode.writer import ImageWriter import re from aiogram import Bot, types from aiogram.dispatcher import Dispatcher from aiogram.types import ParseMode from aiogram.utils import executor # инициализируем бота и диспетчер bot = Bot(token="6204896584:AAGGaMRpMqtbc91aPds9cckOAy5ubsMOk7E") dp = Dispatcher(bot) # функция, которая генерирует штрих-код и отправляет его пользователю async def generate_barcode(message: types.Message): # получаем текст из сообщения пользователя text = message.text # проверяем, что текст состоит из одной или нескольких строк из 16 цифр if re.match(r"^(\d{16}\s*)+$", text): # разбиваем текст на строки lines = text.strip().split("\n") # для каждой строки генерируем штрих-код и отправляем его пользователю for line in lines: # генерируем штрих-код и сохраняем его в буфер code = barcode.get("code128", line, writer=ImageWriter()) buffer = io.BytesIO() code.write(buffer) # отправляем пользователю изображение штрих-кода buffer.seek(0) await bot.send_photo(chat_id=message.chat.id, photo=buffer) # добавляем кнопки "назад" и "сгенерировать еще" await message.answer("Хотите сгенерировать еще штрих-коды?", reply_markup=types.ReplyKeyboardMarkup( keyboard=[ [types.KeyboardButton(text="Назад")], [types.KeyboardButton(text="Сгенерировать еще")] ], resize_keyboard=True )) else: # если данные некорректны, отправляем сообщение с инструкцией await message.answer("Введите одну или несколько строк из 16 цифр.\n\n" "Пример корректного ввода:\n" "1234567890123456\n" "2345678901234567\n" "3456789012345678", parse_mode=ParseMode.HTML) # функция, которая отправляет пользователю инструкцию async def show_instructions(message: types.Message): instructions = "Инструкция для пользования ботом:\n\n" \ "1. Нажмите кнопку 'Начать работу'.\n" \ "2. Введите одну или несколько строк из 16 цифр.\n" \ "3. После ввода данных бот отправит вам изображение штрих-кода(ов).\n" \ "4. Если вы хотите сгенерировать еще штрих-коды, нажмите кнопку 'Сгенерировать еще'.\n" \ "5. Если вы хотите вернуться в главное меню бота, нажмите кнопку 'Назад'.\n\n" \ "Приятного использования!" await message.answer(instructions, parse_mode=ParseMode.HTML) # функция, которая обрабатывает нажатие на кнопки "Назад" и "Сгенерировать еще" async def handle_back_or_generate_more(message: types.Message): # если пользователь нажал кнопку "Назад", отправляем его в главное меню if message.text == "Назад": await send_main_menu(message.chat.id) # если пользователь нажал кнопку "Сгенерировать еще", запускаем функцию генерации штрих-кодов elif message.text == "Сгенерировать еще": await message.answer("Введите одну или несколько строк из 16 цифр.") dp.register_message_handler(generate_barcode) # функция, которая отправляет пользователю главное меню async def send_main_menu(chat_id): await bot.send_message(chat_id, "Выберите одну из опций ниже:", reply_markup=types.ReplyKeyboardMarkup( keyboard=[ [types.KeyboardButton(text="Начать работу")], [types.KeyboardButton(text="О нас")] ], resize_keyboard=True )) # обработчик нажатия на кнопку "Начать работу" @dp.message_handler(text="Начать работу") async def start_work(message: types.Message): await message.answer("Введите одну или несколько строк из 16 цифр.") dp.register_message_handler(generate_barcode) # обработчик нажатия на кнопку "О нас" @dp.message_handler(text="О нас") async def about_us(message: types.Message): await show_instructions(message) # регистрируем обработчик нажатия на кнопки "Назад" и "Сгенерировать еще" dp.register_message_handler(handle_back_or_generate_more) if name == 'main': executor.start_polling(dp, skip_updates=True) Когда я ввожу python bot.py в командную строку, мне пишет, что этот файл или дериктория не найден

Want to kickstart your project?Use the new AI Studio to create your code