syntax = "proto2";
message ModeratorCommand {
    enum ModeratorCommandType {
        BAN_FROM_SERVER = 1000;
        BAN_HISTORY = 1001;
        WARN_USER = 1002;
        WARN_HISTORY = 1003;
        WARN_LIST = 1004;
        VIEWLOG_HISTORY = 1005;
    }
    extensions 100 to max;
}

message Command_BanFromServer {
    extend ModeratorCommand {
        optional Command_BanFromServer ext = 1000;
    }
    optional string user_name = 1;
    optional string address = 2;
    optional uint32 minutes = 3;
    optional string reason = 4;
    optional string visible_reason = 5;
    optional string clientid = 6;
    optional uint32 remove_messages = 7;
}

message Command_GetBanHistory {
    extend ModeratorCommand {
        optional Command_GetBanHistory ext = 1001;
    }
    optional string user_name = 1;
}

message Command_WarnUser {
    extend ModeratorCommand {
        optional Command_WarnUser ext = 1002;
    }

    optional string user_name = 1;
    optional string reason = 2;
    optional string clientid = 3;
    optional uint32 remove_messages = 4;
}

message Command_GetWarnHistory {
    extend ModeratorCommand {
        optional Command_GetWarnHistory ext = 1003;
    }
    optional string user_name = 1;
}

message Command_GetWarnList {
    extend ModeratorCommand {
        optional Command_GetWarnList ext = 1004;
    }
    optional string mod_name = 1;
    optional string user_name = 2;
    optional string user_clientid = 3;
}

message Command_ViewLogHistory {
    extend ModeratorCommand {
        optional Command_ViewLogHistory ext = 1005;
    }
    optional string user_name = 1;       // user that created message
    optional string ip_address = 2;      // ip address of user that created message
    optional string game_name = 3;       // client id of user that created the message
    optional string game_id = 4;         // game number the message was sent to
    optional string message = 5;         // raw message that was sent
    repeated string log_location = 6;    // destination of message (ex: main room, game room, private chat)
    required uint32 date_range = 7;      // the length of time (in minutes) to look back for
    optional uint32 maximum_results = 8; // the maximum number of query results
}
