@FaulerAffe
-

Почему некоторые события vk api не работают на python?

Начал изучать документацию vk api и захотел написать своего бота на python. Сразу говорю - все права я ему дал, ключ сгенерировал и т.д. Есть данная страница - https://vk.com/dev/groups_event , она описыват все события, которые можно использовать в vk api. Все делаю через Long Poll. Самое простое, реакция на определённое сообщения пользователя, работает (событие message_new) через такой код:
import requests
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.utils import get_random_id

vk_session = vk_api.VkApi(token='a94555a01de3af80559b4184b10c33d5b8c88203afb449090b4bc0a06fa7485e3be0114453a3bf7681f1f')

longpoll = VkLongPoll(vk_session)
vk = vk_session.get_api()

for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW and event.text:		
        if event.text == 'привет' or event.text == 'здарова':
            vk.messages.send(user_id=event.user_id, random_id=get_random_id(), message='Привет!')
            print('Ja')


По такой логике, как я понял, бот может реагировать на любое событие таким образом:

if event.type == VkEventType.{любое событие из документации}: vk.messages.send(user_id=event.user_id, random_id=get_random_id(), message='Привет!')

Однако почему-то это не работает. Вот такой код выдаёт ошибку:
elif event.type == VkEventType.PHOTO_NEW:
        vk.messages.send(user_id=event.user_id, random_id=get_random_id(), message='Привет!')
        print('Ja')


При этом такое ощущение, что события PHOTO_NEW вообще не существует, его даже не предлагает visual studio в подсказках, хотя в документации он есть. Вот подробный отчёт:

Сообщение = PHOTO_NEW
Источник = C:\Users\vovak\source\repos\PythonApplication2\PythonApplication2\PythonApplication2.py
Трассировка стека:
File "C:\Users\vovak\source\repos\PythonApplication2\PythonApplication2\PythonApplication2.py", line 16, in
elif event.type == VkEventType.PHOTO_NEW:

В кратком описании ошибки выдаёт просто PHOTO_NEW. При этом есть события, которых нет в документации И ОНИ РАБОТАЮТ, например USER_TYPING (срабатывает, когда пользователь пишет что-то в чат), узнал о нём через подсказки visual studio. Если вы знаете, как боту среагировать, допустим, именно на фото, покажите, пожалуйста, откуда вы это узнали, потому что я ничего для python не нашёл.
  • Вопрос задан
  • 543 просмотра
Решения вопроса 1
@FaulerAffe Автор вопроса
-
Добавил строку:
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType


И заменил везде VkEventType на VkBotEventType, теперь в подсказках нужные события есть, ошибку не выдаёт, но ничего и не работает, вообще ноль реакции
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@fanepka
Работаю на Python
Так хорошо почитайте документацию по bot_longpoll.Там не указаны данные методы
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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