이것은 AppleScript와 Mac 버전의 WeChat 클라이언트를 사용하여 만든 간단한 WeChat 로봇 버전입니다. 이 로봇은 소비, 다이어트, 운동 등의 데이터를 기록하고, 위챗 공개 계정 기사의 내용을 요약하는 데 도움이 되는 챗봇을 만들고 싶다는 생각에서 탄생했습니다. 현재 개인 WeChat을 사용하여 ChatBot을 구현하기 위한 주류 솔루션은 Wechaty입니다. 그러나 Wechaty에서 사용하는 퍼펫 중 무료 웹 버전이나 UOS 버전은 충분히 안정적이지 않습니다. 즉 ipadloacl과 같은 솔루션은 안정적이지 않습니다. 그리고 기능이 풍부합니다. 토큰을 구매하려면 추가 금화를 소비해야 합니다. 그래서 몇 가지 작은 시도 끝에 느리고 기능이 거의 없지만 충분히 안정적인 WeChat 로봇을 구현했습니다( 저는 Mac 장치만 있기 때문에 Mac 버전의 WeChat 클라이언트를 선택했습니다 ).
이 로봇은 주로 AppleScript를 사용하여 완성되며 일부 Python 코드가 보완됩니다. AppleScript에서 제공하는 마우스 클릭 동작을 WeChat 클라이언트에서 사용할 수 없기 때문에 Python 라이브러리를 사용하여 클릭 동작을 구현합니다. 따라서 먼저 Python3 인터프리터가 있어야 하고 PyUserInput을 설치해야 합니다.
pip3 install PyUserInput
물론, 마우스 클릭을 시뮬레이션하기 위한 다른 솔루션이 있다면 자신만의 솔루션을 사용할 수도 있습니다(이 README를 작성할 때 PyUserInput이 더 이상 사용되지 않는다는 사실을 발견했습니다).
다음으로 wemac .applescript
의 일부 구성을 다음과 같이 수정해야 합니다.
mouseclick.py
파일이 있는 디렉터리이기도 합니다.위의 변수를 설정한 후 스크립트를 한 번 실행해 볼 수 있습니다. 실행하기 전에 Mac 버전의 WeChat에 로그인되어 있는지 확인하세요 . 스크립트를 실행하면 AppleScript가 자동으로 대상 채팅을 찾아 채팅 창을 클릭하고 가장 최근 채팅 기록을 삭제하기 시작합니다 . 예, 이 AppleScript는 당시 채팅 기록을 삭제한다는 점을 고려했습니다. 각 메시지를 기록할 위치가 없으면 메시지를 삭제해야만 반복 응답을 피할 수 있습니다. 메시지를 삭제한 후 메시지가 로봇에 있으면 AppleScript 실행이 종료됩니다. 하나의 AppleScript 실행만 메시지가 처리됩니다 .
그렇다면 로봇을 계속 실행하는 방법은 무엇입니까? 실행 가능한 해결책은 run.sh
를 작성하고 그 안에 무한 루프를 작성하여 wemac .applescript
계속 실행하는 것입니다(사실 이 작업은 제가 직접 수행합니다).
대규모 언어 모델에 연결하는 등 응답 내용을 사용자 정의하려면 wemac .applescript
AppleScript 자체에는 기능이 제한되어 있으므로 다음을 수행할 수 있습니다. 셸을 사용하여 Python과 같은 다른 언어에 연결하면 Python 스크립트를 호출하여 다음과 같은 방식으로 응답 내용을 사용자 정의할 수 있습니다.
set replyMessage to do shell script "python3 your_script.py " & (my escaped(question))
실행된 셸의 표준 출력(stdout)은 replyMessage
에 할당된 다음 로봇에 의해 응답으로 전송됩니다.
쉘 명령을 접합할 때 escaped
기능을 사용하여 매개변수를 이스케이프하여 주입 공격을 피할 수 있습니다.
이 시점에서 간단한 챗봇이 실행되는 동안 요소를 찾을 수 없는 오류가 발생할 수 있지만 일반적으로 이를 무시하고 AppleScript를 다시 실행하십시오.
run.sh
에 추가하여 다양한 채팅을 처리할 수 있지만 이렇게 하면 실행 속도가 느려집니다.그러나 장점은 충분히 안정적이며 로그인하는 한 기본적으로 영원히 실행될 수 있다는 것입니다. 이론적으로 AppleScript를 사용하여 클릭을 시뮬레이션하면 WeChat에서 감지되지 않으며 계정 금지로 이어질 수 있습니다.
사용된 Mac WeChat 클라이언트 버전 Version. 3.8.6 (28078)
입니다.