Задать вопрос
  • Как расположить несколько текстов в разных местах в label в tkinter?

    Vindicar
    @Vindicar
    max_1O, ну у тебя же не единое целое, а три отдельных поля: первый аргумент, операция, второй аргумент.
  • В чём ошибка кода?

    Vindicar
    @Vindicar
    prostiti, если официальный клиент может, то можно попытаться мимикрировать под него. Нужно пытаться реверсить, что делает либо официальный клиент, либо One Dash. Но это ещё более рисково, я бы сказал.
  • Как решить эту задачу?

    Vindicar
    @Vindicar
    Sand, ну я и написал - это имеет смысл, но не в авторском алгоритме.
    Если бы автор делил исходное число на найденный делитель, и начинал цикл заново, (т.е. разлагал число на простые множители), то это имело бы смысл.
    В противном случае корректным будет ваше решение с N/2.
  • Как решить эту задачу?

    Vindicar
    @Vindicar
    Это имеет смысл, просто не в авторском алгоритме - наименьший простой делитель числа гарантированно будет меньше или равен квадратному корню из него. Если такого делителя нет, то само число простое.
  • Как запустить функцию как subprocess?

    Vindicar
    @Vindicar
    sortfact333, вы не понимаете, что за идиома __name__ == '__main__' и для чего она используется. Почитайте на эту тему сначала.

    Если коротко, то ваш код должен иметь возможность при запуске понять, что ему делать.
    В простом случае у вас есть два варианта
    1. Наш файл запущен пользователем. Тогда условие __name__ выполнится. Мы должны работать по сценарию корневого процесса, и подготовить запуск дочерних.
    2. Наш файл запущен корневым процессом как дочерний процесс. Условие __name__ не выполнится. Мы не должны ничего делать, корневой процесс сам отдаст команду на выполнение той или иной функции.

    Вот почему эта идиома используется - она позволяет легко различить эти два сценария.
    Я не вижу, зачем вам несколько ярусов многопроцессности, вполне можно обойтись двумя.
    Напишите сначала эквивалент Hello world, чтобы понять как многопрцоессность работает, а потом уже портируйте на вашу задачу.
  • Как сделать что бы когда снималась реакция, так же снималась и роль которая привязана по реакции?

    Vindicar
    @Vindicar
    Блин, ещё раз, читаем внимательно документацию. Если не знаете английский, гугл-транслейт в помощь.
    user_id - это целое число (тип int), идентификатор пользователя.
    Вам нужен объект класса Member, соответствующий этому пользователю.
    Чтобы получить экемпляр Member по его user_id, используем Guild.get_member().
  • Python: Как вызвать асинхронную функцию из синхронной при действующем event loop?

    Vindicar
    @Vindicar
    А вот тут уже никак по-нормальному не сделаешь.
    Есть совет на stackoverflow, но это то ещё извращение.
  • Как сделать что бы когда снималась реакция, так же снималась и роль которая привязана по реакции?

    Vindicar
    @Vindicar
    Читаем в доках:
    member
    The member who added the reaction. Only available if event_type is REACTION_ADD and the reaction is inside a guild.

    Т.е. поле member работает только на добавление реакции. Используй вместо него поле user_id и по нему находи участника сервера (Guild.get_member()).
  • Как запустить функцию как subprocess?

    Vindicar
    @Vindicar
    sortfact333, В смысле два multiprocessing?
    Сделать многоярусную систему из процессов, порождающих процессы?
    По идее можно...
  • Как считать время (кулдаун) для команды?

    Vindicar
    @Vindicar
    Mem1388, используешь асинхронную библиотеку типа aiosqlite.
    Я полагаю, у тебя получится код следующего вида (код условный, работоспособность не проверял!):
    #подразумевается, что этот код - часть cog-класса для бота.
    def __init__(self):
        #создаём подключение к БД сами...
        #возможно, его стоит передавать в параметрах конструктора нашего сog?
        self.db =  aiosqlite.connect('mydatabase.sqlite')
    
    @tasks.loop(seconds=60) #выполняем эту функцию каждые 60 секунд
    async def countdown_processor(self):
        #тупо уменьшаем значение счётчика для всех пользователей
        #но (для примера) с ограничением до нуля
        cursor = await self.db.execute("UPDATE user_counters SET counter = counter - 1 WHERE counter > 0")
        await cursor.close() #так как это не select-запрос, нам курсор без надобности.
        #всё, больше ничего не требуется! 
        #так как вызов асинхронный, бот может заниматься другими делами, пока запрос выполняется

    Возможно, имеет смысл вытащить счётчики в отдельную таблицу user_counters, со ссылкой по FOREIGN KEY на основную таблицу пользователей. Но тогда понадобится отдельно заводить счётчик при вставке в таблицу пользователей новой строки.

    В принципе в user_counters могут быть группы строк - по одной на пару "пользователь-команда". При необходимости проверить кулдаун - проверяешь, что пара "пользователь-команда" в этой таблице либо отсутствует, либо её счётчик равен 0. При необходимости задать кулдаун - вставляешь/обновляешь строку для пары "пользователь-команда" с желаемым значением счётчика.

    Но вообще я бы очень советовал использовать мой первый совет. Гораздо проще и надёжнее.
  • При выводе изображения по CSV появляется ошибка. Что не так в моем коде?

    Vindicar
    @Vindicar
    Нужен код (можно ссылку на пастебин) с комментариями. Слёту я не пойму что происходит, что ты пытаешься сделать, и где всё идёт не так.
  • Как достать temp_C?

    Vindicar
    @Vindicar
    bot = telebot.TeleBot('ЭТО НАДО УДАЛИТЬ')

    Токен удали, дурилка! Бота сопрут. =)
  • Как при помощью кода python удалять строки из другого файла?

    Vindicar
    @Vindicar
    Onervi, подумал что у вас обрабатываемый файл - тоже исходник на питон.

    А ответ на ваш вопрос я написал:
    Делаете цикл по строкам исходного файла. Кажду строку сверяете с набором выражений. Если совпадений не было, строки помещаете во временный файл, затем временный файл перемещаете на место исходного.

    Текстовый файл - не список и не таблица БД, нельзя просто удалить в нём элемент. Придётся "сдвигать" последующие элементы вручную, и так для каждого удалённого элемента. А с текстовыми файлами ещё хуже, так как строки имеют разную длину. Проще сгенерировать новый временный файл, а затем заменить им старый - например, с помощью shutil.move().
    Если эта операция требуется часто, стоит задуматься о настоящей БД.
  • Как сделать чтобы строка очистилась в пайтон?

    Vindicar
    @Vindicar
    Гугл "pyautogui key press".
    Находишь вот это. Дальше сам.
  • Как считать время (кулдаун) для команды?

    Vindicar
    @Vindicar
    Mem1388, это завязано на принципы работы асинхронных приложений.
    Если на пальцах:
    1. Пока выполняемая команда (корутина) ждёт результата асинхронной операции ввода-вывода (например, пока отправится сообщение в чат), другие корутины могут выполняться. Иными словами, пока мы в await чтототам(), бот может заниматься другими делами.
    2. Пока корутина выполняет синхронную операцию (т.е. что угодно кроме вышеупомянутого), другие корутины выполняться не могут. До них дойдёт очередь, когда бот закончит с текущей корутиной.

    Встроенная sqlite3 - синхронная, поэтому она будет блокировать корутину, пока запрос не выполнится.
    Отсюда вывод: если тебе нужен длительный запрос к БД, ты должен или а) использовать асинхронную библиотеку для работы (например, aiosqlite)
    или б) разбивать большой запрос на меньшие части (например, по 1000 пользователей за раз), и вставлять между ними вызов await asyncio.sleep() с минимальной задержкой. Тогда бот будет время от времени "отвлекаться" на другие ожидающие задачи, если они есть.
  • Как считать время (кулдаун) для команды?

    Vindicar
    @Vindicar
    Не используйте цикл вообще.
    Вы используете discord.py? В документации есть пример периодического действия на фоне.

    Скопирую сюда:
    from discord.ext import tasks
    
        @tasks.loop(seconds=60) # асинхронная подпрограмма будет вызываться каждые 60 секунд
        # она НЕ ДОЛЖНА выполнять длительных действий, так как на это время бот блокируется!
        async def my_background_task(self):
            #в этом пример бо тпросто пишет в канал увеличивающийся счётчик
            channel = self.get_channel(1234567) # channel ID goes here
            self.counter += 1
            await channel.send(self.counter)
    
        @my_background_task.before_loop # а так можно выполнить подпрограмму ДО начала циклической задачи
        #обрати внимание на имя декоратора: my_background_task, как у функции выше
        async def before_my_task(self):
            await self.wait_until_ready() # начнём счёт, когда бот залогинится.
  • В чём может быть ошибка в коде discord.py?

    Vindicar
    @Vindicar
    Оформи код (</>), нечитаемо же.
  • Как мне всем пользователям отправить уникальный таймер?

    Vindicar
    @Vindicar
    Оформите код как положено.
    И прокомментируйте вопрос, а то непонятно что вы пытаетесь сделать.