join_paired_ends.py is a QIIME 1 script, and the scripts you referenced are QIIME 1 scripts. You may want to look at the QIIME2 for Experienced Reserachers documentation as a starting place.
The same functionality to do things like joined paired ends, cluster (or denoise!) etc is in QIIME 2, it just has slightly different names. I think that if you look through the tutorials, you'll find most of what you're looking for from QIIME 1.