1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/sjdy521-Mojo-Webqq

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
FAQ.md 13 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 13.03.2025 11:55 7780505

1. Печать логов в консоль с ошибками кодировки

Программа по умолчанию автоматически определяет кодировку консоли. Если вы видите неправильные символы, возможно, произошла ошибка при автоматическом определении кодировки. В этом случае попробуйте установить кодировку вручную.

$client = Mojo::Webqq->new(log_encoding => "utf8");

2. Как запустить несколько аккаунтов QQ

Используйте Controller-API для удобной работы с несколькими аккаунтами.

Если вам требуется просто запустить один или два аккаунта без использования API, воспользуйт Yöntem:

Основная проблема при использовании нескольких аккаунтов заключается в необходимости хранения cookie и других данных каждого аккаунта в отдельных директориях, чтобы избежать взаимного влияния.

Когда вы инициализируете клиентскую часть, можно указать параметр account для уникальной идентификации каждого клиента. Этот параметр не является реальным номером QQ и может быть свободно выбран.

Каждый аккаунт следует сохранять в отдельном pl-файле и указывать параметр account.

Файл abc.pl
use Mojo::Webqq;
my $client = Mojo::Webqq->new(account => "abc"); 
$client->load("ShowMsg");
$client->run();
Файл def.pl
use Mojo::Webqq;
my $client = Mojo::Webqq->new(account => "def"); 
$client->load("ShowMsg");
$client->run();

Для запуска используйте команды perl для каждого файла.Либо если вам не хочется иметь множество пл-файлов, вы можете использовать одну программу и передавать параметр account через переменные окружения MOJO_WEBQQ_ACCOUNT при запуске программы.

use Mojo::Webqq;
my $client = Mojo::Webqq->new(); # Здесь параметр account не указан, а берётся из переменной окружения
$client->load("ShowMsg");
$client->run();

3. Как тестировать последнюю версию кода с GitHub

Код на GitHub постоянно обновляется, поэтому стабильные версии регулярно пакуются и загружаются на CPAN (официальный Perl-репозиторий).

Через cpanm Mojo::Webqq вы можете скачать или обновить стабильную версию с CPAN. Если вы хотите протестировать самую новую версию кода с GitHub,

вы можете самостоятельно скачать последний исходный код и указать его использование в вашем xxxx.pl файле.

Это делается путём указания пути к модулю Mojo::Webqq через use lib 'github_источник/разархивированная_папка/lib/'.

Пример шагов:

a. Скачивание zip-архива с последним исходным кодом https://github.com/sjdy521/Mojo-Webqq/archive/master.zip

b. Распаковка master.zip в нужную директорию, например, на Windows в корневой каталог C:\

c. В начале вашего perl-программы добавьте use lib 'c:/Mojo-Webqq-master/lib';

d. Просто выполните вашу программу.

#!/usr/bin/env perl
use lib 'c:/Mojo-Webqq-master/lib'; # Указывает путь для загрузки модулей
use Mojo::Webqq;
my ($host, $port, $post_api);
``````markdown
\$host = "0.0.0.0"; # Address for listening to incoming messages, do not change unless necessary
\$port = 5000;      # Port for listening to incoming messages, set your desired port
# \$post_api = 'http://xxxx';  # URL for receiving notifications about message delivery, remove or comment out this line if it is not required

Здесь используется формат Markdown для комментариев внутри кода.```markdown my $client = Mojo::Webqq->new(log_level=>"info",http_debug=>0); $client->load("ShowMsg"); $client->load("Openqq",data=>{listen=>[{host=>$host,port=>$port}], post_api=>$post_api}); $client->run();


### 4. Почему в логах часто появляется сообщение "504 Gateway Time-out"?

Вы можете заметить множество таких сообщений в логах:

`[17/01/09 16:55:45] [warn] http://d1.web2.qq.com/channel/poll2 запрос завершился ошибкой:  Yöntem Timeout`

Это связано с проблемами официальных интерфейсов Tencent, даже при использовании веб-браузера для доступа к w.qq.com вы столкнетесь с этим.

К счастью, эта ошибка не влияет на прием сообщений, поэтому её можно игннорировать.

### 5. Как долго может быть активной учетная запись после сканирования QR-кода?

Исходя из ограничений сервера Tencent, учетная запись остается активной около 1-2 дней после успешного сканирования QR-кода. После истечения этого времени вам потребуется повторно сканировать QR-код для входа.

Плагин `Openqq` отслеживает событие `input_qrcode`.

Также можно использовать плагин `PostQRcode`, чтобы отправлять QR-код на указанный электронный адрес для его сканирования в любое время и любом месте.

### 6. Как получить JSON данные, отправленные плагином Openqq через PHP?

