Telegram-cli: скрипт не отправляет сообщение

Я делаю простой bash-скрипт с Telegram-cli, в котором я отправляю 2 параметра (пункт назначения и сообщение), и он должен отправить сообщение Telegram в пункт назначения (Name_FamilyName).

Скрипт выглядит следующим образом:

#!/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 в скрипте, поэтому он ничего не отправляет (в консоли, если отправить сообщение вымышленному пользователю, он ничего не сделает как в сценарии).

Кто-нибудь испытал что-то подобное? Любое решение? Спасибо за помощь.


person raspayu    schedule 09.04.2015    source источник


Ответы (2)


У вас есть другой вариант:

вместо передачи команд в telegram-cli вы можете использовать опцию «-e» и user_id следующим образом:

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

где nnnnn — это user_id. Вы можете найти его с помощью команды "user_info ...".

Таким образом, вам не нужно спать, просто заставьте телеграмму выполнять всю работу, и без использования команды -W телеграмме не нужно получать все ваши контакты.

person xabi    schedule 05.05.2015
comment
что означает опция -RD? - person DarkSkull; 16.01.2019

Похоже, когда вы запускаете 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 или что-то в этом роде, но после этого он сможет отправлять сообщения.

person raspayu    schedule 11.04.2015