Задать вопрос
  • Перезапуск python скрипта с определенной строки?

    Vindicar
    @Vindicar
    RTFM!
    Нет и не будет. Пример:
    a = 1
    b = 2
    print(a+b)

    Объясни, какое поведение ты ожидаешь от перезапуска скрипта с третьей строки, не выполняя первых двух.
    Ответ написан
    3 комментария
  • Как перенаправлять уведомления из группы Discord в Telegram?

    Vindicar
    @Vindicar
    RTFM!
    Используй комбинацию discord.py и aiogram. Придётся вчитаться в документацию, чтобы понять как запустить их вместе. Как поймешь - дальше просто, прописываешь обработчик сообщений от дискорда, проверяешь сообщение на предмет уведомление ли это, если да - переотправляешь в aiogram.

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

    Vindicar
    @Vindicar
    RTFM!
    Выше LXSTVAYNE тебе хороший совет дал, а я напишу кодом.
    Описываешь базовый класс и наследуешься от него:
    class WordComparator:
        def compare(self, word1: str, word2: str) -> int:
            "Вернет -1 если первое слово лучше, 1 если второе слово лучше, 0 если они одинаково хороши"
            raise NotImplementedError #реализации у нас нет
    
    class LongestWordWins(WordComparator):
        def compare(self, word1: str, word2: str) -> int:
            l1, l2 = len(word1), len(word2)
            if l1 > l2:
                return -1
            elif l1 < l2:
                return 1
            else:
                return 0
    
    class ShortestWordWins(WordComparator):
        def compare(self, word1: str, word2: str) -> int:
            l1, l2 = len(word1), len(word2)
            if l1 > l2:
                return 1
            elif l1 < l2:
                return -1
            else:
                return 0

    Затем ты передаёшь в класс, реализующий игровую логику, экземпляр одного из двух классов, и обращаешься к его методу compare() когда тебе надо сравнить два слова.
    Это называется паттерн "стратегия".
    Ответ написан
    Комментировать
  • Почема фласк не там ищет стили и не правильно работают ссылки?

    Vindicar
    @Vindicar
    RTFM!
    Как выглядят ссылки? Относительные небось, типа "some/other/page"?
    Если да, то у меня плохие новости - они работают относительно текущего адреса.
    А если нет, то приведи пример ссылок.
    Ответ написан
    Комментировать
  • Почему в numpy берется только тонкая полоска изображения?

    Vindicar
    @Vindicar
    RTFM!
    Погоди, а что за ересь ты вообще творишь?
    im = Image.open('IMG_7760.JPG')
    a = np.asarray(im) # a - трёхмерный массив numpy (высота; ширина; каналы)
    
    for bb in a: # перебираешь элементы по первому индексу (высоте), т.е. строки изображения
        np.random.random((1,1,1)) * a #умножаешь каждый элемент (кортеж RGB) строки на одно и то же случайное число
        #и всё. Полученное произведение выбрасывается за ненадобностью. Оригинальное значение ты не заменяешь ведь.
        im = Image.fromarray(bb) #*строку* превращаешь в объект PIL.Image
        im.save('2222.JPG') #и сохраняешь этот объект в файл
        print(bb) #и выводишь на экран

    Питон делает ровно то, что ты у него просишь.
    Ответ написан
  • PyQT5. Открытие файла в textEdition в дочернем окне. Как реализовать?

    Vindicar
    @Vindicar
    RTFM!
    self.win = text.Ui_Text()

    Ты уверен, что при конструировании объекта окна автоматически вызовется его метод setupUi()?
    Ответ написан
    1 комментарий
  • Как реализовать поиск в sqlite на python?

    Vindicar
    @Vindicar
    RTFM!
    Это называется "нечеткий поиск", и это непростая тема. Как говорится в одном анекдоте, "длина, ширина, высота и глубина - это совсем не то же, что длинка, ширинка, высотка и глубинка".
    Ответ написан
    6 комментариев
  • TypeError: 'NoneType' object cannot be interpreted as an integer как исправить?

    Vindicar
    @Vindicar
    RTFM!
    startfile() returns as soon as the associated application is launched. There is no option to wait for the application to close, and no way to retrieve the application’s exit status.


    Ты не имеешь контроля над приложением, после того как ты его запустил через startfile(). Функция возвращает None и только None.

    os.close() предназначена для закрытия файловых дескрипторов, почему ты вообще пытаешься её использовать тут?

    Короче, ты творишь какую-то ересь, и ошибка тут не в том, что None нельзя преобразовать в целое.
    Ответ написан
    2 комментария
  • Почему не запускается?

    Vindicar
    @Vindicar
    RTFM!
    # HELP
    bot.remove_command("help")
    @bot.command(command/help.py)
    
    # PROFILE
    bot.remove_command("profile")
    @bot.command(command/profile.py)

    У меня такое чувство, что ты не вполне понимаешь что такое декоратор и как им пользоваться.
    Да и конструкция вида command/profile.py не является синтаксически корректной в питоне.
    Подучи основы языка. Вот кроме шуток.
    Марк Лутц, "Изучаем Питон", 4е издание.
    Потом вернёшься к боту, и уже не будешь спотыкаться на таких пустяках.
    Ответ написан
    Комментировать
  • Как использовать asyncio внутри Thread Python?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, несколько асинхронных задач прекрасно уживаются друг с другом. На кой тебе вообще нужны потоки для этого? Чем не устроил loop.create_task(), или asyncio.gather()?

    Во-вторых, куда проще завернуть долгий синхронный код в поток, а уже поток - в асинхронную задачу, чем наоборот. Подумай над этим.

    В-третьих, технически ты можешь создавать свой цикл реактора (asyncio loop) в каждом потоке. Почитай доки на asyncio как это делается. Но нужно помнить, что async-объекты из разных реакторов не дружат друг с другом. Так что подчеркиваю красным: не надо это делать. Лучше сначала попробуй по-иному подойти к проблеме.
    Ответ написан
    4 комментария
  • Как я могу сделать что-то вроде os.startfile() на удаленном хосте?

    Vindicar
    @Vindicar
    RTFM!
    Нужна программа, выполняемая на удалённом хосте, которая будет выполнять код по запросу из сети.
    Либо терминальные серверы типа SSH (для Linux систем идут в комплекте, под винду надо ставить), либо удалённый рабочий стол типа VNC, либо своё приложение, которое вы запустите на хосте и которое будет слушать запросы из сети.
    Ответ написан
    1 комментарий
  • Value for header {} must be of type str or bytes, not Ошибка полностью ниже.?

    Vindicar
    @Vindicar
    RTFM!
    session_id = requests.post(
            "https://yug-krdr-itv04.svc.iptv.rt.ru/api/v2/user/sessions",
            headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)", "session_id": sess_id},
            json={"login": email, "login_type": "email", "password": "1234567"},
        ).json() # значение session_id может быть не только строкой, но и целым числом, словарём, списком или None
        return {"san": san, "session_id": session_id, "uid": ud} #в словарь оно пишется как есть
    
    
    def requestBuilderWink(url, data=None, params=None, json=None, method=None):
        register = regAccount()
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
            "session_id": register["session_id"], # а потом используется как заголовок - тоже как есть
            "x-rt-uid": register["uid"],
            "x-rt-san": register["san"],
        }
    Ответ написан
    Комментировать
  • Как реализовать множество параллельных таймеров?

    Vindicar
    @Vindicar
    RTFM!
    Если бот асинхронный, то множество параллельных ожиданий не будет проблемой.
    Ответ написан
  • Как сделать мигающее уведомление во вкладке браузера?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, это два разных вопроса.
    По поводу мигания вам уже написали.
    А вот по поводу получения уведомления есть разные способы, все они потребуют фоновых запросов, чтобы не блокировать вкладку.
    Простейший пример - polling. Каждые несколько секунд шлем запрос на сервер "а есть ли новые сообщения?", на что сервер отвечает либо "нету" либо отдаёт список новых сообщений. Просто, но грузит сеть, жрёт батарейку, грузит сервер.
    Чуть сложнее - long polling. Мы шлём запрос "есть ли новые сообщения?" на сервер с длинным таймаутом, скажем, несколько минут. Если сообщений нет, сервер молчит, но запрос не прерывает. Он только у себя время от времени проверяет их наличие. Как только сообщение появилось, сервер шлёт ответ и закрывает соединение.
    Когда клиент получил ответ или когда случился таймаут, клиент запускает новое соединение и снова ждёт ответа.
    Ну или использовать web sockets - ЕМНИП, когда соединение установлено, сервер может уже послать что-то по своей инициативе. Но это нужно изучать.
    Ответ написан
    1 комментарий
  • Как сделать что бы бот реагировал на сообщение discord.py?

    Vindicar
    @Vindicar
    RTFM!
    Погуглить! Это показывается в Quick Start в доках discord.py.

    # вместо client.event может быть bot.event, смотря как названа переменная с объектом бота
    @client.event 
    async def on_message(message):
        # отсеиваем сообщения, которые отправили мы сами
        if message.author == client.user:
            return
        # а вот тут мы проверяем содержимое сообщения. Это пример.
        # Реальную логику проверки, разумеется, пишешь самостоятельно, под свои нужды.
        if message.content.startswith('$hello'):
            await message.channel.send('Hello!')
    Ответ написан
    Комментировать
  • Почему не добавляет роль по реакции?

    Vindicar
    @Vindicar
    RTFM!
    Удаление роли работает, а добавление нет?
    Первое, что бросается в глаза - при удалении роли не проверяется ID поста, на котором была поставлена реакция.
    ID точно задан корректно? Как целое число?
    Ответ написан
    5 комментариев
  • Как остановить работу Телеграмм Бота?

    Vindicar
    @Vindicar
    RTFM!
    Это будет непросто.
    Стандартный input() - строго синхронный, он остановит выполнение программы до своего завершения.
    Можно попробовать что-то в духе:
    import asyncio
    
    loop = asyncio.get_event_loop()
    bot = Bot(token=TOKEN)
    dp = Dispatcher(bot=bot)
    
    async def delay_exit():
        #запускаем input() без параметров в отдельном потоке
        # await не продолжит выполнение, пока поток не отработает
        # но в то же время цикл бота будет работать независимо от этого потока
        await loop.run_in_executor(None, input) 
        dp.stop_polling()
        await dp.wait_closed()
        await bot.close()
    
    if __name__ == '__main__':
        loop.create_task(delay_exit()) # планируем выполнение delay_exit() и продолжаем
        loop.run_until_complete(dp.start_polling()) # работаем, пока dp.start_polling() не выполнится
    Ответ написан
    Комментировать
  • Как несколькими потоками читать файлы на питоне? Как ускорить следующий код?

    Vindicar
    @Vindicar
    RTFM!
    Несколько потоков тут вряд ли помогут из-за особенностей питона.
    Несколько процессов - возможно (модуль multiprocessing).
    Но вообще для начала стоит убедиться, что затык именно по CPU, а не по производительности диска.
    Ответ написан
  • Как делать проверки в боте Aiogram?

    Vindicar
    @Vindicar
    RTFM!
    Через loop.create_task() создаёшь долгоживущую корутину, которая крутится в цикле вида
    async def my_long_task():
      while True:
        await do_stuff() # выполняешь нужные действия, например, проверяешь очередь сообщений для отправки
        await asyncio.sleep(60) # спишь минуту

    Детали, вроде конкретных выполняемых действий, условий их выполнения, длительности сна или условия прекращения цикла, зависят от твоей задачи.
    Ответ написан