Chuyển tới nội dung chính

Tài liệu API

Phần này cung cấp tổng quan ngắn gọn về các class và cấu trúc chính trong mezon-sdk. Để biết thông tin kiểu chi tiết, hãy tham khảo định nghĩa TypeScript trong mã nguồn SDK (src/interfaces/src/mezon-client/structures/).

MezonClient (MezonClient.ts)

Class chính để tương tác với API Mezon và các sự kiện thời gian thực. Nó quản lý kết nối, cache dữ liệu và xử lý sự kiện.

Thuộc tính chính

PropertyTypeMô tả
tokenstringToken xác thực của client.
clientIdstring | undefinedID của client đã đăng nhập (bot/người dùng), được gán sau khi xác thực.
hoststringHostname của máy chủ Mezon.
useSSLbooleanCho biết kết nối có dùng SSL/TLS hay không.
portstringCổng dùng cho kết nối.
loginBasePathstring | undefinedĐường dẫn cơ sở dùng cho xác thực ban đầu.
timeoutnumberChỉ đọc. Thời gian chờ tính bằng mili giây cho các yêu cầu API.
clansCacheManager<string, Clan>Trình quản lý cache cho tất cả clan mà client có quyền truy cập.
channelsCacheManager<string, TextChannel>Trình quản lý cache cho tất cả kênh mà client có quyền truy cập.

Thuộc tính private chính

PropertyTypeMô tả
apiClientMezonApiMột instance của MezonApi để thực hiện các lời gọi API trực tiếp.
socketManagerSocketManagerQuản lý kết nối WebSocket và vòng đời của nó.
channelManagerChannelManagerQuản lý các thao tác liên quan đến kênh, đặc biệt là kênh DM.
sessionManagerSessionManagerQuản lý phiên và xác thực của client.
eventManagerEventManagerXử lý đăng ký và phát các sự kiện.
messageQueueAsyncThrottleQueueHàng đợi giới hạn tốc độ để quản lý các yêu cầu gửi đi.
messageDBMessageDatabaseGiao diện tới cơ sở dữ liệu SQLite cục bộ để lưu trữ tin nhắn.

Phương thức chính

constructor(config: ClientConfigDto)

Khởi tạo một instance MezonClient mới.

ParameterTypeMô tả
configClientConfigDtoĐối tượng cấu hình cho client

Thuộc tính ClientConfigDto:

PropertyTypeBắt buộcMặc địnhMô tả
botIdstring-Bot ID từ Mezon Developer Portal
tokenstring-Bot token/API key để xác thực
hoststringKhông"gw.mezon.ai"Địa chỉ host của gateway Mezon
portstringKhông"443"Số cổng cho kết nối
useSSLbooleanKhôngtrueChỉ định có dùng kết nối SSL an toàn hay không
timeoutnumberKhông7000Thời gian chờ tính bằng mili giây cho các yêu cầu API
mmnApiUrlstringKhông"https://dong.mezon.ai/mmn-api/"Endpoint MMN API cho các thao tác chuyển token
zkApiUrlstringKhông"https://dong.mezon.ai/zk-api/"Endpoint ZK API cho các thao tác zero-knowledge proof

login(): Promise<string>

Xác thực client với dịch vụ Mezon, thiết lập kết nối WebSocket và khởi tạo tất cả manager cùng cache cần thiết. Phát sự kiện ready khi kết nối thành công.

sendToken(tokenEvent: APISentTokenRequest): Promise<any>

Gửi một lượng token chỉ định tới người dùng khác bằng Mezon Money Network (MMN) với zero-knowledge proof để bảo vệ quyền riêng tư.

ParameterTypeMô tả
tokenEventAPISentTokenRequestChi tiết của giao dịch chuyển token

Thuộc tính APISentTokenRequest:

PropertyTypeBắt buộcMô tả
sender_idstringKhôngID người gửi (mặc định là client ID nếu không cung cấp)
receiver_idstringID người nhận
amountnumberSố lượng token cần gửi
notestringKhôngGhi chú/tin nhắn tùy chọn cho giao dịch
sender_namestringKhôngTên hiển thị của người gửi
extra_attributestringKhôngMetadata bổ sung cho giao dịch
mmn_extra_infoobjectKhôngThông tin bổ sung dành riêng cho MMN

Giá trị trả về:

  • Trả về đối tượng có các thuộc tính ok: boolean, tx_hash: stringerror: string

Ghi chú:

  • SDK tự động xử lý tạo cặp khóa ephemeral, quản lý nonce và tạo zero-knowledge proof
  • Các thành phần này được khởi tạo trong quá trình login() và lưu lại cho các lần chuyển token sau
  • Số tiền được tự động quy đổi sang số chữ số thập phân đúng

getEphemeralKeyPair(): Promise<IEphemeralKeyPair>

Tạo cặp khóa ephemeral cho các giao dịch token an toàn.

Giá trị trả về:

  • Trả về { publicKey: string, privateKey: string }

getAddress(userId: string): Promise<string>

Lấy địa chỉ ví cho một user ID.

ParameterTypeMô tả
userIdstringUser ID cần lấy địa chỉ

