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)
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
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)
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
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))
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)
def async_retrieve_data(): with json_api.app_context(): _retrieve_data()
def listener(): with json_api.app_context(): bot.join()
def update_contact(update=False): with json_api.app_context(): _update_contact(bot, update=update)
def update_group(update=False): with json_api.app_context(): _update_group(bot, update=update)
def retrieve_data(): with json_api.app_context(): _retrieve_data(True)
def listener(): from libs.listener import bot with json_api.app_context(): bot.join()
def async_retrieve_data(): with json_api.app_context(): _retrieve_data()
def listener(): with json_api.app_context(): bot.join()