我是靠谱客的博主 专一日记本,最近开发中收集的这篇文章主要介绍Telegram入门基本常识updates得到聊天信息CMake C++ projects for telegram Client参考,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Telegram入门

  • 基本常识
    • 词汇
    • 聊天消息去向
    • 用户认证
  • updates
  • 得到聊天信息
  • CMake C++ projects for telegram Client
    • Td::TdStatic
      • Client Class
    • Td::TdJson,Td::TdJsonStatic
      • td_json_client.h
      • td_log.h
    • Td::TdCoreStatic
      • ClientActor Class
  • 参考

基本常识

词汇

telegram最主要的对象就是消息,目前为止有不止35种类型的消息内容,主要有:

  • 文本消息( messageText)
  • 图片消息(messagePhoto)
  • 截图(messageScreenshotTaken )

6种不同的成员状态:

  • chatMemberStatusAdministrator
  • chatMemberStatusBanned,
  • chatMemberStatusCreator,
  • chatMemberStatusLeft,
  • chatMemberStatusMember
  • chatMemberStatusRestricted.

四种不同的聊天形式:

  • private chats
  • basic groups
  • supergroups
  • secret chats

聊天消息去向

  • The correct order of chats in the chat list is maintained by TDLib, so the Application only needs to listen to updates that change the chat.order field and sort all chats by the pair (chat.order, chat.id) in a given chat.list.
  • TDLib通过updates向应用传递数据

用户认证

当用户需要认证时,TDLib向应用程序发送一个 updateAuthorizationState 为了描述目前的认证状态AuthorizationState
应用收到的第一种验证类型是authorizationStateWaitTdlibParameters,应用通过setTdlibParameters方法来给TDLib提供初始化参数。参数主要有:

  • api_id
  • api_hash
  • database_directory
  • use_message_database
  • use_secret_chats
  • system_language_code
  • device_model
  • system_version

如果验证成功,应用会收到新的updateAuthorizationState;如果失败,收到的updateAuthorizationState不会更新。
应用收到的第二种认证状态是authorizationStateWaitEncryptionKey。当收到此状态信息时,应用必须通过checkDatabaseEncryptionKey提供数据库加密秘钥。
完成这些认证之后,应用将会收到authorizationStateReady,意味着认证成功并可以进行request操作。

updates

updates列表和被处理的方法

  • updateAuthorizationState
  • updateNewChat:当有新的chat时,会收到此update。当应用收到chat_id时,就不需要用getChat请求去获得chat对象,会有一个缓存接收chat对象
  • updateUser:
  • updateBasicGroup
  • updateSupergroup
  • updateSecretChat
  • updateNewMessage
  • updateMessageSendSucceeded
  • updateMessageContent
  • updateFile

得到聊天信息

应用可以通过getChatHistory 方法得到一个chat中的信息。信息会以逆时间顺序返回(也就是message_id的降序)。应用传递from_message_id=0会得到最后一个消息。如果应用需要更多的消息,需要调整from_message_id参数并且不断请求。

CMake C++ projects for telegram Client

Td::TdStatic

一般方法的c++接口静态库

Client Class

通用的使用模式:

std::shared_ptr<td::Client> client = std::make_shared<td::Client>();
// somehow share the client with other threads, which will be able to send requests via client->send
const double WAIT_TIMEOUT = 10.0;  // seconds
bool is_closed = false;            // should be set to true, when updateAuthorizationState with
                                   // authorizationStateClosed is received
while (!is_closed) {
  auto response = client->receive(WAIT_TIMEOUT);
  if (response.object == nullptr) {
    continue;
  }
  if (response.id == 0) {
    // process response.object as an incoming update of type td_api::Update
  } else {
    // process response.object as an answer to a sent request with id response.id
  }
}
  1. 构造和析构函数:
  • Client() 创建TDLib客户端
  • ~Client() 销毁Client对象
  • Client(Client&& other) 拷贝构造函数
  1. 函数方法
  • void send(Request&& request)  从任何线程向TDLib发送请求
  • Response receive ( double timeout )  收到TDLib的updates或者response,但是该函数不能同时由两个不同的线程调用。timeout是允许等待的最大时间,超过则返回空指针。
  • static Response execute(Request&& request) 同步执行TDLib请求,返回请求的response

