Code Monkey home page Code Monkey logo

wechat_sender's Introduction

Wechat_Sender

随时随地发送消息到微信

http://wechat-sender.readthedocs.io/zh_CN/latest/

简介

wechat_sender 是基于 wxpytornado 实现的一个可以将你的网站、爬虫、脚本等其他应用中各种消息 (日志、报警、运行结果等) 发给到微信的工具

初衷

wxpy 基于 itchat 提供了较为完备的微信个人号 API ,而我想使用个人微信来接收我的网站的报警信息以及一些爬虫的结果,因此我写了这个工具。

安装

pip install wechat_sender

运行环境

Python 2.7 及以上 Python 3 及以上

使用

  1. 登录微信并启动 wechat_sender 服务.
   from wxpy import *
   from wechat_sender import *
   bot = Bot()
   listen(bot)
   # 之后 wechat_sender 将持续运行等待接收外部消息
  1. 在外部向微信发送消息.
   from wechat_sender import Sender
   Sender().send('Hello From Wechat Sender')
   # Hello From Wechat Sender 这条消息将通过 1 中登录微信的文件助手发送给你

如果你是 wxpy 的使用者,只需更改一句即可使用 wechat_sender:

例如这是你本来的代码:

# coding: utf-8
from __future__ import unicode_literals

from wxpy import *
bot = Bot('bot.pkl')

my_friend = bot.friends().search('xxx')[0]

my_friend.send('Hello WeChat!')

@bot.register(Friend)
def reply_test(msg):
    msg.reply('test')

bot.join()

使用 wechat_sender:

# coding: utf-8
from __future__ import unicode_literals

from wxpy import *
from wechat_sender import listen
bot = Bot('bot.pkl')

my_friend = bot.friends().search('xxx')[0]

my_friend.send('Hello WeChat!')

@bot.register(Friend)
def reply_test(msg):
    msg.reply('test')

listen(bot) # 只需改变最后一行代码

之后如果你想在其他程序或脚本中发送微信消息,只需要:

# coding: utf-8
from wechat_sender import Sender
Sender().send("test message")

文档

http://wechat-sender.readthedocs.io/zh_CN/latest/

交流

扫描二维码,验证信息输入 'wechat_sender' 或 '加群' 进入微信交流群

screenshot

TODO LIST

  • 多 receiver
  • log handler 支持
  • wxpy 掉线邮件通知
  • wxpy 掉线重连

历史

当前版本: 0.1.4

2017.06.12 0.1.4:

修复 Python 3 下 sender 发送成功后报错问题 #8

Sender().send_to 方法增加支持搜索群发送

Sender 支持指定多个 receivers

2017.06.07 0.1.3:

优化代码,完善文档、注释

2017.06.04 0.1.2:

修复 sender timeout 时间过短问题;

修复初始化 listen 无 receiver 报错问题

增加 LoggingSenderHandler, 提供 log handler 支持

2017.05.27 0.1.1:

增加多 receiver 支持;

2017.05.27 0.1.0:

增加延时消息;

增加周期消息;

增加指定接收方消息;

增加 wechat_sender 控制命令;

增加 wxpy 状态监测功能;

优化代码;

2017.05.17 0.0.2:

优化代码

2017.05.11 0.0.1:

发布初版

wechat_sender's People

Contributors

bluedazzle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wechat_sender's Issues

消息指定发送给某个好友

send 消息的时候可以指定发送给某人,比如使用 puid 做标识;或者 listen 的时候,能收到某些标识,通过回调,自行处理发送的逻辑
:)

send的timeout 修改

def send(self, message): res = requests.post(url, data=data, timeout=2)
修改timeout ,2秒时间有点短 机器稍有卡顿就会报错

现在可以断线重连么

老哥,现在可以断线重连么,好像现在只能开启1天不到的样子,然后会掉线。我用来做zabbix监控用的,其他方式比如企业微信报警不想用啊。。。。。

运行wechat_sender报错

python wechat_sender.py
Getting uuid of QR code.
Downloading QR code.
Traceback (most recent call last):
File "wechat_sender.py", line 2, in
from wechat_sender import *
File "/root/wechat_sender.py", line 3, in
bot = Bot()
File "/usr/lib/python2.7/site-packages/wxpy/api/bot.py", line 88, in init
except FileNotFoundError as e:
NameError: global name 'FileNotFoundError' is not defined

手机客户端推出,服务也退出

你好,请教两个问题:

  1. 当手机扫码登陆成功后,退出登录,listen服务也退出。这就要求有一台手机必须一直挂着这个微信号。请问有没有什么办法退出登录,服务不退出的方式
  2. 设置listen receivers 为list 时,文档描述会发给默认第一个人,经试用测试只发给第一个人, 那有没有什么方法发给list中全部的人。 如果只能发给一个人,那这个list的作用就没有了。

为啥一直报超时?

