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

    Vindicar
    @Vindicar
    Я не очень понял, почему сроки горят - ИМХО такую ошибку ты поймал бы уже при попытке установить обе либы в одном окружении, т.е. в самом начале разработки.
    В общем, единственное, что мне приходит в голову - срочно лепить недосервисную архитектуру и разносить код по двум проектамс разными окружениями. Отдельно - то, что работает с vkbottle, отдельно - то, что работает с aiogram. Связь по какому-нибудь API, например, fastapi на ведомой стороне, и requests/aiohttp на ведущей.
    Написано
  • Как вывести роли discord сервера, кроме заблокированных?

    Vindicar
    @Vindicar
    dvrr, повторяю для одарённых: не знаешь как самостоятельно сделать что-то - сначала поищи, как это делается в существующих библиотеках, и сделай по аналогии. Тебе не обязательно их использовать, чтобы на их примере понять, как работать с соответствующим API. Тут я уже за тебя поиск выполнил, разжевал и в рот положил.
    Написано
  • Как вывести роли discord сервера, кроме заблокированных?

    Vindicar
    @Vindicar
    dvrr, а теперь внимательно перечитай мой ответ.
    Модели discord.py основаны на json-данных, получаемых от серверов дискорда - тех же самых, с которыми работаешь ты.
    Я подозреваю, что у тебя в словаре role есть ключ position, на который можно ориентироваться.
    Написано
  • Как добавить несколько изображений к locateOnScreen?

    Vindicar
    @Vindicar
    Ytesvovsem, кладешь имена файлов в список, перебираешь его циклом for.
    Написано
  • Как сделать так, чтобы бот реагировал на реакции в личных сообщениях?

    Vindicar
    @Vindicar
    А интент dm_reactions у тебя точно прописан?
    На странице, где получаешь токен бота, тоже соответствующие разрешения проставлены?

    И оформляй код, как требуют правила сайта. Кнопка </> в помощь.
    Написано
  • Как решить проблему с мутом?

    Vindicar
    @Vindicar
    пример строки duration, и на какое время фактически мутит.
    На кой ты делаешь расчёт total_days с последующим пересчётом в секунды, если у тебя уже есть расчёт total_seconds?
    И да, такой мут - недомут. Если бот будет перезапущен, размут не произойдёт.
    Написано
  • Can't connect to MySQL server on 'host:3306' (110). Ошибка MySQL, Как решить?

    Vindicar
    @Vindicar
    vology, да мало ли что пингуется - фаерволл может пропускать пинг, но блочить другие соединения.
    Проверяй коннект с хостера через консольный клиент.
    Написано
  • Can't connect to MySQL server on 'host:3306' (110). Ошибка MySQL, Как решить?

    Vindicar
    @Vindicar
    vology, а если на хостинге взять консольный клиент и с него подключиться? Может, фаерволл на хостинге что-то режет?
    Написано
  • Can't connect to MySQL server on 'host:3306' (110). Ошибка MySQL, Как решить?

    Vindicar
    @Vindicar
    vology, ну так прописываешь в коде адрес сервера в нидерландах. На том сервере проверяешь, какой интерфейс слушает мускуль. Если он слушает все интерфейсы (адрес 0.0.0.0) или хотя бы внешний интерфейс (короче, не локалхост), то по идее должна быть возможность постучаться.
    Возьми для начала родной клиент mysql и попробуй с его помощью сконнектиться на сервер БД.
    Проверь фаерволлы заодно на обоих хостах, не режут ли они чего лишнего.
    Написано
  • Can't connect to MySQL server on 'host:3306' (110). Ошибка MySQL, Как решить?

    Vindicar
    @Vindicar
    vology, погоди, погоди, ты что-то странное городишь.
    Если у тебя БД на отдельном сервере, то какого баклажана ты коннектишься на локалхост?!
    А на локальном компе у тебя фз что, может у тебя тоже MySQL там установлена.
    Прописывай адрес этого сервера тогда. Хотя тут возникнет вопрос, а ты точно можешь достучаться до БД на том сервере? Потому что БД, смотрящая в интернет, это та ещё дыра.
    Написано
  • Can't connect to MySQL server on 'host:3306' (110). Ошибка MySQL, Как решить?

    Vindicar
    @Vindicar
    Проверяй, запущен ли на хосте MySQL и какие порты он слушает.
    Для линукса netstat -nlp покажет слушаемые порты, если установлен пакет net-tools.
    Написано
  • Как работает запуск корутин в asyncio?

    Vindicar
    @Vindicar
    3FANG, потому что create_task() - синхронный вызов, в нём нет await. callee() была поставлена в очередь, но раз нет await - нет переключения контекста. Нет переключения контекста - текущая корутина продолжает выполняться. Когда произойдёт переключение контекста (await или выход из caller()), только тогда рабочий цикл заглянет в очередь и увидит ожидающую в ней корутину callee().
    Написано
  • Как работает запуск корутин в asyncio?

    Vindicar
    @Vindicar
    3FANG, когда корутина начала выполняться, она выполняется до следующего await или до завершения.
    Когда произошло одно из этих двух событий, текущий контекст (локальные переменные и т.п.) корутины сохраняются, а сама она помещается в очередь. При этом для корутины хранится awaitable object (обычно это Future), который был передан как аргумент в оператор await. В какой-то момент этот awaitable object перейдёт из состояния "ждём" в состояние "успех"/"ошибка".

    Рабочий цикл (loop) то и дело перелопачивает очередь ожидающих корутин, разыскивая те, у которых ассоциированный awaitable object уже выполнился (т.е. не в состоянии "ждём"). Он находит первую такую корутину, смотрит, в каком состоянии awaitable object. Если "успех", то контекст корутины восстанавливается, и корутина продолжает выполняться, и оператор await возвращает значение, которое хранится в awaitable object - результат асинхронной операции. Если "ошибка", то корутина тоже будет выполняться, но await сгенерирует исключение, которое хранилось в awaitable object. Так или иначе, эта корутина продолжает выполнение до следующего await или до завершения. Соответственно, возвращаемое значение или выкинутое исключение для корутины тоже заворачиваются в Future, которое может ждать кто-то другой.

    Что касается последнего примера, то там всё просто. asyncio.run(main()) крутит рабочий цикл, пока переданная ей корутина не завершится. Если на момент завершения рабочего цикла какие-то корутины были в состоянии ожидания - упс, у них не будет шанса как-то отреагировать на произошедшее. Детали реализации я затрудняюсь пояснить - в частности, почему корутины всё-таки стартуют и успевают дойти до первого await вызова, и только потом умирают. Я где-то читал, что asyncio.sleep() вообще имеет отдельную очередь вызовов, возможно тут, какое-то взаимодействие.
    В любом случае это - неправильный пример. Если запускаете таск, лучше убедиться, что он завершился, когда настанет время завершать работу, а не позволять ему просто умирать "на полуслове" вместе с рабочим циклом.
    Написано
  • Как сделать так, что бы бот отвечал " Я вас не понимаю, напишите /start или же нажмите Начать" в боте для вк которой написан на питоне?

    Vindicar
    @Vindicar
    Оформленный согласно правилам сайта код в студию! Иначе это гадание на кофейной гуще.
    Написано
  • Как сделать так чтобы при вводе текста в поле tkinter, текст выводило в команде принт?

    Vindicar
    @Vindicar
    Для начала неплохо бы оформить код по правилам сайта, чтобы он был читаем. Кнопка </> в помощь.
    Во-вторых, неплохо бы понять, что ВСЁ, что после root.mainloop(), заработает только после того, как ты закроешь окно.
    Написано
  • Ошибка TypeError: work_command() missing 1 required positional argument: 'points' что делать?

    Vindicar
    @Vindicar
    mhe_xyi, читай ответ внимательно. Никаких дополнительных параметров в обработчике события, глобальные переменные - можно, если осторожно (т.е. если ты сам дальше различаешь данные разных пользователей).
    Написано
  • Ошибка TypeError: work_command() missing 1 required positional argument: 'points' что делать?

    Vindicar
    @Vindicar
    Для начала - оформить код по правилам сайта. Кнопка </&gt в помощь.
    Во-вторых - перевести текст ошибки и осознать его.
    Если текст ошибки всё ещё непонятен - отложить бота и почитать учебник, того же Марка Лутца, главу про функции и их вызов.
    Написано
  • Какую библитеку или интерфейс выбрать?

    Vindicar
    @Vindicar
    Тамаз Харламов, это да. Я бы написал кастомный виджет для показа одной строки, сделал ряд таких виджетов на всё окно (возможно, с поправкой на изменение размера окна), и прикрутил бы отдельный скроллбар для навигации.
    Это, имхо, более-менее делается на любом фреймворке, хоть tkinter, хоть kivy, хоть pyqt.
    Написано
  • Как сделать бота поддержки с при помощи библиотеки telebot?

    Vindicar
    @Vindicar
    Никита, хммм. Наверно, я забыл, как это работает...
    Написано