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 в командную строку, мне пишет, что этот файл или дериктория не найден
fix invalid codeWed, 19 Apr 2023