Страница 1 из 6
Telegram bot API
Добавлено: 15.11.2017 15:32:51
Ichthyander
Пишу класс для работы с Telegram бот API
fp-telegram и телеграмм плагин для
BrookFramework.
Библиотека кроссплатформенна, использовать можно не только в веб, но и в десктопных приложениях.
Особенно удобна будет тем, кто имеет веб-сервис или сайт на FreePascal и хочет добавить телеграм интерфейс для юзабилити сервиса. Для десктопных приложений это может быть система мгновенных уведомлений через телеграмм непосредственно пользователю и прочее.
Просьба, сообщать о найденных багах, давать советы. Ну, и самое главное, почему я разместил этот класс публично, надеюсь кто-то присоединится к проекту.
Re: Telegram API
Добавлено: 25.11.2017 12:00:01
Ichthyander
Для удобства дальнейшей работы библиотеки (не в обиду создателю) форкнул TGBotLazarus в
https://github.com/Al-Muhandis/fp-telegram
Re: Telegram API
Добавлено: 11.12.2017 19:28:31
Ichthyander
fp-telegram: Добавлен Long Polling для получения обновлений помимо вебхуков, которые я уже использую. Не особо тестил, потому как для меня удобнее только webhook.
Но для тех, кто не хочет заморачиваться с написанием веб приложений хороший вариант - это написание десктопного [или консольного или службы] приложения для работы c Telegram Bot API. В этом случае можно обойтись получением обновлений с помощью longpolling. [
Лично мне не нравится этот метод, единственное полезное применение, когда не хочешь или не можешь установить вебхук]
/EXAMPLES/: Добавлены простые готовые примеры для показа как работает longpolling. Многопоточный вариант и без потоков совсем простой (GETmE)
brook-telegram: адаптировал библиотеку для работы с brook 3.9.9...
Также надеюсь, что кто-то присоединится к проекту

