Ошибка:AttributeError: 'NoneType' object has no attribute 'get'
import vk_api
from vk_api.utils import get_random_id
from toks import main_token
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
def write_message(sender, message):
vk_session.method('messages.send', {'chat_id' : sender, 'message': message, 'random_id' : get_random_id })
vk_session = vk_api.VkApi(token = main_token)
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, group_id = 193736173)
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat and event.message.get('text') !="":
reseived_message = event.message.get('text')
sender = event.chat_id
if reseived_message == "Привет":
write_message(sender, "Добрый день")
elif reseived_message == "Пока":
write_message(sender, "До свидания")
else:
write_message(sender, "Я вас не понимаю")
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Добавьте проверку на event.message, если оно None, то условие не будет выполнено и код не дойдет до event.message.get('text').
Пример:
from toks import main_token
import vk_api
from vk_api.utils import get_random_id
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
def write_message(sender, message):
vk_session.method('messages.send', {'chat_id': sender, 'message': message, 'random_id': get_random_id()})
vk_session = vk_api.VkApi(token=main_token)
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, group_id=193736173)
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat \
and event.message and event.message.get('text'):
reseived_message = event.message.get('text')
sender = event.chat_id
if reseived_message == "Привет":
write_message(sender, "Добрый день")
elif reseived_message == "Пока":
write_message(sender, "До свидания")
else:
write_message(sender, "Я вас не понимаю")
Посмотрел пример из vk_api и увидел расхождение.
По тому примеру код должен был быть таким:
from toks import main_token
import vk_api
from vk_api.utils import get_random_id
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
def write_message(sender, message):
vk_session.method('messages.send', {'chat_id' : sender, 'message': message, 'random_id': get_random_id()})
vk_session = vk_api.VkApi(token=main_token)
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, group_id=193736173)
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
reseived_message = event.obj.text
sender = event.obj.from_id
if reseived_message == "Привет":
write_message(sender, "Добрый день")
elif reseived_message == "Пока":
write_message(sender, "До свидания")
else:
write_message(sender, "Я вас не понимаю")
PS.
Кст, для отправки запросов, можно использовать код, выглядящий более нативно:
def write_message(sender, message):
vk.messages.send(chat_id=sender, message=message, random_id=get_random_id())