• Какую библиотеку использовать?

    Vindicar
    @Vindicar
    RTFM!
    Тебе нужно именно на питоне?

    Потому что имхо, это можно решить, если оформить приложение как службу Windows с помощью NSSM. Оно позволяет настроить автоперезапуск, в том числе.
    Ну а под никсами есть systemd или что-то подобное.

    Если нужен именно свой скрипт, то psutil.
    Ответ написан
    2 комментария
  • Как сделать удаление юзера после его выхода из бота, Telegram?

    Vindicar
    @Vindicar
    RTFM!
    1. Форматируй код как положено правилами сайта, кнопкой </>. Нечитаемо же.
    2. Что значит "не работает"? Просто ничего не делает? Останавливается с сообщением об uncaught exception? Компьютер спрыгивает со стола и начинает искать Сару Коннор? Программа может не работать многими способами, приводи описание симптомов и сообщения об ошибках. Сообщения об ошибках тоже стоит обернуть кнопкой </>.
    3. Я подозреваю, что дело именно в uncaught exception. В этом случае рекомендую почитать учебник по Питону, раздел о работе с исключениями. Хотя бы вот этот. Оберни отправку сообщения в блок try-except, при возникновении ошибки можно либо просто игнорировать её, либо добавлять в список "неудавшихся".
    Дальше с этим списком уже можно будет работать, например, попытаться убрать все "неудачные" user ID из joineduser, и записать очищенный список обратно в /home/example.txt.
    Ответ написан
    2 комментария
  • Как поправить код python?

    Vindicar
    @Vindicar
    RTFM!
    Что такое wr() и зачем оно нужно вообще?
    Просто почитай как работать с файлами в питоне, там никакие функции-обёртки не нужны.
    Ответ написан
  • Как исправить ошибку can't multiply sequence by non-int of type 'float'?

    Vindicar
    @Vindicar
    RTFM!
    Код феерический.
    #?!??!?!
        for i in array:
            for j in i:
                if array.index(i)==i.index(j):
                    ans+=[j]

    не будет работать, если в строке матрицы одно и то же число встречается дважды.
    Ну и зачем перебирать столбцы, если тебе уже известен индекс столбца - он равен индексу строки? Функцию range() ты вроде уже знаешь, освой метод append() списка, заодно.
    diagonal = []
    for i in range(len(array)):  # цикл по номерам строк матрицы
        diagonal.append(array[i, i])  # берём элементы, у которых номер строки и столбца одинаков


    ans[i]*m[i:]
    Ты умножаешь элемент массива ans[i] на список строк чего-то по имени m. Что такое m, оно же не определено в функции?
    X = []
    for i in range(len(array)):  # перебираем номера строк массива array
        x_item = 0  # скалярное произведение будет тут
        for j in range(len(diagonal)):  # перебираем номера элементов диагонали
            x_item += diagonal[j] * array[i, j]  # добавляем очередную часть произведения
        X.append(x_item)

    То же самое можно записать короче, например, так:
    X = []
    for row in array:
        X.append(sum( d*r for d, r in zip(diagonal, row) ))

    Но это сложнее для понимания новичку.
    Ответ написан
  • Корректно ли в C++ называть стек статической памятью?

    Vindicar
    @Vindicar
    RTFM!
    Кирилл Гусарев, по вашему определению статическая память - это секция инициализированных данных exeшника.
    ЕМНИП, C++ в эту секцию кладёт инициализирвоанные глобальные переменные. Насчёт статических локальных не уверен.

    Вообще программа имеет доступ к четырём видам памяти:
    - секция инициализированных данных выделяется загрузчиком, её содержимое загружается из EXE файла, где оно хранится как образ.
    - секция неинициализированных данных выделяется загрузчиком, её содержимое забивается нулями. В EXE файле хранится только её размер.
    - Насчёт стека не уверен. Вроде со стеком главного потока исполнения то же самое, его размер прописан в экзешнике. Но кто его выделяет - загрузчик или рантайм языка... я подозреваю, что загрузчик. Стеки дополнительных потоков выделяются по запросу программы.
    - куча выделяется по ходу работы программы. Менджер кучи Windows создаёт одну кучу для процесса, дальнейшее управление кучами - дело самого процесса.

    Всё это - только для виндовых EXE. Про линукс я не в курсе.

    Стек статический в том смысле, что его размер в норме не меняется - блок памяти выделяется один раз, и просто используется большая или меньшая его часть.
    Ответ написан
    Комментировать
  • Почему выводится ошибка и как ее исправить Sqlite3 Disnake?

    Vindicar
    @Vindicar
    RTFM!
    Запомни простую вещь: никогда, никогда не формируй SQL-запросы форматированием строк. Ни f-строками, ни методом format(), ни %-форматированием. Ты сейчас на своей шкуре почувствовал, почему этого не стоит делать.
    И читай документаци, там написано как правильно. Более того, есть отдельный раздел как раз об этом. RTFM!
    Ответ написан
    Комментировать
  • Почему не получаю обратной связи от бота?

    Vindicar
    @Vindicar
    RTFM!
    Может, всё-таки ContentType.AUDIO, а не VOICE?
    Ответ написан
  • Как / возможно ли вытащить аргуметы из класса?

    Vindicar
    @Vindicar
    RTFM!
    Функция dir() покажет, какие поля и методы есть в классе. Пробуй.
    Ответ написан
    Комментировать
  • Как проверить с помощью Python открыт ли определенный сайт на ПК или нет?

    Vindicar
    @Vindicar
    RTFM!
    1. Получить список IP адресов, ассоциированных с целевым сайтом. В простейшем случае - через DNS запрос, но в некоторых случаях это может быть сложнее (например, сайт использует CDN).
    2. Получить список активных TCP соединений, у которых удалённый порт 443 (опционально, 80). Определить удалённые адреса.
    3. Проверить, пересекаются ли два множества адресов.
    Этот подход обломается, если браузер использует прокси, или если на машине поднят VPN.

    Альтернативно, установить системный прокси сервер, который будет отслеживать открываемые сайты. Но браузер не обязан его использовать, так что это тоже ненадёжно.
    Ответ написан
    2 комментария
  • Как начертить правильный n-угольник с центром в точке (x, y) на поверхности шара?

    Vindicar
    @Vindicar
    RTFM!
    Т.е. у нас есть окружность в трёхмерном пространстве. И все вершины n-угольника будут лежать на этой окружности. Тогда задача сводится к:
    1. Перейти от широты, долготы, радиуса шара и радиуса окружности к координатам истинного центра окружности (не того, что на земле, а того, что под землёй) и вектору нормали к этой окружности (вектор радиуса шара, проходящего через центр).
    2. Зная их, найти вектор, направленный "на восток".
    3. Поворачивать этот вектор вокруг нормали на 360/n градусов.

    Первое - находим координаты вектора, направленного из центра в точку (x, y), в трёхмерном пространстве, где центр шара - начало координат. Назовём его осевым радиусом.

    Найти истинный центр не так уж сложно. У нас есть прямоугольный треугольник, где гипотенуза - радиус шара R, а один катет - радиус окружности r. Тогда второй катет будет расстоянием от центра шара до истинного центра окружности вдоль осевого радиуса.

    Найти вектор "на восток" можно по правилу буравчика. Если не путаю, векторное произведение осевого радиуса на вектор, из точки (x, y) на север, даст нам нужный вектор.

    Дальше осталось только поворачивать этот вектор.
    Ответ написан
    Комментировать
  • Почему переменная http_ex пустая?

    Vindicar
    @Vindicar
    RTFM!
    str(http_ex)
    А ты выводишь строковое представление этой переменной. Не факт, что оно включает в себя status_code и detail.
    Ты уверен, что она пустая? Что, если сделать repr(http_ex)?
    Ответ написан
  • Как сделать цикл for и условие if in в одну строку?

    Vindicar
    @Vindicar
    RTFM!
    цикл for с последующим условием if in будет использоваться более 1000 раз.
    Можно ли как то сократить в 1 строку?

    Можешь пояснить, какая вообще связь между длиной кода и числом использований?

    В принципе ты можешь использовать регулярные выражения под эти цели. Они более гибкие, чем просто набор подстрок.

    Сейчас выглядит как будто ты пишешь этакого чат-бота для терминала. Если я прав, то длинная цепочка из if-elif-elif тут не подойдёт.

    Но если прямо невтерпёж, то
    if any(word in text for word in ["привет", "хай"]):
    Ответ написан
    6 комментариев
  • Как принимать данные на сервер с определённого порта?

    Vindicar
    @Vindicar
    RTFM!
    Данные в каком формате отправляются? В каком-то своём, или это обычный HTTP запрос?
    Если в своём, просто настрой запуск своего php скрипта как демона через systemd unit.
    Ответ написан
  • Как получить сообщение с ветки Discord Python?

    Vindicar
    @Vindicar
    RTFM!
    1 работает но получает сообщения со всех каналов и веток.

    Значит, нужно добавить условие, проверяющее message.channel.id на совпадение с заранее заданным.
    Ответ написан
    Комментировать
  • Как трансформировать 3d array в 2d array?

    Vindicar
    @Vindicar
    RTFM!
    Читай про метод reshape()
    Ответ написан
    Комментировать
  • Как исправить aiogram.utils.exceptions.BadRequest: Unsupported parse_mode ошибку?

    Vindicar
    @Vindicar
    RTFM!
    await message.reply("Привет!\nАктуальный курс евро:", {float(convert[0].text.replace(',','.'))*1.05})

    Я не знаю что ты хотел написать, но написал ты следующее:
    Ответь на сообщение. В качестве первого параметра text используй строку "Привет!\nАктуальный курс евро:". В качестве второго параметра parse_mode используй множество, состоящее из одного элемента, равного float(convert[0].text.replace(',','.'))*1.05.


    Т.е. у тебя сведения о курсе не вносятся в строку сообщения.
    Ответ написан
  • Возможно ли заставить дискорд бота отправлять рандомное видео с сайта?

    Vindicar
    @Vindicar
    RTFM!
    Вариант А: Если на сайте есть функция "рандомное видео", научиться делать запрос к ней.
    Вариант Б: Стырить Соскрапить с сайта список всех интересующих видео, выбрать рандомное из этого списка. Список можно обновлять время от времени.
    Ответ написан
    Комментировать
  • Как подойти к составлению архитектуры многопользовательского бота?

    Vindicar
    @Vindicar
    RTFM!
    Читай про машины состояний. У тебя есть машина состояний, описывающая ход матча ("матч закончен", "ожидание игроков", "ход игрока" и т.п.), и ряд вложенных машин для отдельных игроков ("ожидание готовности", "готовность", "ожидание хода игрока", "ход сделан" и т.п.), которые активируются в определённом состоянии основной машины.
    Ответ написан
    Комментировать
  • Как позиционировать виджеты tkinter?

    Vindicar
    @Vindicar
    RTFM!
    Если ты используешь менеджер pack(), используй параметр anchor для выравнивания вдоль другой оси. expand и fill - для заполнения вдоль другой оси.
    Ответ написан
    Комментировать
  • Почему бот для дискорд не отвечает на команды?

    Vindicar
    @Vindicar
    RTFM!
    Проверь intents. Для классических команд (не слэш-команд) нужен интент messages=True.
    Ответ написан
    Комментировать