Re: Telegram API
Добавлено: 13.02.2018 11:06:13
Ichthyander
1. Написал на скорую руку краткую инструкцию по созданию бота в телеграмм на основе библиотеки.
https://github.com/Al-Muhandis/brook-telegram/wiki2. Дописываю функционал инлайн режима для ботов
Re: Telegram bot API
Добавлено: 01.08.2018 12:10:04
erekepost
Спасибо за прекрасную работу!
Но для тех, кто не хочет заморачиваться с написанием веб приложений хороший вариант - это написание десктопного [или консольного или службы] приложения для работы c Telegram Bot API. В этом случае можно обойтись получением обновлений с помощью longpolling. [Лично мне не нравится этот метод, единственное полезное применение, когда не хочешь или не можешь установить вебхук]
Я как раз не хотел заморачиваться)) Но пример приложения зависает после запуска((( А после перезапуска - принимает тестовое сообщение, которое отправлено при предыдущем запуске.
Что посоветуете?
Re: Telegram bot API
Добавлено: 02.08.2018 12:25:51
Ichthyander
Спасибо
Вы в России живете? Я имел ввиду нет ли проблем с блокировкой? И попробуйте более простой пример с простой отправкой сообщений SimpleSendMessage. Он работает?
По поводу LongPollingDesktop:
Вроде не зависает. Были некоторые баги, но с другим связано. Тем не менее, попробуйте обновить репозитарий. Я закоммитил последние изменения
Re: Telegram bot API
Добавлено: 08.08.2018 20:19:43
erekepost
Пример с последнего коммита уже не зависет, спасибо))
Подскажите, почему последнее сообщение повторяется постоянно, это нужно остановить программно, или это коллизия какая то у меня?
Добавлено спустя 19 минут 36 секунд:Не подскажете метод пирема файлов?
Re: Telegram bot API
Добавлено: 09.08.2018 01:33:32
Ichthyander
erekepost писал(а):Пример с последнего коммита уже не зависет, спасибо))
Подскажите, почему последнее сообщение повторяется постоянно, это нужно остановить программно, или это коллизия какая то у меня?
В последнем коммите затесался баг. Обновите репозитарий.
erekepost писал(а):Не подскажете метод пирема файлов?
Вы, к примеру, можете добавить обработчик на событие
OnReceiveMessage у бота в потоке класса
TProcessorThread на получение обновления типа
message, у которого есть свойство document (или
video/photo/audio, если это соответственно видео/фото/аудио). Дальше будут поле
file_id. Значение поля используем при отправки команды
getfile. В ответ сервер пришлет
<file_path>. Путь для скачивания файла, который пользователь отправил боту, соответственно, будет
https://api.telegram.org/file/bot<token>/<file_path>
Re: Telegram bot API
Добавлено: 08.12.2018 19:57:34
Ichthyander
Добавлены
несколько тестов.
Добавлены возможность отправлять сообщение от бота в процедурном стиле (без создания объектов).
Код: Выделить всё
{ Procedure style method to send message from Bot to chat/user }
function TgBotSendMessage(const AToken: String; chat_id: Int64; const AMessage: String;
out AReply: String;
ParseMode: TParseMode = pmDefault; DisableWebPagePreview: Boolean=False;
AReplyMarkup: TReplyMarkup = nil; ReplyToMessageID: Integer = 0): Boolean;
В Brook-telegram добавлены возможности вывода статистики: количество принятых событий, количество уникальных пользователей
Re: Telegram bot API
Добавлено: 18.03.2019 21:52:40
Ichthyander
1. Переработал демо
пример LongPollingDesktop: убрал ненужные потоки, оставив один для обработки приходящих обновлений в синхронном режиме. Для демонстрации достаточно. А кому потребуется асинхронная обработка обновлений в любом случае лучше организовать свой потоковый пул или другую многопоточную работу с ботом. Обычно хватает синхронной за глаза.
2. Добавлены прочие методы API
3. Добавлен платежный API для телеграм ботов. Теперь можно организовать прием оплаты непосредственно в боте.
4. Другие исправления и улучшения
Re: Telegram bot API
Добавлено: 20.03.2019 08:04:40
wadman
Рекомендую добавить в lpk такую строчку
<UsageOptions>
<CustomOptions Value="-dUseCThreads" />
<UnitPath Value="$(PkgOutDir)" />
</UsageOptions>
Для многопоточки в никсах опция будет автоматом включаться.
Добавлено спустя 7 минут 4 секунды:
На вскидку не увидел поддержку прокси... Еще нет такого функционала?
Re: Telegram bot API
Добавлено: 20.03.2019 09:43:55
Ichthyander
wadman писал(а):<UsageOptions>
<CustomOptions Value="-dUseCThreads" />
<UnitPath Value="$(PkgOutDir)" />
</UsageOptions>
Не знал, что ключи можно добавлять в либу. В любом случае мне кажется избыточным. Теоретически библотеку можно использовать и в основном потоке и приложение будет без многопоточности. А сама либа непосредственно не использует потоки и не запускает. В пример многопоточность используется, но там кажется везде проставлены эти ключи -dUseCThreads. Обычно те, кто кодят под линукс сам добавляют этот ключ в свойства проекта.
Кстати, а будет ли смысл в ключе, если он просто включает дефайны в файле .lpr и если их там нет, то и ключ не применится. Я конечно могу ошибаться
Добавлено спустя 11 минут 45 секунд:wadman писал(а):На вскидку не увидел поддержку прокси... Еще нет такого функционала?
Я использовал нативный THTTPClient, который пока имеет ограниченный функционал для проксирования, даже в транковой версии.
Я на форуме тут поднимал эту тему по поводу поддержки работы HTTP клиентов с защищенными сайтами через HTTPS прокси на Линукс. Как будет время отделю реализацию либы от HTTP клиента и добавлю базовый класс для работы с этим и можно будет зарегистрировав нужный клиент (нативный, синапс, инди10) и тогда при подключении именно инди можно будет использовать прокси. Как будет время реализую это, как я сделал в другой
библиотекеКак можно обойти это ограничение:
1. Запускать на сервере за пределом РФ
2. Сделать простейший свой эндпоинт на сервере, чтобы работы с API в пределах РФ. К примеру, с нгинком я сделал так
https://gist.github.com/Al-Muhandis/21b ... 26312b6b6e
Re: Telegram bot API
Добавлено: 20.03.2019 12:53:07
wadman
Ichthyander писал(а):Кстати, а будет ли смысл в ключе, если он просто включает дефайны в файле .lpr и если их там нет, то и ключ не применится.
В проекте по умолчанию ifdef есть, а их удаление на совести программиста.
Ichthyander писал(а):Как можно обойти это ограничение:
Я, наверное, скорее имел в виду mtproto прокси, который еще и трафик шифрует от DPI. Обычные прокси легко и быстро блокируются.
Я проверил, вчера работал, а сегодня - уже нет. Сам телеграм работает через свои прокси как-то хитро.
Re: Telegram bot API
Добавлено: 20.03.2019 13:37:28
Ichthyander
wadman писал(а):Я, наверное, скорее имел в виду mtproto прокси, который еще и трафик шифрует от DPI. Обычные прокси легко и быстро блокируются.
Я проверил, вчера работал, а сегодня - уже нет. Сам телеграм работает через свои прокси как-то хитро.
Понятно MTProto не изучал, но думал это годится только клиентов телеграмм, а не для работы ботов. По поводу блокировки я поэтому в том числе и имел ввиду, что лучше свой прокси сделать, даже возможно обычное зеркало, которое переадресует ПОСТ и ГЕТ запросы на сайт телеграмм и подставляет их при запросе на Ваш личный эндпоинт
Добавлено спустя 20 минут 33 секунды:К тому, что Ваш личный прокси, даже работающий как зеркало никто банит не будет, просто потому, что им пользуетесь только Вы и о нем никто не знает
Добавлено спустя 37 секунд:Более того у РКН задача блокировать клиенты телеграмм, а не боты

Re: Telegram bot API
Добавлено: 20.03.2019 13:54:42
wadman
Ichthyander писал(а):Более того у РКН задача блокировать клиенты телеграмм, а не боты
Думаю, что у них задача блокировать любую активность телеграм. У меня сервер в РФ, да и бот нужен практически в личных целях, потому прокси актуален.