वीचैट समूह एक सार्वजनिक स्थान है जहां समान विचारधारा वाले दोस्त इकट्ठा होते हैं, और मात्रात्मक ट्रेडिंग सर्कल में वीचैट समूह कोई अपवाद नहीं है। हाल ही में, कई एफएमजेड उपयोगकर्ता पूछते हैं कि वे वीचैट समूह में संदेश कैसे भेज सकते हैं। उदाहरण के लिए, उनकी रणनीति एक ट्रेडिंग सिग्नल भेजती है, लेकिन वे लेनदेन को स्वचालित नहीं करना चाहते हैं। वे उम्मीद करते हैं कि रोबोट द्वारा प्रदान किया गया संकेत एक संदर्भ के रूप में वीचैट समूह को भेजा जा सकता है।
इस कारण से, मैंने शायद वीचैट इंटरफ़ेस को देखा और पाया कि एक आधिकारिक खाते की आवश्यकता है, जो विशेष रूप से सुविधाजनक नहीं है। इसलिए मैंने एक अलग दृष्टिकोण लेने का फैसला किया और निम्नलिखित समाधानों की कोशिश की। मेरी सीमित क्षमता के कारण, इस आवश्यकता का केवल सबसे बुनियादी कार्य पूरा किया जा सकता है, और यह केवल संदर्भ के लिए है।
मैं लिखने के लिए गोलांग का उपयोग करने का फैसला किया, एक गोलांग पुस्तकालय का उपयोग करने की जरूरत हैgithub.com/go-vgo/robotgo
, मूल रूप से समाधान की आवश्यकताओं को इस पुस्तकालय द्वारा प्राप्त किया जाता है।
सबसे पहले हम अपने कंप्यूटर पर एक सेवा कार्यक्रम चलाते हैं, कोड इस प्रकार हैः
package main
import (
"fmt"
"time"
"github.com/go-vgo/robotgo"
"net/http"
"io/ioutil"
)
func postMsg (msg string) {
fmt.Println("Start the mission!")
// process ids
processIds := "WeChat"
fpid, err3 := robotgo.FindIds(processIds)
robotgo.ActivePID(fpid[0])
time.Sleep(time.Millisecond * 2000)
if err3 == nil {
fmt.Println(fmt.Sprintf("find %s", processIds), "ids:", fpid)
/* Use image recognition method to get the coordinates of the click area
arrPicFileName := []string{"pic1.png", "pic2.png", "pic3.png"}
for _, name := range arrPicFileName {
picPath := fmt.Sprintf("/xxx/xxx/Desktop/xxx/%s", name)
fmt.Println("picPath:", fmt.Sprintf("/xxx/xxx/Desktop/xxx/%s", name))
fx, fy := robotgo.FindPic(picPath)
fmt.Println("move to :", fx+10, fy+10)
robotgo.MoveMouseSmooth(fx+10, fy+10)
time.Sleep(time.Millisecond * 2000)
robotgo.MouseClick("left", false)
robotgo.TypeStr(msg)
time.Sleep(time.Second)
robotgo.KeyTap("enter")
time.Sleep(time.Second)
}
*/
// /* Fixed area coordinates, the coordinates of the upper right corner of the screen are 0,0
arrArea := []map[string]int{
map[string]int{
"x" : 190,
"y" : 200,
},
map[string]int{
"x" : 190,
"y" : 200+70,
},
map[string]int{
"x" : 190,
"y" : 200+70+70,
},
}
for _, area := range arrArea {
robotgo.MoveMouseSmooth(area["x"], area["y"])
time.Sleep(time.Millisecond * 2000)
robotgo.MouseClick("left", false)
robotgo.TypeStr(msg)
time.Sleep(time.Second)
robotgo.KeyTap("enter")
time.Sleep(time.Second)
}
// */
}
fmt.Println("The mission is complete!")
}
func Handle (w http.ResponseWriter, r *http.Request) {
b, err := ioutil.ReadAll(r.Body)
if err != nil {
panic(err)
}
fmt.Println("req body:", string(b))
postMsg(string(b))
w.Write([]byte("finished!"))
}
func main () {
fmt.Println("listen http://127.0.0.1:9090")
http.HandleFunc("/data", Handle)
http.ListenAndServe("127.0.0.1:9090", nil)
}
इस सेवा कार्यक्रम का कार्य अनुरोध का इंतजार करना है। अनुरोध प्राप्त करने के बाद, कॉल करेंpostMsg
WeChat सॉफ़्टवेयर विंडो खोलने के लिए अनुकरणीय माउस आंदोलन क्लिक और इनपुट संचालन की एक श्रृंखला करने के लिए फ़ंक्शन, पूर्वनिर्धारित क्षेत्र पर क्लिक करें, अनुरोध में जानकारी दर्ज करें, और WeChat समूह में भेजें।
पुष्टि करने और दो परिदृश्यों का परीक्षण करने के लिए वीचैट विंडो पर क्षेत्र पर क्लिक करें। पहला वीचैट समूह का नाम छवि सहेजने के लिए है, छवि तुलना स्क्रीन लोड जबpostMsg
इस विधि की पहचान दर बहुत अधिक नहीं है, और कभी कभी यह पहचाना नहीं जा सकता है। तो दूसरे समाधान का उपयोग किया जाता है, जो अधिक विश्वसनीय है। यह क्लिक क्षेत्र को ठीक करने और क्लिक क्षेत्र के निर्देशांक के सेट की योजना बनाने के लिए हैःarrArea
उपरोक्त कोड में चर. निर्देशांक कहाँ है? उत्तरः स्क्रीनशॉट के पिक्सेल निर्देशांक को देखो और T_T मापें.
एफएमजेड प्लेटफार्म रणनीति परीक्षण कार्यक्रमः
function main() {
var msg = {
"type" : "msg",
"robotId" : _G(),
"msg" : "hello fmz!"
}
var n = 0
while(true) {
if(n == 20) {
var ret = HttpQuery("http://127.0.0.1:9090/data", JSON.stringify(msg))
Log("Exit")
break
}
n++
LogStatus(_D(), "n:", n)
Sleep(1000)
}
}
यह रणनीति एक लेनदेन संकेत भेजने का अनुकरण करती है (जब n==20, यह मानते हुए कि लेनदेन संकेत इस समय ट्रिगर किया जाता है, और इसे व्यापार करने के लिए संभव माना जाता है), यह स्थानीय सेवा को अनुरोध भेजता हैhttp://127.0.0.1:9090/data
.
एफएमजेड रोबोट ऑपरेशन (डॉकर स्थानीय रूप से भी चलता है):
वीचैट विंडो
पुश संदेश हैः
{"type":"msg","robotId":130350,"msg":"hello fmz!"}
यह योजना केवल शुरुआत के लिए है, और यदि आपके पास बेहतर योजना है, तो आप इस पर चर्चा करने के लिए स्वागत करते हैं।