# structures/Student.js

    const User = require("./User.js")

    /**
     * Represents a student on SMHW.
     * @extends {User}
     */
    class Student extends User {
        /**
         * Instantiate a Student object.
         * @param {Client} client The client that is instantiating the object.
         * @param {Object} response The data for the object.
         */
        constructor(client, response) {
            super(client, response);

            /**
             * An array of categories that the student falls into.
             * @type {Array<String>}
             */
            this.categories = response.categories;

            /**
             * An array of class group ids that the student is in.
             * @type {Array<Number>}
             */
            this.class_group_ids = response.class_group_ids;

            /**
             * The gender of the user.
             * @type {String}
             */
            this.gender = response.gender;

            /**
             * The invite code that the student used.
             * @type {String}
             */
            this.invite_code = response.invite_code;

            /**
             * The timestamp of when then invite code expires.
             * @type {Number}
             */
            this.invite_code_expires_on = new Date(response.invite_code_expires_on).getTime();

            /**
             * An array of IDs to the student's parents.
             * @type {Array<Number>}
             */
            this.parent_ids = response.parent_ids;

            /**
             * The ID of the registration group that the student belongs to.
             * @type {Number}
             */
            this.registration_group_id = response.registration_group_id;

            /**
             * An array of badge IDs that the student has.
             * @type {Array<Number>}
             */
            this.student_badge_ids = response.student_badge_ids;

            /**
             * An array of category IDs that the student falls into.
             * @type {Array<Number>}
             */
            this.student_category_ids = response.student_category_ids;

            /**
             * The ID of the student's praise summary.
             * @type {Number}
             */
            this.student_praise_summary_id = response.student_praise_summary_id;

            /**
             * The year that the student belongs to.
             * @type {String}
             */
            this.year = response.year;
        }

        /**
         * Get class groups that the student is in.
         * @param {Array<Number>} [ids] An array of class group IDs to retrieve.
         * @returns {Promise<Array<ClassGroup>>}
         */
        getClassGroups(ids) {
            return this._client.getClassGroups(ids || this.class_group_ids);
        }
    }

    module.exports = Student;