import "dota_shared_enums.proto"; message CMsgClientToGCPrivateChatInvite { optional string private_chat_channel_name = 1; optional uint32 invited_account_id = 2; } message CMsgClientToGCPrivateChatKick { optional string private_chat_channel_name = 1; optional uint32 kick_account_id = 2; } message CMsgClientToGCPrivateChatPromote { optional string private_chat_channel_name = 1; optional uint32 promote_account_id = 2; } message CMsgClientToGCPrivateChatDemote { optional string private_chat_channel_name = 1; optional uint32 demote_account_id = 2; } message CMsgGCToClientPrivateChatResponse { enum Result { SUCCESS = 0; FAILURE_CREATION_LOCK = 1; FAILURE_SQL_TRANSACTION = 2; FAILURE_SDO_LOAD = 3; FAILURE_NO_PERMISSION = 4; FAILURE_ALREADY_MEMBER = 5; FAILURE_NOT_A_MEMBER = 7; FAILURE_NO_REMAINING_ADMINS = 8; FAILURE_NO_ROOM = 9; FAILURE_CREATION_RATE_LIMITED = 10; FAILURE_UNKNOWN_CHANNEL_NAME = 11; FAILURE_UNKNOWN_USER = 12; FAILURE_UNKNOWN_ERROR = 13; FAILURE_CANNOT_KICK_ADMIN = 14; FAILURE_ALREADY_ADMIN = 15; } optional string private_chat_channel_name = 1; optional .CMsgGCToClientPrivateChatResponse.Result result = 2 [default = SUCCESS]; optional string username = 3; } message CMsgDOTAJoinChatChannel { optional string channel_name = 2; optional .DOTAChatChannelType_t channel_type = 4 [default = DOTAChannelType_Regional]; optional bool silent_rejection = 5; } message CMsgDOTALeaveChatChannel { optional uint64 channel_id = 1; } message CMsgGCChatReportPublicSpam { optional uint64 channel_id = 1; optional uint32 channel_user_id = 2; } message CMsgDOTAChatModeratorBan { optional uint64 channel_id = 1; optional uint32 account_id = 2; optional uint32 duration = 3; } message CMsgDOTAChatMessage { message DiceRoll { optional int32 roll_min = 1; optional int32 roll_max = 2; optional int32 result = 3; } message TriviaAnswered { optional uint32 question_id = 1; optional uint32 answer_index = 2; optional uint32 party_questions_correct = 3; optional uint32 party_questions_viewed = 4; optional uint32 party_trivia_points = 5; } message PlayerDraftPick { optional int32 player_id = 1 [default = -1]; optional int32 team = 2; } message ChatWheelMessage { optional uint32 message_id = 1 [default = 4294967295]; optional uint32 emoticon_id = 2; optional string message_text = 3; optional uint32 hero_badge_tier = 4; } optional uint32 account_id = 1; optional uint64 channel_id = 2; optional string persona_name = 3; optional string text = 4; optional uint32 timestamp = 5; optional uint32 suggest_invite_account_id = 6; optional string suggest_invite_name = 7; optional uint32 fantasy_draft_owner_account_id = 8; optional uint32 fantasy_draft_player_account_id = 9; optional uint32 event_id = 10; optional bool suggest_invite_to_lobby = 11; optional uint32 event_points = 12; optional bool coin_flip = 13; optional int32 player_id = 14 [default = -1]; optional uint32 share_profile_account_id = 15; optional uint32 channel_user_id = 16; optional .CMsgDOTAChatMessage.DiceRoll dice_roll = 17; optional uint64 share_party_id = 18; optional uint64 share_lobby_id = 19; optional uint64 share_lobby_custom_game_id = 20; optional string share_lobby_passkey = 21; optional uint32 private_chat_channel_id = 22; optional uint32 status = 23; optional bool legacy_battle_cup_victory = 24; optional uint32 battle_cup_streak = 29; optional uint32 badge_level = 25; optional uint32 suggest_pick_hero_id = 26; optional string suggest_pick_hero_role = 27; optional uint32 suggest_ban_hero_id = 30; optional .CMsgDOTAChatMessage.TriviaAnswered trivia_answer = 32; optional int32 requested_ability_id = 33 [default = -1]; optional uint32 chat_flags = 34; optional bool started_finding_match = 35; optional bool ctrl_is_down = 36; optional uint32 favorite_team_id = 37; optional uint32 favorite_team_quality = 38; optional int32 suggest_player_draft_pick = 39 [default = -1]; optional .CMsgDOTAChatMessage.PlayerDraftPick player_draft_pick = 40; optional .CMsgDOTAChatMessage.ChatWheelMessage chat_wheel_message = 41; } message CMsgDOTAChatMember { optional fixed64 steam_id = 1; optional string persona_name = 2; optional uint32 channel_user_id = 3; optional uint32 status = 4; } message CMsgDOTAJoinChatChannelResponse { enum Result { JOIN_SUCCESS = 0; INVALID_CHANNEL_TYPE = 1; ACCOUNT_NOT_FOUND = 2; ACH_FAILED = 3; USER_IN_TOO_MANY_CHANNELS = 4; RATE_LIMIT_EXCEEDED = 5; CHANNEL_FULL = 6; CHANNEL_FULL_OVERFLOWED = 7; FAILED_TO_ADD_USER = 8; CHANNEL_TYPE_DISABLED = 9; PRIVATE_CHAT_CREATE_FAILED = 10; PRIVATE_CHAT_NO_PERMISSION = 11; PRIVATE_CHAT_CREATE_LOCK_FAILED = 12; PRIVATE_CHAT_KICKED = 13; USER_NOT_ALLOWED = 14; ENSURE_SPECIAL_PRIVILEGES_FAILED = 15; NEW_PLAYER_USER_NOT_ELIGIBLE = 16; SILENT_ERROR = 17; NEW_PLAYER_USER_BANNED = 18; } optional uint32 response = 1; optional string channel_name = 2; optional fixed64 channel_id = 3; optional uint32 max_members = 4; repeated .CMsgDOTAChatMember members = 5; optional .DOTAChatChannelType_t channel_type = 6 [default = DOTAChannelType_Regional]; optional .CMsgDOTAJoinChatChannelResponse.Result result = 7 [default = JOIN_SUCCESS]; optional bool gc_initiated_join = 8; optional uint32 channel_user_id = 9; optional string welcome_message = 10; optional .EChatSpecialPrivileges special_privileges = 11 [default = k_EChatSpecialPrivileges_None]; } message CMsgDOTAOtherJoinedChatChannel { optional fixed64 channel_id = 1; optional string persona_name = 2; optional fixed64 steam_id = 3; optional uint32 channel_user_id = 4; optional uint32 status = 5; } message CMsgDOTAOtherLeftChatChannel { optional fixed64 channel_id = 1; optional fixed64 steam_id = 2; optional uint32 channel_user_id = 3; } message CMsgDOTARequestChatChannelList { } message CMsgDOTARequestChatChannelListResponse { message ChatChannel { optional string channel_name = 1; optional uint32 num_members = 2; optional .DOTAChatChannelType_t channel_type = 3 [default = DOTAChannelType_Regional]; } repeated .CMsgDOTARequestChatChannelListResponse.ChatChannel channels = 1; } message CMsgDOTAChatGetUserListResponse { message Member { optional fixed64 steam_id = 1; optional string persona_name = 2; optional uint32 channel_user_id = 3; optional uint32 status = 4; } optional fixed64 channel_id = 1; repeated .CMsgDOTAChatGetUserListResponse.Member members = 2; } message CMsgDOTAChatGetMemberCount { optional string channel_name = 1; optional .DOTAChatChannelType_t channel_type = 2 [default = DOTAChannelType_Regional]; } message CMsgDOTAChatGetMemberCountResponse { optional string channel_name = 1; optional .DOTAChatChannelType_t channel_type = 2 [default = DOTAChannelType_Regional]; optional uint32 member_count = 3; } message CMsgDOTAChatRegionsEnabled { message Region { optional float min_latitude = 1; optional float max_latitude = 2; optional float min_longitude = 3; optional float max_longitude = 4; } optional bool enable_all_regions = 1; repeated .CMsgDOTAChatRegionsEnabled.Region enabled_regions = 2; }