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

Patricia Arquette
Lepaskan: 2024-11-01 07:50:30
asal
170 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!