首頁 > 後端開發 > Golang > 主體

如何在聊天機器人中實現腳本執行的即時標準輸出擷取?

Patricia Arquette
發布: 2024-11-01 07:50:30
原創
170 人瀏覽過

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

透過即時標準輸出擷取執行指令

為了增強聊天機器人的功能,目標是使其能夠執行腳本並將標準輸出直接串流到聊天中。但是,目前的實作會儲存整個標準輸出,直到腳本結束。為了解決這個問題,我們尋求一種提供即時輸出的解決方案。

目前程式碼利用 runco​​mmand 函數來執行腳本並傳回其標準輸出。要實現即時輸出,必須將執行過程和輸出過程解耦。讓我們修改程式碼來解決這個問題:

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

更新後的重啟函數將 runco​​mmand 函數作為 goroutine 啟動。這允許腳本執行與聊天機器人的互動同時發生。

<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>
登入後複製

修改後的 runco​​mmand 函數現在使用掃描器來連續監視腳本的標準輸出。任何輸出都會立即列印,實現即時標準輸出捕獲。

透過這些更改,聊天機器人可以有效地執行腳本並將其標準輸出輸出即時傳輸到聊天中,從而提供增強的用戶體驗。

以上是如何在聊天機器人中實現腳本執行的即時標準輸出擷取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!