onebot_v11 0.1.3

OneBot v11 with NapCat/llonebot extension
Documentation
use serde_json::Value;

use super::{payload::ApiPayload, resp::ApiRespData};

impl ApiPayload {
    pub fn to_resp_type(&self) -> u8 {
        match self {
            ApiPayload::SendPrivateMsg(_) => 1,
            ApiPayload::SendGroupMsg(_) => 2,
            ApiPayload::SendMsg(_) => 3,
            ApiPayload::DeleteMsg(_) => 4,
            ApiPayload::GetMsg(_) => 5,
            ApiPayload::GetForwardMsg(_) => 6,
            ApiPayload::SendLike(_) => 7,
            ApiPayload::SetGroupKick(_) => 8,
            ApiPayload::SetGroupBan(_) => 9,
            ApiPayload::SetGroupAnonymousBan(_) => 10,
            ApiPayload::SetGroupWholeBan(_) => 11,
            ApiPayload::SetGroupAdmin(_) => 12,
            ApiPayload::SetGroupAnonymous(_) => 13,
            ApiPayload::SetGroupCard(_) => 14,
            ApiPayload::SetGroupName(_) => 15,
            ApiPayload::SetGroupLeave(_) => 16,
            ApiPayload::SetGroupSpecialTitle(_) => 17,
            ApiPayload::SetFriendAddRequest(_) => 18,
            ApiPayload::SetGroupAddRequest(_) => 19,
            ApiPayload::GetLoginInfo(_) => 20,
            ApiPayload::GetStrangerInfo(_) => 21,
            ApiPayload::GetFriendList(_) => 22,
            ApiPayload::GetGroupInfo(_) => 23,
            ApiPayload::GetGroupList(_) => 24,
            ApiPayload::GetGroupMemberInfo(_) => 25,
            ApiPayload::GetGroupMemberList(_) => 26,
            ApiPayload::GetGroupHonorInfo(_) => 27,
            ApiPayload::GetCookies(_) => 28,
            ApiPayload::GetCsrfToken(_) => 29,
            ApiPayload::GetCredentials(_) => 30,
            ApiPayload::GetRecord(_) => 31,
            ApiPayload::GetImage(_) => 32,
            ApiPayload::CanSendImage(_) => 33,
            ApiPayload::CanSendRecord(_) => 34,
            ApiPayload::GetStatus(_) => 35,
            ApiPayload::GetVersionInfo(_) => 36,
            ApiPayload::SetRestart(_) => 37,
            ApiPayload::CleanCache(_) => 38,
            ApiPayload::SetQQAvatar(_) => 39,
            ApiPayload::GetGroupSystemMsg(_) => 40,
            ApiPayload::GetFile(_) => 41,
            ApiPayload::ForwardFriendSingleMsg(_) => 42,
            ApiPayload::ForwardGroupSingleMsg(_) => 43,
            ApiPayload::SetMsgEmojiLike(_) => 44,
            ApiPayload::MarkPrivateMsgAsRead(_) => 45,
            ApiPayload::MarkGroupMsgAsRead(_) => 46,
            ApiPayload::GetRobotUinRange(_) => 47,
            ApiPayload::SetOnlineStatus(_) => 48,
            ApiPayload::GetFriendsWithCategory(_) => 49,
            ApiPayload::GetGroupFileCount(_) => 50,
            ApiPayload::GetGroupFileList(_) => 51,
            ApiPayload::SetGroupFileFolder(_) => 52,
            ApiPayload::DelGroupFile(_) => 53,
            ApiPayload::DelGroupFileFolder(_) => 54,
            ApiPayload::SendGroupForwardMsg(_) => 55,
            ApiPayload::SendPrivateForwardMsg(_) => 56,
        }
    }
}

