Chat Feature

클라이언트 (Client)

class ChatClient(channel_id: str, authorization_key: str | None = None, session_key: str | None = None, chat_channel_id: str | None = None, loop: AbstractEventLoop | None = None)

기반 클래스: Client

채팅 기능이 포함된, 치지직(네이버 스트리밍 서비스)와 연결하기 위한 객체를 제공합니다.

async blind_message(message: ChatMessage) None

채팅 운영자 권한으로 사용자의 메시지를 삭제합니다.

매개변수:

message (ChatMessage) – 삭제할 채팅이 담긴 객체입니다.

async close()

치지직 채팅 서버 연결을 종료합니다.

async delete_notice_message() None

고정된 메시지를 해제합니다..

async history(count: int = 50) list[ChatMessage]

과거 채팅 기록을 불러옵니다.

매개변수:

count (Optional[int]) – 최신 메시지를 기준으로 불러올 과거의 채팅 개수입니다. 기본 값은 50입니다.

반환:

방송인의 과거 채팅 기록을 최신 기록부터 불러옵니다.

반환 형식:

list[ChatMessage]

property is_connected: bool

치지직 채팅 서버와 올바르게 연결되었는지 확인합니다.

async request_recent_chat(count: int = 50)

치지직 채팅 서버에 과거 채팅 기록을 불러오는 요청을 보냅니다. 이 함수는 요청`만 합니다. 만약에 과거 채팅 기록을 불러오고 싶다면, `history() 함수를 이용해주세요.

매개변수:

count (int, optional) – 최신 메시지를 기준으로 불러올 과거의 채팅 개수입니다. 기본 값은 50입니다.

예외 발생:

RuntimeError – 치지직의 채팅 서버와 연결되지 않았을 때, 발생하는 예외입니다.

async send_chat(message: str) None

실시간 방송에 채팅 메시지를 보냅니다.

매개변수:

message (str) – 실시간 방송에 보낼 메시지입니다.

예외 발생:

RuntimeError – 치지직의 채팅 서버와 연결되지 않았을 때, 발생하는 예외입니다.

async set_notice_message(message: ChatMessage) None

메시지를 고정합니다.

매개변수:

message (ChatMessage) – 고정할 메시지가 담긴 객체입니다.

wait_for(event: str, check: Callable[[...], bool] | None = None, timeout: float | None = None)

Websocket에서 호출되는 이벤트 함수를 대기합니다.

매개변수:
  • event (str) – 대기할 이벤트 함수입니다. 이벤트 함수는 `Event Reference`를 참고해주세요.

  • check (Optional[Callable[..., bool]],) – 조건에 충족하는지 확인하는 콜백 함수입니다.

  • timeout (Optional[float]) – 대기할 시간을 설정합니다. 시간 초과하면:exc:asyncio.TimeoutError 예외처리가 발생합니다.

async wait_until_connected() None

치지직 채팅 서버 연결이 될 때까지 기다리는 함수입니다.

이벤트 함수 (Event Refenence)

이 섹션은 ChatClient 에서 호출되는이벤트 함수를 나열하였습니다. ChatClient.event 데코레이터를 이용하여 이벤트를 수신받을 수 있습니다.

예제:

>>> @client.event
... async def on_chat(message: ChatMessage):
...     print(message.content)

모든 이벤트 함수는 비동기(Coroutine) 함수여야 합니다. 그러지 않으면, 예상치 못한 오류를 초래할 수 있습니다.

async on_chat(message: ChatMessage)

방송 채널에서 메시지.가 작성되면 호출되는 이벤트 함수입니다.

매개변수:

message (ChatMessage) – 새롭게 만들어진 메시지입니다.

async on_connect()

치지직 채팅 서버와 연결을 성공하면 호출하는 이벤트 함수입니다.

async on_donation(donation: DonationMessage)

방송인이 채팅 후원, 영상 후원, 미션 후원 등의 후원을 받으면 호출하는 이벤트 함수입니다,

매개변수:

message (DonationMessage) – 후원 메시지가 담긴 객체입니다.

