Telegram bot API

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Аватара пользователя
Ichthyander
энтузиаст
Сообщения: 701
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань
Контактная информация:

Сообщение Ichthyander »

То есть указанная проблема решилась?
При изменении значения в поле TTelegramSender.Token программа через некоторое время завершается с кодом 1.
xchgeaxeax
постоялец
Сообщения: 196
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

Ichthyander писал(а):То есть указанная проблема решилась?
Да. Я не учел, что надо синхронизироваться с запросами и что они в режиме ожидания большую часть времени.
Аватара пользователя
Ichthyander
энтузиаст
Сообщения: 701
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань
Контактная информация:

Сообщение Ichthyander »

Короткое видео для новичков. Простой телеграм бот в несколько кликов с использованием компонента времени выполнения fptelegram_DT.lpk
https://rutube.ru/video/381e9b6b79bf485 ... 8623d9e0e/
https://youtu.be/KjD3SfVXP7A
xchgeaxeax
постоялец
Сообщения: 196
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

А есть ли способ завершить поток, в котором

Код: Выделить всё

TTelegramSender.getUpdatesEx(0, 2000000); // больше 23 дней
Сбросить досрочно соединение на сокете, который ждет ответа в ооооочень LongPolling режиме.
Аватара пользователя
Ichthyander
энтузиаст
Сообщения: 701
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань
Контактная информация:

Сообщение Ichthyander »

xchgeaxeax писал(а):А есть ли способ завершить поток, в котором

Код: Выделить всё

TTelegramSender.getUpdatesEx(0, 2000000); // больше 23 дней
Сбросить досрочно соединение на сокете, который ждет ответа в ооооочень LongPolling режиме.
Для начала: установка longpolling в минутах или часах уже бессмысленно, не говоря уж о днях. Клиент и сервер не будет держать столько времени соединения, все равно он прервется и заново установит соединение. Если по каким-то причинам нужно долгое соединение то достаточно вполне 15 секунд. Для десктоп приложений, использующих лонгполлинг соединение с ботом я бы поставил, к примеру, в 4 секунды, для большей интерактивности, к примеру, в случае закрытия приложения, чтобы оно оперативней закрывалось.

В целом вопрос как прервать соединение TTelegramSender.getUpdatesEx относится к вопросу как прервать соединение TFPHTTPClient:
1. Самый просто и правильный способ уменьшить лонгполлинг время до приемлимых значений: 5-7 секунд.
2. Попробовать низкоуровнево останавливать соединение TFPHTTPClient, получив его handle.
3. Использовать другой HTTP клиент, к примеру, indy или synapse (брокеры в fp-telegram это позволяют).

Я бы попросту предложил бы выбрать пункт 1
xchgeaxeax
постоялец
Сообщения: 196
Зарегистрирован: 11.05.2023 02:51:40

Сообщение xchgeaxeax »

Этот огромный таймаут у меня потому, что для отладки мне мешает периодическое сообщение с ошибкой резолва url https://api.telegram.org. В рабочем режиме это исключение не появляется, а вот отладчик мне упорно сообщает о них. И каждый раз галочка игнорировать приводит лишь к тому, что он снова его отображает.

А в целом я согласен, что ставить 2000000 сек ожидания не стоит. Но, подумал, что механизм отмены ожидания сокета все же предусмотрен.
Ответить