mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-06-02 00:57:41 +08:00
fix(wecom_bot): compat with old websocket-client
This commit is contained in:
@@ -23,6 +23,7 @@ from channel.qq.qq_message import QQMessage
|
|||||||
from common.expired_dict import ExpiredDict
|
from common.expired_dict import ExpiredDict
|
||||||
from common.log import logger
|
from common.log import logger
|
||||||
from common.singleton import singleton
|
from common.singleton import singleton
|
||||||
|
from common.ws_client_compat import websocket_app_run_forever
|
||||||
from config import conf
|
from config import conf
|
||||||
|
|
||||||
# Rich media file_type constants
|
# Rich media file_type constants
|
||||||
@@ -210,7 +211,7 @@ class QQChannel(ChatChannel):
|
|||||||
|
|
||||||
def run_forever():
|
def run_forever():
|
||||||
try:
|
try:
|
||||||
self._ws.run_forever(ping_interval=0, reconnect=0)
|
websocket_app_run_forever(self._ws, ping_interval=0, reconnect=0)
|
||||||
except (SystemExit, KeyboardInterrupt):
|
except (SystemExit, KeyboardInterrupt):
|
||||||
logger.info("[QQ] WebSocket thread interrupted")
|
logger.info("[QQ] WebSocket thread interrupted")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ from channel.wecom_bot.wecom_bot_message import WecomBotMessage
|
|||||||
from common.expired_dict import ExpiredDict
|
from common.expired_dict import ExpiredDict
|
||||||
from common.log import logger
|
from common.log import logger
|
||||||
from common.singleton import singleton
|
from common.singleton import singleton
|
||||||
|
from common.ws_client_compat import websocket_app_run_forever
|
||||||
from config import conf
|
from config import conf
|
||||||
|
|
||||||
WECOM_WS_URL = "wss://openws.work.weixin.qq.com"
|
WECOM_WS_URL = "wss://openws.work.weixin.qq.com"
|
||||||
@@ -119,7 +120,7 @@ class WecomBotChannel(ChatChannel):
|
|||||||
|
|
||||||
def run_forever():
|
def run_forever():
|
||||||
try:
|
try:
|
||||||
self._ws.run_forever(ping_interval=0, reconnect=0)
|
websocket_app_run_forever(self._ws, ping_interval=0, reconnect=0)
|
||||||
except (SystemExit, KeyboardInterrupt):
|
except (SystemExit, KeyboardInterrupt):
|
||||||
logger.info("[WecomBot] WebSocket thread interrupted")
|
logger.info("[WecomBot] WebSocket thread interrupted")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
17
common/ws_client_compat.py
Normal file
17
common/ws_client_compat.py
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import inspect
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
def websocket_app_run_forever(ws: Any, **kwargs: Any) -> None:
|
||||||
|
"""
|
||||||
|
Call WebSocketApp.run_forever; strip reconnect= if the installed
|
||||||
|
websocket-client is too old (reconnect was added in a later 1.x release).
|
||||||
|
"""
|
||||||
|
if "reconnect" in kwargs:
|
||||||
|
try:
|
||||||
|
params = inspect.signature(ws.run_forever).parameters
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
params = {}
|
||||||
|
if "reconnect" not in params:
|
||||||
|
kwargs = {k: v for k, v in kwargs.items() if k != "reconnect"}
|
||||||
|
ws.run_forever(**kwargs)
|
||||||
@@ -23,5 +23,5 @@ lark-oapi
|
|||||||
# dingtalk
|
# dingtalk
|
||||||
dingtalk_stream
|
dingtalk_stream
|
||||||
# wecom bot websocket mode
|
# wecom bot websocket mode
|
||||||
websocket-client
|
websocket-client>=1.4.0
|
||||||
pycryptodome
|
pycryptodome
|
||||||
|
|||||||
Reference in New Issue
Block a user