vk_api icon indicating copy to clipboard operation
vk_api copied to clipboard

Загрузка файлов от имени сообщества ну вообще неочевидна

Open gaussandhisgun opened this issue 5 months ago • 1 comments

Возможно, стоит добавить пример загрузки файла в личные сообщения сообщества. Я сейчас пытаюсь это сделать, и оно ну совсем немного не работает.

Окружение

vk_api: 11.10.0

API: Longpoll 5.199

Пример

    vk_session = vk_api.VkApi(token=group_token)

    longpoll = VkBotLongPoll(vk_session, group_id)
    upload = vk_api.VkUpload(vk_session)
    

    for event in longpoll.listen():

        if event.type == VkBotEventType.MESSAGE_NEW:
            print(event)
            print(event.obj)
            print(event.obj.message)

            print('new message:')

            print('by: ', end='')

            print(event.obj.message["from_id"])
            
            print(text:', event.obj.message["text"])
            # для примера, пытаемся загрузить файл, который был указан в сообщении, используя текст как путь
            document = upload.document_message(event.obj.message["text"], peer_id=event.obj.message["peer_id"])
            print(document)

Код выше возвращает мне вот такое:

Traceback (most recent call last):
  File "/home/gravitos/Projects/..././bot.py", line 64, in <module>
    main()
    ~~~~^^
  File "/home/gravitos/Projects/..././bot.py", line 48, in main
    document = upload.document_message(event.obj.message["text"], peer_id=event.obj.message["peer_id"])
  File "/home/gravitos/Projects/.../lib/python3.13/site-packages/vk_api/upload.py", line 460, in document_message
    return self.document(doc, title, tags, message_peer_id=peer_id)
           ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gravitos/Projects/.../lib/python3.13/site-packages/vk_api/upload.py", line 436, in document
    return self.vk.docs.save(**response)
           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/home/gravitos/Projects/.../lib/python3.13/site-packages/vk_api/vk_api.py", line 1043, in __call__
    return self._vk.method(self._method, kwargs)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/home/gravitos/Projects/.../lib/python3.13/site-packages/vk_api/vk_api.py", line 934, in method
    raise error
vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: file is undefined

Файл существует.

gaussandhisgun avatar Sep 18 '25 09:09 gaussandhisgun

-а, ладно, проблема была в том, что название загружаемого файла заканчивалось на ".html". типичный вконтакте, поменяй на ".txt" и всё будет работать

gaussandhisgun avatar Sep 18 '25 19:09 gaussandhisgun