Ini adalah versi sederhana robot WeChat yang dibuat menggunakan AppleScript dan klien WeChat versi Mac. Robot ini berawal dari keinginan saya membuat ChatBot untuk membantu saya mencatat konsumsi, pola makan, olah raga dan data lainnya, serta membantu saya merangkum isi artikel akun publik WeChat. Saat ini, solusi utama untuk mengimplementasikan ChatBot menggunakan WeChat pribadi adalah Wechaty. Namun, di antara boneka yang digunakan oleh Wechaty, versi web gratis atau versi UOS tidak cukup stabil (artinya sering kali offline tanpa alasan). dan kaya fitur. Anda perlu mengeluarkan koin emas tambahan untuk membeli token. Jadi setelah beberapa upaya kecil, saya mengimplementasikan robot WeChat ini yang lambat, memiliki sedikit fungsi, tetapi cukup stabil ( Saya memilih klien WeChat versi Mac karena saya hanya memiliki perangkat Mac ).
Robot ini sebagian besar diselesaikan menggunakan AppleScript, dilengkapi dengan beberapa kode Python. Python digunakan karena operasi klik mouse yang disertakan dengan AppleScript tidak dapat digunakan pada klien WeChat, sehingga perpustakaan Python tambahan digunakan untuk mengimplementasikan operasi klik. Oleh karena itu, Anda harus terlebih dahulu memiliki juru bahasa Python3 dan menginstal PyUserInput:
pip3 install PyUserInput
Tentu saja, jika Anda memiliki solusi lain untuk mensimulasikan klik mouse, Anda juga dapat menggunakan solusi Anda sendiri (saya baru mengetahui bahwa PyUserInput sudah tidak digunakan lagi ketika saya menulis README ini).
Selanjutnya, Anda perlu mengubah beberapa konfigurasi di wemac .applescript
sebagai berikut:
mouseclick.py
ditempatkan;Setelah mengatur variabel di atas, Anda dapat mencoba menjalankan skrip satu kali Sebelum menjalankan, pastikan Anda masuk ke WeChat versi Mac . Jalankan skrip dan Anda akan menemukan bahwa AppleScript akan secara otomatis menemukan obrolan target, klik pada jendela obrolan, dan mulai menghapus catatan obrolan terbaru.Ya , AppleScript ini akan menghapus catatan obrolan tidak ada tempat untuk mencatat setiap pesan yang telah dibalas, Anda hanya dapat menghindari balasan berulang dengan menghapus pesan; setelah menghapus pesan, jika pesan ada di robot, maka eksekusi AppleScript selesai bahwa satu eksekusi AppleScript saja Sebuah pesan akan diproses .
Jadi bagaimana cara agar robot tetap berjalan? Solusi yang layak adalah dengan menulis run.sh
dan menulis loop tak terbatas di dalamnya untuk terus mengeksekusi wemac .applescript
(sebenarnya, saya melakukannya sendiri).
Jika Anda ingin menyesuaikan konten balasan, seperti menyambung ke model bahasa besar, Anda dapat menambahkan logika balasan Anda sendiri di komentar "Logika Pemrosesan Pesan" di baris 270 wemac .applescript
Karena AppleScript sendiri memiliki kemampuan terbatas, Anda bisa menggunakan shell untuk menghubungkan Bahasa lain, seperti Python, Anda dapat memanggil skrip Python untuk menyesuaikan konten balasan dengan cara berikut:
set replyMessage to do shell script "python3 your_script.py " & (my escaped(question))
Output standar (stdout) dari shell yang dieksekusi akan ditetapkan ke replyMessage
, dan kemudian dikirim oleh robot sebagai balasan.
Saat menyambungkan perintah shell, Anda dapat menggunakan fungsi escaped
untuk keluar dari parameter guna menghindari serangan injeksi.
Pada titik ini, chatbot sederhana sedang berjalan. Selama proses tersebut, Anda mungkin mengalami beberapa kesalahan yang tidak dapat menemukan elemen, tetapi secara umum, abaikan saja dan jalankan kembali AppleScript.
run.sh
secara bersamaan untuk menangani obrolan yang berbeda, tetapi ini akan memperlambat kecepatan berjalan;Namun kelebihannya adalah cukup stabil dan pada dasarnya dapat berjalan selamanya selama Anda masuk. Secara teori, penggunaan AppleScript untuk mensimulasikan klik tidak akan terdeteksi oleh WeChat dan menyebabkan pemblokiran akun.
Versi klien Mac WeChat yang digunakan adalah Version. 3.8.6 (28078)
.