Giá trị trả về:

  • Trả về địa chỉ ví của người dùng dưới dạng chuỗi

getZkProofs(data: ApiGetZkProofRequest): Promise<IZkProof>

Tạo zero-knowledge proof cho các giao dịch token bảo vệ quyền riêng tư.

ParameterTypeMô tả
dataApiGetZkProofRequestDữ liệu yêu cầu ZK proof

Thuộc tính ApiGetZkProofRequest:

PropertyTypeMô tả
user_idstringUser ID
jwtstringJWT token của phiên
addressstringĐịa chỉ ví
ephemeral_public_keystringKhóa công khai ephemeral

Giá trị trả về:

  • Trả về { proof: string, public_input: string }

getCurrentNonce(userId: string, tag?: 'latest' | 'pending'): Promise<{ nonce: number }>

Lấy nonce giao dịch hiện tại của người dùng.

ParameterTypeMặc địnhMô tả
userIdstring-User ID
tag'latest' | 'pending''pending'Nonce nào cần lấy

Giá trị trả về:

  • Trả về đối tượng chứa số nonce

getListFriends(limit?: number, state?: string, cursor?: string): Promise<any>

Lấy danh sách bạn bè của client.

ParameterTypeMặc địnhMô tả
limitnumber""(Tùy chọn) Số lượng bạn bè tối đa cần lấy.
statestring""(Tùy chọn) Trạng thái quan hệ bạn bè để lọc (ví dụ: "accepted").
cursorstring""(Tùy chọn) Con trỏ phân trang.

addFriend(username: string): Promise<any>

Gửi lời mời kết bạn tới người dùng theo username.

ParameterTypeMô tả
usernamestringUsername của người dùng cần thêm làm bạn bè.

acceptFriend(userId: string, username: string): Promise<any>

Chấp nhận lời mời kết bạn từ người dùng.

ParameterTypeMô tả
userIdstringID của người dùng có lời mời kết bạn cần chấp nhận.
usernamestringUsername của người dùng.

createDMchannel(userId: string): Promise<ApiChannelDescription | null>

Tạo kênh tin nhắn trực tiếp với một người dùng cụ thể.

ParameterTypeMô tả
userIdstringID của người dùng cần tạo kênh DM.

closeSocket(): void

Đóng kết nối WebSocket và đặt lại event manager.

initManager(basePath: string, sessionApi?: Session): void

Khởi tạo tất cả manager nội bộ sau khi xác thực. Được gọi tự động bởi login().

ParameterTypeMô tả
basePathstringURL cơ sở cho các yêu cầu API.
sessionApiSession(Tùy chọn) Phiên hiện có để khôi phục.

Xử lý sự kiện chính

Sự kiện tin nhắn

  • onChannelMessage(listener: (e: ChannelMessage) => void): this: Lắng nghe tin nhắn mới trong bất kỳ kênh/chủ đề nào mà client tham gia.

  • onMessageReaction(listener: (e: MessageReaction) => void): this: Lắng nghe khi reaction được thêm hoặc gỡ khỏi tin nhắn.

  • onMessageButtonClicked(listener: (e: MessageButtonClicked) => void): this: Lắng nghe khi người dùng nhấn nút trong tin nhắn embed.

  • onDropdownBoxSelected(listener: (e: DropdownBoxSelected) => void): this: Lắng nghe khi người dùng chọn một tùy chọn từ menu dropdown trong tin nhắn.

Sự kiện kênh

  • onChannelCreated(listener: (e: ChannelCreatedEvent) => void): this: Lắng nghe khi một kênh mới được tạo.

  • onChannelUpdated(listener: (e: ChannelUpdatedEvent) => void): this: Lắng nghe khi thông tin kênh hiện có được cập nhật.

  • onChannelDeleted(listener: (e: ChannelDeletedEvent) => void): this: Lắng nghe khi một kênh bị xóa.

Sự kiện người dùng & clan

  • onAddClanUser(listener: (e: AddClanUserEvent) => void): this: Lắng nghe khi người dùng được thêm vào clan.

  • onUserClanRemoved(listener: (e: UserClanRemovedEvent) => void): this: Lắng nghe khi người dùng bị gỡ hoặc rời clan.

  • onUserChannelAdded(listener: (e: UserChannelAddedEvent) => void): this: Lắng nghe khi người dùng được thêm vào kênh.

  • onUserChannelRemoved(listener: (e: UserChannelRemoved) => void): this: Lắng nghe khi người dùng bị gỡ khỏi kênh.

Sự kiện vai trò

  • onRoleEvent(listener: (e: RoleEvent) => void): this: Lắng nghe khi vai trò trong clan được tạo hoặc cập nhật.

  • onRoleAssign(listener: (e: RoleAssignedEvent) => void): this: Lắng nghe khi vai trò được gán cho người dùng.

