Telegram's v8.2 update introduced join requests for additional invite links generated by admins. This feature would also be useful for public groups with usernames -- in these cases, the discussion would remain public-readable, but one must request to join in order to participate.
Workaround
To work around this for now, a possible solution is to create a public channel in place of the group's username and place a join request-enabled invite link in that channel.
For example, if your group's username is @telegram, you would first remove the username from that group (change it from a public group to a private group) and assign the username to a public channel instead, then generate an invite link for the group with join requests enabled. Lastly, paste it in the public channel as a post.
Thus, users could click through to the username, then the join link. However, the discussion would still remain hidden until an admin approves the request.
You retain the convenience of having a username you can link for people to join, instead of having to send the randomly-generated link. The only caveat is that nobody can see the discussion until they are approved.
4. Paste the invite link you generated into the channel, as a post.
But how is it workaround? Basically you just change your group from public to private.
Pre-approval by an admin would stop that