В текущем виде - Ваш вопрос это задание вида "нагуглите/сделайте за меня", а задания запрещены правилами (п.5.12). Здесь помогают решить конкретные проблемы, возникшие в процессе ваших попыток решить задачу.
За готовым результатом обращайтесь на фриланс. За примерами\гайдами - в поисковик.
В таком случае могу посоветовать только две вещи:
1.Отложите бота и потратьте некоторое время на изучение базовых вещей.
2.Ошибки читаются снизу-вверх и в подавляющем большинстве случаев снабжены исчерпывающими комментариями на английском (и текущий случай не исключение - в последней строке четко написано какой библиотеки не хватает для корректной работы).
AJIEKC_10, Вообще, чтобы данные сохранились в базе нужно выполнять коммит по завершению запросов.
В модулях для python, с которым я работаю, это, обычно, нужно делать вручную:
connection.commint() # connection - класс подключения к базе.
Может: db.run(sql_pdf, data.pdf, email, cb)
DB/run автоматически выполняет коммит, но тут я без понятия.
Вообще, хранить в базе файлы - в большинстве случаев, не самая лучшая затея. Лучше хранить в поле путь до файла на сервере.
Касательно именно темы вопроса. Не знаком с нодой, но навскидку:
Не вижу, где выполняется коммит.
Нет проверки "не выдал ли запрос к базе ошибку (собственно может это запрос падает)".
Максим Максимович, в таком случае смотрите, что пишется в консоли(если команда в принципе не работает, там появится ошибка), проверяйте значения переменных, поэтапно проверяйте на каком этапе команда падает.
(На очевидные моменты указал, в остальном - сейчас не у пк и посмотреть на поведение лично не могу)
В таком случае находите любой структурированный материал по изучению языка (например книгу "Изучаем Python" 5-е издание" Марка Лутца) и читаете, попутно практикуясь на примерах. То, что вам лень учиться или гуглить (каждый из пунктов - элементарно ищется в поисковике), не значит, что кто-то захочет писать за вас.
За готовым результатом обращайтесь на фриланс. За примерами\гайдами - в поисковик.
Здесь помогают решить конкретные проблемы, возникшие в процессе ваших попыток решить задачу.
За готовым результатом обращайтесь на фриланс. За примерами\гайдами - в поисковик.
Здесь помогают решить конкретные проблемы, возникшие в процессе ваших попыток решить задачу.
Ну и где примеры того, как пробовали?
Далее, подсказка - даже в приведенном вами куске кода есть инструмент для реализации необходимого вам функционала.
Если вы не понимаете о чем речь то, вероятно, писать ботов еще рановато и стоит изучить основы языка.
К слову, eval - очень опасная функция, которая выполнит любые валидные инструкции, которые передастся в нее.
В том числе и код python (просто для примера - вставьте это print("Какой-то текст") в консоль, вместо мат.выражения.
С такой-же легкостью eval выполнит любой другой код.
helldess,
В случае, когда данные обновляются в произвольное время (как в текущем случае, когда запрос выполняется при взаимодействии с пользователем), то да, стоит коммитить каждый раз.
helldess,
В случае, когда данные обновляются в произвольное время (как в текущем случае, когда запрос выполняется при взаимодействии с пользователем), то да, стоит коммитить каждый раз.
helldess, ну значит и результат будет "после".
В приведенном коде обращение к классу BotDB, который отвечает за работу с базой, происходит дважды:
Для получения баланса;
Для обновления значений;
Метод получения баланса выполняется первым и коммитить не может (и не должен).
Метод обновления выполняется вторым и коммит в нем явно не прописан.
И чисто логически - на момент завершения выполнения кода коммит для данного запроса все еще не отработал.
За готовым результатом обращайтесь на фриланс. За примерами\гайдами - в поисковик.