preprocess_comment array doesn’t have comment_ID

You won’t get a comment ID until the post is is inserted into the database. Before that point, the ID doesn’t exist. You have to use a hook that fires after that event…

1735            /**
1736             * Fires immediately after a comment is inserted into the database.
1737             *
1738             * @since 1.2.0
1739             *
1740             * @param int        $comment_ID       The comment ID.
1741             * @param int|string $comment_approved 1 if the comment is approved, 0 if not, 'spam' if spam.
1742             */
1743            do_action( 'comment_post', $comment_ID, $commentdata['comment_approved'] );