وسائل لوڈ ہو رہے ہیں... لوڈنگ...

روبوٹ وی چیٹ پیغامات کو آگے بڑھانے کے عمل درآمد کی اسکیم

مصنف:نیکی, تخلیق: 2020-07-24 09:52:33, تازہ کاری: 2023-10-26 20:04:21

img

وی چیٹ گروپ ایک عوامی جگہ ہے جہاں ہم خیال دوست جمع ہوتے ہیں ، اور مقداری تجارتی دائرے میں وی چیٹ گروپ کوئی استثنا نہیں ہے۔ حال ہی میں ، بہت سارے ایف ایم زیڈ صارفین پوچھتے ہیں کہ وہ وی چیٹ گروپ میں پیغامات کیسے بھیج سکتے ہیں۔ مثال کے طور پر ، ان کی حکمت عملی تجارتی سگنل بھیجتی ہے ، لیکن وہ لین دین کو خودکار نہیں کرنا چاہتے ہیں۔ وہ امید کرتے ہیں کہ روبوٹ کے ذریعہ فراہم کردہ سگنل کو حوالہ کے طور پر وی چیٹ گروپ میں بھیجا جاسکتا ہے۔

اس وجہ سے ، میں نے شاید وی چیٹ انٹرفیس کو دیکھا اور پایا کہ ایک سرکاری اکاؤنٹ کی ضرورت ہے ، جو خاص طور پر آسان نہیں ہے۔ لہذا میں نے ایک مختلف نقطہ نظر اختیار کرنے کا فیصلہ کیا اور مندرجہ ذیل حل آزمائے۔ میری محدود صلاحیت کی وجہ سے ، اس ضرورت کا صرف بنیادی کام مکمل کیا جاسکتا ہے ، اور یہ صرف حوالہ کے لئے ہے۔

نفاذ کا منصوبہ

میں نے لکھنے کے لئے Golang استعمال کرنے کا فیصلہ کیا، ایک Golang لائبریری استعمال کرنے کی ضرورت ہے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ہم چیٹ سافٹ ویئر ونڈو کو کھولنے کے لئے ماؤس کی نقل و حرکت کے نقلی کلکس اور ان پٹ آپریشنز کا ایک سلسلہ انجام دینے کے لئے فنکشن ، پہلے سے طے شدہ علاقے پر کلک کریں ، درخواست میں معلومات درج کریں ، اور بھیجیں ہم چیٹ گروپ میں

تصدیق اور دو منظرناموں کی جانچ کرنے کے لئے وی چیٹ ونڈو پر علاقے پر کلک کریں۔ پہلا وی چیٹ گروپ کا نام کی تصویر کو محفوظ کرنا ہے ، جب تصویر کا موازنہ اسکرین لوڈ کریں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.

ٹیسٹ

ایف ایم زیڈ روبوٹ آپریشن (ڈاکر بھی مقامی طور پر چلتا ہے):

img

img

وی چیٹ ونڈو

img

دھکا پیغام ہے:

{"type":"msg","robotId":130350,"msg":"hello fmz!"}

یہ منصوبہ صرف آغاز ہے، اور اگر آپ کے پاس بہتر منصوبہ ہے، تو آپ اس پر بات کرنے کے لئے خوش آمدید ہیں.


متعلقہ

مزید