Ответы пользователя по тегу ВКонтакте
  • Как ускорить метод users.get?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вся проблема у вас из-за того, что вы тут делаете много http-запросов к API. Это в любом случае будет не быстро.
    Вам нужно изучить API на предмет bulk-запросов, когда вы извлекаете сразу много записей одним http-запросом к API.
    На сколько я понимаю, друзей может быть очень много, а вы идёте в глубину на два яруса, что имеет квадратичную сложность. То есть если у всех в среднем 10 друзей, то вы сделаете по десять запросов на каждого из десяти дррузей, что очень долго - 100 запросов!

    Для начала вы можете кэшировать полученные от API данные, чтобы повторно не получать одни и те же, если есть общие друзья. Нужно найти bulk-методы в API и правильно их использовать (если они есть).

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

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Во-первых, у вас второй обработчик состояния имеет то же имя, что и первый:
    @bot.on.message(state=SuperStates.CONFIDENT_STATE)  # StateRule(SuperStates.AWKWARD_STATE)
    async def awkward_handler(message: Message):

    Во-вторых, у вас код останавливается на этом состсоянии. Сделайте еще одно и переходите в него, там можете реагировать и на другие команды.
    Ответ написан
    Комментировать
  • Как реализовать?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Прочитайте про концепцию "конечного автомата". В вашем автомате будет столько отдельных курсоров, сколько пользователей общается с ботом. Нужно для каждого пользователя хранить отдельный курсор в графе состояний. В зависимости от пользователя выбираем извлекаем нужный курсор и в зависимости от его положения интерпретируем сообщение.
    Цикл отдельный запускать сожиданием ответа для одного польователя - это не правильно.
    Ответ написан
    2 комментария
  • Как доставать id чата из id беседы с помощью регулярки?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Жесть.
    int('2000000179'[1:])
    int('2000000003') - 2000000000

    Решил вырезать другу аппендицит. Слышал, что он растёт внизу живота. Скажите, его можно достать через задницу, если нет, то куда тыкать ножиком?
    Ответ написан
    1 комментарий
  • Что делать если не получается обратится к словарю?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Сделайте print(newchat) и сразу увидите что не так.
    Ответ написан
    3 комментария
  • Как выбрать рандомного пользователя из беседы ВКонтакте?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    А что у вас не получается-то? Ни разу не трогал VK API, но вот же у них в документации всё про этот метод ваш: https://vk.com/dev/messages.getConversationMembers
    И в результате он пользователей вам вернёт. Выбирайте случайного и пользуйтесь.
    random.choice(users.items)
    Вот и будет вам случайный из них.

    Такое ощущение, что народ просто натыкается в какой-нибудь мурзилке для хацкеров на тривиальный пример кода VK-бота, у этих хацкеров мгновенно загорается над головой лампочка и начинает жечь. Так жжот, что ни документацию читать ни гуглить не хочется, а хочется сразу запрограммировать идею. После двухнедельных мытарств в поисках ответа на ютубе, в инстаграмме и твиттере методом скролла хакерских тредов с котиками кто-то подсказывает юному гению про этот чудесный ресурс, где всем бесплатно всё делают.
    Вот и рождаются такие вопросы "Я ХЗ что-то я вот тут вот написал" (списал) "но не работает, что делатькакбытьпамагите!, чтотасламалося". И ни ошибки, ни сути проблемы, ничего не ясно. Ясно только что автор вопроса скорее всего не вдупляет совершенно НИЧЕГО, и ему придётся рассказывать про арифметику, про то как сложение делать, что такое цифры и какие бывают буквы, чтобы он что-то понял. Ну или чудом угадать что ему, всё таки, надо и написать работающий код, чтоб отстал и ушел.
    Ответ написан
    3 комментария
  • На чем лучше писать программу?

    trapwalker
    @trapwalker
    Программист, энтузиаст

    Я бы посоветовл python. Порог вхождения не высок, а развить вашу идею можно до даже до локального веб приложения на джанго

    Ответ написан
    Комментировать