2017-02-07 10 views
1

電報-CLIの複数の応答メッセージを送信:私が得た場合、私は、上記のスクリプトを実行した私は以下のように修正のluaスクリプトを使用して、電報、CLIに自動返信メッセージを送信する(Luaのスクリプト)

function ok_cb(extra, success, result) 
end 

function wait(seconds) 
    local start = os.time() 
    repeat until os.time() > start + seconds 
end 

function on_msg_receive (msg) 
    if msg.out then 
     return 
    end 
    if (string.find(msg.text, 'Hi there!')) then 
     wait(1) 
     send_msg (msg.from.print_name, 'Hello', ok_cb, false) 
    else 
     --do nothing 
    end 
end 

"Hi there!"というメッセージが表示されたら、スクリプトは1秒待ってから、 "Hello"メッセージで返信します。

返信メッセージを1つだけ設定すると、スクリプトはうまく動作します。しかし、以下のような別の返信メッセージを追加するようにスクリプトを修正したとき、結果は私が期待したものとは異なります。

function ok_cb(extra, success, result) 
end 

function wait(seconds) 
    local start = os.time() 
    repeat until os.time() > start + seconds 
end 

function on_msg_receive (msg) 
    if msg.out then 
     return 
    end 
    if (string.find(msg.text, 'Hi there!')) then 
     wait(1) 
     send_msg (msg.from.print_name, 'Hello', ok_cb, false) 
     wait(3)            --new command 
     send_msg (msg.from.print_name, 'World!', ok_cb, false) --new command 
    else 
     --do nothing 
    end 
end 

変更されたスクリプトから私が期待しているのは、「こんにちは!メッセージは、スクリプトが1秒待ってから、 "Hello"メッセージを送信し、さらに3秒待って、最後に "World!"を送信します。メッセージ。

スクリプトは3秒待ってから「Hello」と「World」の両方を送信します。同時に。

誰かがこれに関する手がかりを持っていますか?事前のおかげで

答えて

0

@wakhaiha

あなただけon_msg_receive機能を編集する必要があります。

function on_msg_receive(msg) 
    if started == 0 then 
     return 
    end 
    if msg.out then 
     return 
    end 

    if msg.text then 
     mark_read(msg.from.print_name, ok_cb, false) 
    end 

    -- Optional: Only allow messages from one number 
    if msg.from.print_name ~= 'Prename_surname' then 
     os.execute('*path_to_your_send_script*' ..msg.from.print_name.." 'Not allowed'") 
     return 
    end 
    if (string.lower(msg.text) == 'uptime') then 
     local handle = io.popen("sudo python *path_to_your_python* uptime") 
     local res = handle:read("*a") 
     handle:close() 
     os.execute("*path_to_your_send_script* "..msg.from.print_name.." '"..res.."' ") 
     return 
    end 

あなたは

namespace.lua:149: Typelib file for namespace 'Notify' (any version) not found 
のようなものを言って、Luaのスクリプトからのエラーメッセージを取得している場合

Notification code{{{内のすべてのものをコメントアウトまたは削除する必要があります。

あなたはちょうどコンテンツとしてユーザーが「こんにちは」とメッセージを送ったときに「こんにちは」とお答えになりました簡単です(LuaのファイルやPythonのファイルを編集し、上記のコマンドを拡張することができ

if (string.lower(msg.text) == 'hi there') then 
    os.execute('*path_to_your_send_script*' ..msg.from.print_name.." 'Hey, what's up?'") 
    return 
end 

)。 ソース:source

また、メッセージを受信するためには、連絡先をadd_contactで追加したことを確認してください。

screen -dmS TelegramCLI ~/tg/bin/telegram-cli -s ~/tg/test.lua 

は、前の画面パッケージをインストールします。 あなたは次のように入力して電報-CLIのLuaスクリプトとを開始することができます。

関連する問題