Sự kiện thoại & streaming

  • onVoiceStartedEvent(listener: (e: VoiceStartedEvent) => void): this: Lắng nghe khi cuộc gọi thoại bắt đầu.

  • onVoiceEndedEvent(listener: (e: VoiceEndedEvent) => void): this: Lắng nghe khi cuộc gọi thoại kết thúc.

  • onVoiceJoinedEvent(listener: (e: VoiceJoinedEvent) => void): this: Lắng nghe khi người dùng tham gia cuộc gọi thoại.

  • onVoiceLeavedEvent(listener: (e: VoiceLeavedEvent) => void): this: Lắng nghe khi người dùng rời cuộc gọi thoại.

  • onStreamingJoinedEvent(listener: (e: StreamingJoinedEvent) => void): this: Lắng nghe khi người dùng tham gia stream.

  • onStreamingLeavedEvent(listener: (e: StreamingLeavedEvent) => void): this: Lắng nghe khi người dùng rời stream.

  • onWebrtcSignalingFwd(listener: (e: WebrtcSignalingFwd) => void): this: Lắng nghe sự kiện báo hiệu WebRTC, thường dùng cho cuộc gọi P2P.

Sự kiện khác

  • onTokenSend(listener: (e: TokenSentEvent) => void): this: Lắng nghe sự kiện chuyển token giữa người dùng.

  • onGiveCoffee(listener: (e: GiveCoffeeEvent) => void): this: Lắng nghe sự kiện "give coffee".

  • onClanEventCreated(listener: (e: CreateEventRequest) => void): this: Lắng nghe khi sự kiện clan mới được tạo.

  • onNotification(listener: (e: Notifications) => void): this: Lắng nghe thông báo đến cho client.

  • onQuickMenuEvent(listener: (e: QuickMenuEvent) => void): this: Lắng nghe sự kiện tương tác quick menu.

Session (session.ts, session_manager.ts)

Tài liệu API này mô tả các thành phần chính để xử lý phiên người dùng với máy chủ Mezon.

ISession Interface: Định nghĩa hợp đồng cho phiên người dùng, chứa token, thông tin hết hạn và chi tiết người dùng.

Session Class: Triển khai cụ thể của interface ISession. Cung cấp các phương thức để tạo, quản lý và cập nhật phiên người dùng từ JWT token.

Session Class

Thuộc tính chính

PropertyTypeMô tả
tokenstringJWT authorization token của phiên.
created_atnumberChỉ đọc. UNIX timestamp đánh dấu thời điểm phiên được tạo.
expires_atnumber?(Tùy chọn) UNIX timestamp khi token hết hạn.
refresh_expires_atnumber?(Tùy chọn) UNIX timestamp khi refresh_token hết hạn.
refresh_tokenstringToken dùng để lấy token phiên mới khi token hiện tại hết hạn.
user_idstring?(Tùy chọn) ID người dùng gắn với phiên này.
varsobject?(Tùy chọn) Đối tượng key-value các thuộc tính tùy chỉnh gắn với phiên.
api_urlstring?(Tùy chọn) URL cơ sở cho các yêu cầu API, được cung cấp khi xác thực.

Phương thức chính

constructor

new Session(apiSession: any): Khởi tạo một instance Session mới.

ParameterTypeMô tả
apiSessionanyĐối tượng chứa dữ liệu phiên, thường từ phản hồi xác thực. Phải có tokenrefresh_token.

new SessionManager(apiClient: MezonApi, session?: Session): Khởi tạo một instance SessionManager mới.

ParameterTypeMô tả
apiClientMezonApiInstance của class MezonApi dùng để thực hiện các yêu cầu xác thực.
sessionSession(Tùy chọn) Đối tượng Session hiện có để khôi phục.

Dành cho Session

isexpired(currenttime: number): boolean

Kiểm tra token phiên đã hết hạn so với thời gian được cung cấp hay chưa.

ParameterTypeMô tả
currenttimenumberUNIX timestamp hiện tại để so sánh với thời điểm hết hạn của phiên.

isrefreshexpired(currenttime: number): boolean

Kiểm tra refresh token đã hết hạn so với thời gian được cung cấp hay chưa.

ParameterTypeMô tả
currenttimenumberUNIX timestamp hiện tại để so sánh với thời điểm hết hạn của refresh token.

update(token: string, refreshToken: string): void

Cập nhật phiên với tokenrefreshToken mới. Phương thức này giải mã token để cập nhật thời gian hết hạn và các biến phiên khác.

ParameterTypeMô tả
tokenstringJWT session token mới.
refreshTokenstringJWT refresh token mới.

static restore(session: any): Session

Phương thức factory tĩnh tạo instance Session mới từ đối tượng phiên đã lưu trước đó. Hữu ích khi khôi phục phiên từ local storage.

ParameterTypeMô tả
sessionanyĐối tượng thuần đại diện cho phiên đã lưu.

SessionManager Class

SessionManager xử lý xác thực và quản lý vòng đời phiên.

Thuộc tính chính

PropertyTypeMô tả
apiClientMezonApiPrivate. API client dùng cho xác thực.
sessionSession?Private. Phiên đang hoạt động hiện tại, nếu có.

Phương thức chính

constructor(apiClient: MezonApi, session?: Session)

Khởi tạo một instance SessionManager mới.

ParameterTypeMô tả
apiClientMezonApiInstance của class MezonApi dùng để thực hiện các yêu cầu xác thực.
sessionSession?(Tùy chọn) Đối tượng Session hiện có để khôi phục.

