Display your 3DS game status on Discord!
This README will be split into two sections:
By using this app, you agree to the terms listed in TERMS.md.
This project connects to a self-hosted API (or one provided by me) and fetches data received by mimicking a real 3DS connecting to the friends service and receiving friend data.
I'd like to thank:
- kinnay and his NintendoClients
- NintendoClients is what this program uses to pretend to be a real 3DS.
- hax0kartik and his 3dsdb
- 3dsdb is an open-source project that includes data about games on the eShop. A modified version of it is used to retrieve the game's name and icon url.
- HEYimHeroic and her mii2studio
- mii2studio is a command line tool written in Python that allows the user to convert between various versions of Nintendo Mii formats. I have created a modified version of it internally to convert CFSD (really,
MiiData
) to Mii Studio code.
- mii2studio is a command line tool written in Python that allows the user to convert between various versions of Nintendo Mii formats. I have created a modified version of it internally to convert CFSD (really,
- jaames and his mii-qr.py
- mii-qr.py is a Python script that converts from the encrypted QR code format to normal CFSD. For whatever reason, a direct connection to the friends service on the 3DS returns a QR code, so this is insanely useful. Thank you.
- qwerty for her pypresence
- pypresence is a useful Python module that allows developers to connect their games to Discord via Python. It is how 3DS-RPC sends Rich Presence data to Discord.
- StartBootstrap for their startbootstrap-sb-admin
- startbootstrap-sb-admin is a template using bootstrap which is how I created the friends network website!
- MrGameCub3 for resource design!
- He made all of the pretty things :) -- except for the app's GUI. I did that. But the pretty logos were his!
-
Open the website 3dsrpc.com and click on the icon in the top right-hand corner, then choose Register. By following the steps on the website, you will be able to connect your target Discord account to 3DS-RPC.
-
After doing so, enter your consoles menu by clicking on your PFP in the top-right corner and choosing "'s consoles".
-
In the consoles menu, select "Register Friend Code" and follow the on-screen instructions. After doing so, click "Add To Consoles".
-
You can change which consoles you'd like to enable, if any, in the consoles menu!
If you'd still like to use the Desktop Client instead of linking your Discord account, that's still an option! Please visit its repository in 3DS-RPC-Desktop.
If none of the below Qs and As help with your problem, feel free to file an issue. Alternatively, you can join the 3DS-RPC Discord server for a better back-and-forth method of communication with me!
Q: Whenever I play a game, 3DS-RPC won't change from the home screen!
A: Firstly, try waiting ~30 seconds, as the application has a fairly slow response time. Secondly, make sure that you've enabled "Show friends what you're playing?" on your 3DS' friends app.
Please don't DDoS me...
In brief, copy api/template.private.py
to api/private.py
and edit accordingly.
Flask-Migrate is used for database migrations. Please refer to its documentation for in-depth usage.
Please note that server.py
is the Flask application currently used for migrations.
When interacting with flask db
, you may have to specify it as the app:
flask --app server.py db [...]
As a general rule of thumb: whenever you see migrations added, please run them. You can do so via the following command:
flask db upgrade
To create migrations:
flask db migrate -m "Migration reason"
The intricacies of this project are deep and innumerable. I started this project some weeks before October 16th (at least since kinnay/NintendoClients#88), when I published the first commit on this repository. I have records of the sheer amount of pain I have undergone to create this (see 2d1ad37, everything on Feb 11th, this thing, and oh so much more), but somehow, I prevailed.
Anywho, none of this matters for the in-depth 'guide'. If you are looking at this guide because you can't figure something out or are having an error, please check the FAQ, join my Discord server, or file an issue. Instead, we're going to be looking at the inner-workings of the project.
So sit back, relax, and wait because, chances are, this guide is either unfinished or out-of-date.