Why are we changing the process?
There are multiple issues in the current onboarding, which have been discussed on, and some of them have been solved, but some remain. The main problems are:
- Spam Bots: Even though these pop up like once every 2 weeks, banning all of them can be slightly annoying, moreover if someone relatively new to the community falls for such scam messages sent by bots, it would be really sad, and we canât directly be blamed, however solving this issue can be a moral satisfaction.
Right now, these bots are ârelativelyâ harmless (provided no one falls for scams), however, in future when we might be running SourceCred on the discord server or some other equivalent interaction-measurement-algorithm, similar bots like these can be used by bad actors to game the system. - The onboarding gets slightly confusing when people join with a VC invite, but are sometimes met with an error screen(*since they donât have access to that channel). Ideally discord re-routes them to some chat channel, but this may behave differently on testing-versions/android-discord/discord in browser.
- [WE CAN ALSO CONSIDER IMPLEMENTING THIS] - The acknowledgement message can sometimes get unnoticed by people.
Suggestion by nic#9212 -I wonder if we can incorporate the acknowledgment of rules on the page where they do the captcha. So have the rules on that page and at the bottom, by clicking submit you acknowledge that you agree to these rules when joining the server.)
What is this new solution?
The suggested solution is to use a sort of âdiscord onboarding journeyâ.
A while ago, https://discord.tecommons.org/ was set-up (*I know, the site design is bad at the moment) to be used as an invite with a captcha, to ensure that anyone joining the server goes through the invite. Initially this was supposed to deprecate all the other invite links, and just use that one link for invites. But then, I realised that deprecating old invite links would be a bad idea and would be a bad user experience, and would need us edit tons of links.
This was changed and now anyone can join with any invite, however, if they never filled a captcha on the server, they would be removed from the server temporarily by a bot message telling them to visit https://discord.tecommons.org/ and fill the captcha. Moreover, to make the process smoother, anyone who joined the CS Trusted Seed would already get verified as human in the Database.
What does the onboarding journey look like?
If you enter discord via https://discord.tecommons.org
- Open the site and click on log in button
- You get redirected to discord API page, where you can authorise the automation to access the details(note- It canât do anything more than what you give it the permission for).
- You get redirected to another page, where you can fill the captcha and join the server.
- You land in the
#join-here
channel, and can get access by reacting with the emoji.
The bot also DMs you this message to welcome you to the TEC(this was previously done by Suga, but as the number of people grows, sending these to everyone and keeping track of everyone might become harder)-
If you enter via a normal invite link
- You enter the server via a normal discord invite link. If you have DMs open, the bot messages you to go fill the captcha at https://discord.tecommons.org/ by responding with this message-
If you have DMs closed, this lets you stay in the server (assuming that people that have closed DMs might be humans) *This is one of the concern points - How do we help verify these people and also keep the bots out? (Itâs a security issue, since some bad actor, who might be making these bots might read this post and then configure the bots to have Closed DMs, so that they donât get flagged). (Atleast this can keep out the bots that scrape invite links from telegram). - On clicking the link sent by the bot, you go back to the start of the journey(in above)
[insert video here]
Is this safe?
The components of this project are open-source, and they can be audited by anyone in the community who knows python to a sufficient extent.
Source:
Oauth site- https://github.com/Vyvy-vi/TEC-Discord-Oauth2/blob/428e325c1722a42457101dd3000d31c664e06e31/app/app.py
Discord Bot module- https://github.com/Vyvy-vi/TEC-Discord-Automation/blob/e5889f86244f946fd635dac36952bd957f7aff2a/src/listeners/onboarding.py#L1-L69
*note- the above are permalinks(they link to the same code excerpt), these are still undergoing changes, and thus there may be significant changes to the code(Iâll try and keep the links in this message up to date).
The automation has access to the following information-
- Your username and discriminator
- Your unique numerical user ID
- Your avatar
- [This one is a Work In Progress, and if there are concerns with regard to this, it can be removed and the code can be refactored in a way that it doesnât need this permission]: Join servers for you
It stores the following-
- When did you join
- When did you fill the captcha
- Your User ID
- Your Username
- Your verification status
About this data and âPrivacyâ concerns- All of the above quantify as âpublic informationâ, in this context. (The user ID, username, avatar are open information, within the discord server. The time of joining gets logged by discord, and thus again open information).
This does not log e-mails or any other information, and it doesnât have access to that.
Cookies: This site uses a session
cookie, which decodes to information like-
{
"DISCORD_OAUTH2_STATE": "yeJ0eAXioiJCB1QiCLJhbGciOiJIUzI1NiJ9.eyJfX3N0YXRlX3NlY3JldF8iOiJ3ew6MMJN4d0thb1I1Vk5RKnxnaHNbWFBlZmFJTFoifQ.OWyqwlRHwhmrIaY-U5diM9jDJ1ZsqxxsIf765CDNUxz",
"DISCORD_OAUTH2_TOKEN": {
"access_token": "oFur7gFLJnSYSHSiAYGilV4xEuR0OZ",
"expires_at": 1626754469.884337,
"expires_in": 604800,
"refresh_token": "CuUpc7exErJsWAGoUFvLIy27MxiMj3",
"scope": [
"identify",
"guilds.join"
],
"token_type": "Bearer"
},
"DISCORD_USER_ID": 558192816308617227
}
At the first glance, this might look scary, however:
- This is a session cookie
- The requisite values are tokens for access to discord. (these are needed by the integration for identifying your discord account, and to send you to a server). These donât give more access than you authorised it to and they expire in a few minutes
(*the latter one can be removed, by removing the guild.join
permission and giving this some tweaks)
(*This is not a 3rd party cookie)
Multiple problems that can be solved-
- The spam-bot issue can be solved, and future gaming on SourceCred can be prevented
- Consistent socials linking (Itâs harder to link the discord invite since it has random characters, but the
discord.tecommons.org
sub-domain kinda enables people to easily link an invite) - Welcome messages- (Could help the onboarding process, and ensure that everyone can find the needed links)
- Possible gamification of SourceCred
Advice process wanted-
Thereâs feedback/advice that I wanted on this process before deploying this-
1. Would this make the process more confusing?
2. If there are safety concerns due to the âjoin servers for youâ permission, should I rewrite this to not really need that permission?
3. What to do about the people with closed DMs. Do they get removed, or not removed if they didnât fill captcha? The issue is, we canât alert them about needed action if we canât DM them. (This wonât really be an issue if the major amount of future links shared are - https://discord.tecommons.org/
)
4. Any other ideas for this would be welcome : D
5. Do we integrate the âAcknowledgement of COCâ part on the site? Should we move this(and what are the relative legal implications)? If yes, what method would you suggest so that it is noticed and acknowledged by people? (This might reduce the no. of steps people need to go through to get into the server)
6. Opinions on design (The current one looks bad⌠I sorta botched markopâs design while trying to make it responsive). Should I change it a bit to simplify it or keep the same one, and improve it(hopefully with some help)?
7. Is this new process unwelcoming?
(NOTE- this updated bot is not deployed yet, so you wonât be able to view the full scope of this. Iâll upload a video walkthrough of the process to show how this works).