Linux 在LUA中使用传递的参数执行脚本以控制Raspberry PI 3

Linux 在LUA中使用传递的参数执行脚本以控制Raspberry PI 3,linux,lua,telegram,Linux,Lua,Telegram,我试图使用TelegramCLI“控制”我的虚拟树莓PI 3。 我用智能手机发送电报CLI,并通过以下方式发送“Ping”以接收手机上的“Pong”: 我创建了以下脚本: 所以我可以在我的树莓PI上播放视频(直接从CMD调用时可以使用) 我的想法是以PLAY-youtube-link.com的格式向Raspberry PI发送一条消息,用LUA捕捉该消息并调用脚本来播放youtube视频 播放youtube视频的脚本保存为“ytplayvlc”: 动作脚本保存在子文件夹/tg中,名为“actio

我试图使用TelegramCLI“控制”我的虚拟树莓PI 3。 我用智能手机发送电报CLI,并通过以下方式发送“Ping”以接收手机上的“Pong”:

我创建了以下脚本: 所以我可以在我的树莓PI上播放视频(直接从CMD调用时可以使用)

我的想法是以PLAY-youtube-link.com的格式向Raspberry PI发送一条消息,用LUA捕捉该消息并调用脚本来播放youtube视频

播放youtube视频的脚本保存为“ytplayvlc”:

动作脚本保存在子文件夹/tg中,名为“actions.lua”:

我使用以下命令启动telegram CLI:

bin/telegram-cli -k -N --enable-msg-id tg-server.pub -W -a actions.lua
乒乓球工作得很好,但是当我发送一个命令来播放youtube视频时,我会收到消息“好的!这可能需要一秒钟…”,但是什么也没有发生。 此外,当我使用乒乓球或youtube命令时,在收到上述消息后,我会在CMD“lua::trust call a nil value”中收到一条消息

我不知道为什么,如果有人有想法,请告诉我。。我对上述任何技术都没有经验,如果我错过了一些信息,我深表歉意。
谢谢。

我解决了这个问题!!我去掉了命令周围的方括号。现在这行是:local command=“../ytplayvlc”。。链接“18”

我处理这个问题已经好几个星期了,在最终发布到stackoverflow后,在5分钟内解决了这个问题。。如果其他人遇到这个问题,我会把这个问题留在这里。不过,如果你想知道它为什么会起作用,那是因为方括号中的任何东西都被视为字符串,而你正试图用
向字符串中添加变量。。link..
,因此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)
     end
     local message = msg.text
     if (message.match(message, "PLAY-")) then
         send_msg (msg.from.print_name, 'Okay! This might take a second..', ok_c$, ok_cb, false)
         local link = string.match(message, "-(.*)")
         local command = [["../ytplayvlc " .. link .. " 18"]]
         os.execute(command)
     end
end
function on_our_id(id)
end
function on_secret_chat_update(user, what_changed)
end
function on_user_update(user_what_changed)
end
function on_chat_update(user, what_changed)
end
function on_get_difference_end()
end
function on_binlog_replay_end()
end
bin/telegram-cli -k -N --enable-msg-id tg-server.pub -W -a actions.lua