Sender 发送者对象¶
Sender 对象可以理解为在外部程序中( 非 wechat_sender 服务,例如你的个人脚本、网站等 )向微信发送消息的发送者
-
class
wechat_sender.
Sender
(token=None, receivers=None, host=u'http://localhost', port=10245)[源代码]¶ sender 对象,任何外部程序向微信发送消息都需要初始化 sender 对象:
from wechat_sender import Sender sender = Sender(token='test', receiver='wechat_name,xxx,xxx') # 向 receiver 发送消息 sender.send('Hello From Wechat Sender')
-
Sender.
__init__
(token=None, receivers=None, host=u'http://localhost', port=10245)[源代码]¶ 参数: - token – (选填|str) - 信令,如果不为空请保持和 listen 中的 token 一致
- receivers – (选填|str) - 接收者,wxpy 的 puid 或 微信名、昵称等,多个发送者请使用半角逗号 ‘,’ 分隔。不填将发送至 default_receiver
- host – (选填|str) - 远程地址,本地调用不用填写
- port – (选填|int) - 发送端口,默认 10245 端口,如不为空请保持和 listen 中的 port 一致
指定多个发送者
Sender 的 receiver 可以指定多个发送者,由这个 Sender 发送的消息默认会广播给多个发送者:
# coding: utf-8
import datetime
from wechat_sender import Sender
sender = Sender(token='xxx', receivers='aaa,bbb,ccc,ddd')
sender.send('broadcast message')
注解
使用英文半角逗号分隔多个接收者
-
Sender.
send
(message)[源代码]¶ 发送基本文字消息
参数: message – (必填|str) - 需要发送的文本消息 返回: - status:发送状态,True 发送成,False 发送失败
- message:发送失败详情
-
Sender.
delay_send
(content, time, title=u'', remind=3600)[源代码]¶ 发送延时消息
参数: - content – (必填|str) - 需要发送的消息内容
- time – (必填|str|datetime) - 发送消息的开始时间,支持 datetime.date、datetime.datetime 格式或者如 ‘2017-05-21 10:00:00’ 的字符串
- title – (选填|str) - 需要发送的消息标题
- remind – (选填|int|datetime.timedelta) - 消息提醒时移,默认 1 小时,即早于 time 值 1 小时发送消息提醒, 支持 integer(毫秒) 或 datetime.timedelta
返回: - status:发送状态,True 发送成,False 发送失败
- message:发送失败详情
发送延时消息
某些情况下,我们希望消息可以延迟发送,例如日程、会议提醒等,这时用 Sender.delay_send()
即可满足需求:
# coding: utf-8
import datetime
from wechat_sender import Sender
sender = Sender()
time = datetime.datetime.now()+datetime.timedelta(hours=1)
sender.delay_send(content="测试内容", time=time, title="测试标题", remind=datetime.timedelta(minutes=59))
如果返回正常,1 分钟后你将收到这条消息时间是 1 小时后的消息提醒:
#标题:测试标题
#时间:2017-06-07 12:56:16
#内容:延迟消息测试
-
Sender.
periodic_send
(content, interval, title=u'')[源代码]¶ 发送周期消息
参数: - content – (必填|str) - 需要发送的消息内容
- interval – (必填|int|datetime.timedelta) - 发送消息间隔时间,支持 datetime.timedelta 或 integer 表示的秒数
- title – (选填|str) - 需要发送的消息标题
返回: - status:发送状态,True 发送成,False 发送失败
- message:发送失败详情
发送周期消息
如果希望某条消息周期性发送到微信,可以使用 Sender.periodic_send()
:
# coding: utf-8
import datetime
from wechat_sender import Sender
sender = Sender()
interval = datetime.timedelta(seconds=10)
sender.periodic_send(content='测试消息', interval=interval, title='测试标题')
如果返回正常,每隔 10 s 你将收到一条消息如下:
# 标题:测试标题
# 内容:周期消息测试test
小技巧
使用 Wechat Sender 的控制命令 查看已注册的延时周期消息
-
Sender.
send_to
(content, search)[源代码]¶ 向指定好友发送消息
参数: - content – (必填|str) - 需要发送的消息内容
- search – (必填|str|dict|list)-搜索对象,同 wxpy.chats.search 使用方法一样。例如,可以使用字符串进行搜索好友或群,或指定具体属性搜索,如 puid=xxx 的字典
返回: - status:发送状态,True 发送成,False 发送失败
- message:发送失败详情
发送定向消息
如果你希望某条消息发送给指定的微信好友,你可以使用 Sender.send_to()
:
# coding: utf-8
import datetime
from wechat_sender import Sender
sender = Sender()
sender.send_to('Hello From Wechat Sender', '微信好友昵称')
如果返回正常,你指定的微信好友将收到这条消息
小技巧
Sender.send_to()
的 search 参数使用方法和 wxpy 的 wxpy.chats().search(). 一致直接搜索昵称或用综合查询条件均可以搜索好友或群
使用多条件查询好友:
# coding: utf-8
import datetime
from wechat_sender import Sender
sender = Sender()
sender.send_to('Hello From Wechat Sender', search={'city': 'xx', 'nick_name': 'xxx'})
Sender 日志对象¶
Sender 日志对象可以更平滑的接入外部应用的 log 系统中,基本无需更改代码即可使应用日志发送到微信
-
class
wechat_sender.
LoggingSenderHandler
(name=None, token=None, receiver=None, host=u'http://localhost', port=10245, level=30)[源代码]¶ wechat_sender 的 LoggingHandler 对象,可以使用 logging.addHandler() 的方式快速使外部应用支持微信日志输出。在外部应用中:
# spider.py # 假如在一个爬虫脚本,我们想让此脚本的警告信息直接发到微信 import logging from wechat_sender import LoggingSenderHandler logger = logging.getLogger(__name__) # spider code here def test_spider(): ... logger.exception("EXCEPTION: XXX") def init_logger(): sender_logger = LoggingSenderHandler('spider', level=logging.EXCEPTION) logger.addHandler(sender_logger) if __name__ == '__main__': init_logger() test_spider()
-
LoggingSenderHandler.
__init__
(name=None, token=None, receiver=None, host=u'http://localhost', port=10245, level=30)[源代码]¶ 参数: - name – (选填|str) - 标识日志来源,不填将取应用所在服务器地址为名称
- token – (选填|str) - 信令,如果不为空请保持和 listen 中的 token 一致
- receiver – (选填|str) - 接收者,wxpy 的 puid 或 微信名、昵称等,不填将发送至 default_receiver
- host – (选填|str) - 远程地址,本地调用不用填写
- port – (选填|int) - 发送端口,默认 10245 端口,如不为空请保持和 listen 中的 port 一致
- level – (选填|int) - 日志输出等级,默认为 logging.WARNING