Ошибка в вк апи AttributeError: 'VkBotMessageEvent' object has no attribute 'user_id' (питон)
Непонятная ошибка с кодом бота ВК.
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import time
import urllib3
import requests
import socket
text='text'
def write_msg(user_id, message, random_id):
vk.method('messages.send', {'user_id': user_id, 'message': message, 'random_id' : random_id})
token = "token"
vk = vk_api.VkApi(token=token)
longpoll = VkBotLongPoll(vk, 194192081)
try:
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
request = event.object['text']
if request == "/text":
write_msg(event.user_id, text, 0)
except (requests.exceptions.ReadTimeout, socket.timeout, urllib3.exceptions.ReadTimeoutError):
time.sleep(1)
Ошибка
Traceback (most recent call last):
File "c:/Users/что-то/Desktop/Untitled-1.py", line 84, in <module>
vk.method('messages.send', {'user_id': event.user_id, 'message': text, 'random_id' : 0})
AttributeError: 'VkBotMessageEvent' object has no attribute 'user_id'
Почему-то с chat_id такой ошибки не происходит.
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import time
import urllib3
import requests
import socket
text='text'
def write_msg(chat_id, message, random_id):
vk.method('messages.send', {'chat_id': chat_id, 'message': message, 'random_id' : random_id})
token = "token"
vk = vk_api.VkApi(token=token)
longpoll = VkBotLongPoll(vk, 194192081)
try:
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
request = event.object['text']
if request == "/text":
write_msg(event.chat_id, text, 0)
except (requests.exceptions.ReadTimeout, socket.timeout, urllib3.exceptions.ReadTimeoutError):
time.sleep(1)
Объясните, пожалуйста, в чем проблема и как её решить.
Ответы (1 шт):
Автор решения: SmellyNS
→ Ссылка
Стэктрейс вам говорит, что в классе VkBotMessageEvent, который вы вызываете здесь
vk.method('messages.send', {'user_id': event.user_id, 'message': text, 'random_id' : 0})
Отсутствует атрибут user_id.
Ссылаясь на исходники vk_api, у данного класса есть атрибут from_user. Попробуйте использовать это или же передать атрибут без указания его названия. В конструкторе from_user - первый.