Telegram Client
TsgcTDLib_Telegram 是一个基于官方 TDLib(Telegram Database Library)构建的完整 Telegram 客户端。它既可以用用户账号登录,也可以用机器人令牌登录,因此覆盖的范围远超 Bot API:您自己的聊天、群组、频道、密聊、媒体、支付和搜索。在 Delphi 和 C++ Builder 中是同一个组件、同一套 API。
TsgcTDLib_Telegram 是一个基于官方 TDLib(Telegram Database Library)构建的完整 Telegram 客户端。它既可以用用户账号登录,也可以用机器人令牌登录,因此覆盖的范围远超 Bot API:您自己的聊天、群组、频道、密聊、媒体、支付和搜索。在 Delphi 和 C++ Builder 中是同一个组件、同一套 API。
设置 Telegram.API.ApiId 和 ApiHash,用 Telegram.PhoneNumber 或 Telegram.BotToken 登录,接好消息事件,然后将 Active 设为 True。
TsgcTDLib_Telegram
官方 TDLib(Telegram Database Library)
Windows、macOS、Linux 64-bit、Android、iOS
Delphi、C++ Builder
也内置于 sgcWebSockets 中。Telegram 客户端同样内置于 sgcWebSockets 的 Standard 及以上版本中。sgcSocial 是独立包,已内置 sgcWebSockets Core 运行时。
从 my.telegram.org 获取您的 api_id 和 api_hash,用手机号码登录,并回显收到的文本消息。TsgcTDLib_Telegram 声明在 sgcLibs 单元中。
uses
sgcLibs;
var
Telegram: TsgcTDLib_Telegram;
begin
Telegram := TsgcTDLib_Telegram.Create(nil);
Telegram.Telegram.API.ApiId := '123456';
Telegram.Telegram.API.ApiHash := 'your-api-hash';
Telegram.Telegram.PhoneNumber := '+34600111222';
Telegram.OnAuthenticationCode := TelegramAuthenticationCode;
Telegram.OnAuthorizationStatus := TelegramAuthorizationStatus;
Telegram.OnMessageText := TelegramMessageText;
Telegram.Active := True;
end;
procedure TForm1.TelegramAuthenticationCode(Sender: TObject;
var Code: string);
begin
Code := InputBox('Telegram', 'Enter the code you received', '');
end;
procedure TForm1.TelegramAuthorizationStatus(Sender: TObject;
const Status: string);
begin
if Status = 'authorizationStateReady' then
Telegram.GetChats;
end;
procedure TForm1.TelegramMessageText(Sender: TObject;
MessageText: TsgcTelegramMessageText);
begin
Memo1.Lines.Add(MessageText.ChatId + ': ' + MessageText.Text);
Telegram.SendTextMessage(MessageText.ChatId, 'received!');
end;
// include: sgcLibs.hpp
TsgcTDLib_Telegram *Telegram = new TsgcTDLib_Telegram(this);
Telegram->Telegram->API->ApiId = "123456";
Telegram->Telegram->API->ApiHash = "your-api-hash";
Telegram->Telegram->PhoneNumber = "+34600111222";
Telegram->OnAuthenticationCode = TelegramAuthenticationCode;
Telegram->OnMessageText = TelegramMessageText;
Telegram->Active = true;
void __fastcall TForm1::TelegramAuthenticationCode(TObject *Sender,
UnicodeString &Code)
{
Code = InputBox("Telegram", "Enter the code you received", "");
}
void __fastcall TForm1::TelegramMessageText(TObject *Sender,
TsgcTelegramMessageText *MessageText)
{
Memo1->Lines->Add(MessageText->ChatId + ": " + MessageText->Text);
Telegram->SendTextMessage(MessageText->ChatId, "received!");
}
您最常使用的成员。
Telegram.API.ApiId 和 ApiHash 用于标识您的应用程序。用 Telegram.PhoneNumber 登录,或用 Telegram.BotToken 登录机器人账号。OnAuthenticationCode 请求登录验证码,OnAuthenticationPassword 用于 2FA 密码,OnRegisterUser 覆盖新账号注册。
OnConnectionStatus 和 OnAuthorizationStatus 报告原始的 TDLib 状态。Telegram.DatabaseDirectory 持久化会话,因此下次启动不会再次要求验证码。
SendTextMessage 和 SendRichTextMessage 用于文本,SendDocumentMessage、SendPhotoMessage 和 SendVideoMessage 用于媒体,SendMessageAlbum 用于分组媒体,SendInvoiceMessage 用于支付。
EditTextMessage、DeleteMessages、ForwardMessages 和 PinChatMessage 覆盖发送之后的消息生命周期。
CreatePrivateChat、CreateNewBasicGroupChat、CreateNewSupergroupChat 和 CreateNewSecretChat 创建会话。JoinChat 和 JoinChatByInviteLink 加入现有会话。
SearchChats、SearchMessages、SearchContacts 和 SearchPublicChats 用于查询网络。DownloadFile 下载 TDLib 引用的任意文件。
带回调和 URL 按钮的内联键盘,通过 AnswerCallbackQuery 应答,用 OnNewCallbackQuery 观察。回复键盘提供文本按钮、请求位置按钮和请求电话号码按钮。
AnswerInlineQuery 应答内联查询,AnswerPreCheckoutQuery 和 SendPaymentForm 驱动支付流程。
OnMessageText、OnMessageDocument、OnMessagePhoto 和 OnMessageVideo 送达带类型的消息,旁边还有 OnMessageSponsored、OnNewChat 和原始的 OnEvent。SendCustomRequest 发送任意 TDLib JSON 请求。
HTTP、SOCKS5 和 MTProto 代理,可将 TDLib 连接路由到您选择的网络路径。