authenticate(apiKey: string): Promise<Session>

Xác thực người dùng với máy chủ Mezon bằng API key. Khi thành công, tạo và lưu đối tượng Session mới.

ParameterTypeMô tả
apiKeystringAPI key dùng để xác thực.

logout(): Promise<boolean>

Đăng xuất người dùng đang xác thực bằng cách vô hiệu hóa session token và refresh token trên máy chủ.

getSession(): Session | undefined

Lấy đối tượng phiên đang được lưu.

TextChannel (TextChannel.ts)

Tài liệu API này mô tả các thành phần chính của class TextChannel, đại diện cho kênh giao tiếp dạng văn bản trong clan.

Thuộc tính chính

PropertyTypeMô tả
idstring?Định danh duy nhất của kênh.
namestring?Tên hiển thị của kênh.
is_privatebooleantrue nếu kênh là private, ngược lại false.
channel_typenumber?Loại kênh (ví dụ: văn bản thường, thread).
category_idstring?ID danh mục mà kênh thuộc về.
category_namestring?Tên danh mục mà kênh thuộc về.
parent_idstring?ID kênh cha, nếu đây là thread.
meeting_codestring?Mã meeting cho kênh thoại.
clanClanTham chiếu tới instance Clan cha.
messagesCacheManager<string, Message>Trình quản lý cache cho tin nhắn trong kênh này.

Thuộc tính private chính

PropertyTypeMô tả
socketManagerSocketManagerManager xử lý giao tiếp WebSocket.
messageQueueAsyncThrottleQueueHàng đợi quản lý tốc độ gửi tin nhắn.
messageDBMessageDatabaseGiao diện cơ sở dữ liệu để cache và truy xuất tin nhắn.

Phương thức chính

constructor(initChannelData, clan, socketManager, messageQueue, messageDB)

Khởi tạo một instance TextChannel mới.

ParameterTypeMô tả
initChannelDataApiChannelDescriptionĐối tượng chứa dữ liệu kênh ban đầu từ API.
clanClanĐối tượng Clan cha mà kênh này thuộc về.
socketManagerSocketManagerManager xử lý giao tiếp WebSocket.
messageQueueAsyncThrottleQueueHàng đợi quản lý tốc độ gửi tin nhắn.
messageDBMessageDatabaseGiao diện cơ sở dữ liệu để cache và truy xuất tin nhắn.

send(content, mentions?, attachments?, mention_everyone?, anonymous_message?, topic_id?, code?)

Gửi tin nhắn thường tới kênh. Yêu cầu được thêm vào hàng đợi để tránh vấn đề giới hạn tốc độ.

ParameterTypeMô tả
contentChannelMessageContentNội dung tin nhắn cần gửi.
mentionsArray<ApiMessageMention>(Tùy chọn) Mảng mention người dùng trong tin nhắn.
attachmentsArray<ApiMessageAttachment>(Tùy chọn) Mảng tệp đính kèm (ví dụ: ảnh, file).
mention_everyoneboolean(Tùy chọn) Có thông báo cho mọi người trong kênh hay không.
anonymous_messageboolean(Tùy chọn) Có gửi tin nhắn ẩn danh hay không.
topic_idstring(Tùy chọn) ID chủ đề (thread) mà tin nhắn thuộc về.
codenumber(Tùy chọn) Mã đặc biệt gắn với loại tin nhắn.

sendEphemeral(receiver_id, content, reference_message_id?, mentions?, attachments?, mention_everyone?, anonymous_message?, topic_id?, code?)

Gửi tin nhắn ephemeral, chỉ hiển thị với một người dùng cụ thể (receiver_id) trong kênh.

ParameterTypeMô tả
receiver_idstringID người dùng có thể thấy tin nhắn.
contentanyNội dung tin nhắn ephemeral.
reference_message_idstring?(Tùy chọn) ID tin nhắn cần trả lời.
mentionsArray<ApiMessageMention>?(Tùy chọn) Mảng mention người dùng.
attachmentsArray<ApiMessageAttachment>?(Tùy chọn) Mảng tệp đính kèm.
mention_everyoneboolean?(Tùy chọn) Có parse mention everyone hay không.
anonymous_messageboolean?(Tùy chọn) Có gửi tin nhắn ẩn danh hay không.
topic_idstring?(Tùy chọn) ID chủ đề (thread) mà tin nhắn thuộc về.
codenumber?(Tùy chọn) Mã đặc biệt gắn với loại tin nhắn.

addQuickMenuAccess(body: ApiQuickMenuAccessPayload): Promise<any>

Thêm quyền truy cập quick menu cho kênh.

ParameterTypeMô tả
bodyApiQuickMenuAccessPayloadPayload cấu hình quick menu.

deleteQuickMenuAccess(botId?: string): Promise<any>

Gỡ quyền truy cập quick menu cho kênh.

ParameterTypeMô tả
botIdstring?(Tùy chọn) Bot ID. Mặc định là client ID.

playMedia(url: string, participantIdentity: string, participantName: string, name: string): Promise<any>

Phát media trong kênh thoại.