Td::TdJson,Td::TdJsonStatic

这是JSON接口的动态和静态版本

td_json_client.h

  • 通过td_json_client_create创建client实例。
  • 使用td_json_client_send 发送requests
  • td_json_client_receive 接收 updatesresponse,不能同时被两个线程调用
  • 使用td_json_client_execute执行TDLib请求可以实现线程间的同步
  • 使用td_json_client_destroy销毁client

通用使用模式:

void *client = td_json_client_create();
// somehow share the client with other threads, which will be able to send requests via td_json_client_send
const double WAIT_TIMEOUT = 10.0; // seconds
int is_closed = 0;  // should be set to 1, when updateAuthorizationState with authorizationStateClosed is received
while (!is_closed) {
  const char *result = td_json_client_receive(client, WAIT_TIMEOUT);
  if (result) {
    // parse the result as JSON object and process it as an incoming update or an answer to a previously sent request
  }
}
td_json_client_destroy(client);

函数接口:

void * 	td_json_client_create ()

void 	td_json_client_send (void *client, const char *request)
 
const char * 	td_json_client_receive (void *client, double timeout)
 
const char * 	td_json_client_execute (void *client, const char *request)
 
void 	td_json_client_destroy (void *client)

td_log.h

管理TDLib内部日志记录的C接口

typedef void(* td_log_fatal_error_callback_ptr) (const char *error_message)

当致命错误发生时,调用该回调函数。error_message空终止字符串,描述刚发生的错误。

TDJSON_DEPRECATED_EXPORT int td_set_log_file_path	(	const char * 	file_path	)	

日志默认写到stderr或者一个操作系统具体日志,使用该方法可以重设日志路径。
成功返回1,不成功返回0

TDJSON_DEPRECATED_EXPORT void td_set_log_max_file_size	(	long long 	max_file_size	)	

设置文件的最大大小

TDJSON_DEPRECATED_EXPORT void td_set_log_verbosity_level	(	int 	new_verbosity_level	)	

设定日志的详细程度
等级0:致命错误。等级1:错误。等级2:警告和debug警告。等级3:信息性的。等级4:debug。等级5:详细debug。6-1024:更详细的记录。

void td_set_log_fatal_error_callback	(	td_log_fatal_error_callback_ptr 	callback	)	

当发生致命错误时,callback 就会被调用。当移除调用时,将NULL传递给callback。

Td::TdCoreStatic

具有低级C ++接口的静态库,主要供内部使用

ClientActor Class

这个接口比Client类接口更加灵活,然而,对于大多数使用,Client已经够用了。

  1. 构造和析构函数
ClientActor(unique_ptr< TdCallback > callback)
\callback:Callback for outgoing notifications from TDLib.
~ClientActor()

ClientActor(ClientActor&& other)	
\拷贝构造
  1. 函数方法
void request(uint64 id, td_api::object_ptr< td_api::Function > request )
//向TDLib发送一个请求,答案将通过callback接收
//id:  request标识,必须为正数;   request:请求

static td_api::object_ptr< td_api::Object > execute (td_api::object_ptr< td_api::Function > request)
//执行request请求,返回请求回应response

参考

https://core.telegram.org/tdlib/getting-started
https://core.telegram.org/tdlib/docs/classtd_1_1_client.html
https://github.com/tdlib/td#using-cxx
https://core.telegram.org/tdlib/docs/td__json__client_8h.html#a1fea1f986bf950d19eee3032c24cce83

最后

以上就是专一日记本为你收集整理的Telegram入门基本常识updates得到聊天信息CMake C++ projects for telegram Client参考的全部内容,希望文章能够帮你解决Telegram入门基本常识updates得到聊天信息CMake C++ projects for telegram Client参考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部