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))