Python은 itchat을 기반으로 WeChat 그룹 메시지 동기화 로봇을 구현합니다.

高洛峰
풀어 주다: 2017-02-28 09:03:53
원래의
3935명이 탐색했습니다.

최근 풀 스택 데이터 엔지니어 교육을 위한 WeChat 그룹은 거의 500명에 달합니다. 두 번째 그룹을 개설한 후, 서로 다른 WeChat 그룹 간의 메시지를 공개하기 위해 시간을 들여 메시지 동기화 로봇을 만들었습니다. 모든 그룹에서 메시지를 받을 수 있습니다. 메시지는 다른 그룹과 동기화되며 추가 분석, 통계 및 표시를 위해 채팅 콘텐츠가 데이터베이스에 업로드됩니다.

기본 아이디어는 Python을 사용하여 WeChat 로그인을 시뮬레이션하는 것입니다. 그룹 메시지를 받은 후 텍스트, 사진, 공유 등 다양한 메시지 유형을 별도로 처리하여 다른 그룹에 전달합니다.

사전 준비

우선 코드 시뮬레이션 로그인을 위해서는 위챗 아이디가 있어야 합니다. 위챗 아이디는 본인이 보관해야 하는데, 현재 위챗에 등록하려면 휴대폰 번호가 필요하기 때문에 전용 이메일 계정을 만들어서 새 위챗 아이디를 신청해야 했습니다. 알리 계정을 이용해서 위챗을 등록할 수 있는 것 같지만 재활용과 보안상의 위험이 반복적으로 발생한다고 해서 사용하지 않습니다.

둘째, Python 라이브러리 itchat을 사용해야 합니다. 이 라이브러리는 이미 코드를 사용하여 대부분의 WeChat 기능을 준비했습니다. 설치 시 pip를 사용하세요.

아아아아

내 휴대폰이 듀얼 SIM 듀얼 대기를 지원하기 때문에 휴대폰에 두 카드를 모두 설치하고 WeChat을 열고 두 WeChat 휴대폰을 동시에 온라인 상태로 유지했습니다. , 거의 코드 작성을 시작할 수 있습니다. itchat을 사용하여 WeChat에 전화하는 것은 주로 WeChat 웹 버전에 대한 로그인을 시뮬레이션하기 위한 것이므로 WeChat ID 전화는 온라인 상태로 유지되어야 합니다. 휴대폰의 WeChat이 로그아웃되면 웹, PC, MAC, IPAD에서 해당 계정이 인증되기 때문입니다. 다른 해당 단말기도 로그아웃됩니다.

초기 시도

itchat은 공식 코드를 제공합니다. 노트북이나 컴퓨터에 새 py 파일을 만들고 예비적으로 시도해 보겠습니다.

다음 코드를 실행하면 QR 코드가 나타납니다. 코드를 스캔하여 로그인하면 "파일 전송 도우미"로 메시지가 전송됩니다.

pip install itchat
로그인 후 복사

다음 코드는 문자 메시지 수신 후 처리 방법을 정의하기 위해 메시지 응답 이벤트를 등록합니다. itchat에서는 텍스트, 사진, 명함, 위치, 알림, 공유, 파일 등 다양한 메시지 유형을 정의하고, 각기 다른 처리를 별도로 수행할 수 있습니다.

# 加载包
import itchat
# 登陆
itchat.auto_login()
# 发送文本消息,发送目标是“文件传输助手”
itchat.send('Hello, filehelper', toUserName='filehelper')
로그인 후 복사

다른 유형의 메시지를 처리하는 방법을 살펴보겠습니다. 메시지 응답 이벤트에서 msg를 인쇄하여 확인할 수 있습니다. 당신은 분야에 관심이 있습니다.

import itchat
# 注册消息响应事件,消息类型为itchat.content.TEXT,即文本消息
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
  # 返回同样的文本消息
  return msg['Text']

itchat.auto_login()
# 绑定消息响应事件后,让itchat运行起来,监听消息
itchat.run()
로그인 후 복사

메시지 동기화 로봇 개발

