Работа с Telegram api

  • Автор темы Автор темы dontwa1t
  • Дата начала Дата начала

dontwa1t

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

new_offset = update_id+1
 
  • Оценить
Реакции: dontwa1t
https://api.telegram.org/botXXXXXXXXXX/getUpdates?offset={new_offset}
Сохранить параметр update_id из ответа и при следующем запросе передать в поле offset значение
new_offset, которое должно быть больше параметра update_id

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

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

{"ok":true,"result":[]}
 
  • Оценить
Реакции: volody00
Когда вы получаете сообщение, вместе с ним вы получаете update_id, Посмотреть вложение 91676для того, что бы не получать уже прочитанные сообщения, этот update_id нужно увеличить на 1 и передать его в офсет
https://api.telegram.org/bot"+token+"/getUpdates?offset=422333930

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

{"ok":true,"result":[]}
Спасибо, это я понял. А как сделать постоянное выполнение этого кубика? Типа если в "result" пусто отправить повторно делать запрос, а если что то есть то уже дальше по нужной мне логике ?
 
Постоянное выполнение можно
while(true){
if(result !=""){
тут если есть сообщение
}
else{
тут если нет сообщения
}
}
 
Постоянное выполнение можно
while(true){
if(result !=""){
тут если есть сообщение
}
else{
тут если нет сообщения
}
}
С прочитанными сообщения до меня честно говоря все таки не дошло, сижу сейчас не пойму как реализовать это:an:
 
while(true){
Тут отправляете запрос, парсите ответ
записываете result
if(result !=""){
если result не пустая то делаете , что вам надо и увеличиваете на единицу update и записываете его в бд или файл
и выходите из цикла,

break;
}
else{
тут делаете паузу
}
}
 
  • Оценить
Реакции: dontwa1t
while(true){
Тут отправляете запрос, парсите ответ
записываете result
if(result !=""){
если result не пустая то делаете , что вам надо и увеличиваете на единицу update и записываете его в бд или файл
и выходите из цикла,

break;
}
else{
тут делаете паузу
}
}
А что за пауза простите ?))
 
Пауза между запросами, вы же не будете без остановок слать, хотя бы 500мс пауза
Я просто первый раз с подобным проектом работаю, думал он безостановочно шлется. А оптимально паузу между запросами во сколько ставить лучше, не знаете ?
 
Я просто первый раз с подобным проектом работаю, думал он безостановочно шлется. А оптимально паузу между запросами во сколько ставить лучше, не знаете ?
Думаю можно ориентироваться на то, на сколько часто появляются новые сообщение.
Можно как выше сказано 500мс сделать, можно и больше, тут Вы уже сами подбирайте под Вас паузу.
 

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