版本更新记录: 2015-04-17 Webqq::Client v8.4.3 1)支持利用Webqq::Qun来获取群号码、群成员QQ号、好友QQ号 2)Openqq的api接口支持使用群号码和好友qq号码来指定发送对象 3)修复Openqq的api自己给自己发送消息导致死循环的bug 4)修复SmartReply的识别逻辑错误,感谢[perl技术 @kk]反馈 2015-03-31 Webqq::Client v8.4.2 1)新增Webqq::Encryption::TEA::Perl模块,TEA算法纯perl实现 2015-03-31 Webqq::Client v8.4.1 1)支持Crypt:::RSA模块进行RSA计算,该模块是纯Perl编写,更易安装 2015-03-31 Webqq::Client v8.4 1)新增Webqq::Encryption模块,将登录加密中涉及到的TEA/RSA算法进行了分离 2)可以通过安装Crypt::OpenSSL::RSA/Crypt::OpenSSL::Bignum/MIME::Base64模块来提升计算速度10倍以上 2015-03-11 Webqq::Client v8.3.1 1)修复少了文档错误 2015-03-11 Webqq::Client v8.3 1)Plugin函数使用eval执行,防止插件出错导致整个程序退出 2)更新获取好友列表和群列表的hash函数 由于腾讯更新了hash算法,导致旧版本无法获取到好友信息和群信息,请尽快更新到此版本 2015-03-10 Webqq::Client v8.2.1 1)使用git tag进行版本号管理 2)修复pod文档错误 感谢 @wxg 反馈 3)修复SmartReply插件api接口获取数据失败后导致主程序退出的bug 2015-02-22 Webqq::Client v8.2 1)Openqq插件进一步完善,提供获取信息、发送消息完整api 2)pod文档增加Openqq api的详细说明 2015-02-10 Webqq::Client v8.1 1)新增Webqq::Client::Plugin::Openqq插件,使用PSGI+Twiggy框架,提供RESTful API 2)新增$client->ready()/stop()/exit()/Webqq::Client::RUN()来支持单进程多账号模式 3)新增on_ready()回调,在多账号模式下替代原有的on_run()回调 2015-02-10 Webqq::Client v8.0 1)new()/login()新增security参数,security=>1表示发送/接收消息使用https加密 2015-02-09 Webqq::Client v7.9 1)新增最近联系人列表功能 感谢@wxg的补丁 2)用户、好友、群、讨论组增加客户端类型(client_type)属性 感谢@wxg的补丁 3)修复CpanRecentModule模块当发现新模块时进入死循环的bug 2015-02-07 Webqq::Client v7.8 1)个人、群、讨论组成员增加状态属性(state) 2)新增对buddies_status_change消息类型的处理 2)新增on_friend_change_state回调,好友状态变化实时提醒 2015-02-06 Webqq::Client v7.7 1)修复发送中文消息时严重bug导致发送消息为空 2015-02-04 Webqq::Client v7.6 1)修复表情消息处理错误 2)使用List::Util 提供的first函数优化代码逻辑 2015-02-04 Webqq::Client v7.5 1)大量bug修复和代码逻辑优化 2)新增讨论组功能支持(由于腾讯限制,目前仅能接收讨论组消息,无法发送) 3)支持讨论组临时消息 4)增加设置在线状态功能,感谢@wxg的补丁 2015-01-26 Webqq::Client v7.4 1)新增$client->{is_first_login}属性,用于识别是否是首次登录 2)修复relogin清空cookie时严重错误,该错误可能会导致程序异常退出 3)修复on_new_group在错误的时机被执行的bug 4)新增客户端接收消息失败次数限制,超过失败次数自动重连 5)$client->_relink()方法重新连接失败后会改为重新登录 2015-01-23 Webqq::Client v7.3 1)新增$client->_relink()方法,区分重新登录、重新连接两种行为 2)修复on_login回调在login之后不能马上发送消息的缺陷 3)完善$client->_recv_message()对异常响应的处理 4)$client->_cookie_proxy()方法嵌入到$client->_login2()中执行 5)修复$client->_login2()请求参数错误 2015-01-22 Webqq::Client v7.2 1)修复relogin时on_new_group回调存在的bug 2)新增Webqq::UserAgent代替AnyEvent::UserAgent减少模块依赖 2015-01-16 Webqq::Client v7.1 1)Webqq::Client::Cache新增->delete()的方法 2)新增_detect_new_group_member2方法,用于发现新增成员 3)新增_detect_loss_group_member方法,用于发现退群成员 4)客户端定时更新群信息 5)新增on_loss_group_member回调 2015-01-12 Webqq::Client v7.0 1)新增cookie跨域私有方法$client->_cookie_proxy() 2)新增下载好友自定义图片私有方法$client->_get_offpic() 3)新增下载好友自定义图片回调$client->on_receive_offpic 4)$msg->{raw_content}将cface和offpic进行区分 5)修复Perlcode插件空白命令仍然执行的bug 6)修复SmartReply空白内容仍然执行api查询的bug 2015-01-03 Webqq::Client v6.9 1)CpanRecentModule插件bug修复 2)客户端消息发送间隔默认修改为2s 3)增加$client->get_dwz()方法,生成url对应的短地址 2014-12-31 Webqq::Client v6.8 1)修复Webqq::Client::Cron变量重复声明的错误 2014-12-31 Webqq::Client v6.7 1)完善客户端消息发送间隔控制,可以设置$client->{send_interval},默认1s 2014-12-29 Webqq::Client v6.6 1)进一步完善文档 2)修复update_group_info多次调用导致群信息重复的bug 2014-12-28 Webqq::Client v6.5 1)MakeFile.PL增加Time::Piece/Time::Seconds依赖模块 2014-12-28 Webqq::Client v6.4 1)客户端search_group/search_friend/search_member_in_group功能进行优化 2)客户端on_new_friend/on_new_group/on_new_group_member回调优化 2014-12-24 Webqq::Client v6.3 1)修复add_job会导致程序出现死循环的严重bug 2014-12-24 Webqq::Client v6.2 1)修复on_input_img_verifycode文档错误 2014-12-24 Webqq::Client v6.1 1)取消MakeFile中的DateTime依赖 2014-12-24 Webqq::Client v6.0 1)修改登陆异常时的报错信息 2)_login1()返回异常时,打印错误原因 3)Webqq::Client::Cron取消对DateTime的依赖,改为Time::Piece和Time::Seconds 2014-12-23 Webqq::Client v5.9 1)发送消息方法调用更加便捷 2)调整一些demo示例代码 2014-12-23 Webqq::Client v5.8 1)create_sess_msg()方法修复主动发送群临时消息的bug 2)ShowMsg插件可以打印群临时消息所属的群名称 3)PostImgVerifycode修复提交验证码后页面响应为空的bug 4)修复pod里密码md5加密容易引起歧义的描述 2014-12-19 Webqq::Client v5.7 1)修复LinkInfo/SmartReply插件的多出bug 2)完善Perlcode插件的资源限制 3)新增$msg->{raw_conent}属性用于获取更多原始消息内容 4)新增javascript运行测试脚本 5)优化javascript加载速度 2014-12-17 Webqq::Client v5.6 1)客户端验证码输错会进行多次重试 2)支持smartqq登录密码加密算法 webqq采用的只是多重md5带盐加密 而smartqq采用的是 md5带盐加密+RSA+Base64 三重组合 采用了JE模块直接perl中运行javascript代码 要运行客户端请确保你已经安装了该模块 3)新增LinkInfo的插件,获取url的标题和正文内容 2014-12-15 Webqq::Client v5.5 1)查询增加缓存机制,提高查询速度 2)修复on_new_group_member/on_new_friend回调在某些情况下无法正常触发的bug 3)增加get_single_long_nick()的方法用于获取指定qq用户的个性签名 2014-12-09 Webqq::Client v5.4 1)登录过程增加请求失败重试机制 2)新增Webqq::Client::Plugin::PicLimit插件,对群里发图数量太多警告 2014-12-09 Webqq::Client v5.3 1)修复ShowMsg插件bug 2)修复发送消息重试机制失效的bug 2014-12-09 Webqq::Client v5.2 1)修复search_member_in_group()存在的bug导致无法正常获取新入群成员信息 2)_get_group_info()在debug模式下打印的调试信息进行了精简 2014-12-09 Webqq::Client v5.1 1)调整pod文档格式 2)回调函数使用eval包裹 2014-12-06 Webqq::Client v5.0 1)Webqq::Client::App::*重新更名为Webqq::Client::Plugin:: 2)新增Webqq::Client::Plugin模块,用于管理插件 3)新增$msg->{allow_plugin}属性用于插件之间协作 4)更新对应的pod文档 5)demo示例代码更新 2014-12-04 Webqq::Client v4.9 1)插件支持执行链的功能,在插件链上的每一个插件 都可以选择是否要继续执行后续的插件 2)少量细节完善 2014-12-04 Webqq::Client v4.8 1)完善on_new_gropu_memner相关的pod文档 2)新增Webqq::Client::App::HelloGril插件 3)修复on_new_gropu_memner回调的bug 4)修复无法获取群成员信息时导致反复获取的bug 2014-11-28 Webqq::Client v4.7 1)完善pod文档 2)Webqq::Client::App::SmartReply限制条件更加严格 3)删除$client->_get_msg_tip() 4)接收到的好友消息增加$msg->from_city() 2014-11-28 Webqq::Client v4.6 1)修复客户端发送消息失败无法正常返回状态的bug 2)cpan模块信息查询支持显示SYNOPSIS 3)perlcode的执行方式更加自由灵活,支持perl -e '' 4)每个$msg都增加一个ttl值,在消息发送过程中ttl值会递减 当减少到0则会被消息队列丢弃 5)智能回复会增加消息发送者所在城市信息 6)修复perlcode识别代码错误的bug 7)Webqq::Client::App::SmartReply增加每分钟次数限制 2014-11-26 Webqq::Client v4.5 1)正确处理客户端收到的陌生人消息 2)只有在群消息时才进行截断 3)系统开启关闭消息时也通过回复消息进行状态反馈 4)修复模块查询信息细节 5)Webqq::Client::App::Perldoc指令进行优化 2014-11-26 Webqq::Client v4.4 1)为配合Perl的MakeFile,src文件夹重命名为lib 2)完善make test测试脚本 2014-11-26 Webqq::Client v4.3 1)整合webqq和smartqq,现在可以通过$client->new(type=>...);进行选择 type=>"smartqq"或者type=>"webqq" 2)目前api接口获取群信息时会出现无法获取到群成员情况,代码进行了适配处理 3)修复了Webqq::Client::App::Perldoc中关于模块查询信息bug 4)Webqq::Client::App::SmartReply回复消息时会按照80%的概率先@对方 2014-11-24 Webqq::Client v4.2 1)修复Makefile错误,感谢[perl技术 @kk] 2)版本号形式从 v4.2 改为 "4.2"; 3)新增Webqq::Client::App::SendMsgControl 可以通过"-shutdown","-reactive"指令来关闭和开启消息发生功能 4)模块信息查询功能5分钟内只提醒一次 2014-11-24 Webqq::Client v4.1 1)支持perldoc 模块名查询cpan模块信息 2)支持自动识别聊天记录中的模块名 查询相关信息 3)识别perldoc指令不再要求精确匹配/^perldoc/ 4)增加模块查询信息缓存机制,提高响应速度 2014-11-23 Webqq::Client v4.0 1)客户端支持探测新成员或新好友,并自动更新客户端数据库 2)新增on_new_group() on_new_group_member on_new_friend() 回调 2014-11-21 Webqq::Client v3.9 1)新增Webqq::Client::App::SmartReply模块,智能回复消息 2014-11-21 Webqq::Client v3.8 1)修复客户端数据库存储bug 2)新增Webqq::Client::App::ClientStore模块,便于将客户端数据库存储到文件 3)修复Webqq::Client::App::PostImgVerfcode提交验证码后没有给出任何提示的bug 2014-11-21 Webqq::Client v3.7 1)增加系统表情文字显示支持,系统表情会以类似[微笑]的形式打印 2)修复查询信息无法正常缓存的bug 2014-11-20 Webqq::Client v3.6 1)修复客户端接收到临时消息后停止接收消息的bug 2)修复临时消息查找陌生人信息无法缓存问题 2014-11-20 Webqq::Client v3.5 1)demo/console_message.pl中的fromat_msg使用Webqq::Client::App::ShowMsg替换 2)Webqq::Client::App::ShowMsg进一步完善 3)延长拉去消息时间间隔 2014-11-19 Webqq::Client v3.4 1)修复Webqq::Message::_mk_ro_accessors严重bug,此bug会导致客户端获取到的消息信息错乱 新增Webqq::Message::_load_extra_accessor方法,客户端会在run()开始时执行 2)修改Webqq::Client::App::Msgstat::Report()排序算法 3)修改-Msgstat指令权限,只允许指定帐号使用 2014-11-19 Webqq::Client v3.3 1)修复-msgstat错误 2)增加大量文档说明,参加doc/Client.pod 2014-11-17 Webqq::Client v3.2 1)一定程度上屏蔽perlcode无限fork攻击,感谢[PERL学习交流 @Achilles/kl]指导 2)Webqq::Client::App::Perlcode/Webqq::Client::App::Perldoc不再执行超过一定时效的消息指令 3)Webqq::Client::App::ShowMsg使用qq号取代uin作为hash的key 2014-11-17 Webqq::Client v3.1 1)新增Webqq::Client::App::Msgstat统计群消息发言排行 2)修复图片、表情和文字混合的消息无法正常处理的bug 3)修复发送消息打印报错bug 4)修复Webqq::Client::App::Msgstat统计bug 5)完善Webqq::Client::App::Msgstat::Report()的输出格式 6)完善Webqq::Client::App::Msgstat::Report()群名片显示问题 7)增强-msgstat指令,支持-msgstat 数字 群名称调用形式 2014-11-17 Webqq::Client v3.0 1)Webqq::Client::App::ShowMsg支持打印发送和接收消息 2)文档结构调整,增加了一些MakeFile和POD支持(未完善) 3)修复format_msg()打印结果不对齐的bug 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方式