• Как продолжить работу бота?

    Vindicar
    @Vindicar
    RTFM!
    Потому что надо документацию читать, и понимать, за что отвечает параметр func в callback_query_handler(), а не перепечатывать с ютуба.
    Для общего понимания можешь глянуть мой старый ответ.
    Если коротко, ты сам сказал телеботу, что full_calc() должна обрабатывать ВСЕ нажатия на кнопки.
    Ответ написан
  • Почему fetch в ответе возвращает promise, а не объект?

    Vindicar
    @Vindicar
    RTFM!
    Потому что Response наверняка содержит только заголовки и статус ответа, а сам ответ ещё не скачан. blob(), text() и json() его скачивают и разбирают, а скачивание как раз и требует промис, чтобы не подвешивать браузер.
    Ответ написан
    Комментировать
  • Как скачать и установить шрифты в html?

    Vindicar
    @Vindicar
    RTFM!
    Когда у меня встала такая задача, я загнал шрифт в CSS файл.
    @font-face {
    	font-family: 'My Super Font';
    	src: url('data:application/octet-stream;base64,тут-идёт-woff-файл-шрифта-в-base64') format('woff');
    	font-weight: normal;
    	font-style: normal;
    }

    Ну и конечно, можно загнать сам CSS внутрь HTML через тег style. Хотя это изврат будет.
    Ответ написан
    Комментировать
  • Как вставить строку на индекс, вне зависимости от того существует он или нет?

    Vindicar
    @Vindicar
    RTFM!
    l[2:] = ['Test']
    Для двух-трёх строк сработает.
    Ответ написан
    Комментировать
  • Почему возникает ошибка в telethon?

    Vindicar
    @Vindicar
    RTFM!
    Вообще не разбираюсь в асинхронных вещах.

    Откладываешь бота, разбираешься как следует, возвращаешься к боту. Без понимания этого механизма бота сложнее hello world не написать.

    В чем может быть дело?

    Для работы асинхронного кода он должен быть запущен через рабочий цикл (т.н. реактор, в терминах asyncio - event loop). Этот цикл обычно занимает тот поток, где он создан, и поочерёдно планирует выполнение вызванных корутин (async функций). Когда корутина делает await-вызов, она приостанавливается, а реактор занимается другими делами (в частности, выполняет этот вызов), пока вызов не завершится. После чего корутина продолжает работу.
    asyncio создаёт реактор автоматически для главного потока, но не для вспомогательных потоков. Просто потому, что обычно весь код асинхронного приложения работает в рамках реактора, а иметь несколько реакторов в разных потоках - это извращение. Но если очень нужно, ты можешь вызвать asyncio.new_event_loop() в твоём новом потоке, чтобы создать реактор, а потом задать этот реактор для потока вызовом asyncio.set_event_loop() (в этом же потоке). И только после этого запускать там асинхронный код.
    Ответ написан
    Комментировать
  • Удаление help в discord.py?

    Vindicar
    @Vindicar
    RTFM!
    Читай документацию, там написано, что нужно сделать.
    И есть отдельный раздел про реализацию своей справки.
    Ответ написан
    4 комментария
  • Ошибка в боте пайтон как исправить?

    Vindicar
    @Vindicar
    RTFM!
    У тебя библиотека использует f-строки. Они были добавлены с Python 3.6, а ты используешь лежалый 3.5.
    Если так нужна 32-разрядная версия, поставь хотя бы 3.7. А лучше перейди на x64 и ставь что-то поновее.
    Ну и да, научись выделять текст в терминале, или хотя бы пользоваться клавишей Print Screen.
    Ответ написан
    Комментировать
  • Как работает random.choices с weights?

    Vindicar
    @Vindicar
    RTFM!
    В документации написано:
    If a weights sequence is specified, selections are made according to the relative weights

    Относительные веса означают, что если вес одного элемента вдвое больше другого, он будет выбран с двое большей вероятностью. Т.е. считай, что веса нормализуются - делятся на сумму весов, и полученные частные и будут вероятностями.
    Ответ написан
    Комментировать
  • Как проверить в JSON наличие определенного поля?

    Vindicar
    @Vindicar
    RTFM!
    Элементарная работа со списками и словарями. Азы языка.
    Парсишь строку JSON в объект (назовем его json_obj) через json.load() или json.loads(), смотря что удобнее.
    У тебя объект верхнего уровня - массив, т.е. список. Перебираешь его элементы циклом for item in json_obj.
    Объекты следующего уровня - просто объекты, т.е. словари. Если надо проверить именно наличие поля, безотносительно его значения, то просто 'slot' in item.
    Всё.
    Ответ написан
    2 комментария
  • OpenCV не видит камеру. Что делать?

    Vindicar
    @Vindicar
    RTFM!
    Сколько камер на том компе, где не работает?
    Потому что параметр VideoCapture() - это, условно, номер камеры в списке камер. Если на компе только одна камера, то номер должен быть 0, если две, то номера будут 0 и 1, и так далее.
    Способа открыть камеру по имени сам opencv не предоставляет, хотя вроде есть сторонние пакеты, которые это исправляют - в плане получения списка камер в том же порядке, в каком их индексы будут использоваться VideoCapture().
    Ответ написан
    1 комментарий
  • Как добавить синхронность в асинхронный код?

    Vindicar
    @Vindicar
    RTFM!
    Ну во-первых, задумайся: что значит "три пользователя её вызвали"?
    Время доставки пакета по сети неравномерно. Первый пользователь мог нажать "Отправить" чуть раньше, но его сообщение будет доставлено после второго. Так что вопрос обеспечения корректного порядка УЖЕ непрост.
    Далее, ключевая идея аснихронности как раз в том, что во время паузы в обслуживании одного запроса мы можем заниматься другим запросом.

    Включая режим Ванги, я могу предположить, что в твоём боте используются глобальные переменные для хранения данных, и ты споткнулся о ситуацию, когда при приходе двух близких по времени запросов их значения перезаписываются. И вместо того, чтобы это исправить с помощью организации данных как хранилища ключ-значение (ид пользователя - сохранённые данные), ты пытается поставить пользователей в очередь.
    Ответ написан
    4 комментария
  • Как реализовать поиск на Python?

    Vindicar
    @Vindicar
    RTFM!
    Гугл по python full text search нашел whoosh, может, подойдёт?
    Ответ написан
    Комментировать
  • Как сделать безопасно строку с sql запросом и различными параметрами?

    Vindicar
    @Vindicar
    RTFM!
    Имена таблиц и столбцов можно подставлять f-строкой, если у тебя нет другого выбора и ты гарантируешь, что туда не попадёт пользовательский ввод.
    Для значений нужно использовать подстановку параметров.
    Ответ написан
    Комментировать
  • Как работает изнутри метод remove in Python?

    Vindicar
    @Vindicar
    RTFM!
    Тыц.
    Если коротко - перебирает элементы списка, сравнивает с каждым. Если нашёл равный - удаляет.
    Удаление, походу, делается через срезы. Занятно.
    Ответ написан
    4 комментария
  • Как работать с Socketserver в Python?

    Vindicar
    @Vindicar
    RTFM!
    Ни в передоваемую строку же засовывать метку и потом искать ее усллвием if и разделять поток выполнения?..

    Именно так. Это и есть описание протокола обмена данными: как разделить передаваемый поток байт на отдельные "команды", где в них будут "инструкции" (идентификатор выполняемой команды), а где "аргументы", как выглядт отклики на команды, и т.п.

    Собственно, есть готовые решения, типа protobuf. Они позволяют описать "пакеты данных", а разграничение, идентификацию и т.п. берёт на себя фреймворк. Или можно использовать в качестве транспорта какой-то готовый протокол, который может передавать структурированную информацию. Например, HTTP.
    Ответ написан
    1 комментарий
  • Объясните, что у меня не так?

    Vindicar
    @Vindicar
    RTFM!
    cursor.execute(f"SELECT users FROM balance WHERE uid={author.id}")
        sql = "SELECT balance FROM users"
        result = cursor.execute(sql)

    Ты сначала выполняешь кривой (но правильный по сути) запрос, потом ТУТ ЖЕ перебиваешь его другим, неправильным, и читаешь результаты неправильного. Стоит ли удивляться.
    Ответ написан
    Комментировать
  • Как выбрать из дат те что были на этой неделе?

    Vindicar
    @Vindicar
    RTFM!
    1. Берёшь текущую дату
    2. Находишь её код дня недели (dayofweek).
    3. Вычитаешь из её кода код понедельника (смотри в документации), получаешь разность d
    4. Вычитаешь из текущей даты d дней, получаешь дату понедельника на этой неделе.
    5. Прибавляешь к дате понедельника 7 дней, получаешь дату следующего понедельника.
    6. Проверяешь искомую дату на вхождение в этот диапазон.

    Альтернативно вместо 3. и 4., в цикле вычитаешь из текущей даты 1 день, пока не получишь понедельник.
    Ответ написан
    Комментировать
  • Три аргумента в discord записываются как один. Как починить?

    Vindicar
    @Vindicar
    RTFM!
    async def reg(ctx, *, idn: str = None, name: str = None, steamid: str = None):

    Ну ты сам же просишь закинуть все параметры в idn. Читай доки, как discord.py интерпретирует * (keyword-only параметр).
    Ответ написан
    Комментировать
  • Как в telegram bot после каждого сообщения пользователя обновлять время в бд?

    Vindicar
    @Vindicar
    RTFM!
    Почитай про INSERT ... ON CONFLICT UPDATE.
    Ответ написан
    Комментировать
  • Как можно сочетать aiogram с aioshedule?

    Vindicar
    @Vindicar
    RTFM!
    while True:
            await aioschedule.run_pending()

    Из-за этого обработчик события не завершится нормально. Вынеси этот цикл отдельно, и запусти его один раз через asyncio.create_task() при старте бота.
    Ответ написан
    Комментировать