英語版
itchat は、オープンソースの WeChat 個人アカウント インターフェイスです。Python を使用して WeChat を呼び出すのがこれまでになく簡単です。
30 行未満のコードで、すべての情報を処理できる WeChat ボットを完成させることができます。
もちろん、この API の使用は単なるロボットをはるかに超えており、次のような機能がさらにたくさんあります。
このインターフェイスは、パブリック アカウント インターフェイス itchatmp と同様の操作方法を共有しており、一度に 2 つのツールを習得することができます。
現在、WeChat は個人的な社会的交流の大きな部分を占めていますが、このプロジェクトがあなたの個人 WeChat アカウントを拡大し、あなたの生活を円滑にするのに役立つことを願っています。
次のコマンドを使用して itchat をインストールできます。
pip install itchat
itchat を使用して、ファイル転送アシスタントにメッセージを送信したい場合は、次のようにするだけです。
import itchat
itchat . auto_login ()
itchat . send ( 'Hello, filehelper' , toUserName = 'filehelper' )
自分に送信されたテキスト メッセージに返信したい場合は、次のようにします。
import itchat
@ itchat . msg_register ( itchat . content . TEXT )
def text_reply ( msg ):
return msg . text
itchat . auto_login ()
itchat . run ()
一部の高度なアプリケーションは、以下のオープンソース ロボットのソース コードと高度なアプリケーションで確認できます。また、ドキュメントを読むこともできます。
これは、このプロジェクトをベースにしたオープンソースの小型ロボットです。興味がある方は、ぜひ試してみてください。
友達数が急激に増加しているため、友達認証を自動で通過する機能のデモを一時的に終了させていただきます。
itchat のユーザーと登録メッセージのパラメーターを出力すると、これらの値がすべて辞書であることがわかります。
しかし実際には、itchat は対応するメッセージ、ユーザー、グループ チャット、公開アカウントを注意深く構築しています。
そのすべてのキー値には次の方法でアクセスできます。
@ itchat . msg_register ( TEXT )
def _ ( msg ):
# equals to print(msg['FromUserName'])
print ( msg . fromUserName )
属性名は、キー値の最初の小文字です。
author = itchat . search_friends ( nickName = 'LittleCoder' )[ 0 ]
author . send ( 'greeting, littlecoder!' )
次のコードを通じて、WeChat はすでにさまざまな日常情報を取得して返信することができます。
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 )
コマンドラインを使用して、次のコマンドでログインするときに QR コードを表示できます。
itchat . auto_login ( enableCmdQR = True )
一部のシステムでは文字幅が異なる場合がありますが、enableCmdQR を特定の倍数に割り当てることで調整できます。
# 如部分的linux系统,块字符的宽度为一个字符(正常应为两字符),故赋值为2
itchat . auto_login ( enableCmdQR = 2 )
デフォルトのコンソールの背景色は暗い (黒) です。背景色が明るい (白) 場合は、enableCmdQR に負の値を割り当てることができます。
itchat . auto_login ( enableCmdQR = - 1 )
次のコマンドを使用してログインすると、プログラムが閉じられている場合でも、コードを再スキャンせずに、一定時間内に再度プログラムを開くことができます。
itchat . auto_login ( hotReload = True )
search_friends
メソッドを使用してユーザーを検索します。 4 つの検索方法があります。
UserName
のユーザー情報を取得するname
キー値と等しいユーザーを取得します3 つまたは 4 つを組み合わせて使用できます。サンプル プログラムは次のとおりです。
# 获取自己的用户信息,返回自己的属性字典
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' )
公式アカウントとグループチャットの取得と検索については、ドキュメントで詳しく説明されています。
Itchat の添付ファイルのダウンロード メソッドは、msg の Text キーに格納されます。
送信されたファイルのファイル名 (画像で指定されるデフォルトのファイル名) は、msg の FileName キーに格納されます。
ダウンロード メソッドは、使用可能な位置引数 (ファイル名を含む) を受け入れ、それに応じてファイルを保存します。
@ 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' ]
ローカルにダウンロードする必要がなく、さらに処理するためにバイナリ文字列を読み取るだけの場合、メソッドはパラメータを渡さずにイメージのバイナリ文字列を返します。
@ itchat . msg_register ([ PICTURE , RECORDING , ATTACHMENT , VIDEO ])
def download_files ( msg ):
with open ( msg . fileName , 'wb' ) as f :
f . write ( msg . download ())
複数のオープン操作を完了するには、次のコマンドを使用します。
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 ()
loginCallback
にはログイン完了後のメソッドを割り当てる必要があります。
exit後のメソッドは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 ()
loginCallback の値が設定されていない場合、QR コード画像は自動的に削除され、コマンド ラインの表示が消去されます。
Q: このパッケージを通じて自分の WeChat ID をコントローラーにするにはどうすればよいですか?
A: 自分の UserName のメッセージを送受信する方法と、ファイル転送アシスタント (filehelper) のメッセージを送受信する方法があります。
Q: メッセージを送信すると、一部のメッセージが正常に送信されないのはなぜですか?
A: 一部のアカウントは本質的に自分のアカウントにメッセージを送信できないため、代わりにfilehelper
使用することをお勧めします。
LittleCoder: Python2 および Python3 バージョンの設計と保守。
tempdban: プロトコル、アーキテクチャ、日常のメンテナンス。
Chyroc: Python3 アーキテクチャの最初のバージョンが完成しました。
youfou/wxpy: 優れた API パッケージ化とプラグインのサポート、WeChat ロボット/エレガントな WeChat 個人アカウント API
liuwons/wxBot: 同様の Python ベースの WeChat ロボット
zixia/wechaty: Javascript ベースの WeChat 個人アカウント ロボット NodeJS フレームワーク/ライブラリ (ES6)
sjdy521/Mojo-Weixin: Perl 言語で書かれた WeChat クライアント フレームワーク。他の言語を呼び出すためのプラグインを介して HTTP プロトコルに基づく API インターフェイスを提供できます。
HanSon/vbot: PHP7ベースのWeChat個人アカウントロボット。匿名機能を実装することで、さまざまなカスタマイズ機能を簡単に実装できます。
yaphone/itchat4j: Java を使用して個人の WeChat ID 機能を拡張する
Kanjielu/jeeves: springboot を使用して開発された WeChat ロボット
ご質問やご提案がございましたら、この号で私と話し合ってください。
または、gitter でコミュニケーションすることもできます。
もちろん、新しい QQ グループ ディスカッションに参加することもできます: 549762872、205872856