tg-cli-node
tg-cli-node copied to clipboard
How send inital message (not replay)?
Thank you for this work!
I want to ask, how do I send a message as soon as I started the node script? (Do not wait for an answer)
//This is Not work:
connection._executeCommand("msg","Name","TestOfExecute");
// This work if we reseave message (do execute forever. Why not once?)
connection.on('message', message => {
connection._executeCommand("msg","Name","TestOfExecute");
});
@SadhuRus TelegramAPI.connect() method callback calling after creating socket, not after full initializing tg-cli, use setTimeout.
setTimeout(() => {
connection.send('Name', 'TestOfExecute');
}, 1000);
P.S. Можно писать на русском :)
Спасибо, Илья!
Уже пробовал делать таймауты.. Но к сожалению это не помогает.. Пишет что "выполняется" хотя на самом деле ничего не происходит:
Код:
const TelegramAPI = require('tg-cli-node');
const config = require('./config.js');
const Client = new TelegramAPI(config);
Client.connect(function (connection){
setTimeout(() => {
connection.send('Name', 'Тестовое сообщение');
}, 1000);
});
Вывод консоли:
root@myfuns:~# node telegramServer.js
starting child process
executing command: msg Name "Тестовое сообщение"
@SadhuRus пофиксил в #73618c2, теперь нужно обновить пакет.
Обновил, но к сожалению это не помогло =(
@SadhuRus к сожалению как-то наверняка отследить полную инициализацию клиента невозможно, так как идет просто чтение данных с процесса клиента по сокету. Идей, кроме как увеличить время таймера - нет на данный момент.
Илья, к сожалению беда не в таймере.. Почему-то не работает имменно отправка. По логу пишет - отправлено. А по факту ничего не приходит..
root@myfuns:~# node telegramServer.js
starting child process
executing command: msg Name TestOfExecute12355
Ещё заметил такой баг:
При выполнении кода (необязательно именно такого, это происходит с любым другим тоже):
Client.connect(function (connection){
setTimeout(function(){
connection.contactList().then(data => {
data.forEach(function(item, i, data) {
console.log(item["print_name"]," ",item["username"]);
});
});
}, 2000);
Происходит следующее явление: Иногда скрипт выполняется и всё хорошо. Но в большинстве случае скрипт выходит даже не дождавшись таймаута (величина таймаута не имеет значения) срипт закрывается без видимых на то причин.
root@myfuns:~# node telegramServer.js
starting child process
root@myfuns:~# node telegramServer.js
starting child process
А иногда (реже всего, но тоже случается, скрипт выдаёт такое и зависает намертво (не выдавая результатов):
root@myfuns:~# node telegramServer.js
starting child process
executing command: contact_list
У меня тоже возникает подобная проблема, как я заметил, не возможно написать первым человеку, все хорошо работает, если сначала тебе написали, а потом ты уже можешь писать сколько угодно. И речь тут идет о каждом человеке отдельно. То есть, с одним диалог уже может быть налажен, если он написал первым, а к другому пакеты так и не идут. Вопрос все же не в инициализации
У меня тоже возникает подобная проблема, как я заметил, не возможно написать первым человеку, все хорошо работает, если сначала тебе написали, а потом ты уже можешь писать сколько угодно. И речь тут идет о каждом человеке отдельно. То есть, с одним диалог уже может быть налажен, если он написал первым, а к другому пакеты так и не идут. Вопрос все же не в инициализации
в тг реализован обмен по peer_id, если ты еще не общался с человеком, то по имени ты ему не напишешь, пиши по его id. Есть отдельный метод получения инфы о пользователе по его id. При первом написании вначале надо вызвать его и тогда cli запомнит его id => name