Ответы пользователя по тегу Боты
  • Как избежать бана при подписке на множество телеграм каналов?

    @Taus
    Читайте внимательнее документацию к telethon(Avoiding limits).
    Ответ написан
    Комментировать
  • Как реализовать работу ВК-бота на Python одновременно с несколькими пользователями?

    @Taus
    Вам необходимо сохранять номер шага/вопроса (кто-то называет это контекстом общения, состоянием) для каждого пользователя, который начал диалог с ботом. К сожалению в открытом доступе таких библиотек для vk на python не нашёл. Поэтому приведу общий алгоритм решения такой задачи. За конкретной реализацией уже надо на соседний сайт.
    В случае линейной цепочки вопросов без возможности возврата назад
    Начало +-> Вопрос 1 +-> Вопрос 2 +-> Вопрос 3 +-> Конец
                ^   +        ^   +        ^   +
                +---+        +---+        +---+

    достаточно только хранить номер вопроса, на котором остановился пользователь.

    Если же диалог предполагается более сложны, разветвлённым и даже с возвратами на предыдущие шаги,
    Начало +-> Вопрос 1 +-> Вопрос 2 +-> Конец
                 +              ^
                 +-> Вопрос 3 +-+

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

    @Taus
    Поскольку документация противоречит сама себе в пункте 3.1 и пункт 6. Если предположить, что верен пункт 6, как вы его используете в
    print("Получено медиа вложение\n Тип => " + event.attachments['attach1_type'])

    то в объекте event.attachments есть поле attach1, которое можно использовать в методе photos.getById:
    photo_id = event.attachments['attach1']
    photo_info = vk_sess.photos.get_by_id(photos=photo_id)
    photo_urls = {size['type']: size['url'] for size in photo_info['sizes']}

    В photo_urls ссылки в соответствии с размерами photo_sizes.

    # update
    Выше способ не позволяет получить photo_id с приватным access_key, без которого не получится вызвать photos.getById. Поэтому:
    Тогда по event.message_id получаете информацию с помощью метода message.getById, в котором должно быть поле attachments. Описание структуры поля https://vk.com/dev/objects/attachments_m и для photo https://vk.com/dev/objects/photo.
    Ответ написан