Задать вопрос
  • Не работает код(бот дискорда)?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, ты подставляешь prefix только в последний элемент списка hello_words.
    Во-вторых, ты делаешь client.remove_command('help') и жалуешься, что не работает команда help. Твой собственный метод help() не декорирован как команда или событие.
    В-третьих, почему не использовать существующий фреймворк для команд?

    from discord.ext import commands
    hello_words = ['привет', 'hello', 'прив']
    
    @commands.command(name=hello_words[0], aliases=hello_words[1:])
    async def hello_command(ctx):
        pass #делаешь что хочешь
    Ответ написан
  • Как превратить строку в многомерный массив?

    Vindicar
    @Vindicar
    RTFM!
    Разбить сначала по символу перевода строки (\n), потом каждый кусок разбить по пробелу.
    Гугли методы строки .split() и .splitlines(). Ну и преобразовать в int или float в конце.
    Ответ написан
    Комментировать
  • Как взаимодействовать с сайтом программно?

    Vindicar
    @Vindicar
    RTFM!
    Тебе нужно чётче сформулировать задачу.
    Если ты хочешь отправить запрос на простой сайт (имитировать открытие ссылки), то это одна задача. Достаточно будет использовать библиотеку типа requests.
    Если ты хочешь работать с сайтом, который обвешан javascript (как ВК), то это уже другое дело. Тут requests будет недостаточно, или его использование будет затруднительно из-за необходимости расковыривать устройство сайта. Нужно использовать безголовый браузер типа selenium. Но результаты работы с сайтом будут "заперты" в скрипте, т.е. вещи типа прослушивания музыки с сайта уже будут проблематичны.
    Впрочем, селениум вроде умеет работать с обычным окном браузера, почитай доки по нему. Если это так, то под твою задачу должно подойти.
    Наконец, если ничто другое не помогает, pywinauto или pyautogui позволяют имитировать клики мышью и нажатия клавиш в окнах других приложений. pywinauto менее популярен, но pyautogui требует, чтобы приложение находилось на переднем плане.
    Ответ написан
  • Как писать комментарии на ютуб с помощью python?

    Vindicar
    @Vindicar
    RTFM!
    Ютуб очень заскриптован, простой либой типа requests ты не отделаешься. Нужно использовать selenium, и постараться притвориться обычным пользователем.
    Ответ написан
    2 комментария
  • Тихая установка (через bat)+ pip "не является внутренней или внешней программой"?

    Vindicar
    @Vindicar
    RTFM!
    Есть подозрение, что изменение PATH установщиком не затрагивает текущую сессию командного процессора, в которой выполняется ваш .bat файл - только свевжесозданные после установки.
    Ответ написан
  • Как в Windows создать файл с кириллицей в названии файла?

    Vindicar
    @Vindicar
    RTFM!
    The default encoding is platform dependent (whatever locale.getpreferredencoding() returns), but any text encoding supported by Python can be used.

    Так что Ultra-Bad Coder прав. По дефолту на винде у тебя f.txt открывается с кодировкой windows-1251, а в линуксе по дефолту юникод поди.
    Лучше всегда при открытии явно указывать режим и ожидаемую кодировку файла.
    Ответ написан
    Комментировать
  • Как начать логировать ТОЛЬКО то, что я прописал?

    Vindicar
    @Vindicar
    RTFM!
    Определить имена логгеров, используемых библиотеками (поле name в формате сообщения), получить соответствующие объекты через logging.getLogger().
    Потом на выбор
    а) выставить им уровень ERROR, CRITICAL или ещё выше (например, 100500), чтобы обычные записи отсеивались
    б) создать свой Filter, который блокирует все записи, и задать его для этих логгеров через соответствующий метод
    в) выставить им свойство propagate в False, чтобы не пробрасывали свои записи в корневой логгер, который ты настраиваешь.
    Ответ написан
    Комментировать
  • Алгоритм получения квадрата по координатам?

    Vindicar
    @Vindicar
    RTFM!
    Я бы обрабатывал отрезки (пары точек), и использовал формулу расстояния от точки до прямой плюс проекцию точки на прямую, чтобы понять, где точка находится - рядом с серединой отрезка или рядом с концами.
    Ответ написан
  • Почему методы класса не работают в цикле?

    Vindicar
    @Vindicar
    RTFM!
    Uno di Palermo, ключевое слово "должен".
    Ты напрасно выбрал logging для этой цели. Он, например, может и не создавать файл, если не было ни одной фактической записи в лог.
    Вот если бы ты использовал обычный open() и писал строки сам, работало бы куда лучше.

    Я уж молчу про то, что файл может не открыться
    • так как диск полон,
    • так как каталог защищён от записи,
    • так как path, school или artist_name содержали символы, недопустимые для использования в пути
    • так как какая-то другая программа удалила файл в промежутке между созданием и открытием
    • так как какая-то другая программа открыла в файл в исключительном режиме
    • и еще по куче причин

    Так что ещё лучше - просто принять к сведению, что операция по открытию файла может потерпеть неудачу в любом случае. И писать программу соответственно. Блок try-catch IOError в помощь.
    Кроме того, зачем пересоздавать wikiart() в цикле?
    Ответ написан
  • Как переслать сообщения из лс дискорд бота?

    Vindicar
    @Vindicar
    RTFM!
    Ты документацию читал? Есть же событие on_message.
    Ответ написан
    Комментировать
  • Как остановить спам "Пробелом" на сервере после закрытия клиента?

    Vindicar
    @Vindicar
    RTFM!
    while True:
        data = conn.recv(1024).decode('utf-8').lower()
        print(data)

    У тебя сервер вообще не предусматривает выхода из обслуживания клиента. Разве что по исключению, но тогда весь сервер грохнется.
    Не проверяешь, получили ли хоть что-то. Если соединение закрыто, recv() вернёт bytes-объект нулевой длины. Так что проверяй длину, и если она нулевая - прерывай цикл.
    Также в твоем коде ни сервер, ни клиент не предусматривают нормального завершения соединения. Если ты используешь TCP, то нужно вызвать метод s.shutdown(), чтобы дать другой стороне понять, что больше данных не будет, а потом s.close(), чтобы полностью закрыть соединение.
    Для клиента нужно будет определить условие, когда закрывать соединение. Например, если пользовать в ответ на input() ввёл пустую строку.
    Ответ написан
    Комментировать
  • Как сохранять данные пользователя?

    Vindicar
    @Vindicar
    RTFM!
    Можно. Создай БД, используя id пользователя в качестве ключа.
    Смотри модуль sqlite3, а также основы SQL. Просто чтобы понимать, что делаешь.
    Ответ написан
    Комментировать
  • Как удалить сообщения указанного пользователя Discord Python?

    Vindicar
    @Vindicar
    RTFM!
    Либо смириться, что команда ищет твои сообщения среди N последних, а не ищет N твоих последних.
    Либо загрузить историю чата, и найти, сколько сообщений было с момента Nго твоего сообщения.

    Сразу скажу, последнее может быть муторно в реализации и тормознуто на практике. Что, если с момента твоего давнего затираемого сообщения в чате написали 100500 других?
    Ответ написан
    Комментировать
  • Как продолжать цикл, пока ошибка не исчезнет?

    Vindicar
    @Vindicar
    RTFM!
    Используй try-else для отслеживания успешного завершения вызова и break для выхода из цикла.
    for d in range(0, 10): # сколько отступов делать
        try:
            #к слову, так у тебя date будет считаться не -1, -2, -3... а -1, -3, -6...
            date = date - timedelta(d) 
            pass # операция, которую ты хочешь выполнить
        except TickerValue.DoesNotExist: #отработает при  ошибке
            pass #или time.sleep(), чтобы подождать перед следующим вызовом - если надо
        else: #отработает при успешном выполнении блока try
            break #выходим из for
    Ответ написан
    Комментировать
  • Как использовать текстовый документ в Selenium на python?

    Vindicar
    @Vindicar
    RTFM!
    Открой файл, прочитай строки в список. Сгруппируй их, если это требуется.
    Запусти селениум.
    В цикле для каждой строки/набора строк:
    • открой нужную страницу,
    • дождись загрузки,
    • найди нужное поле/поля ввода в форму,
    • вставь строку/строки в поле/поля ввода,
    • отправь форму.
    Ответ написан
    3 комментария
  • Python FTP не могу подключиться как решить?

    Vindicar
    @Vindicar
    RTFM!
    У тебя: connect = ftp.connect(HOST, IP)
    В доках: FTP.connect(host='', port=0, timeout=None, source_address=None)
    Это тут опечатка, или в коде такая-же ошибка?
    Ответ написан
    3 комментария
  • Делаю бота в на python и пытаюсь сделать чтоб сообщение отправлялось в определенное время, но появляется ошибка, что делать?

    Vindicar
    @Vindicar
    RTFM!
    Следует понимать, что bot.polling() запустит рабочий цикл бота, и не вернёт управление, пока бот не отключится.
    Это означает, что подружить бота с while True: schedule.run_pending() очень проблематично - они оба хотят запустить вечный цикл, в котором они будут заниматься своими делами, но такой цикл может быть только один... в рамках одного потока.
    Я бы сделал так:
    1. В основном потоке подготовливаем второй поток и задаём нужное время срабатывания через schedule.every(). Потом запускаем бота через bot.polling().
    2. Второй поток выполняет цикл schedule.run_pending()+sleep(). Используй логическую переменную, чтобы цикл знал когда завершаться.
    3. По выходу из bot.polling() сигналим завершение для второго потока и ждём его.
    Ответ написан
    Комментировать
  • Как закрепить за каждым ответом переменную для дальнейшего вывода python(aiogram)?

    Vindicar
    @Vindicar
    RTFM!
    Храни в БД таблицу вида пользователь-этап.
    При получении сообщения получи текущий этап пользователя, проинтерпретируй сообщение как ответ на текущий этап, а затем увеличивай номер этапа.
    Ответ написан
    Комментировать
  • Как удалить пустую строку в Text Tkinter?

    Vindicar
    @Vindicar
    RTFM!
    А если начальные координаты поставить 0.0?
    Ответ написан
    Комментировать
  • Как обойти защиту окна со сменой названия?

    Vindicar
    @Vindicar
    RTFM!
    По классу окна не работает?
    Тогда поищи способ обратиться к функции WinAPI GetWindowThreadProcessId(), чтобы отсеять окна других процессов.
    Ответ написан
    Комментировать