Ошибка: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())
→ Ссылка