Скрипт Lua — Общение с Raspberry Pi с помощью Telegram. If, elseif, else утверждение ошибочно попадает в else в определенной ситуации

Я расширяю следующий пример для связи с моей Raspberry Pi с помощью Telegram:

http://www.instructables.com/id/Raspberry-remote-control-with-Telegram/

Я использую следующий фрагмент кода:

#!/usr/local/bin/lua
function on_msg_receive (msg)
    if msg.out then
        return
    end
    if (msg.text=='Ping') then
        send_msg (msg.from.print_name, 'pong', ok_cb, false)
    elseif (msg.text=='Photo') then
        os.execute[["scriptToTakePhoto]]
        send_photo (msg.from.print_name, '/pathToPhoto.jpg', ok_cb, false)
        send_msg (msg.from.print_name, 'Here you go!', ok_cb, false)
    elseif (msg.text=='Hello'or msg.text =='Hi') then
        send_msg (msg.from.print_name, 'Hi, how can I help you?', ok_cb, false)
    else
        math.randomseed(os.time())
        randNum = math.random(0,5)
        if randNum == 0 then
            messageText = "Random Text"
        elseif randNum == 1 then
            messageText = "Random Text"
        elseif randNum == 2 then
            messageText = "Random Text"
        elseif randNum == 3 then
            messageText = "Random Text"
        elseif randNum == 4 then
            messageText = "Random Text"
        elseif randNum == 5 then
            messageText = "Random Text"
        end
        send_msg (msg.from.print_name, messageText, ok_cb, false)
    end
end

Я получаю следующий вывод:

Пинг->Понг

Привет->Привет, чем я могу вам помочь?

Здравствуйте->Привет, чем я могу вам помочь?

[Все остальное]->Случайный текст

Фото-> Ну вот! [фото получено] Случайный текст

Поэтому, когда я отправляю какое-либо сообщение в if/ifelse, кроме Photo, последнее еще не достигается. Когда я отправляю «Фото», оно попадает в это поле, а также в последнее. Не могу понять, почему.


person Langleson    schedule 29.02.2016    source источник
comment
Нет необходимости звонить math.randomseed перед math.random. См. stackoverflow.com/a/35455929/107090.   -  person lhf    schedule 29.02.2016
comment
Интересно. Когда я проверил это в базовом примере, который сгенерировал случайное число, а затем распечатал его. Он давал мне одно и то же число каждый раз, когда я вызывал скрипт, пока я не добавил randomseed. Но вы правы, в этом случае я удалил его, и он работает нормально.   -  person Langleson    schedule 29.02.2016
comment
К вашему сведению, эта линия не работает. Может быть, в вашей реальной версии тоже что-то не так? os.execute[["scriptToTakePhoto]]   -  person Adam B    schedule 01.03.2016
comment
Похоже, я случайно удалил закрывающую двойную кавычку, и технически это pathToTakePhoto.sh Синтаксис '[[' был необходим, потому что в моем пути был пробел. Я получил ценный урок о пробелах в путях.   -  person Langleson    schedule 02.03.2016