Versão em inglês
itchat é uma interface de conta pessoal do WeChat de código aberto. Nunca foi tão fácil ligar para o WeChat usando python.
Com menos de trinta linhas de código, você pode completar um bot WeChat que pode lidar com todas as informações.
Claro, o uso desta API é muito mais do que apenas um robô, e há mais funções esperando para você descobrir, como estas.
Esta interface compartilha um método de operação semelhante com a interface de conta pública itchatmp, e você pode aprender a dominar duas ferramentas ao mesmo tempo.
Hoje em dia, o WeChat se tornou uma grande parte da interação social pessoal. Espero que este projeto possa ajudá-lo a expandir sua conta pessoal do WeChat e facilitar sua vida.
Você pode instalar o itchat com este comando:
pip install itchat
Com o itchat, se você quiser enviar uma mensagem para o assistente de transferência de arquivos, basta fazer o seguinte:
import itchat
itchat . auto_login ()
itchat . send ( 'Hello, filehelper' , toUserName = 'filehelper' )
Se quiser responder a uma mensagem de texto enviada para você mesmo, faça o seguinte:
import itchat
@ itchat . msg_register ( itchat . content . TEXT )
def text_reply ( msg ):
return msg . text
itchat . auto_login ()
itchat . run ()
Alguns aplicativos avançados podem ser vistos no código-fonte e nos aplicativos avançados do robô de código aberto abaixo, ou você também pode ler a documentação.
Este é um pequeno robô de código aberto baseado neste projeto. É melhor ouvir sobre ele do que vê-lo. Se você estiver interessado, pode experimentá-lo.
Como o número de amigos está crescendo muito rápido, a demonstração da função de passar automaticamente na verificação de amigos está temporariamente encerrada.
Ao imprimir o usuário do itchat e os parâmetros da mensagem de cadastro, você pode descobrir que esses valores são todos dicionários.
Mas, na verdade, o itchat construiu cuidadosamente mensagens, usuários, bate-papos em grupo e contas públicas correspondentes.
Todos os seus valores-chave podem ser acessados desta forma:
@ itchat . msg_register ( TEXT )
def _ ( msg ):
# equals to print(msg['FromUserName'])
print ( msg . fromUserName )
O nome do atributo é a primeira letra minúscula do valor da chave.
author = itchat . search_friends ( nickName = 'LittleCoder' )[ 0 ]
author . send ( 'greeting, littlecoder!' )
Através do código a seguir, o WeChat já pode obter e responder diversas informações diárias.
import itchat , time
from itchat . content import *
@ itchat . msg_register ([ TEXT , MAP , CARD , NOTE , SHARING ])
def text_reply ( msg ):
msg . user . send ( '%s: %s' % ( msg . type , msg . text ))
@ itchat . msg_register ([ PICTURE , RECORDING , ATTACHMENT , VIDEO ])
def download_files ( msg ):
msg . download ( msg . fileName )
typeSymbol = {
PICTURE : 'img' ,
VIDEO : 'vid' , }. get ( msg . type , 'fil' )
return '@%s@%s' % ( typeSymbol , msg . fileName )
@ itchat . msg_register ( FRIENDS )
def add_friend ( msg ):
msg . user . verify ()
msg . user . send ( 'Nice to meet you!' )
@ itchat . msg_register ( TEXT , isGroupChat = True )
def text_reply ( msg ):
if msg . isAt :
msg . user . send ( u'@%s u2005 I received: %s' % (
msg . actualNickName , msg . text ))
itchat . auto_login ( True )
itchat . run ( True )
Você pode usar a linha de comando para exibir o código QR ao fazer login com o seguinte comando:
itchat . auto_login ( enableCmdQR = True )
Alguns sistemas podem ter larguras de caracteres diferentes, que podem ser ajustadas atribuindo enableCmdQR a um múltiplo específico:
# 如部分的linux系统,块字符的宽度为一个字符(正常应为两字符),故赋值为2
itchat . auto_login ( enableCmdQR = 2 )
A cor de fundo padrão do console é escura (preto). Se a cor de fundo for clara (branco), enableCmdQR poderá receber um valor negativo:
itchat . auto_login ( enableCmdQR = - 1 )
Faça login através do seguinte comando. Mesmo que o programa esteja fechado, você pode reabri-lo dentro de um determinado período de tempo sem verificar novamente o código.
itchat . auto_login ( hotReload = True )
Use o método search_friends
para procurar usuários. Existem quatro métodos de pesquisa:
UserName
específiconame
Três ou quatro deles podem ser usados juntos. A seguir está um programa de exemplo:
# 获取自己的用户信息,返回自己的属性字典
itchat . search_friends ()
# 获取特定UserName的用户信息
itchat . search_friends ( userName = '@abcdefg1234567' )
# 获取任何一项等于name键值的用户
itchat . search_friends ( name = 'littlecodersh' )
# 获取分别对应相应键值的用户
itchat . search_friends ( wechatAccount = 'littlecodersh' )
# 三、四项功能可以一同使用
itchat . search_friends ( name = 'LittleCoder机器人' , wechatAccount = 'littlecodersh' )
A aquisição e busca de contas oficiais e chats em grupo são descritas com mais detalhes na documentação.
O método de download de anexos do Itchat é armazenado na chave de texto da mensagem.
O nome do arquivo enviado (o nome de arquivo padrão fornecido pela imagem) é armazenado na chave FileName da msg.
O método download aceita um argumento posicional disponível (incluindo o nome do arquivo) e armazena o arquivo de acordo.
@ itchat . msg_register ([ PICTURE , RECORDING , ATTACHMENT , VIDEO ])
def download_files ( msg ):
msg . download ( msg . fileName )
itchat . send ( '@%s@%s' % (
'img' if msg [ 'Type' ] == 'Picture' else 'fil' , msg [ 'FileName' ]),
msg [ 'FromUserName' ])
return '%s received' % msg [ 'Type' ]
Se você não precisar baixá-lo localmente e quiser apenas ler a string binária para processamento adicional, não poderá passar nenhum parâmetro. O método retornará a string binária da imagem.
@ itchat . msg_register ([ PICTURE , RECORDING , ATTACHMENT , VIDEO ])
def download_files ( msg ):
with open ( msg . fileName , 'wb' ) as f :
f . write ( msg . download ())
Use o seguinte comando para concluir várias operações abertas:
import itchat
newInstance = itchat . new_instance ()
newInstance . auto_login ( hotReload = True , statusStorageDir = 'newInstance.pkl' )
@ newInstance . msg_register ( itchat . content . TEXT )
def reply ( msg ):
return msg . text
newInstance . run ()
O método após a conclusão do login precisa ser atribuído em loginCallback
.
O método após exit precisa ser atribuído em exitCallback
.
import time
import itchat
def lc ():
print ( 'finish login' )
def ec ():
print ( 'exit' )
itchat . auto_login ( loginCallback = lc , exitCallback = ec )
time . sleep ( 3 )
itchat . logout ()
Se o valor de loginCallback não for definido, a imagem do código QR será excluída automaticamente e a exibição da linha de comando será limpa.
P: Como posso transformar meu WeChat ID em um controlador por meio deste pacote?
R: Existem duas formas: enviar e receber mensagens do seu próprio UserName; enviar e receber mensagens do assistente de transferência de arquivos (filehelper);
P: Por que algumas mensagens não são enviadas com sucesso quando eu as envio?
R: Algumas contas são inerentemente incapazes de enviar mensagens para suas próprias contas. É recomendado usar filehelper
.
LittleCoder: Arquitetura e manutenção de versões Python2 e Python3.
tempdban: protocolo, arquitetura e manutenção diária.
Chyroc: Concluída a primeira versão da arquitetura Python3.
youfou/wxpy: Excelente pacote de API e plug-ins de suporte, robô WeChat/elegante API de conta pessoal WeChat
liuwons/wxBot: Robô WeChat semelhante baseado em Python
zixia/wechaty: robô de conta pessoal WeChat estrutura/biblioteca NodeJS baseada em Javascript (ES6)
sjdy521/Mojo-Weixin: estrutura de cliente WeChat escrita em linguagem Perl, que pode fornecer uma interface API baseada no protocolo HTTP por meio de plug-ins para outras linguagens chamarem
HanSon/vbot: robô de conta pessoal WeChat baseado em PHP7, que pode facilmente implementar várias funções personalizadas implementando funções anônimas
yaphone/itchat4j: Usando Java para expandir os recursos pessoais do WeChat ID
kanjielu/jeeves: Robô WeChat desenvolvido usando springboot
Se você tiver alguma dúvida ou sugestão, pode discuti-la comigo nesta edição
Ou você também pode se comunicar no gitter:
Claro, você também pode participar de nosso novo grupo de discussão QQ: 549762872, 205872856