__init__.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:coolq-telegram-bot 作者: jqqqqqqqqqq 项目源码 文件源码
def _handle(self):
        if self._secret:
            # check signature
            if 'X-Signature' not in request.headers:
                abort(401)

            sec = self._secret
            if isinstance(sec, str):
                sec = sec.encode('utf-8')
            sig = hmac.new(sec, request.body.read(), 'sha1').hexdigest()
            if request.headers['X-Signature'] != 'sha1=' + sig:
                abort(403)

        post_type = request.json.get('post_type')
        if post_type not in ('message', 'event', 'request'):
            abort(400)

        handler_key = None
        for pk_pair in (('message', 'message_type'),
                        ('event', 'event'),
                        ('request', 'request_type')):
            if post_type == pk_pair[0]:
                handler_key = request.json.get(pk_pair[1])
                if not handler_key:
                    abort(400)
                else:
                    break

        if not handler_key:
            abort(400)

        for group in self._groups:
            handler = self._handlers[group][post_type].get(handler_key)
            if not handler:
                handler = self._handlers[group][post_type].get('*')  # try wildcard
            if handler:
                assert callable(handler)
                result = handler(request.json)
                if 'pass' in result:
                    continue
                else:
                    return result

        return ''
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号