นี่คือหุ่นยนต์ WeChat เวอร์ชันเรียบง่ายที่สร้างขึ้นโดยใช้ไคลเอ็นต์ WeChat เวอร์ชัน AppleScript และ Mac หุ่นยนต์ตัวนี้มีต้นกำเนิดมาจากความจริงที่ว่าฉันต้องการสร้าง ChatBot เพื่อช่วยฉันบันทึกการบริโภค อาหาร การออกกำลังกาย และข้อมูลอื่น ๆ และช่วยฉันสรุปเนื้อหาของบทความบัญชีสาธารณะ WeChat ปัจจุบัน โซลูชันหลักสำหรับการนำ ChatBot ไปใช้โดยใช้ WeChat ส่วนตัวคือ Wechaty อย่างไรก็ตาม ในบรรดาหุ่นเชิดที่ใช้โดย Wechaty นั้น เวอร์ชันเว็บฟรีหรือเวอร์ชัน UOS นั้นไม่เสถียรเพียงพอ (หมายความว่ามักจะถูกเตะแบบออฟไลน์อย่างอธิบายไม่ได้) และมีคุณสมบัติหลากหลาย คุณต้องใช้เหรียญทองเพิ่มเติมเพื่อซื้อโทเค็น หลังจากพยายามเพียงเล็กน้อย ฉันจึงใช้หุ่นยนต์ WeChat ซึ่งทำงานช้า มีฟังก์ชันน้อย แต่มีความเสถียรเพียงพอ ( ฉันเลือกไคลเอ็นต์ WeChat เวอร์ชัน Mac เพราะฉันมีเพียงอุปกรณ์ Mac เท่านั้น )
โรบ็อตนี้ส่วนใหญ่แล้วเสร็จโดยใช้ AppleScript เสริมด้วยโค้ด Python บางตัว มีการใช้ Python เนื่องจากการคลิกเมาส์ที่มาพร้อมกับ AppleScript ไม่สามารถใช้บนไคลเอนต์ WeChat ได้ ดังนั้นจึงมีการใช้ไลบรารี Python เพิ่มเติมเพื่อดำเนินการคลิก ดังนั้นก่อนอื่นคุณต้องมีล่าม Python3 และติดตั้ง PyUserInput:
pip3 install PyUserInput
แน่นอน หากคุณมีวิธีแก้ปัญหาอื่นสำหรับการจำลองการคลิกเมาส์ คุณสามารถใช้โซลูชันของคุณเองได้ (ฉันเพิ่งค้นพบว่า PyUserInput เลิกใช้แล้วเมื่อฉันเขียน README นี้)
ถัดไป คุณต้องแก้ไขการกำหนดค่าบางอย่างใน wemac .applescript
ดังนี้:
mouseclick.py
ด้วยหลังจากตั้งค่าตัวแปรข้างต้นแล้ว คุณสามารถลองเรียกใช้สคริปต์ได้หนึ่งครั้ง ก่อนที่จะเรียกใช้ โปรดตรวจสอบให้แน่ใจว่าคุณได้ลงชื่อเข้าใช้ WeChat เวอร์ชัน Mac ดำเนินการสคริปต์แล้วคุณจะพบว่า AppleScript จะค้นหาแชทเป้าหมายโดยอัตโนมัติ คลิกที่หน้าต่างแชท และ เริ่มลบบันทึกการสนทนาล่าสุด ใช่ AppleScript นี้จะลบบันทึกการสนทนาในขณะนั้น ไม่มีที่สำหรับบันทึกแต่ละข้อความ คุณสามารถหลีกเลี่ยงการตอบกลับซ้ำได้โดยการลบข้อความ หลังจากลบข้อความแล้ว หากข้อความอยู่ที่หุ่นยนต์ มันจะตอบกลับ จากนั้นการดำเนินการของ AppleScript จะสิ้นสุดลง การดำเนินการ AppleScript เพียงครั้งเดียวเท่านั้น ข้อความจะถูกประมวลผล
แล้วจะทำให้หุ่นยนต์ทำงานต่อไปได้อย่างไร วิธีแก้ปัญหาที่เป็นไปได้คือเขียน run.sh
และเขียนลูปที่ไม่สิ้นสุดในนั้นเพื่อรัน wemac .applescript
อย่างต่อเนื่อง (อันที่จริง ฉันทำเอง)
หากคุณต้องการปรับแต่งเนื้อหาการตอบกลับ เช่น การเชื่อมต่อกับโมเดลภาษาขนาดใหญ่ คุณสามารถเพิ่มตรรกะการตอบกลับของคุณเองได้ในความคิดเห็น "Message Processing Logic" ที่บรรทัด 270 ของ wemac .applescript
เนื่องจาก AppleScript มีความสามารถที่จำกัด คุณจึงสามารถทำได้ ใช้เชลล์เพื่อเชื่อมต่อภาษาอื่น เช่น Python คุณสามารถเรียกใช้สคริปต์ Python เพื่อปรับแต่งเนื้อหาตอบกลับได้ด้วยวิธีต่อไปนี้:
set replyMessage to do shell script "python3 your_script.py " & (my escaped(question))
เอาต์พุตมาตรฐาน (stdout) ของเชลล์ที่ดำเนินการจะถูกกำหนดให้กับ replyMessage
จากนั้นหุ่นยนต์จะส่งเป็นการตอบกลับ
เมื่อประกบคำสั่งเชลล์ คุณสามารถใช้ฟังก์ชัน escaped
เพื่อ Escape พารามิเตอร์เพื่อหลีกเลี่ยงการโจมตีแบบฉีด
ณ จุดนี้ chatbot แบบธรรมดากำลังทำงานอยู่ ในระหว่างกระบวนการ คุณอาจพบข้อผิดพลาดบางอย่างที่ไม่สามารถระบุตำแหน่งได้ แต่โดยทั่วไปแล้ว ให้เพิกเฉยต่อสิ่งเหล่านั้นและเรียกใช้ AppleScript อีกครั้ง
run.sh
พร้อมกันเพื่อจัดการแชทต่างๆ ได้ แต่จะทำให้ความเร็วในการทำงานช้าลงแต่ข้อดีคือมีความเสถียรเพียงพอและสามารถทำงานได้ตลอดไปตราบใดที่คุณเข้าสู่ระบบ ในทางทฤษฎีแล้ว การใช้ AppleScript เพื่อจำลองการคลิกจะไม่ถูกตรวจจับโดย WeChat และนำไปสู่การแบนบัญชี
เวอร์ชันไคลเอนต์ Mac WeChat ที่ใช้คือ Version. 3.8.6 (28078)