progserega / MatrixVkBot

Bridge-bot for send and recieve VK.com messages in matrix (matrix.org).
Other
18 stars 4 forks source link

Ошибка работы с ВК-апи в функции get_new_vk_messages_v2() #14

Closed MurzNN closed 4 years ago

MurzNN commented 5 years ago

Бот при входящих сообщениях периодически выводит ошибку в управляюшую комнату:

ошибка получения сообщений из ВК. Ошибка работы с ВК-апи в функции get_new_vk_messages_v2()

Иногда приходит одно сообщение, иногда штук пять в течение нескольких секунд. В основном ночью - часа в 4-6 утра, но иногда и днём.

Потерю сообщений вроде бы не заметил при этом, просто временно пропадает синхронизация, и через пару минут снова работает.

Возможно API ВК периодически отваливается и возвращает ошибку. Надо бы сделать вывод в лог полного дампа ответа от ВК, чтобы понять что API отвечает в момент этой ошибки. Ну и обработчик этой ошибки запилить можно будет тогда, чтобы молча обрабатывал, не будя людей ;)

progserega commented 4 years ago

Лог есть:

     494         log.debug("try exec requests.post(%s)"%url)
     495         r = requests.post(url,timeout=conf.post_timeout)
     496         log.debug("requests.post return: %s"%r.text)
progserega commented 4 years ago

Иногда приходит одно сообщение, иногда штук пять в течение нескольких секунд.

тоже заметил, что иногда такое бывает. Наверное не с проста в новых версиях АПИ они добавили уникальный uid сообщения, который перед отправкой надо сгенерить и вложить в сообщение. Просто рэндомный uid. Видать против дублей :-)

progserega commented 4 years ago

вроде должно было в последних версиях поправиться и не должно проявляться. Или ещё бывает?

progserega commented 4 years ago

Раз не повторяется больще - закрываю баг.

mziai commented 4 years ago

Баг все-таки появляется. При этом в сочетании с тем, что сообщения из вк не приходят в матрикс. Звездочки поставил для анонности. Похоже, что сообщение он получает, но до матрикса оно не доходит. Вот, что в логе:

2020-07-05 12:24:39,589 - MatrixVkBot - bot.py:488 - get_new_vk_messages_v2() DEBUG - get polling with ts=1613532349
2020-07-05 12:24:39,589 - MatrixVkBot - bot.py:496 - get_new_vk_messages_v2() DEBUG - try exec requests.post(https://im.vk.com/nim***?act=a_check&key=***&ts=1613532349&wait=25&mode=2&version=3)
2020-07-05 12:24:45,132 - MatrixVkBot - bot.py:498 - get_new_vk_messages_v2() DEBUG - requests.post return: {"ts":1613532353,"updates":[[4,497959,17,***,1593941085,"тестовое сообщение",{"title":" ... "},{}],[80,1,0],[6,***,497959,0],[80,0,0]]}

2020-07-05 12:24:45,132 - MatrixVkBot - bot.py:508 - get_new_vk_messages_v2() DEBUG - try lock() before access global data()
2020-07-05 12:24:45,132 - MatrixVkBot - bot.py:510 - get_new_vk_messages_v2() DEBUG - success lock() before access global data
2020-07-05 12:24:45,133 - MatrixVkBot - bot.py:513 - get_new_vk_messages_v2() DEBUG - release lock() after access global data
2020-07-05 12:24:45,133 - MatrixVkBot - bot.py:584 - get_new_vk_messages_v2() INFO - getting info about new events - try get events...
2020-07-05 12:24:45,133 - MatrixVkBot - bot.py:606 - get_new_vk_messages_v2() DEBUG - try lock() before access global data()
2020-07-05 12:24:45,133 - MatrixVkBot - bot.py:608 - get_new_vk_messages_v2() DEBUG - success lock() before access global data
2020-07-05 12:24:45,133 - MatrixVkBot - bot.py:611 - get_new_vk_messages_v2() DEBUG - release lock() after access global data
2020-07-05 12:24:45,133 - MatrixVkBot - bot.py:612 - get_new_vk_messages_v2() DEBUG - thread: exit_flag=0
2020-07-05 12:24:45,133 - MatrixVkBot - bot.py:618 - get_new_vk_messages_v2() DEBUG - session=
2020-07-05 12:24:45,133 - MatrixVkBot - bot.py:619 - get_new_vk_messages_v2() DEBUG -
2020-07-05 12:24:45,134 - MatrixVkBot - bot.py:756 - get_session() DEBUG - =start function=
2020-07-05 12:24:45,134 - MatrixVkBot - bot.py:621 - get_new_vk_messages_v2() DEBUG - session=
2020-07-05 12:24:45,134 - MatrixVkBot - bot.py:622 - get_new_vk_messages_v2() DEBUG - <vk.api.Session object at 0x7f6d85152a90>
2020-07-05 12:24:45,134 - MatrixVkBot - bot.py:629 - get_new_vk_messages_v2() DEBUG - try exec api.messages.getLongPollHistory()
2020-07-05 12:24:45,135 - MatrixVkBot - bot.py:680 - get_new_vk_messages_v2() ERROR - Traceback (most recent call last):
  File "./bot.py", line 631, in get_new_vk_messages_v2
    ts=data["users"][user]["vk"]["ts"],\
KeyError: 'ts'

2020-07-05 12:24:45,135 - MatrixVkBot - bot.py:681 - get_new_vk_messages_v2() ERROR - exception at execute get_new_vk_messages_v2()
2020-07-05 12:24:45,136 - MatrixVkBot - bot.py:1161 - bot_system_message() DEBUG - =start function=
2020-07-05 12:24:45,136 - MatrixVkBot - bot.py:1162 - bot_system_message() INFO - ошибка получения сообщений из ВК. Ошибка работы с ВК-апи в функции get_new_vk_messages_v2()