コード例 #1
0
ファイル: listener.py プロジェクト: ysh0566/wechat-admin
def send_msg(m):
    # wxpy还不支持未命名的群聊消息
    # 先忽略腾讯新闻之类发的信息
    if m.receiver.name is None or m.sender is None:
        return
    msg_type = TYPE_TO_ID_MAP.get(m.type, 0)
    if isinstance(m.sender, Group):
        sender_id = m.member.puid
        group_id = m.chat.puid
    elif isinstance(m.sender, _MP):
        sender_id = m.sender.puid
        group_id = 0
        msg_type = TYPE_TO_ID_MAP.get('MP')
    else:
        sender_id = m.sender.puid
        group_id = 0
    receiver_id = m.receiver.puid
    from views.api import json_api as app
    with app.app_context():
        msg = Message.create(sender_id=sender_id, receiver_id=receiver_id,
                             content=m.text, url=m.url, type=msg_type,
                             receive_time=m.receive_time, group_id=group_id)
        if m.type in (PICTURE, RECORDING, ATTACHMENT, VIDEO):
            _, ext = os.path.splitext(m.file_name)
            m.get_file(os.path.join(UPLOAD_PATH, '{}{}'.format(msg.id, ext)))
            msg.file_ext = ext
            db.session.commit()
        Notification.add(receiver_id, msg.id)
コード例 #2
0
def send_msg(m):
    # wxpy还不支持未命名的群聊消息
    # 先忽略腾讯新闻之类发的信息
    if m.receiver.name is None or m.sender is None:
        return
    msg_type = TYPE_TO_ID_MAP.get(m.type, 0)
    if isinstance(m.sender, Group):
        sender_id = m.member.puid
        group_id = m.chat.puid
    elif isinstance(m.sender, _MP):
        sender_id = m.sender.puid
        group_id = 0
        msg_type = TYPE_TO_ID_MAP.get('MP')
    else:
        sender_id = m.sender.puid
        group_id = 0
    receiver_id = m.receiver.puid
    from views.api import json_api as app
    with app.app_context():
        msg = Message.create(sender_id=sender_id, receiver_id=receiver_id,
                             content=m.text, url=m.url, type=msg_type,
                             receive_time=m.receive_time, group_id=group_id)
        if m.type in (PICTURE, RECORDING, ATTACHMENT, VIDEO):
            _, ext = os.path.splitext(m.file_name)
            m.get_file(os.path.join(UPLOAD_PATH, '{}{}'.format(msg.id, ext)))
            msg.file_ext = ext
            db.session.commit()
        Notification.add(receiver_id, msg.id)

        if isinstance(m.sender, _MP):
            for mp_id, ids in settings.mp_forward:
                if m.sender.puid == mp_id:
                    groups = map(lambda x: bot.groups().search(puid=x)[0], ids)
                    sync_message_in_groups(m, groups)
                    return
コード例 #3
0
ファイル: listener.py プロジェクト: skyformat99/wechat-admin
def send_msg(m):
    # wxpy还不支持未命名的群聊消息
    # 先忽略腾讯新闻之类发的信息
    if m.receiver.name is None or m.sender is None:
        return
    msg_type = TYPE_TO_ID_MAP.get(m.type, 0)
    if isinstance(m.sender, Group):
        sender_id = m.member.puid
        group_id = m.chat.puid
    elif isinstance(m.sender, _MP):
        sender_id = m.sender.puid
        group_id = 0
        msg_type = TYPE_TO_ID_MAP.get('MP')
    else:
        sender_id = m.sender.puid
        group_id = 0
    receiver_id = m.receiver.puid
    from views.api import json_api as app
    with app.app_context():
        msg = Message.create(sender_id=sender_id,
                             receiver_id=receiver_id,
                             content=m.text,
                             url=m.url,
                             type=msg_type,
                             receive_time=m.receive_time,
                             group_id=group_id)
        if m.type in (PICTURE, RECORDING, ATTACHMENT, VIDEO):
            _, ext = os.path.splitext(m.file_name)
            m.get_file(
                os.path.join(here, '../static/img/uploads',
                             '{}{}'.format(msg.id, ext)))
            msg.file_ext = ext
            db.session.commit()
        Notification.add(receiver_id, msg.id)
コード例 #4
0
def get_creators():
    creator_ids = settings.creators
    try:
        creators = list(map(lambda x: bot.friends().search(puid=x)[0],
                            creator_ids))
    except IndexError:
        from views.api import json_api
        with json_api.app_context():
            users = [u.to_dict() for u in db.session.query(User).filter(
                User.id.in_(creator_ids)).all()]
            creators = list(map(lambda u: bot.friends().search(
                u['nick_name'], Sex=u['sex'], Signature=u['signature'])[0],
                users))
    return creators
コード例 #5
0
 def func(msg, name=name, plugin=plugin):
     patterns = getattr(plugin, 'patterns', None) or []
     text = msg.text.lower()
     if patterns:
         if getattr(plugin, 'exclusive', False):
             _patterns.extend(patterns)
         if not re.search(r'{}'.format(patterns), text):
             return
     ex_patterns = getattr(plugin, 'exclude_patterns', None) or []
     ex_patterns = set(_patterns + ex_patterns).difference(patterns)
     if ex_patterns:
         patterns = '|'.join(ex_patterns)
         if re.search(r'{}'.format(patterns), text):
             return
     from views.api import json_api as app
     with app.app_context():
         app.plugin_modules = _cached
         msg.sender.send(plugin.main(msg))
コード例 #6
0
    def func(msg, name=name, plugin=plugin):
        patterns = getattr(plugin, 'patterns', None) or []
        text = msg.text.lower()
        if patterns:
            if getattr(plugin, 'exclusive', False):
                _patterns.extend(patterns)
            if not re.search(r'{}'.format('|'.join(patterns)), text):
                return
        ex_patterns = getattr(plugin, 'exclude_patterns', None) or []
        ex_patterns = set(_patterns + ex_patterns +
                          list(settings.pattern_map.keys())).difference(
                              patterns)
        patterns = '|'.join(ex_patterns)
        if re.search(r'{}'.format(patterns), text):
            return

        from views.api import json_api as app
        with app.app_context():
            app.plugin_modules = _cached
            app.nick_name = bot.self.nick_name
            result = plugin.main(msg)
            if result:
                msg.sender.send(result)
コード例 #7
0
ファイル: tasks.py プロジェクト: skyformat99/wechat-admin
def async_retrieve_data():
    with json_api.app_context():
        _retrieve_data()
コード例 #8
0
ファイル: tasks.py プロジェクト: skyformat99/wechat-admin
def listener():
    with json_api.app_context():
        bot.join()
コード例 #9
0
def update_contact(update=False):
    with json_api.app_context():
        _update_contact(bot, update=update)
コード例 #10
0
def update_group(update=False):
    with json_api.app_context():
        _update_group(bot, update=update)
コード例 #11
0
def retrieve_data():
    with json_api.app_context():
        _retrieve_data(True)
コード例 #12
0
def listener():
    from libs.listener import bot
    with json_api.app_context():
        bot.join()
コード例 #13
0
ファイル: tasks.py プロジェクト: ysh0566/wechat-admin
def async_retrieve_data():
    with json_api.app_context():
        _retrieve_data()
コード例 #14
0
ファイル: tasks.py プロジェクト: ysh0566/wechat-admin
def listener():
    with json_api.app_context():
        bot.join()