>기술 주변기기 >일체 포함 >Python으로 WeChat 챗봇 작성

Python으로 WeChat 챗봇 작성

王林
王林앞으로
2023-05-04 23:16:052703검색

Python으로 WeChat 챗봇 작성

우리의 생활과 업무에서 메시지에 제때에 답장을 할 수 없는 경우가 많습니다. 특히 업무량이 많은 경우에는 고객이 메시지를 보냈는데 우리가 답장을 하지 않는 것이 안타까울 것입니다. 항상 응답할 에너지가 너무 많습니다. 이때 지능형 로봇은 우리가 많은 문제를 해결하는 데 도움을 줄 수 있습니다.

대형 QQ 그룹/WeChat 그룹의 관리자와 같은 전자상거래 고객 서비스처럼, 또는 게임을 할 때 스크립트만 걸어 놓으면 로봇이 자동으로 메시지에 응답하므로 여자친구를 화나게 할 필요가 없습니다. 잠시만, 하하하하!

오늘은 위챗 채팅 지능형 로봇(Turing)을 구현하는 16줄의 Python 코드를 가르쳐 드리겠습니다. 더 이상 메시지에 응답하지 않는다고 고객에게 혼날 염려가 없습니다!

1. 효과

제 위챗(왼쪽)으로 로그인한 후, 제 어시스턴트의 위챗으로 테스트해 본 결과, 채팅 효과가 좋아 보였습니다.

Python으로 WeChat 챗봇 작성


2. 프로젝트 아이디어

전체 아이디어는 아래 그림과 같습니다.

Python으로 WeChat 챗봇 작성

3. 코드 분석

1. 모듈 설치 및 가져오기

여기서 사용되는 두 가지 모듈은 itchat 모듈입니다. 필수적인 단계이며 프로젝트는 이 두 모듈을 기반으로 실행됩니다. 설치 방법은 매우 간단합니다. 윈도우 키 + R을 눌러 명령창을 띄운 뒤, 설치 명령어를 입력하면 됩니다. 예를 들어 itchat 모듈을 설치하려면 pip install itchat만 입력하면 됩니다. WeChat 검색 공개 계정: Linux 기술 팬, 답장: Linux가 정보를 받습니다.

Python으로 WeChat 챗봇 작성

참고로 두 모듈은 별도로 설치됩니다. 하나를 설치한 후 다른 하나도 설치하세요.

설치가 완료되면 모듈을 코드로 직접 가져올 수 있습니다.

<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">itchat</span><br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">import</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">requests</span>

2. Turing 로봇 신청

이 프로젝트의 로봇은 기성 Turing 로봇입니다. 공식 웹사이트에 등록하고 로봇을 만들기 위한 배경을 입력하세요. 각 로봇에는 우리가 사용할 API가 있습니다.

Python으로 WeChat 챗봇 작성

Turing Robot에는 무료 버전과 평가판이 있습니다. 이제는 실명 인증이 필요합니다. 하루에 100개의 메시지 답변만 제공되지만 테스터가 플레이할 수 있습니다.

Python으로 WeChat 챗봇 작성

Turing은 또한 백그라운드의 "Private Corpus"에서 설정할 수 있는 키워드에 대한 개인화된 응답을 제공할 수도 있습니다.

3. 로봇 기능 구현

웹사이트에 액세스하기 위한 URL 외에도 백그라운드에 여러 로봇이 있을 수 있으므로 호출되는 로봇도 결정해야 합니다. 로봇을 사용하여 보낼 메시지를 얻은 후 post 메소드를 사용하여 요청을 보내고 웹사이트의 URL과 로봇의 API 및 보낼 메시지를 보내고 마지막으로 사전에서 텍스트를 추출합니다. 마지막으로 데이터를 반환합니다.

<span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">def</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">get_response</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">msg</span>):<br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">apiUrl</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"http://www.tuling123.com/openapi/api"</span> <span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#要访问的网站</span><br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#key:机器人的key,info:要发送的消息</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span>{<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'key'</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">KEY</span>,<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'info'</span>:<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">msg</span>,<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">'userid'</span>:<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"WeChat-robot"</span>}<br><span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#发送请求:</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">r</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">requests</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">post</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">apiUrl</span>,<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">data</span>)<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">return</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">r</span>[<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"text"</span>]

4. WeChat 기능 구현

누군가가 메시지를 보내면 위에서 반환된 데이터를 호출합니다. 그러면 누군가가 메시지를 보냈는지 어떻게 알 수 있나요? 이때 itchat에서 제공하는 데코레이터인 @itchat.msg_register()를 사용하면 이 기능을 구현할 수 있으며, 위에서 작성한 로봇 함수를 호출하고 최종적으로 로봇의 정보 또는 보낸 사람의 정보를 반환합니다.

보내기 전에 보내는 사람 정보를 추가하고 복사해야 하는 이유는 무엇인가요? 이는 네트워크 및 기타 문제로 인해 로봇이 응답하지 않는 것을 방지하기 위한 것입니다. 이 때 우리에게 메시지를 보내는 사람이 있으면 자동으로 동일한 메시지에 응답하여 채팅 중에 응답하지 않는 것을 방지합니다.

<span style="color: rgb(31, 127, 154); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">@</span><span style="color: rgb(31, 127, 154); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">itchat</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">msg_register</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">itchat</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">content</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">TEXT</span>)<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">def</span> <span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">tuling_reply</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">user_data</span>):<br><span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">user_data</span>)<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#用户的信息包含给你发的消息</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">user</span><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">user_data</span>[<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"Text"</span>]<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#用户发你的信息</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">return_user</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">=</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">get_response</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">user_data</span>[<span style="color: rgb(102, 153, 0); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">"Text"</span>])<br><span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">print</span>(<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">return_user</span>)<br><span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">return</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">return_user</span> <span style="color: rgb(215, 58, 73); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">or</span> <span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">user</span>

5. 팝업 QR 코드 및 루프 프로그램

프로그램이 실행되면 QR 코드를 팝업하여 코드를 스캔하고 로그인할 수 있어야 합니다. 동시에 프로그램은 항상 실행되고 그렇지 않으면 프로그램은 한 번만 실행됩니다. 이 두 기능은 Itchat에서 제공되므로 직접 사용하면 됩니다.

<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">itchat</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">auto_login</span>()<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#扫码登录</span><br><span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">itchat</span>.<span style="color: rgb(0, 92, 197); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">run</span>()<span style="color: rgb(106, 115, 125); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">#循环执行</span>


위는 이 WeChat 지능형 챗봇의 코드 분석입니다. 이 더미는 유료 버전에 대해 잘 모르겠습니다. 전체 코드는 그렇지 않습니다. 20줄을 초과합니다.

위 내용은 Python으로 WeChat 챗봇 작성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제