soup-sdk 0.3.3

채팅 이벤트 수신 SDK
Documentation
use crate::chat::{
    events::{EventMeta, UserEvent},
    parser::{
        raw::{ParseResult, RawMessage},
        user::parse_user_status,
        util::normalize_user_id,
    },
    types::User,
};

// bool: 강제퇴장 여부
pub fn parse_exit_event(raw: RawMessage) -> ParseResult<Option<(bool, UserEvent)>> {
    // "1"인 경우는 특정되지 않은 이벤트
    if raw.field(0)? == "1" {
        return Ok(None);
    }

    let is_kick = raw.field(3)? != "1";

    Ok(Some((
        is_kick,
        UserEvent {
            meta: EventMeta {
                received_time: raw.received_time,
            },
            user: User {
                id: normalize_user_id(raw.field(1)?),
                label: raw.field_string(2)?,
                status: parse_user_status(raw.field(5)?),
                subscribe: None,
            },
        },
    )))
}