Qerriom Magnelius, вам моё предложение кажется заморочным и излишним. Ваше право. Но время на разбиение и отладку по частям парадоксальным образом будет тем меньше, чем мельче детали вы сделаете и чем больше деталей у вас будет.
Qerriom Magnelius, ну вот я вас спрошу:
В какой именно строчке приведённого кода проблема?
Вы сможете ответить? Я бы затруднился.
Возможно, какая-то из них работает не так, как вы ожидаете. Какая? :/
Потому я и предлагаю разбить всё на много маленьких функций и проверять по частям.
Можно, конечно, поступить иначе:
В дебаггер все пошагово проходить и смотреть, на каком шаге в какой переменной не то, что ожидается.
Но с этим подходом проблема в том, что много всего разом и трудно не запутаться.
Проблему надо делить. Вашу мегафункцию надо делить обязательно, это плохо, когда функция делает это и это и это и это…
Qerriom Magnelius, тогда давайте подробностей. Код есть. Но что по-вашему не так? Где именно вас не устраивает синтаксис? Почему?
Вообще по коду:
Если подумать, приведённый код можно разделить на части:
Основная функция с декоратором, который контролирует сообщения и отдает объект message остальным частям кода;
Часть кода, получающая данные, используя message
Часть кода, генерирующая имя файла
Часть кода, сохраняющая данные в файл со сгенерированным именем
Часть про отправку сообщения о работе бота
Какая-то myqr, которая принимает полученные данные
Создание нового сообщения
Открытие ранее созданного файла
Попытка отправки открытого файла (без закрытия!)
Запуск какого-то get_menu
Такое огромное количество разных функций в одной. Надо всё это разложить в разные функции, а внутри основной функции лишь сделать вызов всех этих отдельных функций с передачей из одной в другую нужных объектов.
И отлаживать каждую по-отдельности. В идеале обвесить каждую проверками типов того, что приходит, а также тестами.
Вот если всё это сделать, то можно будет относительно легко найти, где у вас проблема. Да вы и сам легко найдете.
Мысленно разгребать же груду разнообразных строк, пытаясь понять, в какой из них у вас что-то не так… увольте-с.
Mind2077, да хоть про луны Юпитера. На тэг python подписано почти 40 тыс. читателей. Не надо спамить всем им вашими траблами с ботом и ИИ. Ни кода python, ни существенных деталей, касающихся языка… при чем тут тэг python?
Qerriom Magnelius,
На вопрос «как сделать» отвечает документация и поиск в интернет.
Тут отвечают на вопросы «почему я сделал так, как в документации, а оно не работает. Поискал в интернет, вот запросы, в ответах не нашел. Что я делаю не так?»
Покажите, как вы пробовали решить проблему, приведите код попытки (пусть неудачной), опишите, как запускали, что ожидали и что получилось.
За готовыми решениями - на фриланс. В текущем виде это не вопрос, а задание. Нарушен п.5.12 Регламента.
Вообще, можно сделать в интересующем вас классе признак изменения; признак выставлять при любом изменении; экземпляры класса при создании сложить в список, и периодически перебирать этот список, проверяя признак изменения. Обнаружив признак установленным, обработать изменённый экземпляр, и сбросить признак.
Альтернативный вариант – переносить изменённые экземпляры в отдельный список, типа стека или очереди, а после обработки возвращать в общий список.
Если хранить экземпляры в словаре, а не списке, то можно при изменении экземпляра имя ключа, соответствующего измененному экземпляру, складывать в списочек «имена изменённых экземпляров», а после обработки экземпляров – убирать из этого списка.
Необходимо привести код проекта, чтобы понять, почему данные не передаются. Со слов ничего не понятно. Если код слишком длинный, его можно отредактировать, оставить только существенное для вопроса. Длинную портянку кода желательно спрятать под спойлер.
Послушайте доброго совета.
4 день в питоне - чересчур рано для ботов.
Вот был бы 4-й месяц плотного изучения - можно было бы попробовать.
Сейчас вы как студент 1 курса медвуза, пытающийся выполнить операцию аппендицита. Рановато…
Александр Антонов, ИИ не умеют мечтать. В остальном они каждый в своей области лучше человека. Они как джинн из сказки - всемогущий, он ждёт от вас желаний.
Человек - это генератор желаний.
Александр Антонов, ну, может Вам и будет любопытно сделать задачку за автора. Мало ли кому что прикольно :) кому-то просто размять "мозговую мышцу".
Я бы сейчас на месте всех попрошаек просто спрашивал бы ChatGPT - он, если его правильно спросить, вполне адекватные решения дает. Но, видимо, даже на это не все способны.
Константин, признаться, не вижу вообще смысла помогать вам. У вас половина вопросов - "сделайте за меня". Вы совершенно не обучаетесь и не пытаетесь хотя бы делать свои вопросы в соответствии с Регламентом данного ресурса. Вам просто пофиг.
Ну и кто захочет помогать-то? Люди тут делают это потому, что им "по-приколу". Но им хочется хоть немного уважения.
Вы серьёзно думаете, что кто-то будет читать весь код? Всю эту портянку?
Вы должны сами разобраться, в какой части у вас проблемы, попытаться понять, как надо устранять, попробовать устранить. И прийти сюда и сказать: вот тут проблема, вот так я её пытался решить, и вот такая фигня получилась.
А в текущем виде это не вопрос, а задание «разберитесь за меня».
Заметки на полях:
Имена функций желательно писать в виде rebith_func
А стилем, которым у вас написано, надо именовать классы.
Затем, имя функции должно отражать действие (глагол), что именно делает функция. К примеру import_rebith_func, чтобы при чтении кода не надо было читать тело функции, чтобы понять, что она делает.