Telegram Client 组件:sgcSocial | eSeGeCe

Telegram Client

TsgcTDLib_Telegram 是一个基于官方 TDLib(Telegram Database Library)构建的完整 Telegram 客户端。它既可以用用户账号登录,也可以用机器人令牌登录,因此覆盖的范围远超 Bot API:您自己的聊天、群组、频道、密聊、媒体、支付和搜索。在 Delphi 和 C++ Builder 中是同一个组件、同一套 API。

TsgcTDLib_Telegram

设置 Telegram.API.ApiIdApiHash,用 Telegram.PhoneNumberTelegram.BotToken 登录,接好消息事件,然后将 Active 设为 True。

组件类

TsgcTDLib_Telegram

API

官方 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_idapi_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.ApiIdApiHash 用于标识您的应用程序。用 Telegram.PhoneNumber 登录,或用 Telegram.BotToken 登录机器人账号。OnAuthenticationCode 请求登录验证码,OnAuthenticationPassword 用于 2FA 密码,OnRegisterUser 覆盖新账号注册。

会话状态

OnConnectionStatusOnAuthorizationStatus 报告原始的 TDLib 状态。Telegram.DatabaseDirectory 持久化会话,因此下次启动不会再次要求验证码。

发送

SendTextMessageSendRichTextMessage 用于文本,SendDocumentMessageSendPhotoMessageSendVideoMessage 用于媒体,SendMessageAlbum 用于分组媒体,SendInvoiceMessage 用于支付。

管理消息

EditTextMessageDeleteMessagesForwardMessagesPinChatMessage 覆盖发送之后的消息生命周期。

聊天与群组

CreatePrivateChatCreateNewBasicGroupChatCreateNewSupergroupChatCreateNewSecretChat 创建会话。JoinChatJoinChatByInviteLink 加入现有会话。

搜索与文件

SearchChatsSearchMessagesSearchContactsSearchPublicChats 用于查询网络。DownloadFile 下载 TDLib 引用的任意文件。

键盘

带回调和 URL 按钮的内联键盘,通过 AnswerCallbackQuery 应答,用 OnNewCallbackQuery 观察。回复键盘提供文本按钮、请求位置按钮和请求电话号码按钮。

机器人与支付

AnswerInlineQuery 应答内联查询,AnswerPreCheckoutQuerySendPaymentForm 驱动支付流程。

事件与逃生舱

OnMessageTextOnMessageDocumentOnMessagePhotoOnMessageVideo 送达带类型的消息,旁边还有 OnMessageSponsoredOnNewChat 和原始的 OnEventSendCustomRequest 发送任意 TDLib JSON 请求。

代理

HTTP、SOCKS5 和 MTProto 代理,可将 TDLib 连接路由到您选择的网络路径。

继续探索

sgcSocial 概览两个组件、版本和授权方式一览。
功能矩阵:Telegram该组件的每一项能力,以表格形式呈现。
Telegram API 深度解析API 参考页面,附在线帮助和 PDF 链接。
博客:面向 Delphi 的 Telegram 客户端使用该组件构建 Telegram 客户端的完整演示。
博客:Android 上的 Telegram 客户端在 Android 上运行 TDLib 客户端。
博客:iOS 上的 Telegram 客户端在 iOS 上运行 TDLib 客户端。
超值之选:All-AccesseSeGeCe 全部产品,含高级支持,每年 €1,059 起。
查看 All-Access 价格

准备好开始了吗?

下载免费试用版,从 Delphi 或 C++ Builder 发送您的第一条 Telegram 消息。