aboutsummaryrefslogtreecommitdiffstats
path: root/slack
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2023-02-02 19:00:06 +0100
committerTrygve Aaberge <trygveaa@gmail.com>2024-02-18 11:32:53 +0100
commitb91385fe3d3538704deb06bb187dc48efa87e34b (patch)
tree7dffc2122af275005c0f0905b90b34cc3f4e5cd2 /slack
parent9760ab1181394b9069c7e3795b8726718e401dce (diff)
downloadwee-slack-b91385fe3d3538704deb06bb187dc48efa87e34b.tar.gz
Reconnect when loosing connection
Diffstat (limited to 'slack')
-rw-r--r--slack/slack_conversation.py3
-rw-r--r--slack/slack_workspace.py18
2 files changed, 13 insertions, 8 deletions
diff --git a/slack/slack_conversation.py b/slack/slack_conversation.py
index 913883c..f71457d 100644
--- a/slack/slack_conversation.py
+++ b/slack/slack_conversation.py
@@ -122,6 +122,9 @@ class SlackConversation:
await self.open_buffer()
async def open_buffer(self):
+ if self.buffer_pointer:
+ return
+
name = await self.name()
full_name = f"{shared.SCRIPT_NAME}.{self.workspace.name}.{self.name_prefix('full_name')}{name}"
short_name = self.name_prefix("short_name") + name
diff --git a/slack/slack_workspace.py b/slack/slack_workspace.py
index c43e2c8..5973c9a 100644
--- a/slack/slack_workspace.py
+++ b/slack/slack_workspace.py
@@ -243,10 +243,9 @@ class SlackWorkspace:
except ssl.SSLWantReadError:
# No more data to read at this time.
return weechat.WEECHAT_RC_OK
- except (WebSocketConnectionClosedException, socket.error) as e:
- # TODO: Handle error
- # handle_socket_error(e, team, "receive")
- print(e)
+ except (WebSocketConnectionClosedException, socket.error):
+ print("lost connection on receive, reconnecting")
+ run_async(self.reconnect())
return weechat.WEECHAT_RC_OK
if opcode == ABNF.OPCODE_PONG:
@@ -269,10 +268,13 @@ class SlackWorkspace:
try:
self._ws.ping()
# workspace.last_ping_time = time.time()
- except (WebSocketConnectionClosedException, socket.error) as e:
- # TODO: Handle error
- # handle_socket_error(e, team, "ping")
- print(e)
+ except (WebSocketConnectionClosedException, socket.error):
+ print("lost connection on ping, reconnecting")
+ run_async(self.reconnect())
+
+ async def reconnect(self):
+ self.disconnect()
+ await self.connect()
def disconnect(self):
self.is_connected = False