ParameterTypeMô tả
urlstringURL của media cần phát.
participantIdentitystringĐịnh danh người tham gia.
participantNamestringTên hiển thị của người tham gia.
namestringTên/tiêu đề của media.

Message (Message.ts)

Tài liệu API này mô tả các thành phần chính để đại diện và tương tác với từng tin nhắn trong kênh văn bản.

MessageInitData Interface

Định nghĩa cấu trúc đối tượng dữ liệu cần thiết để khởi tạo instance Message.

PropertyTypeMô tả
idstringĐịnh danh duy nhất của tin nhắn.
clan_idstringID clan mà tin nhắn thuộc về.
channel_idstringID kênh mà tin nhắn thuộc về.
sender_idstringID người dùng gửi tin nhắn.
contentChannelMessageContentNội dung chính của tin nhắn.
mentionsApiMessageMention[]?(Tùy chọn) Mảng mention người dùng.
attachmentsApiMessageAttachment[]?(Tùy chọn) Mảng tệp đính kèm.
reactionsApiMessageReaction[]?(Tùy chọn) Mảng reaction trên tin nhắn.
referencesApiMessageRef[]?(Tùy chọn) Mảng tin nhắn được tham chiếu.
topic_idstring?(Tùy chọn) ID chủ đề mà tin nhắn nằm trong.
create_time_secondsnumber?(Tùy chọn) UNIX timestamp khi tin nhắn được tạo.

Message Class

Đại diện một tin nhắn trong kênh, chứa nội dung và metadata. Cung cấp các phương thức thực hiện hành động trên tin nhắn như trả lời, cập nhật, reaction và xóa.

Thuộc tính chính

PropertyTypeMô tả
idstringĐịnh danh duy nhất của tin nhắn.
sender_idstringID người dùng gửi tin nhắn.
contentChannelMessageContentNội dung chính của tin nhắn.
mentionsApiMessageMention[](Tùy chọn) Mảng mention người dùng.
attachmentsApiMessageAttachment[](Tùy chọn) Mảng tệp đính kèm.
reactionsApiMessageReaction[](Tùy chọn) Mảng reaction trên tin nhắn.
referencesApiMessageRef[](Tùy chọn) Mảng tin nhắn mà tin nhắn này tham chiếu.
topic_idstring(Tùy chọn) ID chủ đề (thread) mà tin nhắn thuộc về.
create_time_secondsnumber(Tùy chọn) UNIX timestamp khi tin nhắn được tạo.
channelTextChannelTham chiếu tới instance TextChannel cha.

Phương thức chính

constructor(initMessageData, channel, socketManager, messageQueue)

Khởi tạo một instance Message mới.

ParameterTypeMô tả
initMessageDataMessageInitDataĐối tượng chứa dữ liệu tin nhắn ban đầu.
channelTextChannelĐối tượng TextChannel cha nơi tin nhắn tồn tại.
socketManagerSocketManagerManager xử lý giao tiếp WebSocket.
messageQueueAsyncThrottleQueueHàng đợi quản lý tốc độ các hành động gửi đi trên tin nhắn.

reply(content, mentions?, attachments?, mention_everyone?, anonymous_message?, topic_id?, code?)

Gửi tin nhắn mới trong cùng kênh, cụ thể là trả lời instance tin nhắn này.

ParameterTypeMô tả
contentChannelMessageContentNội dung tin nhắn trả lời.
mentionsArray<ApiMessageMention>(Tùy chọn) Mảng mention người dùng cần thêm.
attachmentsArray<ApiMessageAttachment>(Tùy chọn) Mảng tệp đính kèm cần thêm.
mention_everyoneboolean(Tùy chọn) Có thông báo cho mọi người trong kênh hay không.
anonymous_messageboolean(Tùy chọn) Có gửi trả lời ẩn danh hay không.
topic_idstring(Tùy chọn) ID chủ đề cho trả lời. Mặc định là chủ đề của tin nhắn gốc.
codenumber(Tùy chọn) Mã đặc biệt cho loại tin nhắn.

update(content, mentions?, attachments?, topic_id?)

Cập nhật nội dung tin nhắn này.

ParameterTypeMô tả
contentChannelMessageContentNội dung mới cho tin nhắn.
mentionsArray<ApiMessageMention>?(Tùy chọn) Mention đã cập nhật.
attachmentsArray<ApiMessageAttachment>?(Tùy chọn) Tệp đính kèm đã cập nhật.
topic_idstring?(Tùy chọn) Topic ID mới cho tin nhắn.

react(dataReactMessage: ReactMessagePayload): Promise<any>

Thêm hoặc gỡ reaction khỏi tin nhắn này.

ParameterTypeMô tả
dataReactMessageReactMessagePayloadĐối tượng chứa chi tiết reaction, như emoji và thêm hay gỡ.

delete(): Promise<any>

Xóa tin nhắn này khỏi kênh.

User (User.ts)

Tài liệu API này mô tả các thành phần chính để đại diện người dùng và tương tác với họ.

UserInitData Interface

Định nghĩa cấu trúc đối tượng dữ liệu cần thiết để khởi tạo instance User.

