Esta é uma versão simples do robô WeChat feita usando AppleScript e versão Mac do cliente WeChat. Este robô originou-se do fato de que eu queria fazer um ChatBot para me ajudar a registrar consumo, dieta, exercícios e outros dados, e me ajudar a resumir o conteúdo dos artigos de contas públicas do WeChat. Atualmente, a solução principal para implementar o ChatBot usando o WeChat pessoal é o Wechaty. No entanto, entre os fantoches usados pelo Wechaty, a versão web gratuita ou a versão UOS não é estável o suficiente (o que significa que muitas vezes é colocada offline inexplicavelmente). e rico em recursos. Você precisa gastar moedas de ouro adicionais para comprar tokens. Então, depois de algumas pequenas tentativas, implementei esse robô WeChat que é lento, tem poucas funções, mas é estável o suficiente ( escolhi a versão Mac do cliente WeChat porque só tenho dispositivos Mac ).
Este robô é concluído principalmente usando AppleScript, complementado por algum código Python. Python é usado porque a operação de clique do mouse que vem com AppleScript não pode ser usada no cliente WeChat, portanto, uma biblioteca Python adicional é usada para implementar a operação de clique. Portanto, você precisa primeiro ter um interpretador Python3 e instalar o PyUserInput:
pip3 install PyUserInput
Claro, se você tiver outras soluções para simular cliques do mouse, você também pode usar a sua própria (só descobri que PyUserInput foi descontinuado quando escrevi este README).
Em seguida, você precisa modificar algumas configurações em wemac .applescript
da seguinte forma:
mouseclick.py
é colocado;Depois de definir as variáveis acima, você pode tentar executar o script uma vez. Antes de executar, certifique-se de estar conectado à versão Mac do WeChat . Execute o script e você descobrirá que o AppleScript encontrará automaticamente o bate-papo de destino, clique na janela do bate-papo e comece a excluir o registro do bate-papo mais recente . Sim, este AppleScript excluirá o registro do bate-papo. nenhum lugar para gravar cada mensagem foi respondida, você só pode evitar respostas repetidas excluindo a mensagem; se a mensagem estiver no robô, ele responderá então, a execução do AppleScript terminará; que apenas uma execução de AppleScript será processada .
Então, como manter o robô funcionando? Uma solução viável é escrever um run.sh
e escrever um loop infinito nele para executar continuamente wemac .applescript
(na verdade, eu mesmo faço isso).
Se quiser personalizar o conteúdo da resposta, como conectar-se a um modelo de linguagem grande, você pode adicionar sua própria lógica de resposta no comentário "Lógica de processamento de mensagens" na linha 270 do wemac .applescript
use o shell para conectar outra linguagem, como Python, você pode chamar um script Python para personalizar o conteúdo da resposta da seguinte maneira:
set replyMessage to do shell script "python3 your_script.py " & (my escaped(question))
A saída padrão (stdout) do shell executado será atribuída a replyMessage
e então enviada pelo robô como resposta.
Ao unir comandos shell, você pode usar a função escaped
para escapar de parâmetros e evitar ataques de injeção.
Neste ponto, um chatbot simples está em execução. Durante o processo, você pode encontrar alguns erros que não conseguem localizar os elementos, mas de modo geral, ignore-os e execute novamente o AppleScript.
run.sh
ao mesmo tempo para lidar com bate-papos diferentes, mas isso diminuirá a velocidade de execução;Mas a vantagem é que ele é estável o suficiente e basicamente pode funcionar para sempre, desde que você faça login. Em teoria, usar AppleScript para simular cliques não será detectado pelo WeChat e levará ao banimento de contas.
A versão do cliente Mac WeChat usada é Version. 3.8.6 (28078)
.