我正在使用一个库来通过bash linux ubuntu中的命令行访问电报。 这是电报-cli。 参考https://github.com/vysheng/tg
这是一个交互式程序,可以通过
启动./bin/telegram-cli -k tg-server.pub
输出这些行:
Telegram-cli version 1.1.1, Copyright (C) 2013-2014 Vitaly Valtman
Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show_license' for details.
I: config dir=[/home/utonto/.telegram-cli]
>
使用“>”提示。 要发送消息,请在此提示符下键入
msg USERNAME This is a test message
我想在我的电脑上运行一个脚本,告诉我工作时的室温。 我怎样才能做到这一点? 我搜索了SO,发现了一个类似的问题。 建议使用“expect”命令,我这样做但是没有用。也许 - 当然 - 我是初学者。 我也试过
echo "msg USERNAME this is a message |
telegram-cli -k ......"
但它不起作用。 据我所知,在我的机器人上我有一个电话号码用于电报,但我使用另一部电话注册到telegram-cli。 有人能帮助我吗?
答案 0 :(得分:4)
见这里:remote control with Telegram
要拦截新的传入消息,我们会创建一个文件action.lua
“Lua是一种功能强大,快速,轻量级,可嵌入的脚本语言。
Lua将简单的过程语法与强大的数据描述相结合 基于关联数组和可扩展语义的构造。 LUA 是动态类型的,通过解释a的字节码来运行 基于寄存器的虚拟机,并具有自动内存管理功能 增量垃圾收集,使其成为理想的选择 配置,脚本和快速原型设计。“
sudo nano /home/pi/tg/action.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
end
function on_our_id (id)
end
function on_secret_chat_created (peer)
end
function on_user_update (user)
end
function on_chat_update (user)
end
function on_get_difference_end ()
end
function on_binlog_replay_end ()
end
保存并退出,当收到的短信为“ping”时,Telegram会回复一条包含“pong”的短信。
move in tg
cd /home/pi/tg
然后输入
bin/telegram-cli -k tg-server.pub -W -s action.lua
答案 1 :(得分:1)
试试这里的文件:
#!/bin/bash
./bin/telegram-cli -k tg-server.pub <<-EOF
msg USERNAME This is a test message
exit
EOF
我添加了退出 - 不知道是否需要退出。注意:EOF的东西可以是shell无法解释为命令的任何字母。 - 在第一个EOF前面是告诉这里的文档,下一个EOF不在最左边的列中。如果省略它,那么最后一个EOF必须尽可能地离开。第1列。
关于获得温度,我不知道如果没有特殊硬件你会怎么做。
答案 2 :(得分:0)
如果您有某种方法可以将温度传递到您的计算机上,那么将bash发送给您是非常微不足道的。处理重复任务的正确方法是使用cron
。您将创建一个crontab
条目来启动您的脚本(或直接将温度本身发送到电报)。 cron entry
的格式为:
* * * * * command_to_execute
| | | | |
| | | | +- day of week (0-6) (Sunday = 0)
| | | +--- month (1-12)
| | +----- day of month (1-31)
| +------- hour (0-23)
+--------- minute (0-59)
在您的情况下,您可以使用crontab
设置crontab -e
(以编辑您的crontab条目)。要每10分钟发送一次温度,它将是:
*/10 * * * * ./script/to/call
或者您可以尝试使用类似于以下内容的crontab
直接调用电报:
*/10 * * * * echo "msg $USER The current temp is: $temperature" | ./bin/telegram-cli -k tg-server.pub
最后,在telegram-cli
中仔细检查选项,可能会有一个将消息作为参数并转发它完全避免交互模式(我没有检查过)。