Форум программистов, компьютерный форум, киберфорум Delphi: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/47: Рейтинг темы: голосов - 47, средняя оценка - 4.89
61 / 51 / 25
Регистрация: 17.12.2013
Сообщений: 243

Telegram Bot

02.03.2022, 15:54. Показов 9898. Ответов 6

Author24 — интернет-сервис помощи студентам
Представляю сообществу простейший модуль для отправки сообщений в Telegram
Функционал простейший. Он отправляет сообщения в заданный канал.
2 метода:
  • function SendString(AMsg: string): string; {Отправка однострочного сообщения}
  • function SendStrings(AMsg: TStrings): string; {Отправка многострочного сообщения}
Возвращают ответ сервера или сообщение об ошибке.
Требует присутствия в папке проекта или системных папок библиотек libeay32.dll ssleay32.dll
Просто подключаем модуль к проекту, создаем экземпляр класса TTeleBot (при создании указываем токен вашего бота и ID канала). Можем отправлять сообщения.

P.S. Создано в XE 11


Сам модуль:
Кликните здесь для просмотра всего текста
Delphi Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
unit TeleBot;
 
interface
 
uses
  IdBaseComponent,
  IdComponent,
  IdTCPConnection,
  IdTCPClient,
  IdHTTP,
  IdIOHandler,
  IdIOHandlerSocket,
  IdIOHandlerStack,
  IdSSL,
  IdSSLOpenSSL,
  System.Classes,
  NetEncoding;
 
type
  TTeleBot = class
  private
    http: TIdHTTP;
    ssl: TIdSSLIOHandlerSocketOpenSSL;
    Token: string;
    ChatID: string;
  public
    constructor Create(AToken: string; AChatID: string);
    destructor Destroy;
    function SendString(AMsg: string): string;
    function SendStrings(AMsg: TStrings): string;
  end;
 
implementation
 
{ TTeleBot }
 
constructor TTeleBot.Create(AToken: string; AChatID: string);
begin
  inherited Create;
  http := TIdHTTP.Create(nil);
  ssl := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  ssl.SSLOptions.Method := sslvSSLv23;
  ssl.SSLOptions.Mode := sslmClient;
  ssl.SSLOptions.SSLVersions := [sslvSSLv2,sslvSSLv3,sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2];
  http.IOHandler := ssl;
  Token := AToken;
  ChatID := AChatID;
end;
 
destructor TTeleBot.Destroy;
begin
  ssl.Free;
  http.Free;
  inherited;
end;
 
function TTeleBot.SendString(AMsg: string): string;
var
  URL: string;
begin
  URL := 'https://api.telegram.org/bot' + Token +
    '/sendMessage?chat_id=' + ChatID +
    '&text=' + TNetEncoding.URL.Encode(AMsg);
  try
    Result := http.Get(URL);
  except
    on E: EIdHTTPProtocolException do Result := E.ErrorMessage;
  end;
end;
 
function TTeleBot.SendStrings(AMsg: TStrings): string;
var
  URL: string;
  I: Byte;
begin
  URL := 'https://api.telegram.org/bot' + Token +
    '/sendMessage?chat_id=' + ChatID + '&text=';
  for I := 0 to AMsg.Count - 1 do begin
    URL := URL + TNetEncoding.URL.Encode(AMsg.Strings[I]);
    if I < AMsg.Count - 1 then URL := URL + '%0A';
  end;
  try
    Result := http.Get(URL);
  except
    on E: EIdHTTPProtocolException do Result := E.ErrorMessage;
  end;
end;
 
end.
Вложения
Тип файла: 7z TeleBot.7z (832 байт, 262 просмотров)
2
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.03.2022, 15:54
Ответы с готовыми решениями:

Telegram Bot Отправка фото
Не могу отправить фото пишет Ошибка 400 Не верный запрос. procedure TForm5.Button3Click(Sender: TObject); const BaseUrl =...

AddMeFast Bot в делфи 7
Прет друзья кто может помочь захотелось создать бот но не могу кликать кнопки без id как еше можно кликать по кнопкам использую TChromimum...

Telegram API
Доброго времени! Подскажите нубу, как строить запрос api в Telegram???? Делаю так:...

6
 Аватар для krapotkin
6799 / 4633 / 1455
Регистрация: 14.04.2014
Сообщений: 20,507
Записей в блоге: 20
02.03.2022, 15:59
Лучший ответ Сообщение было отмечено KMSNasgool как решение

Решение

