@Ninzalo

Как отправить документ в сообщении вк через vk_api?

Здравствуйте,
У меня есть функция, пересылающая сообщения (что-то по типу message mirroring) - боту приходит сообщение > бот пересылает это сообщение обратно.

Если в сообщении есть вложения, то она их обрабатывает и пересылает сообщение вместе со всеми вложениями. Но почему-то, если вложение = doc, то вложения не пересылаются (photo/audio/video вложения прекрасно обрабатываются)
Цитата со страницы vk_api
Медиавложения к личному сообщению, перечисленные через запятую. Каждое прикрепление представлено в формате: {type}{owner_id}_{media_id}

attachments = []
if event.object.message['attachments'] != []:
    attachments = event.object.message['attachments'] 
sender(id=target['user_id'], text=text, attachments=attachments)


def sender(id, text=None, keyboard=None, attachments=None):
    post = {
        'user_id': id,
        'random_id': 0
    }
    if text is not None:
        post['message'] = text
    if keyboard is not None:
        post["keyboard"] = keyboard.get_keyboard()
    if attachments is not None and attachments != []:
        post['attachment'] = ''
        for attachment in attachments:
            type_of_attachment = attachment['type']
            attachment_owner_id = attachment[f'{type_of_attachment}']['owner_id']
            attachment_id = attachment[f'{type_of_attachment}']['id']
            try:
                attachment_access_key = attachment[f'{type_of_attachment}']['access_key']
                post['attachment'] += (f'{type_of_attachment}{attachment_owner_id}_{attachment_id}_{attachment_access_key},')
            except:
                post['attachment'] += (f'{type_of_attachment}{attachment_owner_id}_{attachment_id},')
    vk_session.method('messages.send', post)


Есть ли возможность именно переслать документ, а не сохранить этот документ + загрузить его на сервера вк от своего лица + отправить?

UPD:
Единственный вариант пока что - вместо документа отправлять ссылку на документ, но мне не особо нравится как это отображается в сообщении
Пример кода:
attachments = []
if event.object.message['attachments'] != []:
    attachments = event.object.message['attachments']
sender(id=target['user_id'], text=text, attachments=attachments)


def sender(id, text=None, keyboard=None, attachments=None):
    post = {
        'user_id': id,
        'random_id': 0
    }
    if text is not None:
        post['message'] = text
    if keyboard is not None:
        post["keyboard"] = keyboard.get_keyboard()
   if attachments is not None and attachments != []:
        post['attachment'] = ''
        for attachment in attachments:
            type_of_attachment = attachment['type']
            if type_of_attachment == 'doc':
                post['attachment'] += f'{attachment[f"{type_of_attachment}"]["url"]}'
            else:
                attachment_owner_id = attachment[f'{type_of_attachment}']['owner_id']
                attachment_id = attachment[f'{type_of_attachment}']['id']
                try:
                    attachment_access_key = attachment[f'{type_of_attachment}']['access_key']
                    post['attachment'] += f'{type_of_attachment}{attachment_owner_id}_{attachment_id}_{attachment_access_key},'
                except:
                    post['attachment'] += f'{type_of_attachment}{attachment_owner_id}_{attachment_id},'
        print(post['attachment'])
    vk_session.method('messages.send', post)
  • Вопрос задан
  • 215 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы