import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.vk_api import VkApiMethod as vk_method
import urllib.request
TOKEN = '183564d3cb47a638ac179a4bbc37d14a3b8d982f20b47ebfe925fe869fc39787324e2ab5efdbcbbd1c72a'
token = vk_api.VkApi(token=TOKEN, scope=['photos','messages', 'groups', 'wall'])
longpoll = VkLongPoll(token)
vk_sess = token.get_api()
''' Авторизация по токену, назначение прав доступа к сообщениям, группе, стене. Запуск longpoll '''
for event in longpoll.listen():
''' Прослушка longpoll '''
if event: # Если есть сообщение
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
''' Если есть новое сообщение, адресованное в ЛС группы '''
if event.from_user: # Если пишет пользователь
print("У вас новое сообщение")
''' Прослушка longpoll '''
if event: # Если есть сообщение
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
''' Если есть новое сообщение, адресованное в ЛС группы '''
if event.from_user: # Если пишет пользователь
vk_sess.messages.send(
user_id=event.user_id,
message="Обработка сообщения..."
)
if event.attachments:
print("Получено медиа вложение")
print("Тип => " + event.attachments['attach1_type'])
if event.attachments['attach1_type'] == 'photo':
vk_sess.messages.send(
user_id=event.user_id,
message="Фотография обрабатывается"
)
vk_sess.messages.send(
user_id=event.user_id,
message="Секундочку...."
)
vk_sess.messages.send(
user_id=event.user_id,
message="Фотография обработана.",
attachments=event.attachments
)
''' Далее через метод getById получаем информацию о сообщении '''
items = vk_sess.messages.getById(message_ids=event.message_id)
print('\n')
def iters_func():
''' Функция для скачивания изображения на сервер, для дальнейшей обработки '''
item_url = items["items"][0]["attachments"][0]["photo"]["sizes"][4]["url"]
list_items = [item_url]
for value in list_items:
''' Итерирование списка '''
print(value)
''' Сохранение фотографий на сервере '''
urllib.request.urlretrieve(value, "image.jpg")
iters_func()
C:\Users\admin\Desktop\python\vkbot>b.py
{'attach1_type': 'photo', 'attach1': '412401630_456242277'}
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
import json
TOKEN_ACCESS="access_token"
TOKEN = 'token'
token = vk_api.VkApi(token=TOKEN, scope=['photos','messages', 'groups', 'wall'])
longpoll = VkLongPoll(token)
vk_sess = token.get_api()
''' Авторизация по токену, назначение прав доступа к сообщениям, группе, стене. Запуск longpoll '''
for event in longpoll.listen():
''' Прослушка longpoll '''
if event: # Если есть сообщение
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
''' Если есть новое сообщение, адресованное в ЛС группы '''
if event.from_user: # Если пишет пользователь
print("У вас новое сообщение")
''' Прослушка longpoll '''
if event: # Если есть сообщение
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
''' Если есть новое сообщение, адресованное в ЛС группы '''
if event.from_user: # Если пишет пользователь
vk_sess.messages.send(
user_id=event.user_id,
message="Обработка сообщения..."
)
if event.attachments:
print("Получено медиа вложение\n Тип => " + event.attachments['attach1_type'])
if event.attachments['attach1_type'] == 'photo':
vk_sess.messages.send(
user_id=event.user_id,
message="Фотография обрабатывается"
)
vk_sess.messages.send(
user_id=event.user_id,
message="Секундочку...."
)
vk_sess.messages.send(
user_id=event.user_id,
message="Фотография обработана.",
attachments=event.attachments
)
photo_id = event.attachments['attach1']
photo_id += TOKEN_ACCESS
photo_info = vk_sess.photos.get_by_id(photos=photo_id)
photo_urls = {size['type']: size['url'] for size in photo_info['sizes']}
Traceback (most recent call last):
File "C:\Users\admin\Desktop\python\vkbot\b.py", line 57, in <module>
photo_info = vk_sess.photos.get_by_id(photos=photo_id)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\vk_api\vk_api.py", line 646, in __call__
return self._vk.method(self._method, kwargs)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\vk_api\vk_api.py", line 615, in method
raise error
vk_api.exceptions.ApiError: [27] Group authorization failed: method is unavailable with group auth.
get_by_id
вызвать не могу.import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
import json
TOKEN = 'тут токен'
token = vk_api.VkApi(token=TOKEN, scope=['message', 'groups', 'wall'])
longpoll = VkLongPoll(token)
vk_sess = token.get_api()
''' Авторизация по токену, назначение прав доступа к сообщениям, группе, стене. Запуск longpoll '''
for event in longpoll.listen():
''' Прослушка longpoll '''
if event: # Если есть сообщение
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
''' Если есть новое сообщение, адресованное в ЛС группы '''
if event.from_user: # Если пишет пользователь
vk_sess.messages.send(
user_id=event.user_id,
message="Обработка сообщения..."
)
if event.attachments:
print("Получено медиа вложение\n Тип => " + event.attachments['attach1_type'])
if event.attachments['attach1_type'] == 'photo':
vk_sess.messages.send(
user_id=event.user_id,
message="Фотография обрабатывается"
)
vk_sess.messages.send(
user_id=event.user_id,
message="Секундочку...."
)
vk_sess.messages.send(
user_id=event.user_id,
message="Фотография обработана.",
attachments=event.attachments
)
Там то всё по отдельности ставится, наверняка предполагается такой вариант.