async on_system_message(system_message: SystemMessage)

새로운 시스템 메시지 가 만들어지면 호출되는이벤트 함수입니다.

매개변수:

message (SystemMessage) – 시스템 메시지입니다.

async on_subscription(subscription: SubscriptionMessage)

시청자가 방송인의 채널에 새로운 구독을하면 호출되는 이벤트 함수입니다.

매개변수:

message (SubscriptionMessage) – 구독 정보가 담긴 메시지 객체 입니다.

async on_recent_chat(messages: RecentChat)

과거 채팅 기록을 요청하는 함수가 호출되고, 응답을 받으면 호출되는 이벤트 함수입니다.요청은 ChatClient.request_recent_chat 함수로 호출할 수 있습니다.

매개변수:

messages (RecentChat) – 과거 채팅 기록입니다.

async on_pin(message: NoticeMessage)

방송인이 메시지를 고정하면 호출되는 이벤트 함수입니다. on_pin 대신에 on_notice 이벤트 함수로 대체할 수 있습니다.

매개변수:

message (NoticeMessage) – 고정한 메시지가 담긴 객체입니다.

async on_unpin(message: NoticeMessage)

고정된 메시지가 삭제되면 호출되는 이벤트 함수입니다.

매개변수:

message (NoticeMessage) – 고정이 해제된 메시지가 담긴 객체입니다.

async on_blind(message: Blind)

채팅 운영자가 메시지를 삭제하면 호출하는 함수입니다.

매개변수:

message (Blind) – 삭제된 메시지가 담긴 객체입니다.

async on_mission_completed(mission: MissionDonation)

방송인이 미션을 성공하면 호출되는 이벤트 함수입니다.

매개변수:

mission (MissionDonation) – 성공한 미션 정보가 담긴 객체입니다.

async on_mission_pending(mission: MissionDonation)

방송인이 새로운 미션을 요청받으면 호출되는 이벤트 함수입니다.

매개변수:

mission (MissionDonation) – 성공한 미션 정보가 담긴 객체입니다.

async on_mission_approved(mission: MissionDonation)

요청받은 미션을 방송인이 승인하면 호출되는 이벤트 함수입니다.

매개변수:

mission (MissionDonation) – 승인된 미션 정보가 담긴 객체입니다.

async on_mission_rejected(mission: MissionDonation)

요청받은 미션을 방송인이 거부하면 호출되는 이벤트 함수입니다.

매개변수:

mission (MissionDonation) – 거절된 미션 정보가 담긴 객체입니다.

async on_client_error(exception: Exception, *args, **kwargs)

이벤트 호출간에 예외가 발생하면 호출되는 이벤트 함수입니다. `*args`과 `**kwargs`에는 예외가 발생한 이벤트 함수의 인수(Parameter) 값이 들어있습니다.

Enumerations

class UserRole
channel_manager = 'streaming_channel_manager'
chat_manager = 'streaming_chat_manager'
common_user = 'common_user'
manager = 'manager'
streamer = 'streamer'

Blind

이 데이터 모델은 on_blind 이벤트 함수를 호출하는 데 사용됩니다.

class Blind
blind_type: str
blind_user_id: str | None
message: str | None
service_id: str
time: datetime
user_id: str

Connection

class ConnectedInfo
access_token: str
auth: Literal['SEND', 'READ']
session_id: str
uuid: str | None

Donation

class DonationRank
donation_amount: int
nickname: str
ranking: int
user_id_hash: str
verified_mark: bool
class BaseDonation
donation_type: str
donation_user_weekly_rank: DonationRank | None
is_anonymous: bool
pay_amount: int
pay_type: str
weekly_rank_list: list[DonationRank] | None
class ChatDonation

기반 클래스: BaseDonation

donation_type: Literal['CHAT']
class VideoDonation

기반 클래스: BaseDonation

donation_type: Literal['VIDEO']
class MissionDonation

기반 클래스: BaseDonation

