A simple Discord verification bot that doesn’t involve trusting strangers with your password.
The bot may be slower than usual to send out emails due to O-week. This is expected behaviour.
Emails may be flagged as spam by UNSW due to the volume being sent during O-week. This is not expected behaviour. Please ask new registrants to mark the emails as not spam.
Overpass is a Discord bot designed to verify that a student is who they say they are. It relies on some simple principles:
zID@ad.unsw.edu.au
,#verify
channelDrawbridge is the Arc-approved version of this bot, developed by Tom (a former CSESoc exec/CSE Course Convenor) and maintained by Dylan from CSE. However, I consider Drawbridge to have a major design flaw:
“Your zPass will not be stored. I don’t want your zPass, I like my own one.”
Unfortunately, Drawbridge is currently closed-source, meaning no-one can actually verify that your password isn’t being stored by the operators. Additionally, your password is sent in plaintext to the server. I’ve written a more technical explanation of Why That’s Bad (ironically, based on stuff I learned in a CSE course) further down the page for those who are more technically inclined.
Even if you don’t trust me, the worst case is that I know your zID and what UNSW Discord servers you’ve joined. Unlike Drawbridge, Overpass never has a risk of giving me, server admins, the bot or any webpage your password, making it (at least to me) significantly safer to use. However, it still successfully performs the task of logging a student’s zID for the admins of a discord server, which is the entire purpose of both bots.
Additionally, a student wanting to remove their data is as simple as asking the server admins to run the /delete_user_data
command for their Discord username.
If you’re extra paranoid, you might think that I’m running a different version of the code on the actual bot than what’s published on Github. Even in that case though, you can still just… run it yourself from the public repository. It’s not that difficult, if you’ve learned enough about cybersecurity to consider that as a threat model, you definitely know how to self-host a NodeJS project.
Here’s some basically copy-paste instructions. I’ve assumed you’re familiar with the basics of setting up a Discord server, but if you’re having trouble, feel free to send me a DM on Discord.
#verify
and #registration-logs
or similar.Verified
and Unverified
.Unverified
should have all permissions disabled for every channel except #verify
Verified
should have all permissions disabled for the channel #verify
#registration-logs
should be set up to only be visible to moderators. You can use the “Private Channels” function for this.Command (I would copy-paste this) | Expected response from the bot | Notes |
---|---|---|
/unverifiedrole @Unverified |
“Unverified role changed to unverified” | Substitute @Unverified for your Unverified user role |
/verifiedrole @Verified |
“Verified role changed to verified” | Substitute @Verified for your Verified user role |
/add_unverified_on_join True |
“Enabled auto add unverified role!” | |
[For UNSW staff-run servers or any other case where Arc wouldn’t need access]/domains unsw.edu.au,ad.unsw.edu.au |
“Added @unsw.edu.au,@ad.unsw.edu.au” | MAKE SURE THIS IS EXACTLY THE SAME AND THAT BOTH DOMAINS ARE INCLUDED IN THE BOT’S REPLY. DO NOT ADD student.unsw.edu.au |
[For clubs/servers where Arc staff need access]/domains unsw.edu.au,ad.unsw.edu.au,arc.unsw.edu.au |
“Added @unsw.edu.au,@arc.unsw.edu.au,@ad.unsw.edu.au” | MAKE SURE THIS IS EXACTLY THE SAME AND THAT ALL 3 DOMAINS ARE INCLUDED. DO NOT ADD student.unsw.edu.au |
/set_log_channel #registration-logs |
“Modified log channel” | Substitute #registration-logs for your zID log channel. MAKE SURE THIS IS ONLY ACCESSIBLE TO MODERATORS. |
/verifymessage This Discord server is operated by <SOCIETY>. By registering, you agree to comply with the server's rules, as well as the UNSW Code of Conduct. Please enter your UNSW email address (usually z1234567@ad.unsw.edu.au). You will get a 6 digit code emailed to your UNSW email within the next few minutes, please send that code as a DM reply to this bot. |
“Modified verify message” | Add any legal text you need to the message, and replace <SOCIETY> with whatever group is responsible for the server. |
#verify
.#verify
./button
command with the parameters below:Channel | Button Text | Message |
---|---|---|
#verify |
Click here to verify | This bot will verify your zID. Go to https://overpass.unsw.bot for more information on how it works. |
It should respond “Button created”, and you should see the following message in the #verify
channel:
/status
to confirm that you’ve set the bot up properly. If there are any unexpected differences from the following screenshot, you might have dome something wrong./verify
and verify yourself to test that it works with your account before sharing the server with students/members.All you need to do is find their discord username in #verification-logs
and delete the corresponding message from the bot!
Run /blacklist zID@unsw.edu.au, zID@ad.unsw.edu.au
.
Simply run /domains domain.tld
for each new domain, or /removedomains domain.tld
for each domain you want to remove.
I’d recommend running /domains
after either of those commands to make sure the new list is correct for your server.
Run /delete_server_data
. The bot will nuke itself and disconnect from your server (you’ll have to do all the setup again if you want to re-add it).
If you want to add a specific uni, run /domains students.university.edu.au
, replacing the domain as necessary.
Some common unis you might want are listed below:
University | Students | Staff | Clubs Management |
---|---|---|---|
USYD | uni.sydney.edu.au | sydney.edu.au | usu.edu.au |
UTS | student.uts.edu.au | uts.edu.au | activateuts.com.au |
WSU | student .westernsydney. edu.au | westernsydney.edu.au | ??? |
MQ | students.mq.edu.au | mq.edu.au | Same as staff |
If you want to allow anyone (including members of the general public) to join, run /domains *.*
.
If /help
doesn’t give you the information you need, DM me on Discord. Note that I’m only specifically testing this code for UNSW (since that’s the only place where I have an email and student number). If you go to another uni, there may be a limit to how much I can help you.
If you want to fund this project, support the upstream maintainer instead, as I rely on his code to keep this bot running. I promise I don’t need or want your money.
If you want to give it to me anyway, I instead ask that you make a contribution to the independent student paper Noise, which I’ve spent a significant amount of effort writing both code and articles for.