Skip to main content

Danh sách Events

Danh sách đầy đủ các events có thể lắng nghe trong Nezon, cùng với type definitions và ví dụ sử dụng.

Tổng quan

Tất cả events được định nghĩa trong Events enum từ mezon-sdk. Bạn có thể sử dụng @On hoặc @Once decorator để lắng nghe các events này.

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.ChannelMessage)
async onMessage(@EventPayload() payload: Nezon.ChannelMessage) {
// Handle event
}

Danh sách Events

ChannelMessage

Lắng nghe tin nhắn mới trong channel.

Type: Nezon.ChannelMessage

Ví dụ:

import { On, ChannelMessagePayload, MessageContent } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.ChannelMessage)
async onMessage(
@ChannelMessagePayload() payload: Nezon.ChannelMessage,
@MessageContent() content: string | undefined,
) {
console.log('New message:', content);
}

MessageReaction

Lắng nghe khi user react vào message.

Type: Nezon.MessageReactionPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.MessageReaction)
async onReaction(@EventPayload() payload: Nezon.MessageReactionPayload) {
console.log('Reaction:', payload.emoji_id);
console.log('Message ID:', payload.message_id);
console.log('User ID:', payload.user_id);
}

UserChannelRemoved

Lắng nghe khi user bị xóa khỏi channel.

Type: Nezon.UserChannelRemovedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.UserChannelRemoved)
async onUserRemoved(@EventPayload() payload: Nezon.UserChannelRemovedPayload) {
console.log('Channel ID:', payload.channel_id);
console.log('User IDs:', payload.user_ids);
console.log('Clan ID:', payload.clan_id);
}

UserClanRemoved

Lắng nghe khi user bị xóa khỏi clan.

Type: Nezon.UserClanRemovedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.UserClanRemoved)
async onUserClanRemoved(@EventPayload() payload: Nezon.UserClanRemovedPayload) {
console.log('Clan ID:', payload.clan_id);
console.log('User IDs:', payload.user_ids);
}

UserChannelAdded

Lắng nghe khi user được thêm vào channel.

Type: Nezon.UserChannelAddedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.UserChannelAdded)
async onUserAdded(@EventPayload() payload: Nezon.UserChannelAddedPayload) {
console.log('Channel:', payload.channel_desc);
console.log('Users:', payload.users);
console.log('Clan ID:', payload.clan_id);
}

ChannelCreated

Lắng nghe khi channel được tạo.

Type: Nezon.ChannelCreatedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.ChannelCreated)
async onChannelCreated(@EventPayload() payload: Nezon.ChannelCreatedPayload) {
console.log('New channel:', payload.channel_desc);
console.log('Clan ID:', payload.clan_id);
}

ChannelDeleted

Lắng nghe khi channel bị xóa.

Type: Nezon.ChannelDeletedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.ChannelDeleted)
async onChannelDeleted(@EventPayload() payload: Nezon.ChannelDeletedPayload) {
console.log('Deleted channel ID:', payload.channel_id);
console.log('Clan ID:', payload.clan_id);
}

ChannelUpdated

Lắng nghe khi channel được cập nhật.

Type: Nezon.ChannelUpdatedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.ChannelUpdated)
async onChannelUpdated(@EventPayload() payload: Nezon.ChannelUpdatedPayload) {
console.log('Updated channel:', payload.channel_desc);
console.log('Clan ID:', payload.clan_id);
}

RoleEvent

Lắng nghe khi role được tạo hoặc cập nhật.

Type: Nezon.RoleEventPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.RoleEvent)
async onRoleEvent(@EventPayload() payload: Nezon.RoleEventPayload) {
console.log('Role ID:', payload.role_id);
console.log('Clan ID:', payload.clan_id);
}

GiveCoffee

Lắng nghe khi user tặng coffee cho nhau.

Type: Nezon.GiveCoffeePayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.GiveCoffee)
async onGiveCoffee(@EventPayload() payload: Nezon.GiveCoffeePayload) {
console.log('From:', payload.from_user_id);
console.log('To:', payload.to_user_id);
console.log('Amount:', payload.amount);
}

