3

我正在使用一个库来通过 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 ......"

但它没有用。据您所知,在我的 android 上,我有一个用于电报的电话号码,但我使用另一部电话注册到电报 cli。有人能帮我吗?

4

3 回答 3

4

请参见此处:使用 Telegram 进行远程控制

为了拦截新的传入消息,我们创建一个文件 action.lua

“Lua 是一种强大、快速、轻量级、可嵌入的脚本语言。

Lua 将简单的过程语法与基于关联数组和可扩展语义的强大数据描述结构相结合。Lua 是动态类型的,通过解释基于寄存器的虚拟机的字节码运行,并具有自动内存管理和增量垃圾收集,使其成为配置、脚本和快速原型设计的理想选择。”

来自http://www.lua.org

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
于 2015-01-25T11:21:28.457 回答
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 列。

关于获取温度,我不知道如果没有特殊硬件你会如何做到这一点。

于 2014-12-28T03:37:01.980 回答
0

如果您有某种方法可以让您的计算机获得温度,那么让 bash 将其发送给您是相当简单的。处理重复任务的正确方法是使用cron. 您将创建一个crontab启动脚本的条目(或直接将温度本身发送到电报)。a 的格式为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,很可能有一个将消息作为参数并转发它完全避免交互模式(我没有检查)。

于 2014-12-28T05:28:03.493 回答