whtsky/WeRoBot — pull request #11 by reorx (2013-06-18 08:08:08+00:00)
Title: 一些有点专断的改动

出于自用的目的，就把框架改动了一下，大概在以下几个方面：

1. 引用方式
改变之前的 `import werobot.utils` 然后调用 `werobot.utils.xxx` 的做法，明确地引用所使用的函数 `from werobot.utils import xxx`

2. 增加了 examples 文件夹

3. 合并了所有关于不同类型消息的 handler 测试，并精简了测试代码（去掉冗余的 WeRoBot 和 WeTest 实例化，改为调用统一函数）

4. 将 test 模块重命名为 testing，后者更符合现今大多数项目的命名规范

5. 增加了 errors 模块

6. 大改了 WeRoBot 的运行机制：
* 每种消息类型只会对应一个函数而不是多个，重复声明会将之前的函数覆盖。因此而去掉了 `WeRoBot.handler` 装饰器，指定消息类型的处理函数应该明确声明 （Explicit is better than implicit)
* 增加了 `_fallback` 伪消息类型用于处理无对应处理函数的消息
* 在 `_get_reply` 中使用异常处理机制，将产生异常的消息移交 fallback handler 处理
* 传递给 `create_reply` 的 replay 可以是 `None`，代表无回复。除此外必须是可以生成合法的消息的数据。
* 增加了 `WeRoBot.settings` 属性，用于存储和更改配置，并在相应的地方（如 `run`）引用
* 增加了对 `logging` 的配置处理，以后可以在项目中使用 `logging` 记录日志了

有点专断，所以本来不大好意思提交了……想了下还是发了，毕竟作为这个项目的受益者，回馈是必须的呀～