Задать вопрос
  • Как достать 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
    Оформите код как положено.
    И прокомментируйте вопрос, а то непонятно что вы пытаетесь сделать.
  • Почему UDP-клиенту на VirtualBox-Ubuntu не приходят датаграммы с UDP-сервера-Windows?

    Vindicar
    @Vindicar
    LoliDeveloper, есть пара вопросов.
    Первое, почему условие <=0 а не ==0? Возврат -1 означает ошибку, и не должен проглатываться. Таймаут - это именно 0.
    И я вижу косяк в первом аргументе у select.
    nfds This argument should be set to the highest-numbered file
    descriptor in any of the three sets, plus 1. The
    indicated file descriptors in each set are checked, up to
    this limit (but see BUGS).

    Т.е. тебе нужно s+1 туда передать.

    И да, MSDN пишет:
    nfds
    Ignored. The nfds parameter is included only for compatibility with Berkeley sockets.

    Вот почему под виндой работает.
  • Почему UDP-клиенту на VirtualBox-Ubuntu не приходят датаграммы с UDP-сервера-Windows?

    Vindicar
    @Vindicar
    LoliDeveloper:
    1. Я имел ввиду значение в addrlen, а не в received. Я бы вызвал sendto() как
    sendto(ls[i], datagram, 4, 0, (struct sockaddr*)&addr, addrlen);

    2. Ну могут быть проблемы с NAT traversal, например. Хотя если исходящая датаграмма из-за NAT пришла успешно, то по идее NAT должен открыть туннель для ответа.
    3. Если sendto() успешно отправил отклик, то нужно смотреть, что приходит клиенту.
    На крайняк попробуй использовать wireshark, чтобы задетектить трафик на клиенте.
  • Почему UDP-клиенту на VirtualBox-Ubuntu не приходят датаграммы с UDP-сервера-Windows?

    Vindicar
    @Vindicar
    А последний параметр правильно рассчитывается? Вам же recvfrom() сообщила длину addr, может, её и переиспользовать?
    Ну и далее, sendto() возвращает число отправленных байт. Не помню, что возвращается при ошибке, -1 или 0, но это стоит проверить, а также посмотреть установленный код ошибки.
    Наконец, точно ли есть сетевая связь между виртуалками?
  • TypeError: solve() takes 0 positional arguments but 3 were given как исправить???

    Vindicar
    @Vindicar
    frasero, бывает. Вот почему советуют писать так:
    import numpy as np

    Тогда и писать меньше, но и перепутать где чья функция, тоже сложнее.
  • Как можно сделать бонус раз в 24 часа?

    Vindicar
    @Vindicar
    Tolic1, Или можно заменить 24*60*60 на что-то вида 1*60 (1 минута).
  • Как автоматически выдавать роль при входе на сервер?

    Vindicar
    @Vindicar
    Начинать всегда с чтения документации.
    Гуглим "discord nodejs" (у тебя в тегах они), попадаем сюда. Тыкаем Documentation, видим слева Examples.
    В частности "Server greeting" - привет при входе на сервер. Это нам пригодится, понять как научить реагировать на вход юзера на сервер.
    А еще сверху есть ссылка Guide, там еще подробнее основы. Смотрим тамошний FAQ, видим вот это. Т.е. если мы знаем название роли и имеем ссылку на юзера, добавить ему роль - дело одного вызова. Этого достаточно, чтобы получить первое представление.

    А дальше - шариться по описанию API, смотреть интересующие нас объекты и что они умеют, экспериментировать.
  • Как можно сделать бонус раз в 24 часа?

    Vindicar
    @Vindicar
    Tolic1, почитай документацию по базе. Может, оно называется FLOAT, или ещё как. Число в плавающей точкой (floating-point), короче.
  • Как можно сделать бонус раз в 24 часа?

    Vindicar
    @Vindicar
    Tolic1, datetime тут избыточен, если честно. Ещё раз, алгоритм:
    1. Ищем в базе ID человека, отправившего команду.
    2. Если не нашли, то человек выполняет команду впервые. Добавляем (INSERT) в базу ID человека и текущую метку времени time.time(). Выполняем команду. Конец алгоритма.
    3. Если в базе нашли такой ID, то выбираем метку времени из базы. Пусть это будет переменная last_time.
    4. Находим разность time_diff = time.time() - last_time. Это будет число секунд, прошедших с момента последней отправки команды этим человеком.
    5. Если time_diff < 24*60*60 (т.е. 24 часа по 60 минут по 60 секунд), значит, 24 часа ещё не прошло. Сообщаем человеку, что нужно подождать. Конец алгоритма.
    6. Если не меньше, то 24 часа уже прошло. Обновляем (UPDATE) в базе значение метки времени для этого ID человека на текущее значение time.time(). Выполняем команду. Конец алгоритма.
  • Как прибавить +1 к значению в sqlite?

    Vindicar
    @Vindicar
    Про что я и говорил. У тебя в таблице stars разрешены записи с одинаковым значением photo. Это имеет смысл в твоей задаче? Я думаю, нет. Если это не так, то поясни почему.
    Поэтому таблицу надо пересоздать, сделать photo первичным ключом (PRIMARY KEY) - тогда нельзя будет иметь две или более записей с одинаковым значением photo. Как это сделать - читай в документации по sqlite.
    И серьёзно, выучи уже основы SQL - понятие первичного ключа, понятие внешнего ключа, понятие индекса - там не так уж и много. Иначе будешь на каждом шагу спотыкаться при работе с БД.
  • Как можно сделать бонус раз в 24 часа?

    Vindicar
    @Vindicar
    Tolic1, прочитай ещё раз мой ответ выше, там написано что это за число и как с ним работать.

    Т.е. вычтя два значения, возвращённых этой функцией в разное время, можно узнать, сколько секунд (и долей секунды) прошло между ними.