Closed DevRedOWL closed 5 years ago
https://github.com/python273/vk_api/blob/master/vk_api/bot_longpoll.py#L160
нужно посмотреть почему тут у объекта может не быть peer_id
python273 commented 41 minutes ago https://github.com/python273/vk_api/blob/master/vk_api/bot_longpoll.py#L160 нужно посмотреть почему тут у объекта может не быть peer_id
Не очень понял, что мне нужно сделать, чтобы код заработал. И могут ли как то влиять настройки у самой группы?
Падает при получении сообщения? Можешь запустить и скинуть вывод после чего обычно падает?
# -*- coding: utf-8 -*-
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
class VkBotLongPollRaw(VkBotLongPoll):
CLASS_BY_EVENT_TYPE = {}
def main():
vk_session = vk_api.VkApi(token='токен группы')
longpoll = VkBotLongPollRaw(vk_session, идгруппы)
for event in longpoll.listen():
print(event.raw)
if __name__ == '__main__':
main()
Возможно в этом дело: vk_session = vk_api.VkApi(логин, пароль)
, для бота нужно токен группы передавать, а не логин с паролем
python273
Ближе к вечеру попробую запустить и скину результаты.
Если передавать надо токен группы, то где мне его взять? Это те, которые ключи доступа и создаются через настройки? Ибо ы разделе лонгпула в вк не создается ключ.
для бота нужно токен группы передавать, а не логин с паролем
Без разницы. Если пользователь админ в группе group_id, то работает и от имени пользователя
Это те, которые ключи доступа и создаются через настройки?
Да
Без разницы. Если пользователь админ в группе group_id, то работает и от имени пользователя
Хмм, может там есть какие-то особенности для юзеров 🤔
@python273 я проверял, и так и так работает. Даже проверял не от создателя группы, а от администратора
python273, скажи свой вк, я напишу, потому, как тут с ботами происходит нечто странное
Коротко говоря, через raw заработало
# -*- coding: utf-8 -*-
import vk_api
import options as o
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
class VkBotLongPollRaw(VkBotLongPoll):
CLASS_BY_EVENT_TYPE = {}
def main():
vk_session = vk_api.VkApi(o.login, o.password)
vk_session.auth()
longpoll = VkBotLongPollRaw(vk_session, o.group_id)
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
print('Новое сообщение:')
print('Для меня от: ',event.obj.user_id, end='')
print('Текст:', event.obj.body)
print()
Ну с raw понятно, что заработает 😃 Скинь вывод скрипта https://github.com/python273/vk_api/issues/174#issuecomment-418533599 , а то не понятно как фиксить
Встретился с той же проблемой, падает при получении сообщения. Авторизуюсь через токен
backtrace:
Exception in thread Thread-1: Traceback (most recent call last): File "C:\Users\rdsto\AppData\Local\Programs\Python\Python37-32\lib\threading.py", line 917, in _bootstrap_inner self.run() File "C:\Users\rdsto\develop\python\projects\pythoncoding\pythoncoding\server.py", line 30, in run for event in bot_longpoll.listen(): File "C:\Users\rdsto\develop\python\projects\pythoncoding\venv\lib\site-packages\vk_api\bot_longpoll.py", line 271, in listen for event in self.check(): File "C:\Users\rdsto\develop\python\projects\pythoncoding\venv\lib\site-packages\vk_api\bot_longpoll.py", line 251, in check for raw_event in response['updates'] File "C:\Users\rdsto\develop\python\projects\pythoncoding\venv\lib\site-packages\vk_api\bot_longpoll.py", line 251, in <listcomp> for raw_event in response['updates'] File "C:\Users\rdsto\develop\python\projects\pythoncoding\venv\lib\site-packages\vk_api\bot_longpoll.py", line 212, in _parse_event return event_class(raw_event) File "C:\Users\rdsto\develop\python\projects\pythoncoding\venv\lib\site-packages\vk_api\bot_longpoll.py", line 158, in __init__ if self.obj.peer_id < 0: TypeError: '<' not supported between instances of 'NoneType' and 'int'
Можешь запустить https://github.com/python273/vk_api/issues/174#issuecomment-418533599 и скинуть вывод? Видимо peer_id не всегда есть в сообщении
Всё запустил, вот вывод:
{'type': 'message_new', 'object': {'id': 14, 'date': 1536382284, 'out': 0, 'user_id': 157817863, 'read_state': 0, 'title': '', 'body': 'Привет мир!'}, 'group_id': 171055070}
как видно, peer_id отсутствует
Можешь запустить #174 (comment) и скинуть вывод? Видимо peer_id не всегда есть в сообщении
Челодой моловек, вам тут ответили
Фиксится установкой версии API 5.80+. Не уверен стоит ли фиксы для прошлых версий добавлять
Ошибка в BotLongpoll появляется даже при выполнении кода, приведенного в примере