Задать вопрос
  • Как покинуть discord сервер по его идентификатору в discord.py?

    Vindicar
    @Vindicar
    > await ctx.send(embed = discord.Embed(title = "Ошибка"))
    Очень информативно. Может, стоит хотя бы логгировать возникающие исключения, чтобы было понятно что происходит?
  • Как завершить функцыю?

    Vindicar
    @Vindicar
    Rotyin, то-то у тебя вопрос за вопросом.
  • Как завершить функцыю?

    Vindicar
    @Vindicar
    Алан Гибизов, присмотрись к коду. Этот товарищ всё ещё пытается подружить telethon с pyrogram'ом, несмотря на мои внушения, что это не очень хорошая идея.
  • Await message.answer("Nety") выводить текст можно только на английском. Что делать?

    Vindicar
    @Vindicar
    > выводить текст можно только на английском
    Еще раз и по-русски. Что происходит, если пытаешься вывести текст на русском?
  • Как сделать чтобы не выходило из условия?

    Vindicar
    @Vindicar
    Код где? Телепаты все на карантине.
  • Как вызвать метод уже запущенного потока?

    Vindicar
    @Vindicar
    Код в студию, а то непонятно (не забываем про кнопку </>).
  • Как сделать что бы участник сервера дискорд мог задать вопрос разработчику через бота discord.py?

    Vindicar
    @Vindicar
    FffyfuFUbf, я написал выше, что для этого нужно сделать.
    ПОдробности как это сделать, читай в доках на discord.py.
  • Как использовать asyncio внутри Thread Python?

    Vindicar
    @Vindicar
    r1dddy4sv, т.е. у тебя в главном потоке GUI? Что ж ты мозги-то полоскал...
    Вообще посмотри в сторону qasync, оно вроде как раз про то, как подружить Qt с asyncio. Вот пример.
    Либо можно поколхозить что-то свое.
    def main():
        input() #тут синхронный код тела программы
    
    async def background_task():
        #тут код долгоиграющей асинхронной задачи
        while True:
            print('beep boop')
            await asyncio.sleep(1) 
    
    if __name__ == '__main__':
        loop = asyncio.get_event_loop()
        #создаём фоновую задачу
        loop.create_task(background_task())
        #создаём задачу для исполнения main() в отдельном потоке
        main_task = loop.run_in_executor(None, main)
        #выполняемся пока main() не отработает
        loop.run_until_complete(main_task)

    С запуском новых асинхронных задач из другого потока могут быть проблемы - читай тут. И даже если задачу запустишь, получить её результат может быть еще сложнее.
  • Перезапуск python скрипта с определенной строки?

    Vindicar
    @Vindicar
    Hemul GM, сохранение состояния не было озвучено в исходной задаче.
    Кроме того, так как не указано, с какой строки перезапускать скрипт, то я полагаю что с любой - а это означает сохранение снимка состояния скрипта после каждого оператора. Скорость работы представляете, я думаю.
    Наконец, если скрипт не "вещь в себе", он будет взаимодействовать с окружением - и это окружение будет являться частью его состояния. Например, открытые сетевые соединения и состояние программы на другой стороне соединения. Далеко не все варианты этого окружения можно легко сохранить и воссоздать.
  • Как сделать, чтобы не было вечного цикла в команде?

    Vindicar
    @Vindicar
    Zakkaru, тогда отложи бота и учи основы Питона. Иначе тебе придётся по буквам диктовать, что делать, а этим тут никто заниматься не будет.
  • Что сделать чтобы убрать ошибки?

    Vindicar
    @Vindicar
    Поработать головой и понять, откуда указанный код должен взять переменные add_to_subs и username и почему он их не может оттуда взять.
    Ну или поработать мозжечком и понять, что без полного кода (оформленного кнопкой </>) ты нормального ответа не получишь. Телепаты все на карантине.
  • Почему в numpy берется только тонкая полоска изображения?

    Vindicar
    @Vindicar
    Alex_Kuzen, а что ты пытаешься сделать?
    Потому что если хочешь перебрать каждый пиксель, то достаточно вложенной пары циклов.
    А если ты хочешь умножить все каналы всех пикселей изображения на одно и то же число, то почитай про операции с массивами в numpy. Можно просто сделать вот так:
    a_float = a.astype(np.float64)
    a_float *= np.random.random()
    a = a_float.astype(np.uint8)

    Для разных чисел в разные пиксели можно сделать так:
    a_float = a.astype(np.float64)
    #каждый пиксель будет умножен на своё значение, но каналы одного пикселя будут умножены на одно и то же
    a_float *= np.random.random((a.shape[0], a.shape[1])) 
    a = a_float.astype(np.uint8)

    Это будет куда быстрее чем цикл через питон.
  • Как реализовать поиск в sqlite на python?

    Vindicar
    @Vindicar
    k_f_i, ну можно и так, но я бы не цикл делал. Лучше функцию агрегации типа SUM().
    Тогда у тебя будет таблица с постами и таблица с весом (обратной частотностью) поисковых слов.
    Делаешь JOIN постов с частотностью, отсеиваешь те слова, которые есть в запросе, потом GROUP BY по ID поста, и вычисляешь сумму значений по группе. По этому сумме уже сортируешь.
  • Как можна приобразовать клас в str и обратно?

    Vindicar
    @Vindicar
    Rotyin, ну да, только вот ты не можешь заставить программу работать как надо.
    Оно работает, потому что pyrogram.idle() никогда не возвращает значение, а не возвращает он значение потому что нет ни одного pyrogram-клиента - все клиенты на telethon, и pyrogram о них не знает.
    В общем, я тебе уже выше написал что делать. Создаёшь глобальный event = asyncio.Event(), и в start() просто делаешь await event.wait(). Это подвесит выполнение start(), но не помешает всему остальному.
    Когда надо будет завершить работу программы, сделаешь event.set(), и это завершит все копии start().
  • Как можна приобразовать клас в str и обратно?

    Vindicar
    @Vindicar
    Rotyin, читал пример по-диагонали?
    # choose one of this
    import telethon
    import pyrogram

    Засунь фразу в гугло переводчик, если английского не знаешь.
    Пример содержит код для обоих библиотек, тебе нужно оставить одну их них.
  • Как можна приобразовать клас в str и обратно?

    Vindicar
    @Vindicar
    Rotyin, погоди, дело не в том. Это вообще разные библиотеки, почему ты ожидаешь что они будут знать друг о друге и как-то кооперироваться?
    И потом, от того что ты написал перед функцией await, она асинхронной не станет.
  • Как реализовать поиск в sqlite на python?

    Vindicar
    @Vindicar
    k_f_i,
    0. Определяешь список слов-тегов для каждой записи. Подвергаешь слова стеммингу и, возможно, добавляешь синонимы.
    1. Строишь частотный список тегов. Теги, которые встречаются более чем в N% записей, вносишь в игнор лист. N определяешь эмпирически.
    2. Разбиваешь запрос на слова, подвергаешь слова стеммингу. Получаешь список тегов запроса.
    3. Для каждой записи считаешь её вес как сумму весов тегов, общих для записи и для запроса. Формула расчёта веса тега - твоя собственная. В простейшем случае все теги имеют вес 1, но можно и усложнить:
    - учитывать частоту тега - редкие теги имеют больший вес
    - учитывать позицию тега в запросе - теги ближе к началу имеют больший вес.
    4. Выводишь записи в порядке убывания веса.
  • Как можна приобразовать клас в str и обратно?

    Vindicar
    @Vindicar
    Rotyin, погоди-ка... согласно документации, pyrogram.idle() это вообще не асинхронная функция. Почему ты делаешь ей await?
    И потом, а нафиг она тебе? Она нужна только чтобы держать в ступоре главный поток. У тебя главный поток занят выполнением цикла asyncio из-за run_untile_complete(). Цикл будет крутиться, пока все копии start() не отработают. Просто задержи работу start() насколько тебе нужно, например, через ожидание asyncio.Event.
    И еще потом, а причем тут вообще pyrogram если ты используешь telethon? Это ж две разные библиотеки?
  • Как реализовать поиск в sqlite на python?

    Vindicar
    @Vindicar
    k_f_i, вот подробнее подсказать не могу, не занимался таким. Можешь ещё поискать термин стемминг - это отсечение окончаний у слов, чтобы "яичница" и "яичницы" хотя бы считало одним словом.
  • TypeError: 'NoneType' object cannot be interpreted as an integer как исправить?

    Vindicar
    @Vindicar
    Алан Гибизов, тут очень непросто всё.
    В списке процессов мы получаем только ID процесса (не то же самое, что и дескриптор).
    Чтобы закрыть процесс по ID, нужно сначала его открыть через WinAPI функцию OpenProcess(), чтобы получить дескриптор - и это при условии что нам дадут права на манипуляцию процессом. Хотя нашем случае процесс наш дочерний, так что его создание через CreateProcess() уже даст нам дескриптор с нужными правами. А потом уже можно сделать TerminateProcess(), но это очень грубое прибитие процесса, как kill -9 в линуксах. В принципе можно нежнее, но тут требуется знать, что мы запускаем. Например, GenerateConsoleCtrlEvent() для посыла Ctrl-C консольному приложению, или найти главное окно у графического приложения и послать ему сообщение WM_QUIT через PostMessage().

    Так что копать вообще-то нужно в сторону модуля subprocess - он оборачивает дескриптор процесса в объектную обертку, и даёт средства им порулить.

    Фишка ещё в том, что в винде очень многие дескрипторы закрываются через вызов CloseHandle() - в том числе файловые, и дескрипторы процессов/потоков. Так что использование os.close() для закрытия дескриптора процесса на винде сработало бы норм, но не потому что это правильное или предусмотренное поведение. X)
    Ну и да, закрытие дескриптора не останавливает процесс, только закрывает наш доступ к этому процессу и освобождает память с информацией о завершении процесса, когда он завершился.