PropertyTypeMô tả
idstringĐịnh danh duy nhất của người dùng.
usernamestring?(Tùy chọn) Username toàn cục của người dùng.
clan_nickstring?(Tùy chọn) Biệt danh của người dùng trong ngữ cảnh clan.
clan_avatarstring?(Tùy chọn) URL avatar của người dùng trong ngữ cảnh clan.
display_namestring?(Tùy chọn) Tên hiển thị công khai của người dùng.
avartarstring?(Tùy chọn) URL avatar toàn cục của người dùng.
dmChannelIdstring?(Tùy chọn) ID kênh DM với người dùng này.

User Class

Đại diện người dùng trong hệ thống, lưu thông tin hồ sơ và cung cấp phương thức tương tác trực tiếp như gửi tin nhắn trực tiếp hoặc chuyển token.

Thuộc tính chính

PropertyTypeMô tả
idstringĐịnh danh duy nhất của người dùng.
usernamestringUsername toàn cục của người dùng.
clan_nickstringBiệt danh của người dùng trong ngữ cảnh clan.
clan_avatarstringURL avatar của người dùng trong ngữ cảnh clan.
display_namestringTên hiển thị công khai của người dùng.
avartarstringURL avatar toàn cục của người dùng.
dmChannelIdstringID kênh tin nhắn trực tiếp với người dùng này.

Thuộc tính private chính

PropertyTypeMô tả
clanClanNgữ cảnh clan mà instance người dùng này thuộc về.
channelManagerChannelManager?(Tùy chọn) Manager thao tác kênh, dùng để tạo DM.
messageQueueAsyncThrottleQueueHàng đợi giới hạn tốc độ cho các yêu cầu gửi đi.
socketManagerSocketManagerManager xử lý giao tiếp WebSocket.

Phương thức chính

constructor(initUserData, clan, messageQueue, socketManager, channelManager?)

Khởi tạo một instance User mới.

ParameterTypeMô tả
initUserDataUserInitDataĐối tượng chứa dữ liệu người dùng ban đầu.
clanClanĐối tượng Clan mà instance người dùng này gắn với.
messageQueueAsyncThrottleQueueHàng đợi quản lý tốc độ gửi tin nhắn.
socketManagerSocketManagerManager xử lý giao tiếp WebSocket.
channelManagerChannelManager(Tùy chọn) Manager xử lý thao tác kênh, bắt buộc khi tạo DM.

sendToken(sendTokenData: SendTokenData): Promise<any>

Gửi một lượng token chỉ định tới người dùng này.

ParameterTypeMô tả
sendTokenDataSendTokenDataĐối tượng chứa amountnote tùy chọn cho giao dịch.

sendDM(content: ChannelMessageContent, code?: number): Promise<any>

Gửi tin nhắn trực tiếp tới người dùng này. Nếu chưa có kênh DM, sẽ cố tạo kênh trước.

ParameterTypeMô tả
contentChannelMessageContentNội dung tin nhắn cần gửi.
codenumber?(Tùy chọn) Mã đặc biệt gắn với loại tin nhắn.

createDmChannel(): Promise<ApiChannelDescription | null>

Tạo rõ ràng kênh tin nhắn trực tiếp mới với người dùng này.

listTransactionDetail(transactionId: string): Promise<any>

Lấy chi tiết của một giao dịch cụ thể liên quan đến người dùng.

ParameterTypeMô tả
transactionIdstringĐịnh danh duy nhất của giao dịch cần lấy.

Clan (Clan.ts)

Tài liệu API này mô tả các thành phần chính để đại diện "Clan" (hoặc server/guild) và quản lý tài nguyên như kênh, người dùng và vai trò.

ClanInitData Interface

Định nghĩa cấu trúc đối tượng dữ liệu cần thiết để khởi tạo instance Clan.

PropertyTypeMô tả
idstringĐịnh danh duy nhất của clan.
namestringTên hiển thị của clan.
welcome_channel_idstringID kênh chào mừng mặc định.

Clan Class

Đại diện clan, container cấp cao nhất cho kênh và người dùng của cộng đồng. Cung cấp phương thức lấy và quản lý các tài nguyên này.

Thuộc tính chính

PropertyTypeMô tả
idstringĐịnh danh duy nhất của clan.
namestringTên hiển thị của clan.
welcome_channel_idstringID kênh chào mừng mặc định.
channelsCacheManager<string, TextChannel>Trình quản lý cache cho các kênh thuộc clan này.
usersCacheManager<string, User>Trình quản lý cache cho thành viên clan.
sessionTokenstringSession token dùng cho các yêu cầu API trong ngữ cảnh clan này.
apiClientMezonApiInstance API client dùng để gửi yêu cầu.

Thuộc tính private chính

PropertyTypeMô tả
_channelsLoadedbooleanPrivate. Trạng thái cache kênh đã tải.
_loadingPromisePromise<void>?Private. Promise cho quá trình tải kênh đang chạy.
clientMezonClientPrivate. Tham chiếu tới instance client chính.
socketManagerSocketManagerPrivate. Trình quản lý WebSocket.
messageQueueAsyncThrottleQueuePrivate. Hàng đợi tin nhắn giới hạn tốc độ.
messageDBMessageDatabasePrivate. Giao diện cơ sở dữ liệu tin nhắn cục bộ.

