Отправка документа через vk_api
Как отправить отдельным сообщением txt файл который находится в той же папке, что и бот?
Ответы (1 шт):
Автор решения: Hypick
→ Ссылка
Перед отправкой, нужно сначало загрузить документ на сервера вк.
result = json.loads(requests.post(vk.docs.getMessagesUploadServer(type='doc', peer_id=event.object.message['peer_id'])['upload_url'], files={'file': open('file.txt', 'rb')}).text)
jsonAnswer = vk.docs.save(file=result['file'], title='title', tags=[])
Затем можно отправлять сам файл:
vk.messages.send(peer_id=event.object.message['peer_id'], random_id=0, attachment=f"doc{jsonAnswer['doc']['owner_id']}_{jsonAnswer['doc']['id']}")
полный скрипт:
import vk_api, json, requests, traceback
from vk_api.bot_longpoll import VkBotEventType
vk_session = vk_api.VkApi(token='token')
vk = vk_session.get_api()
longpoll = vk_api.bot_longpoll.VkBotLongPoll(vk_session, id, wait=25)
while True:
try:
for event in longpoll.listen():
obj = event.object.message
peer = obj['peer_id']
if event.type == VkBotEventType.MESSAGE_NEW:
result = json.loads(requests.post(vk.docs.getMessagesUploadServer(type='doc', peer_id=peer)['upload_url'],
files={'file': open('file.txt', 'rb')}).text)
jsonAnswer = vk.docs.save(file=result['file'], title='title', tags=[])
vk.messages.send(
peer_id=peer,
random_id=0,
attachment=f"doc{jsonAnswer['doc']['owner_id']}_{jsonAnswer['doc']['id']}"
)
except:
print(traceback.format_exc())