impl ApiRespData {
    pub fn from_resp_type(resp_type: u8, data: Value) -> Result<ApiRespData, anyhow::Error> {
        match resp_type {
            1 => Ok(ApiRespData::SendPrivateMsgResponse(serde_json::from_value(
                data,
            )?)),
            2 => Ok(ApiRespData::SendGroupMsgResponse(serde_json::from_value(
                data,
            )?)),
            3 => Ok(ApiRespData::SendMsgResponse(serde_json::from_value(data)?)),
            4 => Ok(ApiRespData::DeleteMsgResponse(serde_json::from_value(
                data,
            )?)),
            5 => Ok(ApiRespData::GetMsgResponse(serde_json::from_value(data)?)),
            6 => Ok(ApiRespData::GetForwardMsgResponse(serde_json::from_value(
                data,
            )?)),
            20 => Ok(ApiRespData::GetLoginInfoResponse(serde_json::from_value(
                data,
            )?)),
            21 => Ok(ApiRespData::GetStrangerInfoResponse(
                serde_json::from_value(data)?,
            )),
            22 => Ok(ApiRespData::GetFriendListResponse(serde_json::from_value(
                data,
            )?)),
            23 => Ok(ApiRespData::GetGroupInfoResponse(serde_json::from_value(
                data,
            )?)),
            24 => Ok(ApiRespData::GetGroupListResponse(serde_json::from_value(
                data,
            )?)),
            25 => Ok(ApiRespData::GetGroupMemberInfoResponse(
                serde_json::from_value(data)?,
            )),
            26 => Ok(ApiRespData::GetGroupMemberListResponse(
                serde_json::from_value(data)?,
            )),
            27 => Ok(ApiRespData::GetGroupHonorInfoResponse(
                serde_json::from_value(data)?,
            )),
            28 => Ok(ApiRespData::GetCookiesResponse(serde_json::from_value(
                data,
            )?)),
            29 => Ok(ApiRespData::GetCsrfTokenResponse(serde_json::from_value(
                data,
            )?)),
            30 => Ok(ApiRespData::GetCredentialsResponse(serde_json::from_value(
                data,
            )?)),
            31 => Ok(ApiRespData::GetRecordResponse(serde_json::from_value(
                data,
            )?)),
            32 => Ok(ApiRespData::GetImageResponse(serde_json::from_value(data)?)),
            33 => Ok(ApiRespData::CanSendImageResponse(serde_json::from_value(
                data,
            )?)),
            34 => Ok(ApiRespData::CanSendRecordResponse(serde_json::from_value(
                data,
            )?)),
            35 => Ok(ApiRespData::GetStatusResponse(serde_json::from_value(
                data,
            )?)),
            36 => Ok(ApiRespData::GetVersionInfoResponse(serde_json::from_value(
                data,
            )?)),
            40 => Ok(ApiRespData::GetGroupSystemMsgResponse(
                serde_json::from_value(data)?,
            )),
            41 => Ok(ApiRespData::GetFileResponse(serde_json::from_value(data)?)),
            47 => Ok(ApiRespData::GetRobotUinRangeResponse(
                serde_json::from_value(data)?,
            )),
            48 => Ok(ApiRespData::NoResponse(serde_json::from_value(data)?)),
            49 => Ok(ApiRespData::GetFriendsWithCategoryResponse(
                serde_json::from_value(data)?,
            )),
            50 => Ok(ApiRespData::GetGroupFileCountResponse(
                serde_json::from_value(data)?,
            )),
            51 => Ok(ApiRespData::GetGroupFileListResponse(
                serde_json::from_value(data)?,
            )),
            52 => Ok(ApiRespData::SetGroupFileFolderResponse(
                serde_json::from_value(data)?,
            )),
            53 => Ok(ApiRespData::DelGroupFileResponse(serde_json::from_value(
                data,
            )?)),
            54 => Ok(ApiRespData::DelGroupFileFolderResponse(
                serde_json::from_value(data)?,
            )),
            55 => Ok(ApiRespData::SendGroupForwardMsgResponse(
                serde_json::from_value(data)?,
            )),
            56 => Ok(ApiRespData::SendPrivateForwardMsgResponse(
                serde_json::from_value(data)?,
            )),
            _ => Ok(ApiRespData::NoResponse(Some(()))),
        }
    }
}