Phương thức chính

constructor(initClanData, client, apiClient, socketManager, sessionToken, messageQueue, messageDB)

Khởi tạo một instance Clan mới.

ParameterTypeMô tả
initClanDataClanInitDataĐối tượng chứa dữ liệu clan ban đầu.
clientMezonClientInstance MezonClient chính.
apiClientMezonApiInstance API client để gửi yêu cầu máy chủ.
socketManagerSocketManagerManager xử lý giao tiếp WebSocket.
sessionTokenstringSession token dùng để xác thực lời gọi API.
messageQueueAsyncThrottleQueueHàng đợi quản lý tốc độ gửi tin nhắn.
messageDBMessageDatabaseGiao diện cơ sở dữ liệu để cache và truy xuất tin nhắn.

getClientId(): string | undefined

Trả về client ID (user ID của bot) từ instance client chính.

loadChannels(): Promise<void>

Lấy và cache tất cả kênh văn bản thuộc clan từ máy chủ. Phương thức này chỉ chạy một lần để tránh lời gọi API trùng lặp.

listChannelVoiceUsers(channel_id?, channel_type?, limit?, state?, cursor?): Promise<ApiVoiceChannelUserList>

Lấy danh sách người dùng hiện có trong một kênh thoại cụ thể trong clan.

ParameterTypeMặc địnhMô tả
channel_idstring?""(Tùy chọn) ID kênh thoại.
channel_typenumber?ChannelType.CHANNEL_TYPE_GMEET_VOICE(Tùy chọn) Loại kênh thoại.
limitnumber?500(Tùy chọn) Số người dùng tối đa trả về (từ 1 đến 500).
statenumber?undefined(Tùy chọn) Bộ lọc trạng thái cho danh sách người dùng.
cursorstring?undefined(Tùy chọn) Con trỏ phân trang kết quả.

updateRole(roleId: string, request: MezonUpdateRoleBody): Promise<boolean>

Cập nhật thuộc tính của một vai trò cụ thể trong clan.

ParameterTypeMô tả
roleIdstringĐịnh danh duy nhất của vai trò cần cập nhật.
requestMezonUpdateRoleBodyĐối tượng chứa thuộc tính mới cho vai trò.

listRoles(limit?: string, state?: string, cursor?: string): Promise<ApiRoleListEventResponse>

Lấy danh sách tất cả vai trò trong clan.

ParameterTypeMô tả
limitstring(Tùy chọn) Số vai trò tối đa trả về.
statestring(Tùy chọn) Bộ lọc trạng thái cho danh sách vai trò.
cursorstring(Tùy chọn) Con trỏ phân trang kết quả.

Common Interfaces and Types

ChannelMessageContent

Định nghĩa cấu trúc nội dung tin nhắn.

PropertyTypeMô tả
tstring?(Tùy chọn) Nội dung văn bản chính của tin nhắn.
hgHashtagOnMessage[]?(Tùy chọn) Mảng tham chiếu hashtag.
ejEmojiOnMessage[]?(Tùy chọn) Mảng tham chiếu emoji.
lkLinkOnMessage[]?(Tùy chọn) Mảng tham chiếu liên kết.
mkMarkdownOnMessage[]?(Tùy chọn) Mảng định dạng markdown.
vkLinkVoiceRoomOnMessage[]?(Tùy chọn) Mảng liên kết phòng thoại.
embedIInteractiveMessageProps[]?(Tùy chọn) Mảng nội dung embed.
componentsIMessageActionRow[]?(Tùy chọn) Mảng thành phần tương tác.

SendTokenData

Định nghĩa cấu trúc dữ liệu chuyển token.

PropertyTypeMô tả
amountnumberSố lượng token cần gửi.
notestring?(Tùy chọn) Ghi chú hoặc mô tả cho giao dịch.
extra_attributestring?(Tùy chọn) Metadata bổ sung cho giao dịch.

TokenSentEvent

Đại diện sự kiện chuyển token.

PropertyTypeMô tả
sender_idstring?(Tùy chọn) ID người dùng gửi token.
sender_namestring?(Tùy chọn) Tên người dùng gửi token.
receiver_idstringID người dùng nhận token.
amountnumberSố lượng token được chuyển.
notestring?(Tùy chọn) Ghi chú kèm theo giao dịch.
extra_attributestring?(Tùy chọn) Metadata bổ sung.
transaction_idstring?(Tùy chọn) Định danh giao dịch duy nhất.

ReactMessagePayload

Định nghĩa cấu trúc reaction tin nhắn.

PropertyTypeMô tả
idstring?(Tùy chọn) Định danh duy nhất của reaction.
emoji_idstringĐịnh danh emoji.
emojistringKý tự hoặc chuỗi emoji.
countnumberSố lượng reaction này (do máy chủ quản lý).
action_deleteboolean?(Tùy chọn) true để gỡ, false để thêm (mặc định).

ApiChannelDescription

Đại diện metadata và thuộc tính kênh.

