Клиентская библиотека для Smartqq, написанная на Perl с использованием Mojolicious. Требуется версия Perl 5.10+. Предоставляет API-интерфейсы на основе протокола HTTP через плагины для вызова другими языками или системами.
Проект полностью следует за официально предоставленными QQ-функциями и не включает никаких действий, нарушающих целостность или хакинг аккаунтов. Проект открытый и его цель — способствовать техническому общению и обучению. Запрещено использование проекта для целей, представляющих опасность для государства, компаний или частных лиц; последствия будут личной ответственностью пользователя.
Для более подробной информации о плагинах см. полную таблицу плагинов.### Демонстрация работы
Один командный запрос запускает умного чата бота, Perl и они такие элегантные. Приятного использования!
cpanm Mojo::Webqq && perl -MMojo::Webqq -e "Mojo::Webqq->new->load('ShowMsg')->load('SmartReply')->run()"
[15/09/30 15:11:59] [инфо] Инициализация параметров клиента smartqq...
[15/09/30 15:11:59] [инфо] Проверка капчи...
[15/09/30 15:11:59] [инфо] Результат проверки: Удача! Для входа не требуется капча
[15/09/30 15:11:59] [инфо] Получение QR-кода для входа...
[15/09/30 15:11:59] [инфо] QR-код загружен локально [/tmp/mojo_webqq_qrcode_xxx.png]
[15/09/30 15:12:00] [инфо] QR-код отправлен на электронную почту: ******
[15/09/30 15:12:00] [инфо] Ожидание сканирования QR-кода с мобильного приложения QQ...
[15/09/30 15:12:43] [инфо] QR-код успешно сканирован, нажмите кнопку [Разрешить вход в smartQQ] на телефоне...
[15/09/30 15:12:46] [инфо] Проверка безопасности...
[15/09/30 15:12:47] [инфо] Настройка параметров аутентификации...
[15/09/30 15:12:47] [инфо] Попытка входа (2)...
[15/09/30 15:12:47] [инфо] Вход выполнен успешно
[15/09/30 15:12:47] [инфо] Обновление информации о профиле...
[15/09/30 15:12:47] [инфо] Обновление информации о друзьях...
[15/09/30 15:12:47] [инфо] Обновление информации о группе [PERL учебный обмен]
[15/09/30 15:12:52] [инфо] Обновление информации о группе [Mojolicious]
[15/09/30 15:12:55] [инфо] Начало приема сообщений...
[15/09/30 14:09:20] [сообщение группы] Крошка | PERL учебный обмен : Mojo::Webqq очень хорош
[15/09/30 14:10:20] [сообщение группы] Я -> PERL учебный обмен : Большое спасибо
```#### Использование QQ через IRC-клиент в Linux терминале
``````markdown
+-------------------+ +----------------+
| Tencent | | Any IRC Client |
| SmartQQ Server | | wechat、irssi |
+---v-------------^-+ +-v------------^-+
| | | |
| QQ协议交互 | | IRC协议交互 |
+-- --- |-- - - -- | - - - -- - - --- | --- ----- | --+
| +---v-------------^--+ +----v------------^-+ |
| | <--------------------------------------> |
| | SmartQQ Client | QQ - IRC | IRC Server | |
| | | 协议转换 | Listening on port 6667 | |
| | >---------------------------------------> |
| +--------------------+ +---------------------+ |
| |
| Часть реализованной нами программы |
+--- - - - - -- - -- ---- ------ ------- ------ --- ----+

#### Инструмент для IT-шников: как общаться как хакер (изображение от @動感光波)

#### Другие примеры использования приложения можно найти в разделе [Mojo-Webqq коллекция](Collection.md)
### Установка
Рекомендуется использовать [cpanm](https://metacpan.org/pod/distribution/App-cpanminus/bin/cpanm) для онлайн установки или обновления модуля [Mojo::Webqq](https://metacpan.org/pod/distribution/Mojo-Webqq/doc/Webqq.pod). Если вы используете Docker, смотрите раздел [Установка и использование Docker образа](Docker.md).
1. *Установка Perl*
Перед установкой проверьте наличие Perl на вашей системе. Кроме Windows, большинство платформ уже имеют установленную версию. Ваша версия Perl должна быть не ниже 5.10.1, рекомендовано Yöнее 5.14 и выше.
На сайте [Perl](https://www.perl.org/get.html) есть подробные инструкции по установке для Unix/Linux, Mac OS X и Windows.
Рекомендуется выбирать **Binaries** (предварительно скомпилированные бинарники), так как они позволяют быстрее начать работу.
|Платформа |Рекомендация |Ссылка для скачивания |
|:-----------|:----------------------|:------------------------------|
|Windows |1. **StrawberryPerl**<br>2. ActivePerl<br>3. **Mojo-StrawberryPerl**|[Скачать StrawberryPerl](http://strawberryperl.com/)<br>[Скачать Mojo-StrawberryPerl](https://github.com/sjdy521/Mojo-StrawberryPerl)<br>[Скачать ActivePerl](http://www.activestate.com/activeperl/downloads)<br>|
|Linux |1. **Система по умолчанию**<br>2. **yum/apt и другие менеджеры пакетов**<br>3. Официальная сборка из исходников<br>4. ActivePerl<br>5. DWIM-Perl|[Скачать ActivePerl](http://www.activestate.com/activeperl/downloads)<br>[Скачать DWIM-Perl](http://dwimperl.com/linux.html)|
|Mac |1. **Система по умолчанию**<br>2. ActivePerl|[Скачать ActivePerl](http://www.activestate.com/activeperl/downloads)|
Внимание:
[Mojo-StrawberryPerl](https://github.com/sjdy521/Mojo-StrawberryPerl) — это урезанная версия StrawberryPerl, подходящая для Windows 32-bit и 64-bit систем.
2. *Установка пакетного менеджера cpanm* (если он уже установлен, пропустите этот шаг)
Метод a: Установка через CPAN
$ 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
```3. *Установка модуля Mojo::Webqq с помощью cpanm онлайн*
(Если этот модуль уже установлен в системе, выполнение этого шага приведёт к обновлению модуля)
$ cpanm Mojo::Webqq
Если процесс установки постоянно завершается ошибкой при скачивании, это может быть связано с плохой сетью до зарубежных серверов.
В этом случае можно попробовать указать внутренний зеркальный сайт следующим образом:
$ cpanm --mirror http://mirrors.163.com/cpan/ Mojo::Webqq
4. *Предложенные решения при неудачной установке*
Если вам не повезло и установка через 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](https://github.com/sjdy521/Mojo-Webqq/blob/master/FAQ.md#11-%D0%BD%D0%B5-%root-%D0%B0%D0%B2%D1%82%D0%BE%D1%80-%D0%B0%D0%BD%D1%82%D0%B5%D0%B9-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-%D0%BD%D0%B5%D1%82-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%B4%D0%BB%D1%8F-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B8-%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D1%80%D0%BE%D0%B2).
Если проблемы все еще остаются, на Linux можно попробовать выполнить следующий скрипт для проверки зависимостей:
$ curl -ks "https://raw.githubusercontent.com/sjdy521/Mojo-Webqq/master/script/check_dependencies.pl"|perl -### Как использовать
1. Я знаком с Perl и являюсь профессионалом в этой области.
Этот проект представляет собой чистый модуль Perl, который был опубликован на CPAN. Пожалуйста, внимательно ознакомьтесь с [документацией по использованию модуля `Mojo::Webqq`](https://metacpan.org/pod/distribution/Mojo-Webqq/doc/Webqq.pod).
Кроме того, вы можете просмотреть больше примеров кода в директории [demo](https://github.com/sjdy521/Mojo-Webqq/tree/master/demo).
2. Я не знаком с 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:
$ perl xxxx.pl
Пример вызова API для отправки сообщения другу:
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 описаны в [документации API](API.md).
3. Я гик и хочу использовать IRC для управления QQ-чатом через командную строку. Просмотрите [инструкции по использованию плагина IRCShell](IRC.md)
4. Я администратор группы QQ или владелец группы, и хочу добавить в свою группу функцию управления через бота.
Обратите внимание на [документацию по использованию плагина GroupManage](https://metacpan.org/pod/distribution/Mojo-Webqq/doc/Webqq.pod#Mojo::Webqq::Plugin::GroupManage)
### Основные зависимости
* [Mojolicious](https://metacpan.org/pod/Mojolicious)
* [Encode::Locale](https://metacpan.org/pod/Encode::Locale)
### Дополнительные документы
* [Журнал обновлений](Changes)
* [Документация по разработке и конфигурации](doc/Webqq.pod)
* [Документация HTTP API](API.md)
* [Часто задаваемые вопросы (FAQ)](FAQ.md)### Официальные каналы связи
* [Группа QQ](http://jq.qq.com/?_wv=1027&k=kjVJzo)
* [IRC](http://irc.perfi.wang/?channel=#Mojo-Webqq)
### Соответствующие ссылки
*JavaScript*
* [webqqircd](https://github.com/MaskRay/webqqircd) Управление WebQQ (SmartQQ) через клиент IRC, аналогично wechatircd
* [qqbot](https://github.com/floatinghotpot/qqbot) Бот SmartQQ и сервер API, работающий на Node.js
* [qqbot](https://github.com/ScienJus/qqbot) Бот QQ на основе SmartQQ (WebQQ) / бот QQ на основе API SmartQQ (WebQQ)
*Python*
* [SmartQQBot](https://github.com/Yinzo/SmartQQBot) Автоматический бот SmartQQ
* [qqbot](https://github.com/pandolia/qqbot) Разговорный бот на основе Tencent SmartQQ
*Java*
* [smartqq](https://github.com/ScienJus/smartqq) API SmartQQ (WebQQ), который можно использовать для создания своего бота QQ
### Поддержка проекта
Вы можете сделать пожертвование, используя QR-код для оплаты Alipay. Спасибо за вашу поддержку и поддержание духа.

Особое спасибо [тем, кто когда-либо делал пожертвования](https://github.com/sjdy521/Mojo-Thanks)
### АВТОРСКИЕ ПРАВА и ЛИЦЕНЗИЯ
Авторское право © 2014 sjdy521
Эта библиотека является свободным программным обеспечением; вы можете распространять её и/или модифицировать её в соответствии с лицензией [BSD Yöntem 2-clause "Упрощённой"](LICENSE)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )