
# discord-guildpeek

Get a public preview of a Discord server from its invite code, without authentication.

You can notably retrieve (in real time) the **number of members**, the **number of members online**, the **name of the guild**, the **icon** of the guild, the **banner** of the guild (if there is one). Name, global name, avatar, banner of the inventor (if there is one). And the channel where the invite was created.

[![npm version](https://img.shields.io/npm/v/discord-guildpeek.svg)](https://www.npmjs.com/package/discord-guildpeek)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](./LICENSE)

## 📦 Installation

```bash
npm install discord-guildpeek
# or
yarn add discord-guildpeek
```

## 🚀 Usage

```ts
import { getStatus } from 'discord-guildpeek';

getStatus('INVITE_ID').then(info => {
  console.log(info);
  console.log(info.guild.members); // Total members in the server
  console.log(info.guild.onlines); // Online members in the server
  console.log(info.guild.name); // Server name
  console.log(info.guild.icon({ extension: 'png' })); // Guild icon URL with png format
});
```

### Example Output

```json
{
  "code": "INVITE_ID",
  "guild": {
    "id": "SERVER_ID",
    "name": "Server Name",
    "description": "Description...",
    "members": 1234,
    "onlines": 56,
    "icon": "https://cdn.discordapp.com/icons/SERVER_ID/ICON_ID.png",
    "banner": "https://cdn.discordapp.com/banners/SERVER_ID/BANNER_ID.png",
    ...
  },
  "invitor": {
    "id": "USER_ID",
    "username": "InvitorName",
    "discriminator": "1234",
    "avatar": "https://cdn.discordapp.com/avatars/USER_ID/AVATAR_ID.png",
    ...
  },
  "channel": {
    "id": "CHANNEL_ID",
    "name": "general",
    "type": 0
  },
  "expiresAt": "2025-01-01T00:00:00.000Z",
  ...
}
1234
56
Server Name
https://cdn.discordapp.com/icons/SERVER_ID/ICON_ID.png
```

## 🌐 Web package

### UMD Build

You can use the UMD package in the browser by including the script tag:

```html
<script src="https://cdn.jsdelivr.net/npm/discord-guildpeek/dist/browser/index.umd.js"></script>
<script>
  const { getInviteStatus } = window.DiscordGuildPeek;

  getInviteStatus('INVITE_ID').then(info => {
    console.log(info);
  });
</script>
```

### ES Build

You can also use the ESM build in modern browsers:

```html
<script type="module">
  import { getInviteStatus } from 'https://cdn.jsdelivr.net/npm/discord-guildpeek/dist/esm/index.js';

  getInviteStatus('INVITE_ID').then(info => {
    console.log(info);
  });
</script>
```

## 🧰 Features

* 🔍 `getInviteStatus(code: string)` — Fetches public metadata of a Discord server using an invite code (async).
* 🌐 Function `extractDiscordInviteId()` for extracting the invite ID from a Discord invite link.
* 📎 No token or authentication required.
* 📦 Supports ESM, CommonJS, and UMD (browser) builds.

## 📁 Supported Formats

| Format   | Output Path         |
| -------- | ------------------- |
| CommonJS | `dist/cjs/index.js` |
| ESM      | `dist/esm/index.js` |
| Browser  | `dist/browser/`     |

## 🔍 Technical Overview

* Fully typed with TypeScript (`strict: true`)
* Response validation via [Zod](https://github.com/colinhacks/zod)
* Bundled with [Vite](https://vitejs.dev/) for browser builds

## 📌 Links
- [GitHub repository](https://github.com/Oignontom8283/discord-guildpeek)

- [Changelog](./CHANGELOG.txt)

- [NPM package](https://www.npmjs.com/package/discord-guildpeek)

## 📜 License

MIT © [Oignontom8283](https://github.com/Oignontom8283)

> ⚠️  **This module is not affiliated with Discord Inc.**

