Работа с Telegram api

dontwa1t

Client
Регистрация
06.12.2021
Сообщения
14
Благодарностей
1
Баллы
3
Всем привет, возникло два вопроса
Первый, привязал бот ТГ к зенке, get запросом она постоянно опрашивает сервер на наличие входящих сообщений, проблема в том что в результате запроса лежат и старые сообщения в том числе, однако мне ведь нужно ответить только на последнее которое пришло, как это сделать ?
Второй вопрос касательно этого запроса, как сделать так чтобы он постоянно слал этот GET запрос на сервер ?) ведь неизвестно когда придет команда в бота
 

kot2566

Client
Регистрация
25.11.2019
Сообщения
19
Благодарностей
6
Баллы
3
https://api.telegram.org/botXXXXXXXXXX/getUpdates?offset={new_offset}
Сохранить параметр update_id из ответа и при следующем запросе передать в поле offset значение
new_offset, которое должно быть больше параметра update_id

new_offset = update_id+1
 
  • Спасибо
Реакции: dontwa1t

dontwa1t

Client
Регистрация
06.12.2021
Сообщения
14
Благодарностей
1
Баллы
3
https://api.telegram.org/botXXXXXXXXXX/getUpdates?offset={new_offset}
Сохранить параметр update_id из ответа и при следующем запросе передать в поле offset значение
new_offset, которое должно быть больше параметра update_id

new_offset = update_id+1
То есть просто сделать со счетчиком цикл где к предыдущему значению update_id будет прибавляться 1, так ?
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
То есть просто сделать со счетчиком цикл где к предыдущему значению update_id будет прибавляться 1, так ?
Когда вы получаете сообщение, вместе с ним вы получаете update_id,
91676
для того, что бы не получать уже прочитанные сообщения, этот update_id нужно увеличить на 1 и передать его в офсет
https://api.telegram.org/bot"+token+"/getUpdates?offset=422333930

Вот так уже пока не придет новое сообщение вы будете получать пустой ответ от телеграмм

{"ok":true,"result":[]}
 

dontwa1t

Client
Регистрация
06.12.2021
Сообщения
14
Благодарностей
1
Баллы
3
Когда вы получаете сообщение, вместе с ним вы получаете update_id, Посмотреть вложение 91676для того, что бы не получать уже прочитанные сообщения, этот update_id нужно увеличить на 1 и передать его в офсет
https://api.telegram.org/bot"+token+"/getUpdates?offset=422333930

Вот так уже пока не придет новое сообщение вы будете получать пустой ответ от телеграмм

{"ok":true,"result":[]}
Спасибо, это я понял. А как сделать постоянное выполнение этого кубика? Типа если в "result" пусто отправить повторно делать запрос, а если что то есть то уже дальше по нужной мне логике ?
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
Постоянное выполнение можно
while(true){
if(result !=""){
тут если есть сообщение
}
else{
тут если нет сообщения
}
}
 

dontwa1t

Client
Регистрация
06.12.2021
Сообщения
14
Благодарностей
1
Баллы
3
Постоянное выполнение можно
while(true){
if(result !=""){
тут если есть сообщение
}
else{
тут если нет сообщения
}
}
С прочитанными сообщения до меня честно говоря все таки не дошло, сижу сейчас не пойму как реализовать это:an:
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
while(true){
Тут отправляете запрос, парсите ответ
записываете result
if(result !=""){
если result не пустая то делаете , что вам надо и увеличиваете на единицу update и записываете его в бд или файл
и выходите из цикла,

break;
}
else{
тут делаете паузу
}
}
 
  • Спасибо
Реакции: dontwa1t

dontwa1t

Client
Регистрация
06.12.2021
Сообщения
14
Благодарностей
1
Баллы
3
while(true){
Тут отправляете запрос, парсите ответ
записываете result
if(result !=""){
если result не пустая то делаете , что вам надо и увеличиваете на единицу update и записываете его в бд или файл
и выходите из цикла,

break;
}
else{
тут делаете паузу
}
}
А что за пауза простите ?))
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43

dontwa1t

Client
Регистрация
06.12.2021
Сообщения
14
Благодарностей
1
Баллы
3
Пауза между запросами, вы же не будете без остановок слать, хотя бы 500мс пауза
Я просто первый раз с подобным проектом работаю, думал он безостановочно шлется. А оптимально паузу между запросами во сколько ставить лучше, не знаете ?
 

qzen4i

Client
Регистрация
01.05.2014
Сообщения
1 408
Благодарностей
314
Баллы
83
Я просто первый раз с подобным проектом работаю, думал он безостановочно шлется. А оптимально паузу между запросами во сколько ставить лучше, не знаете ?
Думаю можно ориентироваться на то, на сколько часто появляются новые сообщение.
Можно как выше сказано 500мс сделать, можно и больше, тут Вы уже сами подбирайте под Вас паузу.
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)