donation_type: Literal['MISSION']
duration_time: int
mission_created_time: datetime.datetime
mission_donation_id: str | None
mission_donation_type: str | None
mission_end_time: datetime.datetime | None
mission_start_time: datetime.datetime | None
mission_text: str
status: str | Literal['PENDING', 'REJECTED', 'APPROVED', 'COMPLETED']
success: bool

Message

class Message
channel_id: str
content: str
created_time: datetime.datetime
extras: Json[E] | None
profile: Json[Profile] | None
service_id: str
time: datetime.datetime
type: ChatType
updated_time: datetime.datetime | None
user_id: str
class MessageDetail

기반 클래스: Message, Generic[E]

property is_blind: bool
member_count: int
message_status: str | None
class ChatMessage

기반 클래스: MessageDetail[Extra]

async blind()

채팅 운영자의 권한으로 메시지를 삭제합니다.

property is_me: bool

메시지가 자신이 보낸 메시지인지 확인합니다. 로그인이 필요한 기능입니다.

classmethod model_validate_with_client(obj: Any, client: ChatClient) ChatMessage
async pin()

메시지를 고정합니다.

async send(message: str)

방송인의 채널에 메시지를 보냅니다.

async unpin()

메시지 고정을 해제합니다.

class NoticeMessage

기반 클래스: Message[NoticeExtra]

class DonationMessage

기반 클래스: MessageDetail[Union[ChatDonationExtra, VideoDonationExtra, MissionDonationExtra]]

class SubscriptionMessage

기반 클래스: MessageDetail[SubscriptionExtra]

class SystemMessage

기반 클래스: MessageDetail[SystemExtra]

Message Extra

class Extra
chat_type: str
emojis: Any | None
os_type: Literal['PC', 'AOS', 'IOS']
streaming_channel_id: str
class NoticeExtra

기반 클래스: Extra

register_profile: Profile
class ChatDonationExtra

기반 클래스: ChatDonation

class VideoDonationExtra

기반 클래스: VideoDonation

class MissionDonationExtra

기반 클래스: MissionDonation

class SubscriptionExtra

기반 클래스: ExtraBase

month: int
nickname: str | None
tier_name: str
tier_no: int | None
class SystemExtra

기반 클래스: ExtraBase

description: str
params: SystemExtraParameter | None
style_type: int
visible_roles: list[str]
class SystemExtraParameter

기반 클래스: ChzzkModel

register_chat_profile: Json[Profile]
register_nickname: str
target_nickname: str
target_profile: Json[Profile]

Profile

class Profile
activity_badges: list[ActivityBadge]
property badge: Badge | None
property color: str | None
model_post_init(context: Any, /) None

This function is meant to behave like a BaseModel method to initialise private attributes.

It takes context as an argument since that’s what pydantic-core passes when calling it.

매개변수:
  • self – The BaseModel instance.

  • context – The context.

nickname: str
profile_image_url: str | None
streaming_property: StreamingProperty | None
user_id_hash: str
user_role: UserRole | None
verified_mark: bool
class Badge
image_url: str | None
name: str | None
class ActivityBadge

기반 클래스: Badge

activated: bool
badge_id: str
badge_no: int
description: str | None
class StreamingProperty
property donation_ranking_badge: Badge | None
property following_date: str | None
model_post_init(context: Any, /) None

This function is meant to behave like a BaseModel method to initialise private attributes.

It takes context as an argument since that’s what pydantic-core passes when calling it.

매개변수:
  • self – The BaseModel instance.

  • context – The context.

Recent Chat

이 데이터 모델은 on_recent_chat 이벤트 함수에서 사용됩니다.방송인의 채널의 과거 채팅 기록을 담고 있습니다.

class RecentChat
message_list: list[ChatMessage]
notice: NoticeMessage | None
user_count: int | None

예외 (Exceptions)

Chat Features 페이지에서 발생하는 예외는 ChatClient`에서 발생할 수 있는 추가적인 예외상황입니다. `Basic Features 페이지에서 발생하는 예외도 발생할 수 있습니다.

exception ChatConnectFailed
exception ConnectionClosed
exception WebSocketClosure
exception ReconnectWebsocket