в D-11 зачем Indy с DLL ? Есть же THttpClient
1
61 / 51 / 25
Регистрация: 17.12.2013
Сообщений: 243
02.03.2022, 16:46  [ТС]
Спасибо. Еще не работал с ним, посмотрю.

Добавлено через 44 минуты
Цитата Сообщение от krapotkin Посмотреть сообщение
в D-11 зачем Indy с DLL ? Есть же THttpClient
И правда намного проще и удобнее.
Второй вариант завтра накидаю. Время почти полночь.
0
61 / 51 / 25
Регистрация: 17.12.2013
Сообщений: 243
03.03.2022, 01:58  [ТС]
Спасибо товарищу Крапоткину, вот второй вариант, не требующий библиотек OpenSSL:
Кликните здесь для просмотра всего текста

Delphi Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
unit TeleBot;
 
interface
 
uses
  System.Net.URLClient,
  System.Net.HttpClient,
  System.Net.HttpClientComponent,
  System.Classes,
  NetEncoding;
 
type
  TTeleBot = class
  private
    http: TNetHTTPClient;
    Token: string;
    ChatID: string;
    procedure httpRequestCompleted(const Sender: TObject;
      const AResponse: IHTTPResponse);
  public
    constructor Create(AToken: string; AChatID: string);
    destructor Destroy;
    function SendString(AMsg: string): string;
    function SendStrings(AMsg: TStrings): string;
  end;
 
implementation
 
{ TTeleBot }
 
constructor TTeleBot.Create(AToken: string; AChatID: string);
begin
  inherited Create;
  http := TNetHTTPClient.Create(nil);
  http.Asynchronous := True;
  Token := AToken;
  ChatID := AChatID;
end;
 
destructor TTeleBot.Destroy;
begin
  http.Free;
  inherited;
end;
 
procedure TTeleBot.httpRequestCompleted(const Sender: TObject;
  const AResponse: IHTTPResponse);
begin
 
end;
 
function TTeleBot.SendString(AMsg: string): string;
var
  URL: string;
begin
  URL := 'https://api.telegram.org/bot' + Token +
    '/sendMessage?chat_id=' + ChatID +
    '&text=' + TNetEncoding.URL.Encode(AMsg);
  Result := http.Get(URL).ContentAsString;
end;
 
function TTeleBot.SendStrings(AMsg: TStrings): string;
var
  URL: string;
  I: Byte;
begin
  URL := 'https://api.telegram.org/bot' + Token +
    '/sendMessage?chat_id=' + ChatID + '&text=';
  for I := 0 to AMsg.Count - 1 do begin
    URL := URL + TNetEncoding.URL.Encode(AMsg.Strings[I]);
    if I < AMsg.Count - 1 then URL := URL + '%0A';
  end;
  Result := http.Get(URL).ContentAsString;
end;
 
end.
0
0 / 0 / 0
Регистрация: 07.10.2021
Сообщений: 1
28.08.2023, 13:03
KMSNasgool, Использовал ваш модуль. Пишет ошибку "error querying headers 12019"
0
61 / 51 / 25
Регистрация: 17.12.2013
Сообщений: 243
10.12.2024, 04:38  [ТС]
Извините, давно не заходил на портал. Разобрались с ошибкой? Просто у меня этот модуль работает без ошибок начиная с D10, сейчас на D12.
0
Модератор
 Аватар для D1973
9725 / 6322 / 2440
Регистрация: 21.01.2014
Сообщений: 26,938
Записей в блоге: 3
10.12.2024, 05:02
Цитата Сообщение от KMSNasgool Посмотреть сообщение
Разобрались с ошибкой?
Ему уже не надо, судя по всему - больше года на форуме не был.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.12.2024, 05:02
Помогаю со студенческими работами здесь

Telegram API для Delphi 7
Здравствуйте, очень нужно API Telegram для Delphi. Искал на офф сайте, мало чего нашел. Только на с# видел, но в с# не шарю вообще. Нужно...

Как отправить запрос Telegram API?
Как в делфи отправить запрос апи телеграм отправляю апи просто гет запросом выбивает ошибку

Telegram API
Всем привет, товарищи, давайте прольем свет уже!!! Как пользоваться все таки API в Telegram?????? И вообще рабочие они или нет? ...

Открыть Skype и Telegram одновременно на одной форме
Доброго времени суток . Необходимо создать программу , которая будет одновременно открывать скайп и телеграмм в одном окне (форме). Почитав...

Telegram Bot(python-telegram-bot) - InlineButtons и фотографии
Добрый день, делал бота при помощи библиотеки python-telegram-bot и столкнулся с проблемой. Общение с ботом через Inline кнопки и edit...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер