Documentação da API

1. Endpoint da API (Gerador de Nitro)

OBS: A Logica de geração de codigos nitro promocionais, é 100% aleatorio!

Para gerar os códigos Nitro, faça uma requisição GET para o seguinte endpoint:

GET /api/generate?quantity={quantity}

Parâmetros:

  • quantity: (obrigatório) Quantidade de códigos Nitro que você deseja gerar (número inteiro). Exemplo: `quantity=5`.

Exemplo de URL: `https://codeconnect.discloud.app/api/generate?quantity=5`

2. Resposta da API

A resposta será uma lista de URLs contendo os códigos Nitro gerados. Exemplo:


{
    "codes": [
        "https://discord.com/billing/promotions/{code1}",
        "https://discord.com/billing/promotions/{code2}",
        "https://discord.com/billing/promotions/{code3}",
        "https://discord.com/billing/promotions/{code4}",
        "https://discord.com/billing/promotions/{code5}"
    ]
}
                

3. Exemplos de Integração

Abaixo estão exemplos de como você pode integrar a API em diferentes aplicações:

Exemplo 1: Usando a API com um bot Discord (Python)


import requests

def gerar_codigos(quantity):
    url = f"https://codeconnect.discloud.app/api/generate?quantity={quantity}"
    response = requests.get(url)
    if response.status_code == 200:
        codes = response.json().get('codes')
        print("Códigos gerados:", codes)
    else:
        print("Erro ao gerar códigos")

gerar_codigos(5)
                

Exemplo 2: Usando a API em um site (JavaScript)


function gerarCodigos(quantity) {
    fetch(`https://codeconnect.discloud.app/api/generate?quantity=${quantity}`)
        .then(response => response.json())
        .then(data => {
            console.log('Códigos gerados:', data.codes);
        })
        .catch(error => console.error('Erro ao gerar códigos:', error));
}

gerarCodigos(5);
                

Exemplo 3: Usando a API com cURL


curl "https://codeconnect.discloud.app/api/generate?quantity=5"
                

4. Sistema OAuth

Abaixo estão as informações sobre como registrar e autorizar um usuário usando o sistema OAuth.

Este sistema é utilizado para vincular o bot a contas do Discord e permitir a autorização de coleta de dados e atribuição de cargos no servidor.

Fluxo de Autenticação OAuth

O processo de autenticação funciona da seguinte maneira:

  • O usuário solicita o registro com o comando `/efetuar_registro`.
  • O bot envia uma mensagem com um botão que redireciona o usuário para o Discord para realizar a autorização.
  • Após a autorização, o Discord redireciona o usuário de volta ao sistema, e o código de autorização é recebido.
  • O código de autorização é trocado por um token de acesso, que é usado para obter dados do usuário.
  • Os dados do usuário são armazenados em um banco de dados e um cargo é atribuído automaticamente, dependendo do servidor em que o usuário está.

Exemplo de Implementação no Bot (Python)


from nextcord.ext import commands
import nextcord
import os
import requests
from dotenv import load_dotenv
from db.database import db

load_dotenv()

class OAuth(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        self.create_users_table()

    def get_db_connection(self):
        return db.get_connection()

    def create_users_table(self):
        """Cria a tabela 'users' se ela não existir.""" 
        connection = self.get_db_connection()
        cursor = connection.cursor()
        cursor.execute(""" 
        CREATE TABLE IF NOT EXISTS users (
            discord_id BIGINT PRIMARY KEY,
            username VARCHAR(255) NOT NULL,
            access_token VARCHAR(255) NOT NULL,
            avatar_url VARCHAR(255),
            email VARCHAR(255),
            flags INT,
            discriminator VARCHAR(255),
            bot BOOLEAN
        );
        """)
        connection.commit()
        connection.close()

    def fetch_oauth_token(self, code):
        """Obtém o token de OAuth usando o código fornecido.""" 
        client_id = os.getenv('DISCORD_CLIENT_ID')
        client_secret = os.getenv('DISCORD_CLIENT_SECRET')
        redirect_uri = os.getenv('REDIRECT_URI')

        token_url = "https://discord.com/api/oauth2/token"
        data = {
            "client_id": client_id,
            "client_secret": client_secret,
            "code": code,
            "grant_type": "authorization_code",
            "redirect_uri": redirect_uri,
            "scope": "identify email guilds.join gdm.join"
        }

        response = requests.post(token_url, data=data)
        response_data = response.json()

        if response.status_code == 200 and 'access_token' in response_data:
            return response_data['access_token']
        else:
            raise Exception(f"Erro ao obter o token OAuth: {response_data}")

    def fetch_user_data(self, access_token):
        """Obtém informações do usuário com o token de acesso.""" 
        user_url = "https://discord.com/api/v10/users/@me"
        headers = {"Authorization": f"Bearer {access_token}"}
        response = requests.get(user_url, headers=headers)

        if response.status_code == 200:
            return response.json()
        else:
            raise Exception(f"Erro ao obter dados do usuário: {response.json()}")

    @commands.command()
    async def efetuar_registro(self, ctx):
        """Inicia o fluxo de registro do usuário via OAuth.""" 
        await ctx.send("Clique no link para autenticar e autorizar o bot:\n[Autenticar no Discord]
        (https://discord.com/oauth2/authorize?client_id={}&scope=identify+email+guilds.join+gdm.join&response_type=
        code&redirect_uri={})".format(
            os.getenv("DISCORD_CLIENT_ID"), os.getenv("REDIRECT_URI")))

def setup(bot):
    bot.add_cog(OAuth(bot))
                
Voltar à Página Inicial