/Webqq-Client

使用perl语言编写的QQ机器人(采用webqq协议)

Primary LanguagePerl

使用perl语言编写的QQ机器人(采用webqq协议)
核心依赖模块:
    JSON
    Digest::MD5
    AnyEvent::UserAgent
    LWP::UserAgent
    LWP::Protocol::https
    IPC::Run

客户端异步框架:
client 
 | 
 ->login()
    |
    |->timer(60s)->_get_msg_tip()#heartbeat 
    |        +-------------------------<------------------------------+
    |        |                                                        |
    |->_recv_message()-[put]-> Webqq::Message::Queue -[get]-> on_receive_message()
    |
    |->send_message() -[put]--+                       +-[get]-> _send_message() ---+
    |                           \                   /                              +
    |->send_sess_message()-[put]-Webqq::Message::Queue-[get]->_send_sess_message()-+               
    |                              /              \                                +
    |->send_group_message()-[put]-+                +-[get]->_send_group_message()--+
    |                                                                              +
    |                          on_send_message() ---<---- msg->{cb} -------<-------+
    +->run()

版本更新记录:
2014-11-07 Webqq::Client v2.9
1)修复收到下线通知消息时客户端处理错误,感谢[perl技术 @路人丙]的测试反馈
2)增加Webqq::Client::App::ShowMsg应用,可以方便打印收到的消息

2014-11-07 Webqq::Client v2.8
1)Webqq::Client::App::Perlcode支持自动查找本机perldoc路径
2)Webqq::Client::App::Perldoc支持自动查找本机perl路径
3)Webqq::Client::App::Perldoc/Webqq::Client::App::Perlcode运行在非linux系统报错退出

2014-11-03 Webqq::Client v2.7
1)新增Webqq::Client::Cron模块,支持定时执行回调
2)新增Webqq::Client::App::Msgstat应用,统计群内成员发送消息数量

2014-11-03 Webqq::Client v2.6
1)支持从本地socket接收发送消息指令
2)支持从QQ消息接收发送消息指令

2014-10-31 Webqq::Client v2.5
1)使用深拷贝彻底修复重新登录异常问题 

2014-10-29 Webqq::Client v2.4
1)修复重新登录异常问题

2014-10-27 Webqq::Client v2.3
1)增加登录成功、输入验证码回调函数
2)支持在未连接TTY时将验证码通过邮件形式发送到指定邮箱,
   可以在邮箱中点击链接直接完成验证码输入(方便在手机上随时收邮件输验证码)
   通过这种方式可以避免QQ每隔一段时间被强迫下线无法在电脑前再次输入验证码的缺点

2014-10-23 Webqq::Client v2.2
1)修复因临时目录不存在出现chroot失败,导致有权限执行危险系统命令
2)其他少量细节完善

2014-09-28 Webqq::Client v2.1
1)增加定时更新群列表信息,群信息
2)群信息查询结果进行缓存
3)数据查询和数据更新进行了分离
4)消息发送添加发送间隔,腾讯webqq不允许短时间内发送次数过于频繁

2014-09-28 Webqq::Client v2.0
1)支持获取临时消息联系人信息
2)$msg消息结构采用AAG(Automated Accessor Generation)技术,
   每个hash的key都自动产生一个对应的的方法,
   即,你可以使用$msg->{key}或者$msg->key任意一种方式获取你想要的数据
   如感兴趣,可以参见cpan Class::Accessor模块
3)修复更新导致无法正常发送消息问题

2014-09-27 Webqq::Client v1.9
1)修复获取好友信息列表时,如果设置了好友备注名称会导致程序抛出异常的bug
   感谢来自[perl技术 @阳]的反馈
2)完善了一些感谢人员信息

2014-09-26 Webqq::Client v1.8
1)增加->relogin()方法,在系统提示需要重新登录时尝试自动重新登录或者重新连接
2)修复客户端login_state设置bug
3)修复perlcode可以写入和读取系统文件问题

2014-09-26 Webqq::Client v1.7
1)支持接收和回复群临时消息(sess_message)
2)由于机器人大部分情况下都是根据接收的消息进行回复,因此增加reply_message()
   使得消息处理,更加便捷,传统的方式,你需要自己create_msg,再send_message
   这种方式更适合主动发送消息,采用reply_message($msg,$content)
   只需要传入接收消息结构和要发送的内容,即可回复消息,且不需要关心消息的具体类型
3)根据聊天信息中的perldoc和perlcode指令进行文档查询和执行perl代码,源码公布
   有兴趣可以参考:
       Webqq::Client::App::Perldoc
       Webqq::Client::App::Perlcode
   后续会考虑形成中间件的开发框架,让更多的人参与,开发更多有趣的中间件

2014-09-18 Webqq::Client v1.6
1)修改发送消息数据编码,提高发送消息可靠些

2014-09-18 Webqq::Client v1.5
1)增加心跳检测
2)发送群消息增加一个Origin的HTTP请求头希望可以解决群消息偶尔发送不成功问题

2014-09-17 Webqq::Client v1.4
1)修复图片和表情无法正常显示问题,现在图片和表情会被转为文本形式 [图片][系统表情]
2)改进发送群消息机制,通过群消息group_code对应的gid再进行群消息发送
3)增加Webqq::Client::Cache模块,用于缓存一些经常需要使用的信息,避免时时查询
4)增加获取个人信息、好友信息、群信息、群成员信息功能
5)增加查询好友QQ号码功能
6)增加注销功能,程序运行后使用CTRL+C退出时,会自动完成注销
7)增加对强迫下线消息的处理
----
当前发现的一些BUG:
1)再一次消息接收中如果包含多个消息,可能会导致只处理第一个消息,其他消息丢失
2)偶尔会出现发送群消息提示成功,但对方无法接收到的问题(可能和JSON编码有关)

2014-09-14 Webqq::Client v1.3
1)添加一些代码注释
2)demo/*.pl示例代码为防止打印乱码,添加终端编码自适应
3)添加Webqq::Message::Queue消息队列,实现接收消息、处理消息、发送消息等函数解耦

2014-09-14 Webqq::Client v1.2
1)源码改为UTF8编写,git commit亦采用UTF8字符集,以兼容github显示
2)优化JSON数据和perl内部数据格式之间转换,更好的兼容中文
3)修复debug下的打印错误(感谢 [PERL学习交流 @卖茶叶perl高手] 的bug反馈)
4)新增demo/console_message.pl示例代码,把接收到的普通消息和群消息打印到终端

2014-09-12 Webqq::Client v1.1
1)debug模式下支持打印send_message,send_group_message的POST提交数据,方便调试
2)修复了无法正常发送中文问题
3)修复了无法正常发送包含换行符的内容
4) on_receive_message/on_send_message改为是lvalue方法,以支持getter和setter方式