Closed FreeApp2014 closed 4 years ago
Короче, я не претендую что это фундаментальное решение, но он у меня заработал после того как добавил data["users"][user]["vk"]["exit"] = True
в эксепшн под этой функцией, потом вылезла ошибка функции get_new_vk_messages_v2, ее пофиксил поменяв в ts=data["users"][user]["vk"]["ts"]
ts на ts_polling
KeyError: 'exit'
Вроде поправил (накатил в текущий master):
diff --git a/bot.py b/bot.py
index 473cf74..2aecd33 100755
--- a/bot.py
+++ b/bot.py
@@ -83,6 +83,7 @@ def process_command(user,room,cmd,formated_message=None,format_type=None,reply_t
data["users"][user]["rooms"]={}
if "vk" not in data["users"][user]:
data["users"][user]["vk"]={}
+ data["users"][user]["vk"]["exit"]=False
if room not in data["users"][user]["rooms"]:
data["users"][user]["rooms"][room]={}
data["users"][user]["rooms"][room]["state"]="listen_command"
А вот тут:
потом вылезла ошибка функции get_new_vk_messages_v2, ее пофиксил поменяв в ts=data["users"][user]["vk"]["ts"] ts на ts_polling
хорошо бы логи, чтобы точнее понять где ошибка :-(
А вот тут:
потом вылезла ошибка функции get_new_vk_messages_v2, ее пофиксил поменяв в ts=data["users"][user]["vk"]["ts"] ts на ts_polling
хорошо бы логи, чтобы точнее понять где ошибка :-(
2020-06-13 18:28:47,491 - MatrixVkBot - bot.py:618 - get_new_vk_messages_v2() DEBUG - 2020-06-13 18:28:47,492 - MatrixVkBot - bot.py:755 - get_session() DEBUG - =start function= 2020-06-13 18:28:47,493 - MatrixVkBot - bot.py:620 - get_new_vk_messages_v2() DEBUG - session= 2020-06-13 18:28:47,494 - MatrixVkBot - bot.py:621 - get_new_vk_messages_v2() DEBUG - <vk.api.Session object at 0x7f674f2648b0> 2020-06-13 18:28:47,494 - MatrixVkBot - bot.py:628 - get_new_vk_messages_v2() DEBUG - try exec api.messages.getLongPollHistory() 2020-06-13 18:28:47,495 - MatrixVkBot - bot.py:679 - get_new_vk_messages_v2() ERROR - Traceback (most recent call last): File "./bot.py", line 630, in get_new_vk_messages_v2 ts=data["users"][user]["vk"]["ts"],\ KeyError: 'ts'
попробовал поправить в ветке dev, можно на неё переключиться, обновиться и потестить - уйдёт ли баг. У меня работает.
Переключиться на dev:
git pull
git checkout dev
git pull
Вообще убрал ts_polling, заменив на ts - наверное в своё время запутался в этих отпечатках времени :-) https://github.com/progserega/MatrixVkBot/commit/d247537452f28883f0cd3a2e09ca0922c573bae1
--- a/bot.py
+++ b/bot.py
@@ -86,7 +86,6 @@ def process_command(user,room,cmd,formated_message=None,format_type=None,reply_t
data["users"][user]["vk"]["exit"]=False
data["users"][user]["vk"]["ts"]=0
data["users"][user]["vk"]["pts"]=0
- data["users"][user]["vk"]["ts_polling"]=0
data["users"][user]["vk"]["ts_check_poll"]=0
if room not in data["users"][user]["rooms"]:
data["users"][user]["rooms"][room]={}
@@ -476,8 +475,8 @@ def get_new_vk_messages_v2(user):
log.debug("success lock() before access global data")
if "server" in data["users"][user]["vk"]:
server=data["users"][user]["vk"]["server"]
- if "ts_polling" in data["users"][user]["vk"]:
- ts=data["users"][user]["vk"]["ts_polling"]
+ if "ts" in data["users"][user]["vk"]:
+ ts=data["users"][user]["vk"]["ts"]
if "key" in data["users"][user]["vk"]:
key=data["users"][user]["vk"]["key"]
log.debug("release lock() after access global data")
@@ -512,7 +511,7 @@ def get_new_vk_messages_v2(user):
log.debug("try lock() before access global data()")
with lock:
log.debug("success lock() before access global data")
- data["users"][user]["vk"]["ts_polling"]=ts
+ data["users"][user]["vk"]["ts"]=ts
data["users"][user]["vk"]["ts_check_poll"]=int(time.time())
log.debug("release lock() after access global data")
#log.debug("ret=")
@@ -765,7 +764,7 @@ def get_session(token):
def update_vk_tses_data(data, user, ts, pts, key, server):
data["users"][user]["vk"]["server"]=server
data["users"][user]["vk"]["key"]=key
- data["users"][user]["vk"]["ts_polling"]=ts
+ data["users"][user]["vk"]["ts"]=ts
data["users"][user]["vk"]["pts"]=pts
Короче, я не претендую что это фундаментальное решение, но он у меня заработал после того как добавил
data["users"][user]["vk"]["exit"] = True
в эксепшн под этой функцией, потом вылезла ошибка функции get_new_vk_messages_v2, ее пофиксил поменяв вts=data["users"][user]["vk"]["ts"]
ts на ts_polling
Видать дело было в том, что в функции update_vk_tses_data
обновлялся ts_polling
, но не обновлялся ts
- и в результате, если этого тега не было (а откуда бы он там был) в структуре vk
- оно и падало.
Действительно, это решило проблему, по крайней мере для меня. Спасибо за оперативную помощь!
К сожалению, недостаточно оперативно - времени не много получается на этот проект выделять :-)
Тогда я чуток подожду и если сообщений об ошибках не будет - накачу изменения в master
. Спасибо за сообщения об ошибках :-)
Ubuntu 18.04.4, python 3.8, комнаты создаются, сообщения уходят, но ничего не приходит с ошибками