Telegram-cli:脚本不发送消息

Telegram-cli : Script not sending message

我正在用 Telegram-cli 制作一个简单的 bash 脚本,我在其中发送了 2 个参数(目的地和消息),它应该向目的地发送一条 Telegram 消息 (Name_FamilyName) .

脚本如下所示:

#!/bin/bash
destination=;
message=;
  (echo "msg $destination $message"; echo "safe_quit") | bin/telegram-cli -k tg-server.pub -W

这样一来,理论上应该可以发送消息了。我更改了脚本的权限,我用下面的方式调用它:

./script_send_message.sh Max_Musterman "Hola qute tal estas"

这就是我得到的输出:

Telegram-cli version 1.2.0, Copyright (C) 2013-2015 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.
Telegram-cli uses libtgl version 1.2.0
I: config dir=[/home/machine/.telegram-cli]
> msg Max_Musterman Hola qute tal estas
> safe_quit
User Max_Musterman updated username
User Max_Musterman online (was online [2015/04/09 06:56:04])
User Test Phone offline (was online [2015/04/09 06:51:42])
> > All done. Exit
halt

根本没有消息发送。 Insted,如果我从控制台发送完全相同的消息,它工作正常。这是我的工作:

bin/telegram-cli -k server.pub -W
Telegram-cli version 1.2.0, Copyright (C) 2013-2015 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.
Telegram-cli uses libtgl version 1.2.0
I: config dir=[/home/machine/.telegram-cli]
User Max_Musterman updated username
User Max_Musterman online (was online [2015/04/09 06:59:46])
User Max_Musterman offline (was online [2015/04/09 06:51:42])
> msg Max_Musterman Hola qute tal estas
[06:57]  Max_Musterman <<< Hola qute tal estas
User Max_Musterman marked read 1 outbox and 0 inbox messages
User Max_Musterman offline (was online [2015/04/09 06:57:29])
>

我 运行 没主意了。我开始认为,不知何故,在脚本中发送命令 msg 时联系人列表未加载,因此它什么也不发送(在控制台中,如果您向虚构的用户发送消息,它不会执行任何操作就像在脚本中一样)。

有没有人经历过类似的事情?任何解决方案?感谢您的帮助。

看起来当您从脚本中 运行 telegram_cli 时,需要一些时间才能发送任何消息(直到它至少显示用户列表)。如果您在加载用户列表之前发送消息,您将无法发送任何内容。所以一个快速修复(或者我们可以称之为顽皮的 hack)是告诉脚本等待 3 秒发送消息:

#!/bin/bash
destination=;
message=;
(sleep 3;echo "msg $destination $message"; echo "safe_quit") | bin/telegram-cli -k tg-server.pub -W

也许你必须将 sleep3 更改为 sleep 5 或类似的东西,但之后它应该能够发送消息。

您还有其他选择:

您可以使用“-e”选项和 user_id,而不是通过管道将命令发送到 telegram-cli,这样:

telegram-cli -RD -e "msg user#nnnnnnn Hola caracola"

其中 nnnnn 是 user_id。您可以通过 "user_info ....." 命令找到它。

这样你就不用睡觉了,只要让 telegram-cli 做所有的工作,不用 -W 命令 telegram 不需要获取你所有的联系人。