使用Perl語言編寫的Smartqq客戶端框架,基於Mojolicious,要求Perl版本5.10+,可透過插件提供基於HTTP協定的api介面供其他語言或系統調用
本計畫完全遵循QQ官方提供的原始功能,不包含任何破壞、盜號等行為,本計畫完全開源,目的是為了促進技術交流學習,禁止任何對國家、企業、個人等構成危害的非法用途,否則後果自負
名稱 | 優先權 | 目前狀態 | github作者 | 功能說明 |
---|---|---|---|---|
ShowMsg | 100 | 已發布 | sjdy521 | 列印客戶端接收和發送的訊息 |
GroupManage | 100 | 已發布 | sjdy521 | 群組管理,入群歡迎、限制發圖頻率等 |
IRCShell | 99 | 已發布 | sjdy521 | Linux環境下透過irc客戶端使用qq |
Openqq | 98 | 已發布 | sjdy521 | 提供qq發送訊息api接口 |
Perlcode | 97 | 已發布 | sjdy521 | 透過qq訊息執行perl程式碼 |
Perldoc | 96 | 已發布 | sjdy521 | 透過qq訊息查詢perl文檔 |
Translation | 93 | 已發布 | sjdy521 | 多國語言翻譯功能 |
KnowledgeBase | 3 | 已發布 | sjdy521 | 自訂可編輯問答知識庫 |
Qiandao | 1 | 已發布 | sjdy521 | QQ群每日簽到 |
PostQRcode | 0 | 已發布 | sjdy521 | 登入二維碼發送到郵箱實現遠端掃碼 |
UploadQRcode | 0 | 已發布 | sjdy521 | 二維碼上傳圖床獲得公網訪問url |
ShowQRcode | 0 | 已發布 | autodataming | 呼叫系統圖片檢視程式來示二維碼(目前僅支援win) |
SmartReply | 0 | 已發布 | sjdy521 | 智慧聊天回复 |
更多插件參考完整插件列表
敲一行指令就能啟動一個智慧聊天機器人,Perl 和你都如此優雅. Enjoy!
cpanm Mojo::Webqq && perl -MMojo::Webqq -e "Mojo::Webqq->new->load('ShowMsg')->load('SmartReply')->run()"
[15/09/30 15:11:59] [info] 初始化 smartqq 客户端参数...
[15/09/30 15:11:59] [info] 检查验证码...
[15/09/30 15:11:59] [info] 检查结果: 很幸运,本次登录不需要验证码
[15/09/30 15:11:59] [info] 正在获取登录二维码...
[15/09/30 15:11:59] [info] 二维码已下载到本地[ /tmp/mojo_webqq_qrcode_xxx.png ]
[15/09/30 15:12:00] [info] 登录二维码已经发送到邮箱: ******
[15/09/30 15:12:00] [info] 等待手机QQ扫描二维码...
[15/09/30 15:12:43] [info] 手机QQ扫码成功,请在手机上点击[允许登录smartQQ]按钮...
[15/09/30 15:12:46] [info] 检查安全代码...
[15/09/30 15:12:47] [info] 设置登录验证参数...
[15/09/30 15:12:47] [info] 尝试进行登录(2)...
[15/09/30 15:12:47] [info] 登录成功
[15/09/30 15:12:47] [info] 更新个人信息...
[15/09/30 15:12:47] [info] 更新好友信息...
[15/09/30 15:12:47] [info] 更新[ PERL学习交流 ]信息
[15/09/30 15:12:52] [info] 更新[ Mojolicious ]信息
[15/09/30 15:12:55] [info] 开始接收消息...
[15/09/30 14:09:20] [群消息] 小灰|PERL学习交流 : Mojo::Webqq不错哦
[15/09/30 14:10:20] [群消息] 我->PERL学习交流 : 多谢多谢
+-------------------+ +----------------+
| Tencent | | Any IRC Client |
| SmartQQ Server | | wechat、irssi |
+---v-------------^-+ +-v------------^-+
| | | |
| QQ协议交互 | |IRC协议交互 |
+-- --- |-- - - -- | - - - -- - - --- | --- ----- | --+
| +---v-------------^--+ +----v------------^-+ |
| | <——————————————————< | |
| | SmartQQ Client | QQ - IRC | IRC Server | |
| | | 协议转换 | 监听本机6667端口 | |
| | >——————————————————> | |
| +--------------------+ +-------------------+ |
| |
| 我们程序实现的部分 |
+--- - - - - -- - -- ---- ------ ------- ------ --- ----+
建議使用cpanm線上安裝或升級Mojo::Webqq模組, 如果使用docker方式請參閱Docker映像安裝及使用方法
安裝perl
在安裝前請先確認下你的系統是否已經安裝了Perl,因為除了windows,其他大部分的平台預設都可能已經預先安裝過
且你的Perl版本至少5.10.1+,建議5.14+
Perl官網下載頁有包含Unix/Linux、Mac OS X、Windows多平台比較全面詳細的安裝說明
建議大家盡量選擇Binaries (二進位預編譯)的版本,安裝即可使用,比較方便
平台 | 推薦選擇 | 下載地址 |
---|---|---|
Windows | 1. StrawberryPerl 2. ActivePerl 3. Mojo-StrawberryPerl | StrawberryPerl下載地址 Mojo-StrawberryPerl下載網址 ActivePerl下載位址 |
Linux | 1.系統自帶 2. yum/apt等套件管理器 3. 官方原始碼編譯 4. ActivePerl 5. DWIM-Perl | ActivePerl下載位址 DWIM-Perl下載位址 |
Mac | 1.系統自帶 2. ActivePerl | ActivePerl下載位址 |
注意:
Mojo-StrawberryPerl是基於StrawberryPerl精簡打包而成,適用於windows 32位元/64位元系統
安裝cpanm套件管理工具(如果系統已經安裝了cpanm可以忽略此步驟)
方法a: 透過cpan安裝cpanm
$ cpan -i App::cpanminus
方法 b:直接在線安裝cpanm
$ curl -kL https://cpanmin.us | perl - App::cpanminus
官方服务器在国外,如果无法访问,可以选择下面的命令:
$ curl http://share-10066126.cos.myqcloud.com/cpanm.pl|perl - App::cpanminus
使用cpanm在線安裝Mojo::Webqq 模組(如果系統已經安裝了該模組,執行此步驟會對模組進行升級)
$ cpanm Mojo::Webqq
如果安裝過程中一直提示下載失敗,很可能是因為訪問到國外伺服器網路比較差
這種情況下可以嘗試如下手動指定國內的鏡像站點
$ cpanm --mirror http://mirrors.163.com/cpan/ Mojo::Webqq
安裝失敗可能有幫助的解決方法
如果你運氣不佳,透過cpanm沒有一次性安裝成功,這裡提供了一些可能有用的信息
在安裝Mojo::Webqq 的過程中,cpan或cpanm會幫助我們自動安裝許多其他的依賴模組
在眾多的依賴模組中,安裝經常容易出現問題的主要是IO::Socket::SSL
IO::Socket::SSL 主要提供了https 支持,在安裝過程中可能會涉及SSL相關函式庫的編譯
對於Linux 用戶,通常採用的是編譯安裝的方式,系統缺少編譯安裝必要的環境,則會導致編譯失敗
對於Windows 用戶,由於不具備良好的編譯安裝環境,建議採用一些已經打包比較全面的Perl運行環境
例如比較流行的strawberryperl 或activeperl 的最新版本都預設包含Mojo::Webqq 的核心依賴模組
RedHat/Centos:
$ yum install -y openssl-devel
Ubuntu:
$ sudo apt-get install libssl-dev
搞定了編譯和運行環境之後,再重新回到步驟2 安裝Mojo::Webqq即可
請盡量在root下安裝使用,非root下安裝使用參考FAQ
如果仍然有問題,Linux上可以嘗試執行以下腳本進行依賴模組檢查
$ curl -ks "https://raw.githubusercontent.com/sjdy521/Mojo-Webqq/master/script/check_dependencies.pl"|perl -
我對Perl很熟悉,是個專業的Perler
該專案是一個純粹的Perl模組,已經發佈到了cpan上,請仔細閱讀Mojo::Weqq
模組的使用文檔
除此之外,你可以看下demo 目錄下的更多程式碼範例
我是對Perl不熟悉,是一個其他語言的開發者,只對提供的訊息發送/接收介面感興趣
可以直接把如下程式碼保存成一個原始碼檔案(必須是UTF-8編碼),使用perl 解釋器來運行
#!/usr/bin/env perl
use Mojo::Webqq;
my ($host,$port,$post_api);
$host = "0.0.0.0"; #发送消息接口监听地址,没有特殊需要请不要修改
$port = 5000; #发送消息接口监听端口,修改为自己希望监听的端口
#$post_api = 'http://xxxx'; #接收到的消息上报接口,如果不需要接收消息上报,可以删除或注释此行
my $client = Mojo::Webqq->new();
$client->load("ShowMsg");
$client->load("Openqq",data=>{listen=>[{host=>$host,port=>$port}], post_api=>$post_api});
$client->run();
上述程式碼儲存成xxxx.pl 文件,然後使用perl 來執行,就會完成QQ 登入並在本機產生一個監聽指定位址連接埠的http server
$ perl xxxx.pl
發送好友訊息的介面呼叫範例
http://127.0.0.1:5000/openqq/send_friend_message?uid=xxxxx&content=hello
* About to connect() to 127.0.0.1 port 5000 (#0)
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0)
> GET /openqq/send_friend_message?uid==xxxxx&content=hello HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 127.0.0.1:5000
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json;charset=UTF-8
< Date: Sun, 13 Dec 2015 04:54:38 GMT
< Content-Length: 52
< Server: Mojolicious (Perl)
<
* Connection #0 to host 127.0.0.1 left intact
{"status":"发送成功","msg_id":23910327,"code":0}
更多介面參數說明請參考API說明文檔
我是一個極客,我只想能夠在命令列上透過IRC 的方式來玩QQ 聊天
請閱讀IRCShell外掛程式使用步驟
我是QQ 群組主或管理員,我想為自己的群組加個機器人群管理功能
請關注GroupManage 插件使用文檔
JavaScript
Python
Java
可以透過掃描支付寶付款二維碼進行贊助,感謝您的支持與鼓勵
特別致謝那些曾經贊助的夥伴們
Copyright (C) 2014 by sjdy521
This library is free software; you can redistribute it and/or modify it under BSD 2-clause "Simplified" license