> ## Documentation Index
> Fetch the complete documentation index at: https://api.zglosscammera.pl/llms.txt
> Use this file to discover all available pages before exploring further.

# Bot Discord

> Ostrzegaj swój serwer przed oszustami z discord.js.

Ten przykład używa [discord.js](https://discord.js.org) v14 i wbudowanego `fetch` z Node.js 18+.

## Funkcja sprawdzająca

```js lib/zglos-scammera.js theme={null}
const BASE_URL = "https://zglosscammera.pl";

export async function checkUser(userId) {
  const res = await fetch(`${BASE_URL}/api/check?q=${userId}`);
  if (!res.ok) throw new Error(`Zgłoś Scammera: HTTP ${res.status}`);
  const { results } = await res.json();

  const scam = results.find((result) => result.kind !== "legit");
  if (scam) {
    const entry = scam.entries[0];
    return {
      status: entry.verified ? "scammer" : "risk",
      url: `${BASE_URL}/${scam.kind}?id=${entry.id}`,
      reason: entry.descHtml.replace(/<[^>]+>/g, "").trim(),
    };
  }
  if (results.length > 0) return { status: "legit" };
  return { status: "unknown" };
}
```

## Ostrzeżenie przy dołączeniu

```js index.js theme={null}
import { Client, Events, GatewayIntentBits } from "discord.js";
import { checkUser } from "./lib/zglos-scammera.js";

const client = new Client({
  intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers],
});

client.on(Events.GuildMemberAdd, async (member) => {
  const result = await checkUser(member.id).catch(() => null);
  if (!result || (result.status !== "scammer" && result.status !== "risk")) {
    return;
  }

  const channel = member.guild.systemChannel;
  await channel?.send(
    `⚠️ ${member} jest na liście ${
      result.status === "scammer" ? "oszustów" : "ryzyka"
    } Zgłoś Scammera.\nPowód: ${result.reason}\n${result.url}`,
  );
});

client.login(process.env.DISCORD_TOKEN);
```

## Komenda `/sprawdz`

```js commands/sprawdz.js theme={null}
import { SlashCommandBuilder } from "discord.js";
import { checkUser } from "../lib/zglos-scammera.js";

const MESSAGES = {
  scammer: "🚨 Zweryfikowany oszust",
  risk: "⚠️ Lista ryzyka — zachowaj ostrożność",
  legit: "✅ Zaufana osoba",
  unknown: "Brak na listach Zgłoś Scammera",
};

export const data = new SlashCommandBuilder()
  .setName("sprawdz")
  .setDescription("Sprawdź użytkownika w bazie Zgłoś Scammera")
  .addUserOption((option) =>
    option.setName("uzytkownik").setDescription("Kogo sprawdzić").setRequired(true),
  );

export async function execute(interaction) {
  const user = interaction.options.getUser("uzytkownik", true);
  await interaction.deferReply();
  const result = await checkUser(user.id);
  await interaction.editReply(
    [MESSAGES[result.status], result.url].filter(Boolean).join("\n"),
  );
}
```

<Tip>
  Trzymaj wyniki w krótkim cache (np. 5 minut na użytkownika), jeśli sprawdzasz członków przy każdej wiadomości.
</Tip>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.