File "wx_sender.py", line 3, in
Sender().send("Hello From Wechat Sender")
File "/Library/Python/2.7/site-packages/wechat_sender/sender.py", line 60, in send
res = requests.post(url, data=data, timeout=self.timeout)
File "/Library/Python/2.7/site-packages/requests/api.py", line 112, in post
return request('post', url, data=data, json=json, **kwargs)
File "/Library/Python/2.7/site-packages/requests/api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "/Library/Python/2.7/site-packages/requests/sessions.py", line 513, in request
resp = self.send(prep, **send_kwargs)
File "/Library/Python/2.7/site-packages/requests/sessions.py", line 623, in send
r = adapter.send(request, **kwargs)
File "/Library/Python/2.7/site-packages/requests/adapters.py", line 516, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=10245): Read timed out. (read timeout=5)

listen 初始化不传 receiver 报错

listen 初始化不传 receiver 报错

Traceback (most recent call last):
  File "/Users/rapospectre/Projects/Personal/wxpy_sender/main.py", line 35, in <module>
    listen(bot)
  File "/Users/rapospectre/Projects/Personal/wxpy_sender/wechat_sender/listener.py", line 268, in listen
    wxbot = WxBot(bot, receivers, status_receiver)
  File "/Users/rapospectre/Projects/Personal/wxpy_sender/wechat_sender/objects.py", line 16, in __init__
    self.init_receivers(receivers)
  File "/Users/rapospectre/Projects/Personal/wxpy_sender/wechat_sender/objects.py", line 34, in init_receivers
    self.receivers[receivers.puid] = receivers
AttributeError: 'NoneType' object has no attribute 'puid'

Sender.send(msg)---->error

requests.exceptions.**ConnectionError**: HTTPConnectionPool(host='localhost', port=10245): Max retries exceeded with url: /message (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000000007352898>: Failed to establish a new connection: [Errno 10061] ',))

使用host一直连接失败

[root@10-8-6-109 ~]# /usr/local/python3/bin/python3 t2.py
Traceback (most recent call last):
File "t2.py", line 9, in
sender.send("hello")
File "/usr/local/python3/lib/python3.6/site-packages/wechat_sender/sender.py", line 70, in send
res = requests.post(url, data=data, timeout=self.timeout)
File "/usr/local/python3/lib/python3.6/site-packages/requests/api.py", line 112, in post
return request('post', url, data=data, json=json, **kwargs)
File "/usr/local/python3/lib/python3.6/site-packages/requests/api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/python3/lib/python3.6/site-packages/requests/sessions.py", line 513, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/python3/lib/python3.6/site-packages/requests/sessions.py", line 617, in send
adapter = self.get_adapter(url=request.url)
File "/usr/local/python3/lib/python3.6/site-packages/requests/sessions.py", line 708, in get_adapter
raise InvalidSchema("No connection adapters were found for '%s'" % url)
requests.exceptions.InvalidSchema: No connection adapters were found for '10.8.6.109:19090/message'

linux和windows都试过,python版本3.6,但是浏览器是可以访问的,求教

每隔一段时间机器人就会自动退出,查看console日志如下

ERROR:tornado.application:Exception in callback <functools.partial object at 0x7fc857b51838> Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/tornado/ioloop.py", line 1026, in _run return self.callback() File "/usr/local/lib/python2.7/site-packages/wechat_sender/listener.py", line 238, in check_bot glb.wxbot.send_msg(message) File "/usr/local/lib/python2.7/site-packages/wechat_sender/objects.py", line 57, in send_msg current_receiver.send_msg(msg) File "/usr/local/lib/python2.7/site-packages/wxpy/api/chats/chat.py", line 54, in wrapped ret = do_send() File "/usr/local/lib/python2.7/site-packages/wxpy/utils/misc.py", line 71, in wrapped smart_map(check_response_body, ret) File "/usr/local/lib/python2.7/site-packages/wxpy/utils/misc.py", line 205, in smart_map return func(i, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/wxpy/utils/misc.py", line 52, in check_response_body raise ResponseError(err_code=err_code, err_msg=err_msg) ResponseError: err_code: 3; err_msg: LOG OUT! INFO:itchat:LOG OUT!
这个有办法解决吗,用的小号登录的,使用安卓 的双开软件。

python 3 sender 报错

File "D:\dbm\rancher_env\Lib\site-packages\wechat_sender\sender.py", line 57, in send
    res_data = json.loads(res.content)
  File "c:\python35\Lib\json\__init__.py", line 312, in loads
b'{"message": "Success", "status": 0}'
    s.__class__.__name__))
TypeError: the JSON object must be str, not 'bytes'

sender中定义receiver不生效

不论listen中有没有定义receiver,在sender里声明的receiver始终不生效,最终信息只发往listen中的receiver。不知道是我哪里写错了还是?
sender中尝试了:微信名,微信号,puid 作为receiver,均不生效。

python2.7环境下中文微信昵称或者群组报编码错误

group = bot.groups().search('游否')[0]
File "C:\Python27\lib\site-packages\wxpy\api\chats\groups.py", line 71, in search
return Groups(filter(match, self))
File "C:\Python27\lib\site-packages\wxpy\api\chats\groups.py", line 61, in match
if not match_name(group, keywords):
File "C:\Python27\lib\site-packages\wxpy\utils\misc.py", line 185, in match_name
if kw in str(getattr(chat, attr, '')).lower():
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe6 in position 0: unexpected end of data

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.