RoleAssign

Lắng nghe khi role được gán cho user.

Type: Nezon.RoleAssignPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.RoleAssign)
async onRoleAssign(@EventPayload() payload: Nezon.RoleAssignPayload) {
console.log('Role ID:', payload.role_id);
console.log('Clan ID:', payload.ClanId);
console.log('Users assigned:', payload.user_ids_assigned);
console.log('Users removed:', payload.user_ids_removed);
}

AddClanUser

Lắng nghe khi user được thêm vào clan.

Type: Nezon.AddClanUserPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.AddClanUser)
async onAddClanUser(@EventPayload() payload: Nezon.AddClanUserPayload) {
console.log('Clan ID:', payload.clan_id);
console.log('User:', payload.user);
console.log('Invitor:', payload.invitor);
}

TokenSend

Lắng nghe khi token được gửi.

Type: Nezon.TokenSendPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.TokenSend)
async onTokenSend(@EventPayload() payload: Nezon.TokenSendPayload) {
console.log('From:', payload.sender_id);
console.log('To:', payload.receiver_id);
console.log('Amount:', payload.amount);
console.log('Note:', payload.note);
}

ClanEventCreated

Lắng nghe khi clan tạo event mới.

Type: CreateEventRequest (from mezon-sdk)

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';
import type { CreateEventRequest } from 'mezon-sdk';

@On(Events.ClanEventCreated)
async onClanEventCreated(@EventPayload() payload: CreateEventRequest) {
console.log('Event created:', payload);
}

MessageButtonClicked

Lắng nghe khi button được click (thường dùng với @Component).

Type: Nezon.ComponentPayload

Ví dụ:

import { On, ComponentPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.MessageButtonClicked)
async onButtonClick(@ComponentPayload() payload: Nezon.ComponentPayload) {
console.log('Button ID:', payload.button_id);
console.log('Message ID:', payload.message_id);
console.log('User ID:', payload.user_id);
}

StreamingJoinedEvent

Lắng nghe khi user join streaming room.

Type: Nezon.StreamingJoinedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.StreamingJoinedEvent)
async onStreamingJoined(@EventPayload() payload: Nezon.StreamingJoinedPayload) {
console.log('User ID:', payload.user_id);
console.log('Streaming channel ID:', payload.streaming_channel_id);
console.log('Clan ID:', payload.clan_id);
}

StreamingLeavedEvent

Lắng nghe khi user rời streaming room.

Type: Nezon.StreamingLeavedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.StreamingLeavedEvent)
async onStreamingLeaved(@EventPayload() payload: Nezon.StreamingLeavedPayload) {
console.log('User ID:', payload.streaming_user_id);
console.log('Streaming channel ID:', payload.streaming_channel_id);
console.log('Clan ID:', payload.clan_id);
}

Lắng nghe khi user chọn option trong dropdown.

Type: Nezon.DropdownBoxSelectedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.DropdownBoxSelected)
async onDropdownSelected(@EventPayload() payload: Nezon.DropdownBoxSelectedPayload) {
console.log('Selected value:', payload.value);
console.log('Message ID:', payload.message_id);
console.log('User ID:', payload.user_id);
}

WebrtcSignalingFwd

Lắng nghe khi user accept call 1-1.

Type: Nezon.WebrtcSignalingFwdPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.WebrtcSignalingFwd)
async onWebrtcSignaling(@EventPayload() payload: Nezon.WebrtcSignalingFwdPayload) {
console.log('WebRTC signaling:', payload);
}

VoiceStartedEvent

Lắng nghe khi voice channel bắt đầu.

Type: Nezon.VoiceStartedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.VoiceStartedEvent)
async onVoiceStarted(@EventPayload() payload: Nezon.VoiceStartedPayload) {
console.log('Voice started:', payload);
}

VoiceEndedEvent