Учитывая, что отправленные JSON данные имеют тип `application/json`, а не `application/x-www-form-urlencoded`, использование обычного метода `$_POST` не будет работать (`$_POST` предназначен для данных вида a=1&b=2&c=3).

Для получения данных используйте `$GLOBALS['HTTP_RAW_POST_DATA']` для прямого получения сырого JSON-данных из HTTP-запроса.
```Или используйте `$http_request_body = file_get_contents('php://input');`

Затем используйте функцию `json_decode` для преобразования JSON-строки в соответствующую структуру данных PHP.

Справочные материалы PHP:

<http://us3.php.net/manual/en/function.json-decode.php>

<http://us3.php.net/manual/en/reserved.variables.httprawpostdata.php>

#### 7. Проблема с отображением символов в Screen

Решение: Включите режим UTF-8, добавив ключ `-U` перед другими командами, как показано ниже:

```bash
screen -U -S test
screen -U -r xxx

8. Изменение директорий для хранения cookies пользователей и логов сообщений

Класс Mojo::Webqq предоставляет соответствующие конфигурационные параметры в методе new, подробнее см. документацию.

По умолчанию cookies пользователей сохраняются в директории /tmp. При возникновении проблем с входом необходимо удалить соответствующие файлы в этой директории.

Пример изменения конфигурации:

Создайте две директории msg и cookie.

Измените скрипт запуска следующим образом:

use POSIX;
my $date = strftime("%Y%m%d", localtime());

my $client = Mojo::Webqq->new(
    ua_debug    => 0,          # Отладочная информация
    log_level   => "info",     # Уровень журналирования
    is_update_group => 0,
    is_update_discuss => 0,
    log_path => "msg/qqmsg-$date",
    tmpdir => "cookie",
    login_type => "qrlogin",   # "qrlogin" — вход через QR-код
);

Таким образом, сообщения будут сохраняться в директории msg, а файлы сессии и QR-коды — в директории cookie. Для просмотра новых сообщений можно использовать команду tail -f qqmsg-20171204.#### 9. Отправка QR-кода на электронную почту

Для отправки QR-кода на электронную почту используйте модуль PostQRcode. Также установите необходимый модуль Mojo::SMTP::Client при помощи команды cpanm Mojo::SMTP::Client.

Добавьте следующую конфигурацию в раздел плагинов вашего скрипта запуска:

$client->load("PostQRcode", data => {
    smtp    => 'smtp.ijz.me', # Адрес SMTP сервера
    port    => '25',          # Номер порта SMTP сервера
    from    => 'mojoqq@ijz.me', # Адрес отправителя
    to      => '10010@qq.com', # Адрес получателя
    user    => 'mojoqq@ijz.me', # Логин SMTP сервера
    pass    => 'Mojo-Webqq123',
    tls     => 0,             # Использование протокола SMTPS (по умолчанию 0)
});

Заполните адреса отправителя и получателя реальными данными.

10. Ошибка "Can't locate Mojo/Webqq.pm in @INC"

Это указывает на то, что модуль Mojo::Webqq не был успешно установлен. Обычно это происходит из-за ошибок при установке зависимых модулей во время выполнения команды cpanm Mojo::Webqq.

Необходимо проверить, какие модули отсутствуют. На Linux вы можете использовать следующую команду для проверки наличия модулей и исправления ситуации:

curl -ks "https://raw.githubusercontent.com/sjdy521/Mojo-Webqq/master/script/check_dependencies.pl" | perl -

11. Проблема с использованием после установки без прав root

Решение:

Метод 1: Перейти в аккаунт root и переустановить.

Метод 2: Выполнить следующие действия в аккаунте без прав root (не используйте sudo перед любыми командами):1) Установите модуль local::lib, выполнив команду:

    cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
  1. Добавьте соответствующие переменные окружения в файл запуска, выполнив команду:

     echo 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' >> ~/.bashrc

12. Невозможность входа при использовании имени пользователя и пароля

Возможной причиной является то, что метод аутентификации через имя пользователя и пароль требует ввода капчи при значительном изменении местоположения, что затрудняет автоматизацию процесса.

Чтобы избежать этой проблемы, рекомендуется использовать браузер для входа в http://qun.qq.com из сети, где находится ваш скрипт pl, чтобы сервер Tencent отменил определение вашего входа как незаконного.

Вы можете создать SSH-тоннели, SOCKS5-прокси, HTTP-прокси с поддержкой SSL-перенаправления (метод CONNECT), затем использовать браузер для доступа через прокси-сервер.

Ссылка на issue: https://github.com/sjdy521/Mojo-Webqq/issues/183

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/sjdy521-Mojo-Webqq.git
git@api.gitlife.ru:oschina-mirror/sjdy521-Mojo-Webqq.git
oschina-mirror
sjdy521-Mojo-Webqq
sjdy521-Mojo-Webqq
master