Задать вопрос
  • Какую библитеку или интерфейс выбрать?

    Vindicar
    @Vindicar
    RTFM!
    Насчёт фреймворка не подскажу, а подскажу вот что: не нужно пытаться запихнуть всю безразмерную таблицу в GUI. Прокрутка - определение позиции - выборка данных, видимых на экране - рендеринг. Как-то так.
    Ответ написан
    2 комментария
  • Написал код на pycharm с изображениями, но он не работает. Не понимаю что не так. В чём ошибка?

    Vindicar
    @Vindicar
    RTFM!
    Ты указал относительный путь к файлу picture.png.
    Поскольку путь относительный (т.е. не начинается от корня диска), программа ищёт его относительно текущей рабочей директории. Эта директория может различаться по обстоятельствам, но в твоём случае итоговый путь оказывается таким: C:\\Users\\Уваж Руслан Рафэкови\\PycharmProjects\\pythonProject\\Tests\\picture.png
    У тебя точно по этому пути лежит корректный файл изображения? Потому что судя по тексту ошибки, его там нет.
    Ответ написан
    Комментировать
  • Возможно ли создать универсальное решение для процесса синхронизации данных от разных поставщиков?

    Vindicar
    @Vindicar
    RTFM!
    Разные форматы/особенности данных - разные обработчики.
    Максимум, можешь использовать полиморфизм и оформить обработчики под каждого поставщика как классы с общим предком/интерфейсом и использовать паттерн "Цепочка ответственности".
    Ответ написан
  • Бот отправляет 2 раза сообщение, которое не нужно отправлять в данный момент + не хочет отправлять результаты в группу, Как решить эти 2 проблемы?

    Vindicar
    @Vindicar
    RTFM!
    return (test_g, test_k)
    bot.send_message(айди группы, f'@{message.from_user.username} / {message.from_user.id} отправил тест на проверку\nЕго варианты были\nhttps://forms.gle/{test(message)[0]}\nhttps://forms.gle/{test(message)[1]}')


    Полнейшая чушь.

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

    Во-вторых, выучи концепцию побочных эффектов при вызове функции и держи её в голове. Ты на ровном месте делаешь два вызова test(), которая имеет побочные эффекты в виде отправки сообщения, а потом удивляешься, что два раза отправляются сообщения! Причем именно что на ровном месте. Вот тебе что, грозят болтающееся отрезать за сохранение результата test() в ещё одну локальную переменную перед использованием этого результа? Конечно, это непринципиально, потому что test() вызывать нельзя (см. пункт 1), но всё равно показательно.

    А что касается передачи инфы о действиях пользователя - заведи хранилище вида "id пользователя - пара ссылок". Подойдёт даже словарь, если тебе не нужно, чтобы инфа переживала перезапуск бота. И вот оттуда уже в well() вытаскивай инфу о том, что проходил текущий пользователь.

    Учись программировать, потом пиши ботов. Не наоборот.
    Ответ написан
    Комментировать
  • Как при создании телеграмм бота сложить несколько переменных?

    Vindicar
    @Vindicar
    RTFM!
    Это потому что текст сообщения пользователя - строка. Для строк, "1" + "1" = "11", потому что сложение строк - это конкатенация.
    Преобразуй строки в числа. Для целых это просто
    s = "11"
    x = int(s)  # x = 11

    Для дробных чисел сложнее. Конечно, можно сделать по аналогии:
    s = "1.1"
    x = float(s)  # x = 1.1

    Но тут требуется десятичная точка, т.е. "1,1" не прокатит. Отчасти это можно компенсировать заменой, например,
    s = "1,1"
    x = float(s.replace(",", "."))  # x = 1.1

    Коряво, но сработает.
    Ответ написан
    Комментировать
  • Хочу написать python Бота который играет в сапер за меня, и наверное мне нужно наставление более опытного?

    Vindicar
    @Vindicar
    RTFM!
    1. Ввод данных
    Окей, гугл, как сделать скриншот в питоне

    2. Предобработка данных
    Используя что-то типа opencv matchTemplate(), превращаешь скриншот в двухмерный массив, описывающий игровое поле.

    3. Принятие решения
    Имея двухмерный массив, описывающий поле, определи, где надо ставить мину. Если решение принять не удаётся - определи, какую клетку надо открывать.

    4. Реализация решения
    Зная номер клетки, выполнить щелчок по ней. См. pyautogui.
    Ответ написан
    Комментировать
  • Возможно ли реализовать очередь из отложенных новостей в Discord?

    Vindicar
    @Vindicar
    RTFM!
    так не синхронный schedule используй, а aioschedule.
    Есть пример для телеграм-бота, адаптируй его под discord.py (или клон который ты используешь).

    А последняя часть вопроса намекает на необходимость в Finite State Machine (FSM).
    Ответ написан
    7 комментариев
  • Python ввод текста в неактивное окно как сделать?

    Vindicar
    @Vindicar
    RTFM!
    Нужно для администрирования сервера Bukkit

    А что, rcon уже отменили? Это даже ванильный майнкрафт умеет.
    А так, pywinauto пробуй.
    Ответ написан
  • Как можно быстро менять файлы на виртуальном сервере?

    Vindicar
    @Vindicar
    RTFM!
    Простейший вариант - если пользователь с заранее прописанным ID отправляет боту Excel-файл, заливаем его как новый файл расписания, и загружаем данные с него. Грубо, но сработает.
    Это, разумеется, если бот может загрузить файл на сервер.
    Ответ написан
    Комментировать
  • Как проверить и заменить индексы в словаре?

    Vindicar
    @Vindicar
    RTFM!
    Делаешь словарь с набором значений по умолчанию, потом вызываешь на нём метод update(), передав туда словарь, полученный извне. Это обновит первый словарь, добавив/перезаписав ключи, пришедшие из второго словаря.
    Ответ написан
    4 комментария
  • Рассылка сообщений с помощью библиотеки pyTelegramBotAPI?

    Vindicar
    @Vindicar
    RTFM!
    Если не понимаешь, Как применять try-except - откладываешь бота и практикуешься с try-except, пока не поймешь. Вообще боты - это НЕ просто, и я настоятельно советую отложить бота, пока не ознакомишься с языком получше.

    Ты не привёл полный стек-трейс ошибки. Его нужно приводить, и не скриншотом, а обернуть тегом <code>. Кнопка </> в редакторе в помощь.
    То же самое нужно сделать с кодом - иначе вопрос могут снести как не соответствующий правилам сайта.
    На вопрос с нечитаемым кодом получить полезный ответ удаётся не всегда, так что это в твоих же интересах.

    Когда приведёшь полный stack trace ошибки (это набор строк вида "File путь_к_файлу, line номер_строки, in имя_функции" - найди в нём те блоки, которые упоминают файлы из твоего проекта. Они подскажут, в какой части кода возникает ошибка.

    Но можно догадаться, если просто рассуждать логически. Ошибка возникает из-за того, что ты отправляешь сообщение пользователю, который заблокировал твоего бота. Значит, ловить ошибку нужно в районе вызова метода бота, который выполняет отправку сообщения, т.е. send_message(). Так что ты вроде правильно идентифицировал строку. Если ошибка всё равно возникает, убедись, что ты запускаешь тот же код, который привёл тут.

    Но except: pass - это плохая практика в большинстве случаев. От того, что ты игнорируешь ошибку, она не исчезает. Ты по-хорошему должен удалить id этого пользователя из списка id подписчиков.

    И да, ты отвратительно работаешь со списком id. Это в принципе работает, но это очень неудобно. Ты это почувствуешь, как только попытаешься хранить какую-либо информацию кроме id пользователя.
    Ответ написан
    4 комментария
  • Как отправить письмо по smtp mail.ru?

    Vindicar
    @Vindicar
    RTFM!
    Разумеется, поддержка помогать не станет. Твой код же их рекламу не показывает.
    А если код не работает после деплоя - хорошая вероятность, что mail.ru тупо режет обращения с диапазонов не из обычных провайдерских сетей. Попробуй развернуть прокси на хосте, где делаешь деплой, и сконнектиться с домашнего компа через него - если обломаешься, то дело в этом.
    Ответ написан
    2 комментария
  • Как причесать текст в telegram боте?

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

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

    Vindicar
    @Vindicar
    RTFM!
    cursor.executemany('''
            INSERT INTO bugs (bug_name, bug_info, developer) VALUES (?, ?, ?)
        ''', (bug_name_var, bug_info_var, developer))


    Почему тут executemany()? Ты вызываешь его, как будто это простой execute().
    Ответ написан
    Комментировать
  • Как лучше обзавестись self-hosted почтой?

    Vindicar
    @Vindicar
    RTFM!
    Голый почтовый сервер, умеющий только SMTP - не проблема, протокол-то текстовый, как HTTP. Насчёт IMAP не знаю.
    Проблема - сделать так, чтобы письма с твоего сервера не летели в /dev/spam автоматом у всех получателей.
    Вот для этого потребуется конкретно обмазать это всё всякими подписями, сертификатами, и так далее.
    Я даже точный список привести затрудняюсь...
    Ответ написан
    2 комментария
  • Как правильно настроить работу процессов и как можно оптимизировать код?

    Vindicar
    @Vindicar
    RTFM!
    from multiprocessing import Pool
    
    def concatenate(video1: str, video2: str, output: str) -> bool:
        """Склеивает два видео и пишет результат в файл output.
        Не стоит использовать глобальные объекты. 
        Стоит принимать как параметры и возвращать только базовые типы данных 
        (булевы, числа, строки, кортежи, списки, словари)."""
        ...   # верни True при успехе, False при неудаче. Лови все исключения.
    
    if __name__ == '__main__':
        videos_to_process = [  # этот список формируешь по своей логике.
            ('18_05_video1.avi', '18_05_video2.avi', r'output\18_05.avi'),  # порядок как у аргументов concatenate()
            ('17_05_video1.avi', '17_05_video2.avi', r'output\17_05.avi'),
        ]
        with Pool() as pool:  # по умолчанию пул создаст по одному процессу на ядро
            results = pool.starmap(concatenate, videos_to_process)
        if not all(results):  # хотя одна функция вернула False?
            for (v1, v2, vr), success in zip(videos_to_process, results):
                if not success:  # выясняем, которая
                    print(f'Video merge failed: {v1} + {v2} -> {vr}')
        else:
            print('All videos merged successfully.')
    Ответ написан
    Комментировать
  • Почему возникает ошибка в Python?

    Vindicar
    @Vindicar
    RTFM!
    Как выше правильно заметили, предупреждение просто сообщает, что утилита pip для установки пакетов имеет не самую новую версию. Чаще всего это не проблема.

    Косяк в основной программе, потому что ты потерял подчеркивания вокруг __name__. Неплохо бы знать, что это и зачем это нужно - тогда не будете совершать таких ошибок.

    Ну и да: боты - это ни разу не просто. Очень не советую начинать с этого.
    Ответ написан
    Комментировать
  • Selenium постоянно крашит из за того что якобы нету таких координат в видомости браузера?

    Vindicar
    @Vindicar
    RTFM!
    Окно открыто у меня на максимум(1920,1080).


    actions.move_by_offset(1088, 1205).perform()
    Ответ написан
  • Как устранить ошибку на библиотеке disnake?

    Vindicar
    @Vindicar
    RTFM!
    bot={  # <<< bot? 
    "yes": "Да",
    "no": "Нет"}

    Как обычно, ответ - включить голову и посмотреть на код внимательно.
    У тебя был объект бота в переменной bot - но ты его переопределил на словарь. Разумеется, после этого у тебя bot содержит словарь, и методы бота больше недоступны.
    Придумай переменной другое, незанятое имя, чтобы не было таких ситуаций.
    Ответ написан
    Комментировать