Uma pequena ferramenta que permite ao WeChat enviar mensagens regularmente em loop (o uso de tarefas de expressão cron pode ser preciso ao minuto) e enviar mensagens em lotes. Ele também fornece uma interface simples e intuitiva que pode ser implantada em qualquer plataforma.
✅Mensagens em grupo: envie mensagens diferentes para vários amigos ao mesmo tempo
✅Enviar mensagens automaticamente: verificar automaticamente a hora e enviar mensagens no momento correspondente (com base na expressão cron, com precisão de minuto)
✅Enviar mensagens em loop: a expressão cron pode definir qualquer trabalho de loop
✅Verifique os registros do bate-papo regularmente e seja lembrado com base nos resultados dos testes?
✅Garantia de confiabilidade: o registro e a detecção automática de erros podem garantir que as tarefas agendadas sejam executadas sem perder o ritmo?
✅Proteção de autenticação de login: proteção de login para garantir a segurança dos dados
✅ Suporte completo à plataforma, fácil de implantar no servidor, o servidor é implantado na plataforma win para aceitar solicitações do cliente e o cliente pode ser implantado em qualquer plataforma?
Este projeto está dividido em 2 partes, servidor e cliente:
O servidor é um servidor leve, instalado no win junto com o WeChat
O servidor é completamente desacoplado do cliente e aceita solicitações http para automatizar as operações do WeChat. Você também pode escrever um cliente para chamar a interface do servidor.
wechat/ping
: Verifique se o servidor está funcionando normalmente, retorne 'status': 'pong'
wechat/send_message
: envie mensagens, aceite name
de dados e text
em formato json e execute operações automatizadas no WeChatwechat/check_wechat_status
: Verifique se o WeChat está funcionando normalmentewechat/get_dialogs
: Obtenha o histórico do bate-papowechat/get_dialogs_by_time_blocks
: obtém registros de bate-papo com base no período de tempo e retorna uma lista aninhadawechat/send_file
: enviar arquivoO servidor possui uma fila de mensagens e um bloqueio mutex. Você só precisa enviar mensagens ao servidor, e o servidor processará automaticamente a fila de mensagens para garantir que as mensagens sejam enviadas em sequência, para que você também possa implantar vários clientes para enviar mensagens. o mesmo servidor.
O cliente é um front-end leve que pode ser executado em qualquer plataforma e envia mensagens ao servidor por meio de solicitações de rede.
首页
: Visão geral dos recursos日志
: Verifique o log da chamada de função do cliente para facilitar a depuração e detecção de erros. A falha indica que há um problema com a chamada de função. Pode haver mensagens perdidas, mensagens erradas e falhas no salvamento de dados. ., precisa prestar atenção错误检测
: detecta se várias funções do cliente estão normais e se as tarefas agendadas estão faltando发送消息管理
: envie mensagens em lotes定时任务管理
: envio de mensagens em horários agendados邮箱报警
: detecta erros automaticamente e envia informações de erro para o endereço de e-mail designado数据管理界面
: gerencie o conteúdo do banco de dados, edite e envie mensagens Para simplificar a configuração do servidor, instale o WeChat em C:/Program Files/Tencent/WeChat/WeChat.exe
. Este local é o local de instalação padrão do WeChat.
Se o seu WeChat estiver instalado em outro lugar, use a implantação do código-fonte e execute o servidor:
Visite
http://127.0.0.1:8000/admin/wechat_app/wechatconfig/1/change/
, o nome de usuário éadmin
, a senha étykWyr-bepqu6-fafvym
e modifique manualmente o local de instalação do WeChat
Observe que o separador de caminho no Windows é
, mas em python
é um caractere de escape, portanto precisa ser substituído por
/
, por exemplo
Windows资源管理器复制出来文件路径是:`C:Program FilesTencentWeChatWeChat.exe`
但是在后台中需要写成:`C:/Program Files/Tencent/WeChat/WeChat.exe
Depois de salvar, você pode executar
pyinstaller YuYuWechatV2_Server.spec
para recompilar o servidor em EXE e, em seguida, implantá-lo no servidor
Encontre a versão mais recente na interface de lançamento e baixe YuYuWechatV2_Server.exe
e YuYuWechatV2_Server_run.bat
Coloque os dois arquivos no mesmo diretório, clique duas vezes em YuYuWechatV2_Server_run.bat
para executar (a porta padrão é 8000, se houver um conflito, modifique o arquivo bat para especificar a porta)
cd para o diretório YuYuWechatV2_Server
Instalar dependências pip install -r requirements.txt
Execute python manage.py runserver 0.0.0.0:8000
Depois de instalar e executar o servidor na etapa anterior, você pode usar um comando simples para testar se o servidor foi executado com êxito.
Terminal aberto (powershell):
curl http://127.0.0.1:8000/wechat/ping
Normalmente ele retornará
StatusCode : 200
StatusDescription : OK
Content : { " status " : " pong " }
RawContent : HTTP/1.1 200 OK
Vary: origin
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: same-origin
Cross-Origin-Opener-Policy: same-origin
Content-Length: 18
Content-Type: applicat...
Forms : {}
Headers : {[Vary, origin], [X-Frame-Options, DENY], [X-Content-Type-Options, nosniff], [Referrer-Policy, same
-o rigin]...}
Images : {}
InputFields : {}
Links : {}
Links : {} ParsedHtml : System.__ComObject RawContentLength : 18
$jsonData = ' {"name": "文件传输助手", "text": "hi"} '
Invoke-WebRequest -Uri http://127.0.0.1:8000/wechat/send_message/ -Method Post -Headers @{ " Content-Type " = " application/json " } -Body $jsonData -ContentType " application/json; charset=utf-8 "
Este comando enviará uma mensagem hi
para o Assistente de Transferência de Arquivos
Terminal aberto:
curl -X GET http://替换成服务器的ip地址:8000/wechat/ping/
curl -X POST http://替换成服务器的ip地址:8000/wechat/send_message/ -H " Content-Type: application/json " -d ' {"name": "文件传输助手", "text": "hi"} '
YuYuWechatV2_Server requer uma interface GUI, então você precisa garantir que o Windows não bloqueie a tela.
win+r运行命令
gpedit.msc
Eu compilei as imagens do docker para x86 e arm. Ambas as arquiteturas x86 e arm do Windows/mac/Linux podem ser executadas.
docker-compose.yml
postgres_data
no mesmo diretório para montar o arquivo de banco de dadosdocker-compose up
para executar docker-compose.yml
- CSRF_TRUSTED_ORIGINS=https://localhost,https://yourdomain.com # 定义CSRF信任域
, caso contrário ocorrerão problemas de CSRF
Este arquivo docker extrairá três imagens,
`mona233/yuyuwechatv2_client:latest`
`redis:latest`,因为定时任务的celery需要一个消息队列,我默认使用redis,端口为6379
`postgres:latest`,因为客户端需要一个数据库,我默认使用postgres,端口为5432
yuyuwechatv2_client.tar.gz
na interface de lançamento. Esta é a imagem do docker compilada. Se quiser personalizar a estrutura do banco de dados e adicionar funcionalidades, você pode executá-lo a partir do código-fonte
tykWyr-bepqu6-fafvym
.YuYuWechatV2_Client
pip install -r requirements.txt
python manage.py runserver 127.0.0.1:7500 --insecure
YuYuWechatV2_Client/YuYuWechatV2_Client/settings.py
CSRF_TRUSTED_ORIGINS = os.environ.get('CSRF_TRUSTED_ORIGINS', 'https://localhost').split(',')
, caso contrário, ocorrerão problemas de csrf
127.0.0.1:7500
em seu navegador local para abrir a página inicial do front-end A primeira é a interface de login. Você precisa criar manualmente um superusuário e abrir um novo terminal:
Insira o contêiner do docker
docker exec -it yuyuwechatv2_client bash
Diretório de montagem
cd /app
Crie um superusuário (defina você mesmo o usuário e a senha)
python manage.py createsuperuser
Em seguida, digite seu nome de usuário e senha na interface de login para fazer login.
192.168.50.1:8000
e clique para testar se o servidor está conectado. Depois de conectado, clique em Salvar IP do servidor para salvá-lo persistentemente no banco de dados. Não há necessidade de configurar o IP do servidor na próxima vez.启动定时任务
para iniciar a tarefa de envio agendada e a função de alarme por e-mail.Para outras funções, clique na barra lateral para ir para a interface correspondente. A página da web front-end envolve apenas a visualização e o envio de operações no banco de dados. A adição, exclusão e modificação de usuários e conteúdo de mensagens precisam ser feitas na interface de gerenciamento em segundo plano. , o que garante a segurança dos dados
127.0.0.1:7500/admin
em seu navegador local para entrar na interface de gerenciamento em segundo plano. Em client_app estão os dados do cliente, você pode ver a seguinte tabela de dados
Messages
: Tabela de dados para envio de gerenciamento de mensagensScheduled messages
: tabela de dados para gerenciamento de tarefas agendadasServer configs
: configuração do servidorWechat users
: tabela de dados do usuário WeChatEmail settingss
: Configurações de e-mailLogs
: tabela de dados de logError logs
: tabela de dados de detecção de erros Username
: nome do amigo WeChat ou nome do comentário, deve ser classificado em primeiro lugar nos resultados da pesquisa ( obrigatório )Wechatid
: ID do WeChat ( opcional )Date added
: data em que o amigo foi adicionado ( não obrigatório )Group:
Grupo de amigos. A página front-end pode filtrar amigos de acordo com o grupo para facilitar o gerenciamento do grupo ( opcional ). Is active
: se esta mensagem está ativada ou não. Ela será enviada regularmente após a ativação. O padrão é ativado.User
: Selecione o usuário WeChat adicionado na etapa anterior ( obrigatório )Text
: Conteúdo da mensagem enviada ( obrigatório )Cron expression
: expressão cron, hora para enviar regularmente, o formato é * * * * *
, representando分时日月周
respectivamente ( obrigatório )Execution count:
O número de vezes que a mensagem é executada, 0 significa nenhuma execução, e será reduzido em um após cada execução até chegar a 0, para que o número de vezes que a mensagem seja enviada possa ser controlado ( o número precisa para ser definido manualmente )Execution skip
: O número de saltos de mensagens, o padrão é 0. Se definido como 1, a tarefa não será executada na próxima vez, mas apenas na próxima vez. Se definido como 2, a tarefa será ignorada duas vezes e assim por diante. Isso pode controlar o início do envio agendado de mensagens ( opcional ). Através cron表达式
e消息的执行次数
e消息的跳过次数
, a mensagem pode ser iniciada e finalizada a qualquer momento, a mensagem pode ser enviada a qualquer momento e a mensagem pode ser enviada em loop.
Em relação cron表达式
, este programa é uma expressão cron de 5 segmentos, com precisão de minuto. Por favor, não confunda com a expressão cron de 7 segmentos. Existem geradores online na Internet ou no ChatGPT.
* * * * *:每分钟执行一次
0 * * * *:每小时执行一次
0 0 * * *:每天执行一次
0 0 * * 1:每周一执行一次
*/10 * * * * # 每10分钟执行一次
0 0 */2 * * # 每隔一天午夜12点执行
0 0 * * 1 # 每周一午夜12点执行
0 0 1 * * # 每月1日午夜12点执行
Usando a função de alarme por e-mail, quando ocorre um erro, um e-mail pode ser enviado automaticamente para a caixa de correio designada para facilitar o tratamento oportuno dos erros.
Clique em Configuração de e-mail na página inicial e ele irá para o backend.
Recomenda-se usar a caixa de correio 163 aqui. A seguir está a configuração detalhada da caixa de correio (se você usar a caixa de correio 163, os três primeiros itens não precisam ser alterados).
Email host
: endereço smtpEmail port
: porta smtpEmail security
: selecione o método de criptografiaEmail host user
: conta de e-mailEmail host password
: Senha do e-mail (geralmente é um código de autorização, aplique você mesmo)Default from email:
O endereço de e-mail para envio de e-mails, geralmente o mesmo do Email host user
Recipient list:
O endereço de email para recebimento de emails Você pode preencher vários itens, separados por vírgulas. Depois de escrever ScheduledMessage, às vezes você precisa gerar MessageCheck ao mesmo tempo. Este é um cenário muito comum, então escrevi um migrador para facilitar a geração de MessageCheck a partir de ScheduledMessage.
YuYuWechatV2_Client
python manage.py generate_message_checks
no terminalPor padrão, este migrador criará um ScheduledMessage e um MessageCheck de acordo com as seguintes regras
is_active=scheduled_message.is_active, # 保持与 ScheduledMessage 一致的激活状态
user=scheduled_message.user, # 关联的用户与 ScheduledMessage 相同
keyword="", # keyword 留空
cron_expression=cron_expression_day_after, # 设置为第二天 15:00 的 cron 表达式
message_count=1, # 默认仅检查一条消息
report_on_found=False # 默认不报告找到的关键词
Se quiser personalizar as regras de geração, você pode modificar a função YuYuWechatV2_Client/client_app/management/commands/generate_message_checks.py
As mensagens enviadas pelo WeChat costumam ser muito importantes. Para garantir que não haverá problemas no envio de mensagens, o YuYuWechat utiliza diversos meios para garantir a confiabilidade do sistema, mas ainda podem ocorrer erros. bem-vindo para levantar uma questão.
Os erros são teoricamente inevitáveis, portanto a detecção de erros é crucial
O teste é um meio importante para verificar se o código funciona conforme o esperado. YuYuWechat conduz testes automatizados por meio de ações do GitHub. Para exemplos de teste detalhados, consulte a pasta .github
O núcleo do easyChat YuYuWechatV2_Server é easyChat, por favor, apoie-o
A manutenção do software requer um certo custo. Se você acha que este software é útil para você, fique à vontade para dar uma gorjeta ao autor com uma xícara de café☕️.
YuYuWechat é totalmente gratuito, as doações servem apenas para apoiar o autor a continuar desenvolvendo e mantendo o software, e não são obrigatórias
O código é usado apenas para comunicação e aprendizado sobre a tecnologia UIAutomation. É proibido usá-lo em projetos de produção reais. Se surgir alguma disputa legal como resultado, o autor não terá nada a ver com isso!