• Телеграм бот перестает работать, пишет ошибка в базе данных. Где ошибка?

    Vindicar
    @Vindicar
    RTFM!
    Включи голову и подумай.
    Судя по ошибке, у тебя в таблице users ID пользователя - уникальный ключ.
    Запрос на создание таблицы у тебя не содержит указания ключа, что, к слову, нехорошо. Я полагаю, ты убрал запись о ключе в какой-то момент, но не пересоздал таблицу.
    Ты записываешь в эту таблицу данные о пользователе всякий раз, когда получаешь команду /start.
    Внимание, вопрос: что произойдёт, если пользователь введёт /start ещё раз?
    Прааааавильно, бот попытается создать ещё одну запись для этого пользователя. Что запрещено наличием первичного ключа.

    Для начала ответь себе на вопрос: что тебе нужно сделать в базе, если пользователь ввёл /start ещё раз?
    Ничего? Читай про форму INSERT OR IGNORE, она как раз позволяет молча пропустить запись, если такой первичный ключ уже есть.
    Сообщить пользователю? Тогда сначала проверь в базе наличие записи для этого пользователя, и если она есть - сообщай, если её нет, то вноси в базу.
    Ответ написан
    Комментировать
  • Как вывести фото на экран?

    Vindicar
    @Vindicar
    RTFM!
    Заголовок Content-Type попробуй прописать, в конструкторе Response. Без него сервер не знает, что ты отдаёшь, и отдаёт контент как application/octet-stream, т.е. какой-то произвольный бинарный блоб. А такие вещи браузер может только сохранить.
    Тебе нужно знать формат твоего файла, и отдать правильный content type, например, image/jpeg.
    Ответ написан
    1 комментарий
  • Как улучшить данную реализацию?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Не использовать Popen. Лучше всего код из executer/__main__.py переписать, как асинхронный модуль, импортировать в скрипт и запускать в цикле событий. Если это невозможно, то использовать какую-нибудь очередь задач, с которой можно асинхронно работать. В крайнем случае использовать run_in_executor, но лучше не надо.
    Ответ написан
    1 комментарий