Exemplo n.º 1
0
 def disconnect(self):
     logger.warning('Disconnected to the server!')
     # 断开连接后执行用户定义的函数,如果有
     if self._when_disconnected_do is not None:
         self._when_disconnected_do[0]()
         if not self._when_disconnected_do[1]:
             self._when_disconnected_do = None
Exemplo n.º 2
0
    async def baseRequest(
        self,
        method: str,
        funcname: str,
        path: str,
        payload: dict = None,
        params: dict = None,
    ) -> dict:
        """基础请求方法, 提供部分提示信息,出错返回空字典,其他返回服务端响应结果"""
        if params is not None:
            params.update({'funcname': funcname})
        else:
            params = {'funcname': funcname}

        # 发送请求
        try:
            resp = await self.c.request(method,
                                        httpx.URL(url=path, params=params),
                                        json=payload)
            resp.raise_for_status()
        except httpx.HTTPError as e:
            if isinstance(e, httpx.TimeoutException):
                logger.warning(f'响应超时,但不代表处理未成功, 结果未知! => {e}')
            elif isinstance(e, httpx.HTTPStatusError):
                logger.error(f"响应码出错 => {resp.status_code}", )
            else:
                logger.error(f'请求出错: {traceback.format_exc()}')
            return {}

        # 处理数据
        try:
            data = resp.json()
        except Exception as e:
            logger.error('API响应结果非json格式')
            return {}

        if data is None:
            logger.error('返回为null')
            return {}

        # 返回码提示
        if 'Ret' in data:
            ret = data.get('Ret')
            if ret == 0:
                pass
            elif ret == 34:
                logger.error(f'未知错误,跟消息长度似乎无关,可以尝试分段重新发送 => {data}')
            elif ret == 110:
                logger.error(f'发送失败,你已被移出该群,请重新加群 => {data}')
            elif ret == 120:
                logger.error(f'机器人被禁言 => {data}')
            elif ret == 241:
                logger.error(
                    f'消息发送频率过高,对同一个群或好友,建议发消息的最小间隔控制在1100ms以上 => {data}')
            elif ret == 299:
                logger.error(f'超过群发言频率限制 => {data}')
            else:
                logger.error(f'请求发送成功, 但处理失败 => {data}')

        return data
Exemplo n.º 3
0
 def run(self):
     while True:
         try:
             self.tasks.get()()
         except Exception as e:
             logger.warning(f'queued_up装饰器: 队列任务出错{e}')
         finally:
             self.tasks.task_done()
         time.sleep(1)
Exemplo n.º 4
0
def receive_events(ctx: EventMsg):
    try:
        _c.post(httpx.URL(), json=ctx.message)
    except Exception as e:
        logger.warning('Webhook请求中的错误: %s' % e)
Exemplo n.º 5
0
def receive_group_msg(ctx: GroupMsg):
    try:
        _c.post(httpx.URL(), json=ctx.message)
    except Exception as e:
        logger.warning('Webhook请求中的错误: %s' % e)