Lắng nghe khi voice channel kết thúc.

Type: Nezon.VoiceEndedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.VoiceEndedEvent)
async onVoiceEnded(@EventPayload() payload: Nezon.VoiceEndedPayload) {
console.log('Voice ended:', payload);
}

VoiceJoinedEvent

Lắng nghe khi user join voice room.

Type: Nezon.VoiceJoinedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.VoiceJoinedEvent)
async onVoiceJoined(@EventPayload() payload: Nezon.VoiceJoinedPayload) {
console.log('User joined voice:', payload.user_id);
console.log('Channel ID:', payload.channel_id);
}

VoiceLeavedEvent

Lắng nghe khi user rời voice room.

Type: Nezon.VoiceLeavedPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.VoiceLeavedEvent)
async onVoiceLeaved(@EventPayload() payload: Nezon.VoiceLeavedPayload) {
console.log('User left voice:', payload.user_id);
console.log('Channel ID:', payload.channel_id);
}

Notifications

Lắng nghe notifications (thêm bạn, v.v.).

Type: Nezon.NotificationsPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.Notifications)
async onNotifications(@EventPayload() payload: Nezon.NotificationsPayload) {
console.log('Notification:', payload);
}

QuickMenu

Lắng nghe quick menu event.

Type: Nezon.QuickMenuPayload

Ví dụ:

import { On, EventPayload } from '@n0xgg04/nezon';
import type { Nezon } from '@n0xgg04/nezon';
import { Events } from 'mezon-sdk';

@On(Events.QuickMenu)
async onQuickMenu(@EventPayload() payload: Nezon.QuickMenuPayload) {
console.log('Quick menu:', payload);
}

Type Definitions

Tất cả event payload types được định nghĩa trong Nezon namespace:

export namespace Nezon {
export type ChannelMessage = ChannelMessage;
export type MessageReactionPayload = MessageReaction;
export type UserChannelRemovedPayload = UserChannelRemoved;
export type UserClanRemovedPayload = UserClanRemovedEvent;
export type UserChannelAddedPayload = UserChannelAddedEvent;
export type ChannelCreatedPayload = ChannelCreatedEvent;
export type ChannelDeletedPayload = ChannelDeletedEvent;
export type ChannelUpdatedPayload = ChannelUpdatedEvent;
export type RoleEventPayload = RoleEvent;
export type GiveCoffeePayload = GiveCoffeeEvent;
export type RoleAssignPayload = RoleAssignedEvent;
export type AddClanUserPayload = AddClanUserEvent;
export type TokenSendPayload = TokenSentEvent;
export type StreamingJoinedPayload = StreamingJoinedEvent;
export type StreamingLeavedPayload = StreamingLeavedEvent;
export type DropdownBoxSelectedPayload = DropdownBoxSelected;
export type WebrtcSignalingFwdPayload = WebrtcSignalingFwd;
export type VoiceStartedPayload = VoiceStartedEvent;
export type VoiceEndedPayload = VoiceEndedEvent;
export type VoiceJoinedPayload = VoiceJoinedEvent;
export type VoiceLeavedPayload = VoiceLeavedEvent;
export type NotificationsPayload = Notifications;
export type QuickMenuPayload = QuickMenuDataEvent;
}

Best Practices

  1. Luôn sử dụng @EventPayload() với type annotation:

    @On(Events.TokenSend)
    async onTokenSend(@EventPayload() payload: Nezon.TokenSendPayload) {
    // Type-safe access
    }
  2. Sử dụng @On cho events lặp lại, @Once cho initialization:

    @Once('Ready')
    onReady() {
    // Setup
    }
  3. Kết hợp với các decorators khác:

    @On(Events.ChannelMessage)
    async onMessage(
    @ChannelMessagePayload() payload: Nezon.ChannelMessage,
    @Channel() channel: Nezon.Channel | undefined,
    @User() user: Nezon.User | undefined,
    ) {
    // Access both payload and entities
    }

Xem thêm