রোবট WeChat বার্তা ধাক্কা বাস্তবায়ন স্কিম

লেখক:ভাল, তৈরিঃ 2020-07-24 09:52:33, আপডেটঃ 2023-10-26 20:04:21

img

উইচ্যাট গ্রুপ এমন একটি পাবলিক জায়গা যেখানে সমমনা বন্ধুরা জড়ো হয় এবং পরিমাণগত ট্রেডিং সার্কেলের উইচ্যাট গ্রুপও এর ব্যতিক্রম নয়। সম্প্রতি, অনেক এফএমজেড ব্যবহারকারী জিজ্ঞাসা করেছেন যে তারা কীভাবে উইচ্যাট গ্রুপে বার্তা প্রেরণ করতে পারে। উদাহরণস্বরূপ, তাদের কৌশলটি একটি ট্রেডিং সংকেত প্রেরণ করে তবে তারা লেনদেনটি স্বয়ংক্রিয় করতে চায় না। তারা আশা করে যে রোবট দ্বারা সরবরাহিত সংকেতটি রেফারেন্স হিসাবে উইচ্যাট গ্রুপে প্রেরণ করা যেতে পারে।

এই কারণে, আমি সম্ভবত ওয়েচ্যাট ইন্টারফেসে তাকিয়েছিলাম এবং দেখেছি যে একটি অফিসিয়াল অ্যাকাউন্ট প্রয়োজন, যা বিশেষভাবে সুবিধাজনক নয়। তাই আমি একটি ভিন্ন পদ্ধতি গ্রহণ করার সিদ্ধান্ত নিয়েছি এবং নিম্নলিখিত সমাধানগুলি চেষ্টা করেছি। আমার সীমিত ক্ষমতার কারণে, এই প্রয়োজনীয়তার কেবলমাত্র সবচেয়ে মৌলিক ফাংশনটি সম্পন্ন করা যেতে পারে এবং এটি কেবলমাত্র রেফারেন্সের জন্য।

বাস্তবায়ন পরিকল্পনা

আমি লেখার জন্য গোলং ব্যবহার করার সিদ্ধান্ত নিয়েছে, একটি গোলং লাইব্রেরি ব্যবহার করতে হবে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 গ্রুপে পাঠান।

দুইটি দৃশ্যকল্প নিশ্চিত এবং পরীক্ষা করতে ওয়েচ্যাট উইন্ডোতে এলাকায় ক্লিক করুন। প্রথমটি হ'ল ওয়েচ্যাট গ্রুপের নাম চিত্র সংরক্ষণ করা, যখন চিত্র তুলনা পর্দা লোড করা হয়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!"}

এই পরিকল্পনাটি কেবল শুরু করার জন্য, এবং যদি আপনার আরও ভাল পরিকল্পনা থাকে, আপনি এটি নিয়ে আলোচনা করতে স্বাগত জানাই।


সম্পর্কিত

আরো