Giter VIP home page Giter VIP logo

werobot's Introduction

WeRoBot

image

image

image

WeRoBot 是一个微信公众号开发框架,采用MIT协议发布。

文档在这里: https://werobot.readthedocs.org/zh_CN/latest/

安装

推荐使用 pip 进行安装 :

pip install werobot

Hello World

一个非常简单的 Hello World 微信公众号,会对收到的所有文本消息回复 Hello World :

import werobot

robot = werobot.WeRoBot(token='tokenhere')

@robot.text
def hello_world():
    return 'Hello World!'

robot.run()

Credits

Contributors

Thank you to all the people who have already contributed. Repo Contributors

werobot's People

Contributors

ayang avatar cloverstd avatar cocobear avatar cxgreat2014 avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar deronw avatar doraemonext avatar helloqiu avatar jiahut avatar monkeywithacupcake avatar mywaiting avatar ninestep avatar overcat avatar sbilly avatar tg123 avatar weberwang avatar whtsky avatar wwj718 avatar yoursistersoul avatar zhu327 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  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

werobot's Issues

0.6.0版本部署SAE的问题 404 "/" not found

按照WeRoBot-SAE-demo上的方法部署到SAE,saecloud install werobot命令并没有把0.11.6版的bottle.py安装到site-packages/目录。由于SAE默认为bottle0.96。不支持 @app.post('<t:path>')这种写法,导致发生404错误。必须手动copy 0.11.6版本的bottle.py到工程目录。

部署问题?

我想在一个vps上部署WeRoBot。
vps是ubuntu 12.04+nginx。已经申请好了公共账号。
要使WeRoBot能work,还要安装什么?

werobot中对于session的处理,当某个用户是第一次访问的时候,怎么构建session

从0.4版开始按照介绍是启用了session管理,

查看代码以FileStorage为例子,存放在文件 "werobot_session"中使用的是dbm格式和库包

如果用户下一次,比如第二次等等,在robot.py文件中 BaseRobot类的get_reply()方法里面,因为已经存在session_storage了,那么从取出sesion, 见如下代码

id = message.source
session = session_storage[id]

我发现有个问题就是当第一次的时候,那么怎么办呢,session应该是要构建出来?session的构建代码没有找到?请教一下了。

谢谢

如何主动地给一个微信帐号发送信息

现在的是通过微信帐号给公众帐号发送消息后,再进行消息回复。

有没有办法主动从公众帐号给某个特定的微信帐号发送消息,该微信帐号已经关注公众帐号。请教下思路。

cliet.Client 中通过post发送的数据均出错

requests会将dict类型的数据转化成k1=v1&k2=v2的形式,而微信需要接收json数据才会正确响应。
解决办法是将data以字符串的形式发送,或者用json.dumps再次转化。

部署到SAE的时候报错

IOError: [Errno 13] Permission denied: '/data1/www/htdocs/305/wetest/1/werobot_session.dat'
这样的话不知道应该如何解决呢?

请问怎么部署到SAE上

