pythonライブラリitchat紹介(自動ログイン微信、自動返信メッセージ)


itchat
itchatはオープンソースの微信個人番号インタフェースであり、pythonを使用して微信を呼び出すのはこんなに簡単ではありません.
30行未満のコードを使用すると、すべての情報を処理できる微信ロボットを完成することができます.
もちろん、このapiの使用はロボットだけでなく、より多くの機能が発見されるのを待っています.例えば、これらです.
このインタフェースは公衆番号インタフェースitchatmpと同様の操作方式を共有し,一度に2つのツールを習得する.
今、微信はすでに個人の社交の大部分になって、このプロジェクトがあなたの個人の微信を拡張して、自分の生活を便利にすることを助けることができることを望んでいます.
インストール
このコマンドで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!')

各種メッセージの登録
以下のコードにより、微信は日常の様々な情報を取得し、返信することができるようになった.
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\u2005I received: %s' % (
            msg.actualNickName, msg.text))

itchat.auto_login(True)
itchat.run(True)

コマンドラインQRコード
次のコマンドを使用すると、ログイン時にコマンドラインを使用して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つの検索方法があります.1.自分のユーザー情報のみを取得する2.特定のUserNameのユーザー情報を取得する3.コメント、マイクロ信号、ニックネームのいずれかがnameキー値に等しいユーザーを取得する4.コメント、マイクロ信号、ニックネームがそれぞれ対応するキー値に等しいユーザーを取得する
これらの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(TEXT)
def reply(msg):
    return msg.text

newInstance.run()

終了およびログイン完了後に特定のメソッドを呼び出す
ログイン完了後のメソッドはloginCallbackに値を付ける必要があります.
終了後のメソッドは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:なぜ中国語のファイルはアップロードできないのですか?
A:これはrequestsの符号化の問題によるものです.中国語ファイル転送をサポートする必要がある場合は、fields.py(py 3バージョンはここを参照)ファイルをrequestsパッケージのpackages/urllib 3の下に入れます.
Q:このパッケージで自分のマイクロ信号をコントローラに変えるにはどうすればいいですか?
A:2つの方法があります.自分のUserNameのメッセージを送信、受信します.受信ファイル転送アシスタント(filehelper)のメッセージを送信
Q:どうして私がメッセージを送ったときに一部のメッセージがうまく出なかったのですか?
A:生まれつき自分のアカウントにメッセージを送ることができないアカウントもありますが、filehelperを使うことをお勧めします.
作成者
LittleCoder:Python 2 Python 3のフレームワークとメンテナンス.
tempdban:プロトコル、フレームワーク、日常メンテナンス.
Chyroc:第1バージョンのPython 3フレームワークを完了します.
類似項目
youfou/wxpy:優れたapiパッケージとプラグイン、微信ロボット/優雅な微信個人番号API
Liuwons/wxBot:同様のPythonベースの微信ロボット
zixia/wechaty:Javascript(ES 6)ベースの微信個人アカウントロボットNodeJSフレームワーク/ライブラリ
sjdy 521/Mojo-Weixin:Perl言語で作成された微信クライアントフレームワークは、HTTPプロトコルに基づくapiインタフェースをプラグインで提供し、他の言語で呼び出すことができます.
HanSon/vbot:PHP 7ベースの微信個人番号ロボットは、匿名関数を実現することで様々なカスタム機能を容易に実現できます