Проблема с event.object.text
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import vk_api
token = 'токен'
vk = vk_api.VkApi(token=token)
vk._auth_token()
vk.get_api()
longpoll = VkBotLongPoll(vk, id)
while True:
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
if event.object.peer_id == event.object.from_id:
if event.object.text.lower() == 'слово':
vk.messages.sent(message='BOT MESSAGE')
Выдаёт ошибку:
AttributeError: 'NoneType' object has no attribute 'lower'
А если пишу if event.object.text() == 'слово': то пишет:
TypeError: 'NoneType' object is not callable.
Ответы (1 шт):
Автор решения: nomnoms12
→ Ссылка
В объекте event.object нет атрибута text, поэтому вместо него возвращается None. А у None нет метода lower, поэтому и возникает ошибка.
Скорее всего, Вам нужен объект event.obj['message'] и такие его поля, как peer_id и text.
К тому же, Вы в дальнейшем неправильно обрабатываете сообщение. У Вас опечатка в названии метода messages.send и отсутствуют обязательные поля.
Пример:
from vk_api import VkApi
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.utils import get_random_id
vk_session = VkApi(token='token')
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, 'group_id')
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
message = event.obj['message']
peer_id = message['peer_id']
text = message['text']
if text.lower() == 'word':
vk.messages.send(
peer_id=peer_id,
message='Test message',
random_id=get_random_id(),
)