위 예제 코드에 이어 메시지 동기화 로봇의 개발 아이디어 요약할 수 있습니다:

  • 그룹이라는 사전을 유지 관리합니다. 메시지를 동기화해야 하는 모든 그룹 채팅을 저장하는 데 사용됩니다. 키는 그룹 채팅의 ID이고 값은 다음과 같습니다. 그룹 채팅 이름

  • 그룹 채팅 메시지 수신 시, 동기화가 필요한 그룹 채팅에서 메시지가 오면 메시지 유형에 따라 처리됩니다. 동기화가 필요한 다른 그룹 채팅으로 전달됩니다.

먼저 메시지 응답 기능을 정의해 보겠습니다. TEXT 및 SHARING을 사용하여 메시지를 지정합니다. 그룹 채팅의 경우 이 매개변수의 기본값은 False입니다.

아아아아

사진 등 멀티미디어 메시지를 다루자.

import itchat
# import全部消息类型
from itchat.content import *

# 处理文本类消息
# 包括文本、位置、名片、通知、分享
@itchat.msg_register([TEXT, MAP, CARD, NOTE, SHARING])
def text_reply(msg):
  # 微信里,每个用户和群聊,都使用很长的ID来区分
  # msg['FromUserName']就是发送者的ID
  # 将消息的类型和文本内容返回给发送者
  itchat.send('%s: %s' % (msg['Type'], msg['Text']), msg['FromUserName'])

# 处理多媒体类消息
# 包括图片、录音、文件、视频
@itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
def download_files(msg):
  # msg['Text']是一个文件下载函数
  # 传入文件名,将文件下载下来
  msg['Text'](msg['FileName'])
  # 把下载好的文件再发回给发送者
  return '@%s@%s' % ({'Picture': 'img', 'Video': 'vid'}.get(msg['Type'], 'fil'), msg['FileName'])

# 处理好友添加请求
@itchat.msg_register(FRIENDS)
def add_friend(msg):
  # 该操作会自动将新好友的消息录入,不需要重载通讯录
  itchat.add_friend(**msg['Text']) 
  # 加完好友后,给好友打个招呼
  itchat.send_msg('Nice to meet you!', msg['RecommendInfo']['UserName'])

# 处理群聊消息
@itchat.msg_register(TEXT, isGroupChat=True)
def text_reply(msg):
  if msg['isAt']:
    itchat.send(u'@%s\u2005I received: %s' % (msg['ActualNickName'], msg['Content']), msg['FromUserName'])

# 在auto_login()里面提供一个True,即hotReload=True
# 即可保留登陆状态
# 即使程序关闭,一定时间内重新开启也可以不用重新扫码
itchat.auto_login(True)
itchat.run()
로그인 후 복사

위 코드는 텍스트, 공유, 사진, 동영상의 네 가지 유형의 메시지 처리를 구현합니다. , 그에 따라 진행하세요. 그냥 처리하세요. 앞쪽에 가져오기 코드를 추가하고 뒤쪽에 로그인 및 실행 코드를 추가하면 완료됩니다.

업적 표시

현재 두 그룹 간 메시지 동기화가 가능하며, 첫 번째 그룹과 두 번째 그룹의 친구들이 드디어 자유롭게 채팅을 할 수 있습니다(그룹 리더가 아닐 때) 쉽습니다, 빨간 봉투를 많이 나눠줘야 하는 경우가 많습니다 = =).

Python은 itchat을 기반으로 WeChat 그룹 메시지 동기화 로봇을 구현합니다.

Python은 itchat을 기반으로 WeChat 그룹 메시지 동기화 로봇을 구현합니다.

추가 작업

물론 못 가요 내 노트북은 항상 그런 py 코드를 실행하려면 서버에 배포하고 실행하면 됩니다. 화면을 열거나 IPython을 사용할 수 있습니다. 계정이 가끔 오프라인 상태가 되면 다시 실행하세요.

또한 메시지에 응답할 때 해당 데이터를 내 서버에 게시하고 추가 분석, 통계 및 표시를 위해 데이터베이스에 저장하는 API도 작성했습니다. a group 마스터의 책임~

위 내용은 모두의 학습에 도움이 되기를 바라며, PHP 중국어 홈페이지도 많은 응원 부탁드립니다.

itchat 기반의 WeChat 그룹 메시지 동기화 로봇에 대한 더 많은 Python 기반 기사를 보려면 PHP 중국어 사이트를 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