Skip to content

Commit 556b2d1

Browse files
committed
first readme
1 parent efa5fe8 commit 556b2d1

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

src/README.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Disc.NET 🌌
2+
3+
**Disc.NET** é um projeto experimental para a construção de uma biblioteca de interação com a API do Discord, utilizando .NET 8+. O objetivo é criar uma alternativa modular, focada em performance e facilidade de uso através de padrões modernos de desenvolvimento.
4+
5+
O projeto ainda está em **fase ativa de desenvolvimento** e explora arquiteturas desacopladas para lidar com a complexidade da Gateway e das interações do Discord.
6+
7+
---
8+
9+
## 🏗️ Como o projeto funciona?
10+
11+
A arquitetura do Disc.NET gira em torno de três pilares principais:
12+
13+
### 📡 Event Dispatcher & Handlers
14+
O coração do sistema é o `EventDispatcher`. Ele recebe os payloads brutos da Gateway e os roteia para **Handlers** específicos.
15+
- Cada Handler é responsável por um tipo de evento (ex: `InteractionCreate`, `MessageCreate`).
16+
- Isso permite que a lógica de processamento seja isolada e fácil de estender sem sujar o código principal da conexão.
17+
18+
### 🏷️ Comandos via Attributes
19+
Chega de `if/else` gigantes para validar comandos. O Disc.NET utiliza **Attributes** para mapear classes de comando automaticamente:
20+
- Basta decorar sua classe com `[SlashCommand]` ou `[PrefixCommand]`.
21+
- O sistema de registro faz o *scan* das classes e vincula a execução ao trigger correto via Reflection.
22+
23+
### 💉 Service Container (DI)
24+
Utilizamos um `DiscNetContainer` interno para gerenciar dependências. Isso garante que seus comandos tenham acesso fácil a serviços de configuração, clientes de API e bancos de dados de forma nativa.
25+
26+
---
27+
28+
## ⚡ Exemplo de Uso (Experimental)
29+
30+
```csharp
31+
// 1. Defina o comando usando atributos
32+
[SlashCommand("ping", InteractionType.ApplicationCommand, "Testa a latência")]
33+
public class PingCommand : ISlashCommand
34+
{
35+
public async Task RunAsync(InteractionContext context, CancellationToken ct = default)
36+
{
37+
await context.RespondAsync("🏓 Pong!");
38+
}
39+
}
40+
41+
// 2. Inicialize o AppBuilder
42+
var app = new AppBuilder()
43+
.AddConfiguration(new AppConfiguration("TOKEN") { ApplicationId = 123 })
44+
.Build();
45+
46+
await app.RunAsync();
47+
```
48+
49+
---
50+
51+
## 📦 Módulos Atuais
52+
- **Disc.NET.Client.SDK**: Abstração da API REST.
53+
- **Disc.NET.Commands**: Motor de execução de comandos e contextos.
54+
- **Disc.NET.Shared**: Utilitários de serialização e extensões de sistema.
55+
- **Disc.NET.Components**: Builders para botões, selects e embeds.
56+
57+
---
58+
59+
> ⚠️ **Aviso:** Por ser um projeto experimental, mudanças drásticas na API podem ocorrer a qualquer momento.

0 commit comments

Comments
 (0)