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

Telegram Bot

02.03.2022, 15:54. Показов 9030. Ответов 4

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 байт, 243 просмотров)
2
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2022, 15:54
Ответы с готовыми решениями:

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

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

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

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

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

4
5858 / 4587 / 1447
Регистрация: 14.04.2014
Сообщений: 20,340
Записей в блоге: 20
02.03.2022, 15:59 2
Лучший ответ Сообщение было отмечено KMSNasgool как решение

Решение

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

Добавлено через 44 минуты
Цитата Сообщение от krapotkin Посмотреть сообщение
в D-11 зачем Indy с DLL ? Есть же THttpClient
И правда намного проще и удобнее.
Второй вариант завтра накидаю. Время почти полночь.
0
61 / 51 / 25
Регистрация: 17.12.2013
Сообщений: 242
03.03.2022, 01:58  [ТС] 4
Спасибо товарищу Крапоткину, вот второй вариант, не требующий библиотек 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 5
KMSNasgool, Использовал ваш модуль. Пишет ошибку "error querying headers 12019"
0
28.08.2023, 13:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.08.2023, 13:03
Помогаю со студенческими работами здесь

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

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

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

telegram bot bot.send_media_group +invine
Можно ли каким либо способом при выводе фотографий и текста одним сообщением функцией...

Telegram API (НЕ Telegram Bot API!) - как правильно спарсить все сообщения в чате?
Здравствуйте. Мне нужно выдрать все сообщения в определенном чате. Использую библиотеку TLSharp....

Telegram bot
Привет всем пишу тг-бот, сервер бота норм пингует сервер телеги, тг-бот на летс энкрипт...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru