これは、AppleScript と Mac 版 WeChat クライアントを使用して作成された WeChat ロボットの簡易バージョンです。このロボットは、消費、食事、運動、その他のデータを記録し、WeChat パブリック アカウントの記事の内容を要約するのに役立つ ChatBot を作成したいという事実から生まれました。現在、個人の WeChat を使用して ChatBot を実装するソリューションの主流は Wechaty ですが、Wechaty で使用される Puppet の中で、無料の Web バージョンや UOS バージョンは十分に安定していません (つまり、不可解にオフラインにされることがよくあるということです)。トークンを購入するには追加のゴールドコインを費やす必要があります。そこで、いくつかの小さな試みを経て、速度が遅く、機能はほとんどありませんが、十分に安定しているこの WeChat ロボットを実装しました ( Mac デバイスしか持っていないため、Mac バージョンの WeChat クライアントを選択しました)。
このロボットは主に AppleScript を使用して完成され、一部の Python コードで補完されています。AppleScript に付属のマウス クリック操作は WeChat クライアントでは使用できないため、追加の Python ライブラリを使用してクリック操作を実装します。したがって、まず Python3 インタープリターを用意し、PyUserInput をインストールする必要があります。
pip3 install PyUserInput
もちろん、マウス クリックをシミュレートするための他のソリューションがある場合は、独自のソリューションを使用することもできます (この README を書いたときに初めて PyUserInput が非推奨であることを知りました)。
次に、 wemac .applescript
の一部の設定を次のように変更する必要があります。
mouseclick.py
ます。上記の変数を設定した後、スクリプトを一度実行してみてください。実行する前に、Mac バージョンの WeChat にログインしていることを確認してください。スクリプトを実行すると、AppleScript が自動的に対象のチャットを見つけ、チャット ウィンドウをクリックして、最新のチャット レコードの削除を開始することがわかります。当時の考慮事項は、この AppleScript によってチャット レコードが削除されるということでした。各メッセージへの返信を記録する場所がない場合は、メッセージを削除することでのみ返信を回避できます。メッセージがロボットにある場合は、AppleScript の実行が終了します。その1 回の AppleScript 実行のみメッセージが処理されます。
では、ロボットを実行し続けるにはどうすればよいでしょうか? 実現可能な解決策は、 run.sh
を記述し、その中に無限ループを記述してwemac .applescript
継続的に実行することです (実際、私はこれを自分で実行しています)。
大規模な言語モデルに接続するなど、返信コンテンツをカスタマイズしたい場合は、 wemac .applescript
自体の機能は限られているため、シェルを使用して Python などの他の言語に接続すると、次の方法で Python スクリプトを呼び出して応答コンテンツをカスタマイズできます。
set replyMessage to do shell script "python3 your_script.py " & (my escaped(question))
実行されたシェルの標準出力 (stdout) はreplyMessage
に割り当てられ、ロボットによって応答として送信されます。
シェル コマンドを結合する場合、 escaped
関数を使用してパラメーターをエスケープし、インジェクション攻撃を回避できます。
この時点では、単純なチャットボットが実行中、要素を見つけることができないエラーが発生する場合がありますが、通常はそれらを無視して AppleScript を再実行します。
run.sh
に同時に追加して、さまざまなチャットを処理できますが、これにより実行速度が遅くなります。ただし、利点は、十分に安定しており、ログインしている限り基本的に永久に実行できることです。理論的には、AppleScript を使用してクリックをシミュレートしても、WeChat によって検出されず、アカウントの禁止につながることはありません。
使用される Mac WeChat クライアントのバージョンはVersion. 3.8.6 (28078)
です。