PropertyTypeMô tả
channel_idstring?(Tùy chọn) Định danh duy nhất của kênh.
channel_labelstring?(Tùy chọn) Tên hiển thị của kênh.
clan_idstring?(Tùy chọn) ID clan mà kênh thuộc về.
typenumber?(Tùy chọn) Loại kênh.
channel_privatenumber?(Tùy chọn) Kênh private (1) hay không (0).
category_idstring?(Tùy chọn) ID danh mục.
category_namestring?(Tùy chọn) Tên danh mục.
parent_idstring?(Tùy chọn) ID kênh cha.
meeting_codestring?(Tùy chọn) Mã meeting cho kênh thoại.
creator_idstring?(Tùy chọn) ID người tạo kênh.
create_time_secondsnumber?(Tùy chọn) Timestamp tạo.
update_time_secondsnumber?(Tùy chọn) Timestamp cập nhật cuối.

Constants and Enums

ChannelType

Định nghĩa các loại kênh trong Mezon.

ConstantValueMô tả
CHANNEL_TYPE_CHANNEL1Kênh văn bản thường
CHANNEL_TYPE_GROUP2Kênh nhóm
CHANNEL_TYPE_DM3Kênh tin nhắn trực tiếp
CHANNEL_TYPE_GMEET_VOICE4Kênh thoại Google Meet
CHANNEL_TYPE_FORUM5Kênh forum
CHANNEL_TYPE_STREAMING6Kênh streaming
CHANNEL_TYPE_THREAD7Kênh thread
CHANNEL_TYPE_APP8Kênh ứng dụng
CHANNEL_TYPE_ANNOUNCEMENT9Kênh thông báo
CHANNEL_TYPE_MEZON_VOICE10Kênh thoại native Mezon

ChannelStreamMode

Định nghĩa chế độ streaming cho các loại kênh khác nhau.

ConstantValueMô tả
STREAM_MODE_CHANNEL2Chế độ stream kênh
STREAM_MODE_GROUP3Chế độ stream nhóm
STREAM_MODE_DM4Chế độ stream tin nhắn trực tiếp
STREAM_MODE_CLAN5Chế độ stream clan
STREAM_MODE_THREAD6Chế độ stream thread

TypeMessage

Định nghĩa các loại tin nhắn và mục đích của chúng.

ConstantValueMô tả
Chat0Tin nhắn chat thường
ChatUpdate1Tin nhắn chat đã cập nhật
ChatRemove2Tin nhắn chat đã xóa
Typing3Chỉ báo đang gõ
Indicator4Chỉ báo trạng thái
Welcome5Tin nhắn chào mừng
CreateThread6Tin nhắn tạo thread
CreatePin7Tin nhắn tạo ghim
MessageBuzz8Tin nhắn buzz/thông báo
Topic9Tin nhắn chủ đề
AuditLog10Tin nhắn audit log
SendToken11Tin nhắn chuyển token
Ephemeral12Tin nhắn ephemeral (tạm thời)

Events

Tất cả loại sự kiện cho trình lắng nghe sự kiện MezonClient.

Event NameMô tả
ChannelMessageTin nhắn mới nhận trong kênh
MessageReactionReaction được thêm/gỡ khỏi tin nhắn
UserChannelRemovedNgười dùng bị gỡ khỏi kênh
UserClanRemovedNgười dùng bị gỡ khỏi clan
UserChannelAddedNgười dùng được thêm vào kênh
ChannelCreatedKênh mới được tạo
ChannelDeletedKênh bị xóa
ChannelUpdatedThông tin kênh được cập nhật
RoleEventVai trò được tạo hoặc cập nhật
GiveCoffeeCoffee được tặng giữa người dùng
RoleAssignVai trò được gán cho người dùng
AddClanUserNgười dùng được thêm vào clan
TokenSendChuyển token giữa người dùng
ClanEventCreatedSự kiện clan được tạo
MessageButtonClickedNút tương tác được nhấn
StreamingJoinedEventNgười dùng tham gia phiên streaming
StreamingLeavedEventNgười dùng rời phiên streaming
DropdownBoxSelectedTùy chọn dropdown được chọn
WebrtcSignalingFwdBáo hiệu WebRTC cho cuộc gọi thoại/video
VoiceStartedEventPhiên thoại bắt đầu
VoiceEndedEventPhiên thoại kết thúc
VoiceJoinedEventNgười dùng tham gia kênh thoại
VoiceLeavedEventNgười dùng rời kênh thoại
NotificationsThông báo chung được nhận
QuickMenuTương tác quick menu

Ghi chú sử dụng

  • Giới hạn tốc độ: Mọi thao tác gửi tin nhắn dùng AsyncThrottleQueue để tránh giới hạn tốc độ.
  • Cache: SDK dùng CacheManager rộng rãi để truy cập dữ liệu hiệu quả và giảm lời gọi API.
  • Xác thực: Phân giải endpoint động đảm bảo định tuyến máy chủ tối ưu sau khi xác thực.
  • Xử lý sự kiện: Mọi sự kiện được xử lý và cache tự động phù hợp.
  • Xử lý lỗi: Hầu hết phương thức trả về promise cần được xử lý đúng bằng khối try-catch.
  • TypeScript: SDK được gõ kiểu đầy đủ bằng TypeScript để trải nghiệm phát triển tốt hơn.