3

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

该脚本如下所示:

#!/bin/bash
destination=$1;
message=$2;
  (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 时未加载联系人列表,因此它什么也不发送(在控制台中,如果您向虚构的用户发送消息,它不会做任何事情就像在脚本中一样)。

有没有人经历过类似的事情?有什么解决办法吗?感谢您的帮助。

4

2 回答 2

7

您还有其他选择:

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

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

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

这样你就不需要睡觉了,只需要让 telegram-cli 完成所有的工作,并且不使用 -W 命令电报不需要获取所有联系人。

于 2015-05-05T08:02:20.337 回答
4

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

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

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

于 2015-04-11T17:50:29.790 回答