Задать вопрос
  • Как пофиксить RuntimeError: This event loop is already running?

    Vindicar
    @Vindicar
    RTFM!
    Разработчик - идиот и не подумал, что его код может вызываться в асинхронной программе. Либа валится не только в асинхронной программе, но и в Jupyter Notebook, и в Google Collab, потому что и тот и тот по природе асинхронные. Фикс обещается с прошлого мая, а воз и ныне там.
    Но на гитхабе описан костыль с пакетом nest-asyncio. Попробуй его. Просто поставь пакет и добавь в начало кода бота:
    import nest_asyncio
    nest_asyncio.apply()

    С моей точки зрения это грязнущщий хак, но всё же лучше чем ничего.
    Ответ написан
    5 комментариев
  • ERROR:asyncio:Task exception was never retrieved не могу разобраться?

    Vindicar
    @Vindicar
    RTFM!
    await message.reply(chat_id,f"Привет, {user_full_name}!\n"
    f"Введите ваше имя :",reply_markup = nav.mainMenu)

    На кой ты при ответе на конкретное сообщение указываешь chat_id? Сообщение и так знает, кто его отправил.

    Подробнее

    Как найти строку, в которой проблема?
    В секции Traceback (most recent call last): только одна запись относится непосредственно к твоему коду:
    File "d:\telegram_bot\bot.py", line 79, in start_handler
    await message.reply(chat_id,f"Привет, {user_full_name}!\n"

    Всё выше и ниже ссылается на venv\lib\site-packages\aiogram. Значит, дело именно в этой строке.

    Как понять, в чём проблема?
    При отправке сообщения можно указать два позиционных параметра: текст сообщения и parse_mode, т.е. как отформатировано сообщение (HTML, markdown или еще что). Раз unsupported parse_mode, значит, во второй параметр попало что-то постороннее. А самый простой способ этому случиться - если перед текстом сообщения есть что-то лишнее. У тебя chat_id стало текстом, а собственно текст стал parse_mode.
    Ответ написан
    Комментировать
  • Как запланировать перезапуск программы на Python?

    Vindicar
    @Vindicar
    RTFM!
    Вообще это лучше делать не внутренними средствами сервиса, а средствами сервера, на котором он развёрнут: cron под никсами, планировщик задач под виндой.

    Но фраза "чтобы даты обновлялись" намекает, что имеет место проблема XY: вместо того, чтобы поправить логику программы, пытаешься прикостылить её периодический перезапуск.
    Можешь поделиться, что там за даты такие?
    Ответ написан
  • Почему бот не отправляет сообщения?

    Vindicar
    @Vindicar
    RTFM!
    У обработчика сообщений должен быть только один параметр - message.
    Ответ написан
    Комментировать
  • Почему не получается авторизироваться через requests?

    Vindicar
    @Vindicar
    RTFM!
    Потому что надо исходный код целевой страницы почитать, ну и разобраться, как пользоваться инструментами разработчика в браузере, чтобы понять, какие запросы выполняются.
    https://edu.tatar.ru/login - это URL для получения страницы с формой входа. А вот сама форма отправляет данные на URL https://edu.tatar.ru/logon. Именно по этому адресу я бы и делал запрос.
    Ответ написан
    Комментировать
  • Почему звук останавливается на пару миллисекунд а потом продолжает воспроизводиться?

    Vindicar
    @Vindicar
    RTFM!
    Потому что на остальные операции (такие как подгрузка нового чанка, подготовка объектов, и прочее) уходит ненулевое время.
    Тебе нужно два потока, и очередь (queue.SimpleQueue или queue.Queue) для связи между ними. Один поток подгружает данные, формирует экземпляры AudioSegment, и подкладывает их в очередь. Другой - только вытаскивает их из очереди и делает play. Тогда если у тебя соединение достаточно быстрое, то очередь будет пополняться быстрее, чем она опустошается.
    Но и тогда могут быть проблемы из-за питоновских потоков. Надо экспериментировать.
    Ответ написан
    Комментировать
  • Что делать если бот дискорд не отвечает на комнды?

    Vindicar
    @Vindicar
    RTFM!
    Если ты используешь не slash commands, а классические команды в сообщениях, то боту нужно иметь доступ к тексту сообщений. А значит, нужен интент guild_messages (и dm_messages для команд в личке).
    Собственно, slash commands для того и ввели, чтобы ботов не оповещать постоянно о болтовне в чате на случай если там вдруг проскользнёт команда.
    Ответ написан
    2 комментария
  • Запуск Python скрипта по HTML кнопке?

    Vindicar
    @Vindicar
    RTFM!
    Если сайт уже есть, то настроить скрипт как CGI-приложение, кнопка должна делать запрос к серверу, который будет обрабатываться этим приложением. Конкретная настройка зависит от того, какой http-сервер используется.

    Если сайта как такового нет, то подними мини-приложение на том же FastAPI или Flask как отдельный сервер. Пусть он сам отдаёт страницу по одному запросу, и вызывает нужный скрипт по другому. Подробности в документации на соответствующие фреймворки.
    Ответ написан
    Комментировать
  • Как проверить есть ли элемент в списке кортежей?

    Vindicar
    @Vindicar
    RTFM!
    Перебрать список, проверить каждый кортеж.
    Ответ написан
    Комментировать
  • Как заменить time.sleep(N)?

    Vindicar
    @Vindicar
    RTFM!
    Создай threading.Event и используй метод wait(). Если event взведён (set()), то wait прервётся немедленно.
    Правда, я не помню, как он сигнализирует о таймауте - если исключением, его нужно ловить.
    Ответ написан
    Комментировать
  • Как убрать эту ошибку?

    Vindicar
    @Vindicar
    RTFM!
    Размер двух накладываемых изображений точно одинаков? Проверь.
    Ответ написан
  • Как добавить ударение?

    Vindicar
    @Vindicar
    RTFM!
    ЕМНИП, добавь '\u0301' после буквы.
    Ответ написан
    2 комментария
  • Как корректно создать шаблон для json-файла?

    Vindicar
    @Vindicar
    RTFM!
    Почитать документацию по модулю json и осознать, что dumps() принимает на вход объект, который надо превратить в JSON-строку. Зачем ты сам что-то колхозишь через f-строку? Подай ему на вход словарь с нужными ключами, и всё.

    JSON объект соответствует питоновому словарю со стороковыми ключами, например:
    print(json.dumps( {'foo': 'bar'} ))
    Ответ написан
  • Как узнать нажата ли клавиша клавиатуры?

    Vindicar
    @Vindicar
    RTFM!
    Ну под виндой можно дёрнуть GetAsyncKeyState() (для одной клавиши) или GetKeyboardState() (для всех клавиш) через ctypes.
    Ответ написан
    Комментировать
  • Что делать если при открытии png файла с прозрачным фоном через OpenCV появляются гличи?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, скриншот в студию.
    Во-вторых, IMREAD_GRAYSCALE отрывает файлу канал прозрачности напрочь. Что там на самом деле было в прозрачных пикселях - фз.
    Попробуй IMREAD_UNCHANGED, тогда у тебя будет дополнительный канал прозрачности, который ты можешь сам принять к сведению - например, залить все прозрачные пиксели нужным цветом, или ещё что.
    Ответ написан
    Комментировать
  • Почему print(1 == True, 1 is True) вывод будет, True False, если можно по-подробнее?

    Vindicar
    @Vindicar
    RTFM!
    is проверяет идентичность, т.е. ссылаются ли два выражения на один и тот же объект.
    == проверяет эквивалентность, т.е. равны ли два объекта по содержанию.

    При этом == поддаётся переопределению, что позволяет разным объектам по-своему определять понятие равенства. is переопределять нельзя.

    Простой пример
    a = [1, 2, 3]  # создаём список
    b = list(a)  # создаём копию списка
    c = a  # создаём еще одну ссылку на список
    print(a == b)  # True - содержимое списка и копии равно друг другу
    print(a is b)  # False - но это два разных объекта
    print(a == c)  # True - объект равен самому себе
    print(a is c)  # True - потому что это один и тот же объект
    Ответ написан
    Комментировать
  • Как асинхронно отслеживать изменение json?

    Vindicar
    @Vindicar
    RTFM!
    Либо обязать сервер пинать бота при обновлении JSON, либо периодически опрашивать JSON ботом.
    Если сервер отдаёт заголовок Last-Modified, то можно передавать в заголовке If-Modified-Since дату и время предыдущего успешного опроса. Тогда сервер либо ответит 304 Not Modified, либо 200 OK если были изменения.
    Ответ написан
    Комментировать
  • Как подставить в скрипт имя файла после конвертации с изображения в pdf?

    Vindicar
    @Vindicar
    RTFM!
    Ну так почитай документацию на os.path. Найдёшь много интересных функций, например, splitext().

    А если использовать pathlib вместо древнего os.path, то можно найти метод Path.with_suffix().
    Ответ написан
    Комментировать
  • Почему не работает код пайтон для яндекс картинок?

    Vindicar
    @Vindicar
    RTFM!
    except:
                pass

    Бить по рукам за такое. Вот как раз поэтому: ты молча глотаешь возникающие исключения, и теперь не можешь понять, что именно идёт не так.

    Хотя бы выводи сведения об исключении в консоль.
    Ответ написан
    Комментировать
  • Как написать функцию со списком python?

    Vindicar
    @Vindicar
    RTFM!
    У тебя ошибка в логике.
    Ты проверяешь каждую возможную гласную, и если слово начинается с неё, ты выводишь "an".
    Но если слово НЕ начинается с этой гласной, ты выводишь "a", что ошибочно.
    Ведь тот факт, что слово не начинается с этой гласной, ещё не означает, что оно не начинается вообще с никакой гласной.
    Поэтому раздели две операции - проверка гласной, и вывод.
    Ну или научись пользоваться оператором in, как выше подсказал Dmitrii.
    Ответ написан
    Комментировать