Задать вопрос
  • Как ускорить вывод в консоль Python?

    Vindicar
    @Vindicar
    RTFM!
    Не выводить в консоль так часто.
    Ответ написан
    Комментировать
  • Как нейросеть научить понимать текст?

    Vindicar
    @Vindicar
    RTFM!
    Коротко: никак.

    Ты можешь попытаться классифицировать тексты по тематике, используя ключевые слова, и искать те тексты / фрагменты, которые содержат те же ключевые слова, что и заданный вопрос.
    Но даже такое определение содержит кучу проблем.
    1. Слова могут иметь разные словоформы. Нужен стемминг для выделения корней слов.
    2. Какие слова считаются ключевыми? Нужен как минимум частотный анализ слов. Слова с очень высокой частотой будут менее полезны при работе.
    3. Порядок слов может менять смысл вопроса. Значит, придётся использовать рекуррентные (seq2seq) сети.
    4. Нужно понять, как кодировать подаваемые на вход ключевые слова. Неудачное кодирование может сильно ограничить возможности сети.

    И после этого тебе нужно будет найти/создать большую базу (десятки тысяч и более элементов) пар "вопрос-ответ", на которой ты будешь обучать свою сеть. И то, после этого она сможет только отвечать на наиболее похожие вопросы из этой базы (плюс/минус формулировка). Обычно горе-программисты убегают с плачем на этом этапе.

    Честно, примитивный частотный анализ (какие слова встречаются в тексте ответа и в тексте вопроса) может дать менее бредовый результат, и будет проще в реализации.
    Ответ написан
    Комментировать
  • Почему не отправляется изображение?

    Vindicar
    @Vindicar
    RTFM!
    Потому что ты не читаешь, что пишешь.
    text = '999'
    draw = ImageDraw.Draw(text)

    Конструктор Draw() принимает изображение, на котором надо рисовать, а ты ему какую-то строку подсунул. Вот он и ругается,
    AttributeError: 'str' object has no attribute 'getdraw'
    Ответ написан
    Комментировать
  • Как сделать выдачу роли в дискорде по команде?

    Vindicar
    @Vindicar
    RTFM!
    Если нужно выдать указанному пользователю, а не отправителю команды:
    @client.command()
    async def кухня(ctx, member: discord.Member):
        role = discord.utils.get( member.guild.roles, id = 981594840879988807)
        await member.add_roles( role )
    Ответ написан
    4 комментария
  • Как в OpenCV сделать постройку грида с обновляемыми фото?

    Vindicar
    @Vindicar
    RTFM!
    Изображение в opencv-python - это numpy массив, там можно обновлять области с помощью срезов.
    Например, прямоугольная область с левым верхним углом (X;Y) и размером W x H обновляется тривиально:
    image[Y:Y+H, X:X+W] = new_content
    При этом подразумевается что new_content имеет размер W x H и такое же число каналов.

    Т.е. можно для каждого изображения в сетке хранить его позицию, и обновлять его область отдельно.
    Ответ написан
    Комментировать
  • Как изменить одинаковые значения в нескольких элементах массива numpy не перебирая элементы циклом? Есть ли метод у нампая?

    Vindicar
    @Vindicar
    RTFM!
    area = matrix_new[100:200, 100:200]  # это делает ссылку на область массива, а не копию области!
    area[area == 250] = 255  # так что когда мы изменяем эту область, оригинал изменится.

    Должно работать быстрее, так как цикл прохода по массиву реализован внутри numpy, а не в рамках интерпретатора питона.
    Но будет есть память, если массив большой.
    Ответ написан
    3 комментария
  • Как добавить значение в базу данных?

    Vindicar
    @Vindicar
    RTFM!
    Я подозреваю, что создалась у тебя не таблица, а файл базы данных.
    Что бы создать таблицу, используй db.create_tables([Character])
    Ответ написан
    Комментировать
  • Не работает JSON в дискорд боте. Что делать?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, используй httplib. Она идёт как зависимость к discord.py, так что ставить её отдельно не надо. Зато она асинхронная, и не будет вешать бота на время выполнения запроса.
    Во-вторых, при работе с сетью всегда предполагай подвох! Сайт, к которому ты обращаешься, может тебе ответить сразу, ответить через 5 минут, не ответить вовсе, ответить сообщением об ошибке, или отредиректить на фото задницы - гарантий тут нет, так как ты этот сайт не контролируешь. Поэтому ОБЯЗАТЕЛЬНО лови исключения, и сообщай о произошедшем либо пользователю, либо себе в личку.
    Ответ написан
    Комментировать
  • Как сделать что бы айди пользователя был как пинг?

    Vindicar
    @Vindicar
    RTFM!
    1. Перепиши заголовок метода:
    async def cuddle(self, ctx, member: discord.Member=None):

    Тогда discord.py сам попытается найти пользователя, соответствующего аргументу команды.
    2. Используй метод member.mention().
    3. ???
    4. PROFIT

    А вообще такая команда имеет смысл только для тренировки.
    Ответ написан
  • Не создается срез в python. Ошибка TypeError?

    Vindicar
    @Vindicar
    RTFM!
    Потому что ты не разбираешься в областях видимости переменных.
    У тебя описаны глобальные переменные:
    downtime_border1 = ''  # строка!
    downtime_border2 = '' # строка!

    А ты делаешь присваивание локальным переменным
    # Присваивание значения 1 границе
        downtime_border1 = string.find('дн', time_border2)-2
    # 2 границе
        downtime_border2 = string.rfind('.', downtime_border1)

    Это никак не затронет глобальные переменные с тем же именем, а только "заслонит" их внутри функции. Читай про ключевое слово global.
    А лучше - переделай код так, чтобы не использовать глобальные переменные вообще. Используй возвращаемые значения.
    А ещё лучше - перепиши код так, чтобы передавать минимум данных. Например, тебе точно нужны отдельные функции template() и losed()? Их нельзя объединить в одну?

    А совсем хорошо - освой регулярные выражения. Это здорово упростит решаемую тобой задачу.
    Ответ написан
  • Насколько реально создать музыкального дискорд бота который поддерживает воспроизведение музыки из вк,яндекса и youtube?

    Vindicar
    @Vindicar
    RTFM!
    Проблема поддержки ресурсов только в том, чтобы выцарапать с них медиа-поток. Ютуб его точно прячет (именно из-за любителей пограбить музыку/видео), остальные, полагаю, тоже.
    Если спроектируешь бота как следует, то проблем не будет. Спрячешь все ресурсы за обёртки с одинаковым программным интерфейсом, и с точки зрения остальной части бота работа с тремя ресурсами ничем не будет отличаться.
    Язык - тот, который тебе знаком, и на котором есть нужные библиотеки.
    Ответ написан
    Комментировать
  • Пытаюсь сделать подсчет количество сообщений но не выходит discord.py?

    Vindicar
    @Vindicar
    RTFM!
    1. Запрос CREATE TABLE не нужно делать при каждом сообщении. Перенеси его в код, который вполняется при запуске бота.
    2. Не используй f-строки для формирования запросов. Почитай про подстановку параметров запроса.
    3. cur.execute() не вернёт тебе None или данные. Вызови метод fetchone(), чтобы получить одну строку данных, или None если данных нет.
    4. Если ты используешь sqlite, почитай про синтаксис INSERT ON CONFLICT DO UPDATE. Позволяет выполнить операцию в духе "создай запись, а если такая уже есть - обнови её", и тем самым свернуть твой if в один запрос. В других СУБД есть аналогичная возможность.
    Ответ написан
  • Как сделать бан по ID в декораторе @bot.event?

    Vindicar
    @Vindicar
    RTFM!
    Тебе нужно хранить соответствие между id сообщения и объектом Member пользователя, которого нужно забанить.
    Например, в словаре.
    Тогда команда !ban будет помещать эти сведения в словарь (так как у неё есть доступ к ним), а on_raw_reaction_add() будет проверять наличие id сообщения в словаре.
    Если такой id есть, и реакций достаточно, то принимаем решение о бане, и извлекаем объект Member по этому ключу.
    Если такого id нет, то реакция была поставлена под каким-то другим сообщением, и мы его игнорируем.
    Удалять id сообщения из словаря можно по таймауту - это можно реализовать прямо в обработчике команды. Запостили сообщение, добавили его id в словарь, уснули на пару минут через asyncio.sleep(), проверили наличие id в словаре. Если он там - удалили.

    Реализация несложная, справишься сам. Единственный минус - если бот перезапустится в процессе голосования, то команда не сработает. Но я не думаю, что это большая проблема.
    Ответ написан
    Комментировать
  • Python BS4. как получить ссылку из?

    Vindicar
    @Vindicar
    RTFM!
    1. В выбранном тобой фрагменте дерева найти тег a. Как искать теги, ты уже знаешь, раз код написал.
    2. Взять атрибут href.
    Ответ написан
    Комментировать
  • Возникает проблема с фреймворком opencv python, почему?

    Vindicar
    @Vindicar
    RTFM!
    Проверяй значение ret. Если оно не истинно, то кадр получить не удалось. Что в этом случае будет в img - хороший вопрос.
    Может быть, камера занята каким-то другим процессом. Например, предыдущей копией твоей программы.
    Ответ написан
    Комментировать
  • Как обращаться к атрибутам надкласса?

    Vindicar
    @Vindicar
    RTFM!
    То, что класс A определён внутри C, ещё не значит, что будет хоть какая-то связь между экземплярами этих классов. У тебя может быть экземпляр A, который создан просто вот так a = C.A(), отдельно от класса C.
    Так что ответ такой: если ты явно передаешь ссылку на экземпляр класса C экземпляру класса A, то последний сможет пользоваться этой ссылкой, точно так же как и любой другой переданной ссылкой на объект. В том числе обращаться к атрибутам, вызывать методы и пр.
    Если ты явно ссылку не передаёшь, то ей взяться будет неоткуда.
    Ответ написан
    Комментировать
  • Как сделать фильтрацию сообщений?

    Vindicar
    @Vindicar
    RTFM!
    1. Читаешь документацию discord.py насчёт события on_message()
    2. Читаешь документацию насчёт объекта Message и его свойств, в частности channel и его id.
    3. Читаешь документацию насчёт метода delete() у объекта Message.
    4. Комбинируешь полученные знания в одну программу.

    Документация тут.
    Ответ написан
    Комментировать
  • Как можно оптимизировать процесс?

    Vindicar
    @Vindicar
    RTFM!
    Т.е. я правильно понял, что тебе нужно вывести делители для тех чисел между 50М и 60М, у которых 6 делителей и в числе делителей присутствует 911?

    Начни с другого конца. Раз 911 должен присутствовать, то нет нужды перебирать все числа между 50М и 60М - достаточно перебирать только кратные 911. Их будет чуть меньше 11 тысяч, а не 10 миллионов.
    for d in range(50000000 // 911 + 1, 60000000 // 911 + 1):

    Далее разлагаешь d на делители, если делителей ровно 5 - добавляешь в список делителей 911 и выводишь.
    Ответ написан
  • Как создать профили персонажей?

    Vindicar
    @Vindicar
    RTFM!
    1. Определяешь сущности, сведения о которых нужно будет хранить: персонаж, предмет, и т.п.
    2. Определяешь сведения, которые нужно хранить о каждой из сущностей.
    2б. Определяешь способы идентификации каждой сущности - например, назначаешь порядковый номер.
    3. Определяешь связи между персонажами. Например, является ли предмет неотъемлемой частью персонажа?
    3. Осваиваешь какую-нибудь простую ORM, типа peewee или sqlalchemy. Читаешь туториалы, пробуешь написать что-то простое для начала.
    4. Описываешь сущности как модели в рамках ORM. Описываешь связи между ними.
    5. Описываешь операции (скажем, просмотр/создание/удаление персонажа) как запросы к моделям.
    6. Привязываешь операции к командам бота.

    Как-то так.
    Ответ написан
    Комментировать
  • Что не так с этим кодом?

    Vindicar
    @Vindicar
    RTFM!
    @client.event
    async def info(ctx):


    Может, всё-таки @bot.command?
    Ответ написан