Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mencapai Tangkapan Stdout Masa Nyata untuk Pelaksanaan Skrip dalam Bot Sembang?

Bagaimana untuk Mencapai Tangkapan Stdout Masa Nyata untuk Pelaksanaan Skrip dalam Bot Sembang?

Patricia Arquette
Patricia Arquetteasal
2024-11-01 07:50:30264semak imbas

How to Achieve Real-Time Stdout Capture for Script Execution in a Chat Bot?

Melaksanakan Perintah dengan Tangkapan Stdout Masa Nyata

Untuk meningkatkan kefungsian bot sembang, matlamatnya adalah untuk membolehkannya laksanakan skrip dan strim output stdout terus ke dalam sembang. Walau bagaimanapun, pelaksanaan semasa menyimpan keseluruhan stdout sehingga akhir skrip. Untuk menyelesaikan masalah ini, kami mencari penyelesaian yang menyediakan output masa nyata.

Kod semasa menggunakan fungsi runcommand untuk melaksanakan skrip dan mengembalikan Stdout mereka. Untuk melaksanakan output masa nyata, kita mesti memisahkan proses pelaksanaan dan output. Mari kita ubah suai kod untuk menangani isu ini:

<code class="go">func reboot(command *bot.Cmd) (string, error) {
    n := command.Args[0]
    go runcommand(n)
    return "", nil
}</code>

Fungsi but semula yang dikemas kini memulakan fungsi runcommand sebagai goroutine. Ini membolehkan pelaksanaan skrip berlaku serentak dengan interaksi bot sembang.

<code class="go">func runcommand(server string) {
    cmd := exec.Command("/bin/bash", "-c", "python test.py %s", server)
    cmdReader, err := cmd.StdoutPipe()
    if err != nil {
        fmt.Fprintln(os.Stderr, "Error creating StdoutPipe for Cmd", err)
        return
    }

    scanner := bufio.NewScanner(cmdReader)
    for scanner.Scan() {
        fmt.Printf("\t > %s\n", scanner.Text())
    }

    err = cmd.Run()
    if err != nil {
        fmt.Fprintln(os.Stderr, "Error starting Cmd", err)
        return
    }
}</code>

Fungsi arahan jalan yang diubah suai kini menggunakan pengimbas untuk memantau Stdout skrip secara berterusan. Sebarang output dicetak serta-merta, mencapai tangkapan stdout masa nyata.

Dengan perubahan ini, bot sembang boleh melaksanakan skrip dengan berkesan dan menstrim output stdout mereka ke dalam sembang dalam masa nyata, memberikan pengalaman pengguna yang dipertingkatkan.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Tangkapan Stdout Masa Nyata untuk Pelaksanaan Skrip dalam Bot Sembang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn