消息过滤
wxrobot提供了三种过滤方式来过滤消息
- 来源过滤
- 目标过滤
- 内容过滤
消息过滤同样有两种方式:
api.add_filter(func,fromUserNames,toUserNames,content,beside)
其中func参数即消息中的handler,fromUserNames是一个列表,包含将要过滤的来源(备注名或昵称),toUserNames是一个列表,是目标过滤,content是内容过滤,也是一个列表,如果是字符串则是全文匹配,也支持正则表达式,beside是一个表示除了
的意思的参数。- 装饰器方式:装饰器将来源/目标/内容过滤分别作为一个装饰器,将在下文中讲解。
来源过滤
接收除了来自腾讯新闻的消息,可以这样:
@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))
如上过滤了全文是‘你好’和所有包含邮箱消息。