已经将那三个文件(robot.py,index.wsgi,config.yaml)上传到SAE服务器上了,并且上传了一份werobot文件夹(用pip install 下载到site-packages中,复制整个werobot文件夹到与那三个文件同级的目录下),改了config.yaml里的name,robot.py里的token='tokenhere' 也换成了自已在微信平台上的设置的token了,可是微信还是接不到回复,直接访问应用的sinaapp二级域名(http://yangyanxing.sinaapp.com)会提示
Error 500: Internal Server Error
请问我哪里出错了吗?SAE新手

关于现在UnKnownMessage的处理可能遇到的问题和建议

如果构造UnKnownMessage的话,成员里面是没有source属性,但是在robot.py的get_reply()方法里面如下代码会报错,抛出异常 说UnKnownMessage是没有source
session_storage = self.session_storage
if session_storage:
id = message.source
session = session_storage[id]
handlers = self.get_handlers(message.type)
这里的建议:

  1. 在 parser.py中
    原来的代码行: return UnknownMessage(_msg)
    修改成为如下:
    msg.update(_msg)
    return UnknownMessage(**msg)
  2. 在messages.py中
    原来的代码行:
    class UnknownMessage(WeChatMessage):
    def init(self, content):
    self.type = 'unknown'
    self.content = content
    修改成为如下:
    class UnknownMessage(WeChatMessage):
    def init(self,**kwargs):
    super(UnknownMessage, self).init(**kwargs)
    self.type = 'unknown'
    self.content = kwargs
    3.这样的话代码行的风格,写法都统一类似于TextMessage等,并且解决问题。

收到用户主动上报的地理位置消息会报错

收到用户主动上报的地理位置消息会报错。

http://mp.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%9C%B0%E7%90%86%E4%BD%8D%E7%BD%AE

<xml><ToUserName><![CDATA[id_here]]></ToUserName>
<FromUserName><![CDATA[id_here]]></FromUserName>
<CreateTime>1391486031</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[LOCATION]]></Event>
<Latitude>127.841963</Latitude>
<Longitude>123.112488</Longitude>
<Precision>30.000000</Precision>
</xml>

如何进行本地post测试,以及如何实现类似于有限状态机的对话流?

我的提问有点儿菜,因为我Python编程也比较菜
我想问的是,如何在本地利用poster进行测试?我post一个简单的微信数据过去,总是显示ValueError: String status line without a reason phrase.
另外,我看文档,貌似没有提到如何实现状态保持。比如我开发了功能,主菜单是:
输入1,使用x功能
输入2,使用y功能
然后现在用户输入了2,我应该回复y功能给它,要怎么实现状态保持呢?

`to_text()` 输入是 unicode 时报错

to_text() 输入是 unicode 时报错。

In [1]: import six

In [2]: def to_text(value, encoding="utf-8"):
   ...:         if isinstance(value, (six.string_types, six.binary_type)):
   ...:                 return value.decode(encoding)
   ...:         if isinstance(value, int):
   ...:                 return six.text_type(value)
   ...:         assert isinstance(value, six.text_type)
   ...:         return value
   ...: 

In [3]: print to_text(u'\u4e2d\u5348')
---------------------------------------------------------------------------
UnicodeEncodeError                        Traceback (most recent call last)
<ipython-input-3-9478a71004a0> in <module>()
----> 1 print to_text(u'\u4e2d\u5348')

<ipython-input-2-3b3748f845b1> in to_text(value, encoding)
      1 def to_text(value, encoding="utf-8"):
      2         if isinstance(value, (six.string_types, six.binary_type)):
----> 3                 return value.decode(encoding)
      4         if isinstance(value, int):
      5                 return six.text_type(value)

/root/.virtualenvs/wxPortal/lib/python2.7/encodings/utf_8.pyc in decode(input, errors)
     14 
     15 def decode(input, errors='strict'):
---> 16     return codecs.utf_8_decode(input, errors, True)
     17 
     18 class IncrementalEncoder(codecs.IncrementalEncoder):

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

如何实现记忆化的回复

比如 , 用户如果发 "查询天气" , 机器人提示输入地点 , 然后 用户输入地名 , 机器人回复天气情况 。

how to test the Helloworld?

I run the code robot.run(port=8888) ,how to get the reply?
If I open localhost:8888 in browser,I can't get the response.

0.5.0&0.5.1 python3.3 NameError: global name 'unicode' is not defined

[root@linux]# python3 wx-0.5.py
Traceback (most recent call last):
File "wx-0.5.py", line 116, in
robot.run(server='tornado', port=8888)
File "/opt/python3/lib/python3.3/site-packages/werobot/robot.py", line 250, in run
enable_pretty_logging(self.logger)
File "/opt/python3/lib/python3.3/site-packages/werobot/logger.py", line 32, in enable_pretty_logging
channel.setFormatter(_LogFormatter(color=color))
File "/opt/python3/lib/python3.3/site-packages/werobot/logger.py", line 53, in init
logging.DEBUG: unicode(curses.tparm(fg_color, 4),
NameError: global name 'unicode' is not defined

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.