消息过滤

wxrobot提供了三种过滤方式来过滤消息

  1. 来源过滤
  2. 目标过滤
  3. 内容过滤

消息过滤同样有两种方式:

  1. api.add_filter(func,fromUserNames,toUserNames,content,beside)其中func参数即消息中的handler,fromUserNames是一个列表,包含将要过滤的来源(备注名或昵称),toUserNames是一个列表,是目标过滤,content是内容过滤,也是一个列表,如果是字符串则是全文匹配,也支持正则表达式,beside是一个表示除了的意思的参数。
  2. 装饰器方式:装饰器将来源/目标/内容过滤分别作为一个装饰器,将在下文中讲解。

来源过滤

接收除了来自腾讯新闻的消息,可以这样:

@api.textMsg
@api.sourceFilter('腾讯新闻',beside=True)
def filterTextMsgHandler(message):
    print('%s给%s发了一条消息:%s'%(message.fromUserName,message.toUserName,message.content))

目标过滤

目前并没有什么用,因为目标一般都是用户自己。

内容过滤

内容过滤目前只支持文本消息,提供两种方式:字符串全文匹配和正则表达式


@api.textMsg
@api.textFilter('你好',re.compile('/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/ '))
def filterTextMsgHandler(message):
    print('%s给%s发了一条消息:%s'%(message.fromUserName,message.toUserName,message.content))

如上过滤了全文是‘你好’和所有包含邮箱消息。