K-Scripts / docs
Ticket Bot — v2.0.0

Documentatie / NL

Zelfgebouwde Discord ticket bot voor FiveM servers. Alles werkt via slash commands, gebouwd met Discord.js v14.

Discord.js v14 Node.js 18+ 50 commands Geen database

Vereisten

Zorg dat je het volgende hebt voor je begint:

  • Node.js 18 of hoger — controleer met node -v, downloaden via nodejs.org.
  • Een bot aangemaakt via de Discord Developer Portal op discord.com/developers/applications.
  • De volgende intents ingeschakeld in de Developer Portal:
  • Server Members Intent
  • Message Content Intent
  • Presence Intent
Zonder deze intents start de bot niet of werken bepaalde functies niet correct.

Installatie

  1. 1
    Pak de bestanden uit naar een map en open een terminal daarin.
  2. 2
    Installeer de packages:
    npm install
  3. 3
    Vul config/config.json in — zie het onderdeel Configuratie.
  4. 4
    Registreer de slash commands (eenmalig, of opnieuw na wijzigingen):
    node src/deploy.js
  5. 5
    Start de bot:
    npm start
    Voor productie via PM2: pm2 start ecosystem.config.js

Configuratie

Open config/config.json. Zet Developer Mode aan in Discord via Instellingen › Geavanceerd — dan kun je op alles rechtsklikken om een ID te kopiëren.

VeldBeschrijving
TOKENBot token uit de Developer Portal, tabblad Bot. Nooit publiek maken.
CLIENT_IDApplicatie-ID, staat op General Information in de Developer Portal.
GUILD_IDID van je server — rechtsklik op de server, ID kopiëren.
TICKET_CATEGORY_IDCategorie waar ticketkanalen aangemaakt worden.
TICKET_CHANNEL_IDKanaal waar het ticketpanel geplaatst wordt.
TICKET_LOG_CHANNEL_IDKanaal voor ticketlogs — elke actie wordt hier gepost.
TICKET_TRANSCRIPT_CHANNEL_IDKanaal waar transcripts naartoe gestuurd worden na sluiten.
MEMBER_COUNT_CHANNEL_IDVoice kanaal waarvan de naam het ledenaantal toont.
SUPPORT_ROLE_IDSupportrol — tickets beheren.
ADMIN_ROLE_IDAdminrol — toegang tot alle commands.
MOD_ROLE_IDModeratorrol — moderatiecommands.
WELCOME_CHANNEL_IDKanaal voor welkomst- en afscheidsberichten.
MUTED_ROLE_IDMuterol voor handmatige mutes.
BOT_COLORKleurcode voor embeds, zonder hekje — bijv. 5865F2.
BOT_NAMENaam die onderaan embeds verschijnt.
BOT_LOGOURL naar afbeelding voor het logo in embeds.
TICKET_TYPESLijst van ticket types — zie hieronder.

Ticket types

Standaard: Support, Ban Appeal, Speler Rapporteren en Aankoop Probleem. Aanpasbaar via TICKET_TYPES in de config.

VeldUitleg
idUnieke naam zonder spaties, bijv. support
labelNaam die gebruikers zien in het dropdown-menu
descriptionKorte omschrijving in het dropdown-menu
emojiEmoji die voor de naam staat
prefixBegin van de kanaalnaam — ticket geeft ticket-0001

Hoe het ticketsysteem werkt

  • 01Je plaatst het panel met /ticket-panel in een kanaal.
  • 02Een gebruiker opent het dropdown-menu en kiest een ticket type.
  • 03Er wordt automatisch een privékanaal aangemaakt — alleen de gebruiker en de supportrol kunnen het zien.
  • 04In het kanaal staan knoppen: sluiten, claimen, gebruiker toevoegen en transcript.
  • 05Als iemand sluit verschijnt er een bevestigingsvraag.
  • 06Na bevestiging wordt een HTML transcript gestuurd naar het transcriptkanaal en het kanaal verdwijnt na 5 seconden.
  • 07De ticket eigenaar krijgt een DM dat het ticket gesloten is.

Commands — Tickets

/ticket-panel[kanaal] [titel] [beschrijving]Admin

Plaatst het aanmaakpanel. Gebruikers kiezen via een dropdown een type. Kanaal, titel en beschrijving zijn optioneel.

/ticket-closeStaff / Eigenaar

Sluit het ticket met een bevestigingsvraag. Na bevestigen wordt transcript gemaakt en verstuurd, kanaal verdwijnt na 5 sec.

/ticket-add[gebruiker]Staff

Voegt een gebruiker toe aan het ticket. Die persoon krijgt lees- en schrijftoegang tot het kanaal.

/ticket-remove[gebruiker]Staff

Verwijdert een gebruiker uit het ticket. De eigenaar zelf kan niet verwijderd worden.

/ticket-claimStaff

Claimt het ticket. Iedereen ziet dat jij het oppakt. Je kunt geen al geclaimed ticket claimen.

/ticket-unclaimStaff

Geeft de claim vrij. Admins kunnen ook de claim van iemand anders vrijgeven.

/ticket-rename[naam]Staff

Hernoemt het kanaal. Spaties en speciale tekens worden automatisch koppeltekens.

/ticket-priority[laag / normaal / hoog / urgent]Staff

Stelt de prioriteit in. De kleur van het embed past mee aan.

/ticket-lockStaff

Vergrendelt het ticket voor de gebruiker — nog zichtbaar, maar kan niet meer typen. Zelfde command ontgrendelt.

/ticket-move[categorie]Staff

Verplaatst het kanaal naar een andere categorie. Handig voor workflows met aparte categorieën per status.

/ticket-note[notitie]Staff

Voegt een interne notitie toe aan de ticketdata. Alleen zichtbaar voor staffleden.

/ticket-transcriptStaff

Genereert een HTML transcript van het ticket en stuurt het direct naar jou in DM.

/ticket-infoIedereen

Toont ticketinfo: eigenaar, type, status, prioriteit, claimer en aanmaakdatum.

/ticket-statsIedereen

Statistieken: totaal, open, gesloten en per type.

/ticket-list[gebruiker]Iedereen

Lijst van open tickets. Staff ziet alles of gefilterd op gebruiker. Gewone gebruikers alleen hun eigen.

/ticket-delete[reden]Admin

Verwijdert het kanaal direct zonder transcript. Gebruik alleen als het echt nodig is — berichtgeschiedenis gaat verloren.

Commands — Moderatie

/ban[gebruiker] [reden] [dagen]Moderator

Bant een gebruiker. Stuurt eerst een DM met de reden. Met dagen geef je op hoeveel dagen berichtgeschiedenis verwijderd wordt (0–7). Actie wordt gelogd.

/unban[userid] [reden]Moderator

Verwijdert de ban op basis van Discord ID. ID terug te vinden in de banlijst. Actie wordt gelogd.

/banlistModerator

Toont de banlijst met gebruikersnaam, ID en reden. Maximaal 20 per keer.

/kick[gebruiker] [reden]Moderator

Kickt een gebruiker. Stuurt een DM met de reden. Actie wordt gelogd.

/mute[gebruiker] [duur] [reden]Moderator

Timeout. Keuze: 1 min, 5 min, 10 min, 1 uur, 1 dag, 1 week. Gebruiker krijgt DM en kan niet chatten of reageren. Actie wordt gelogd.

/unmute[gebruiker] [reden]Moderator

Verwijdert de timeout zodat de gebruiker weer kan chatten.

/warn[gebruiker] [reden]Moderator

Geeft een waarschuwing. Opgeslagen, gebruiker krijgt DM. Actie wordt gelogd.

/warnings[gebruiker]Iedereen / Mod

Toont waarschuwingen met datum, reden en wie het gaf. Zonder gebruiker je eigen. Moderators kunnen van iedereen opvragen.

/clearwarnings[gebruiker] [id]Admin

Verwijdert waarschuwingen. Met ID alleen die ene. Zonder ID alle waarschuwingen van die gebruiker.

/purge[aantal] [gebruiker]Moderator

Verwijdert meerdere berichten tegelijk, max 100. Optioneel filteren op gebruiker. Berichten ouder dan 14 dagen zijn niet verwijderbaar.

/slowmode[seconden] [kanaal]Moderator

Slowmode aan of uit. Gebruikers wachten X seconden per bericht. Op 0 zetten schakelt het uit.

/lockdown[vergrendelen / ontgrendelen] [kanaal] [reden]Moderator

Vergrendelt of ontgrendelt een kanaal voor iedereen. Er wordt automatisch een bericht geplaatst met de reden.

/role[toevoegen / verwijderen] [gebruiker] [rol]Moderator

Rol toevoegen of verwijderen van een gebruiker. Werkt niet met door integraties beheerde rollen.

/nickname[gebruiker] [naam]Moderator

Wijzigt de bijnaam. Leeg laten herstelt de gewone gebruikersnaam.

/dm[gebruiker] [bericht]Moderator

DM namens de server in een embed. Als de gebruiker DMs heeft uitgeschakeld krijg je een melding.

Commands — Admin

/announce[kanaal] [kleur] [ping]Admin

Opent een formulier voor titel en tekst. Stuurt een opgemaakte embed in het kanaal. Kleur in hex, optioneel ping.

/botstatus[type] [tekst] [status]Admin

Verandert activiteitsstatus. Keuze: Speelt, Luistert naar, Kijkt naar, Streamt. Status: Online, Idle, DND of Invisible.

/membercountAdmin

Werkt de naam van het voice ledenaantal-kanaal handmatig bij. Normaal gaat dit automatisch bij join en leave.

/giveaway[prijs] [winnaars] [minuten] [kanaal]Admin

Giveaway met timer en deelnemen-knop. Deelnemersaantal live bijgehouden. Winnaars willekeurig gekozen na afloop. Één deelname per persoon.

/poll[vraag] [optie1–4] [minuten]Moderator

Poll met 2 tot 4 opties. Resultaten live bijgewerkt met balkjes en percentages. Knoppen uitgeschakeld na afloop.

/say[bericht] [kanaal]Admin

Laat de bot een bericht sturen. Zonder kanaal het huidige kanaal.

/members[rol]Moderator

Lijst van alle leden met een bepaalde rol, met gebruikersnaam en ID.

Commands — Utility

/pingIedereen

Roundtrip latency en API latency van de verbinding met Discord.

/userinfo[gebruiker]Iedereen

ID, bijnaam, accountaanmaakdatum, toetreedatum, rollen en badges. Zonder gebruiker je eigen info.

/serverinfoIedereen

Naam, ID, eigenaar, aanmaakdatum, ledenaantal, boosts, boost level, kanalen, rollen en verificatieniveau.

/avatar[gebruiker]Iedereen

Avatar in hoge resolutie. Als de gebruiker ook een serveravatar heeft worden beide getoond, met downloadlink.

/roleinfo[rol]Iedereen

Naam, ID, kleur, positie, aanmaakdatum, apart weergeven, mentionable, ledenaantal en permissies.

/channelinfo[kanaal]Iedereen

Naam, ID, type, categorie, NSFW status, slowmode en onderwerp. Zonder kanaal het huidige.

/botstatsIedereen

Uptime, ping, servers, leden, commands, Node.js versie, geheugengebruik en platform.

/emojiinfo[emoji]Iedereen

Naam, ID, geanimeerd of niet, aanmaakdatum en de exacte code om de emoji te gebruiken.

/invites[gebruiker]Iedereen / Mod

Invite links en gebruik. Zonder gebruiker je eigen. Moderators kunnen van iedereen opvragen.

/snipeModerator

Laatste verwijderde bericht in het kanaal met auteur en tijdstip. Werkt alleen terwijl de bot online was.

/remind[tijd] [bericht]Iedereen

Herinnering via DM. Notatie: 10m min, 2h uur, 1d dag. Max 7 dagen. Bij uitgeschakelde DMs wordt het in het kanaal gestuurd.

/helpIedereen

Interactief helpmenu met dropdown. Kies een categorie voor alle commands met uitleg. Sluit na 2 minuten.

Permissieniveaus

Wie admin of mod is wordt bepaald door de rol-IDs in de config. Iemand met de Administrator permissie in Discord telt altijd als admin.

Support

Tickets beheren: claimen, sluiten, toevoegen, verwijderen, prioriteit, notities, transcripts, vergrendelen, verplaatsen, hernoemen.

Moderator

Alles van Support plus: ban, kick, mute, warn, purge, slowmode, lockdown, rollen, bijnamen en DMs sturen.

Admin

Toegang tot alles: aankondigingen, giveaways, bot status, ledencount en tickets forceren verwijderen.

Bestandsstructuur

config/ config.json alle instellingen data/ tickets/ misc/ ticketdata als JSON, één bestand per ticket logs/ HTML transcripts per gebruiker en ticket warnings.json alle waarschuwingen van alle gebruikers src/ index.js startpunt deploy.js slash commands registreren commands/ ticket/ alle ticket commands moderation/ ban, kick, mute, warn, etc. admin/ giveaway, poll, announce, etc. utility/ ping, userinfo, help, etc. events/ ready.js draait bij opstarten interactionCreate.js slash commands en knoppen guildMemberAdd.js welkomstbericht guildMemberRemove.js afscheidsbericht channelDelete.js handmatig verwijderde ticketkanalen handlers/ commandHandler.js laadt alle commands eventHandler.js laadt alle events buttonHandler.js knopinteracties selectMenuHandler.js dropdown interacties modalHandler.js formulieren utils/ embeds.js hulpfuncties voor embeds ticketDb.js ticketdata lezen en schrijven transcript.js HTML transcripts genereren permissions.js permissies controleren

Dataopslag

De bot slaat alles lokaal op als bestanden — geen database nodig.

Ticketdatadata/tickets/misc/ als JSON bestanden. Elk ticket heeft zijn eigen bestand: naam, eigenaar-ID, type, status, prioriteit, claimer, aanmaakdatum, sluitdatum en notities.

Transcriptsdata/tickets/logs/{userID}/{ticketnaam}/index.html. Te openen in een browser. Bevatten alle berichten met avatars, namen, timestamps en bijlagen.

Waarschuwingendata/warnings.json. Per server en gebruiker een lijst met reden, datum en wie het gaf.

Maak regelmatig een backup van de data/ map als je de geschiedenis wilt bewaren.

FAQ

De slash commands verschijnen niet in mijn server.

Voer node src/deploy.js opnieuw uit. Soms duurt het een paar minuten voor Discord ze doorvoert. Controleer ook of CLIENT_ID en GUILD_ID correct zijn.

De bot reageert nergens op.

Controleer of de bot online is, de token klopt en de benodigde intents aanstaan in de Developer Portal.

Het ticketpanel werkt maar er worden geen kanalen aangemaakt.

Controleer of TICKET_CATEGORY_ID klopt en of de bot de permissie heeft om kanalen aan te maken (Kanalen beheren).

Transcripts worden niet verstuurd.

Controleer TICKET_TRANSCRIPT_CHANNEL_ID en of de bot schrijftoegang heeft tot dat kanaal.

De ledencount wordt niet bijgewerkt.

Controleer of MEMBER_COUNT_CHANNEL_ID een voice kanaal is en of de bot de naam mag wijzigen.

Ik wil een nieuw command toevoegen.

Maak een nieuw .js bestand in de juiste map onder src/commands/, kopieer de structuur van een bestaand command en draai node src/deploy.js.

Ik wil de bot op meerdere servers gebruiken.

Verander Routes.applicationGuildCommands naar Routes.applicationCommands in src/deploy.js. Globale registratie kan tot een uur duren.

lxrs-notify — FiveM Resource

Notify / Tester

Test alle notificatie-types van lxrs-notify live in je browser. Klik op een preset of stel je eigen notify in.

8 types Aangepaste kleuren 7 posities Live preview
Snelle presets
Aangepaste notify
Stack test

Stuur 3 notifies tegelijk om stacking te testen.

Positie
Schermpreview
Kleuren per type
success
error
warning / info
arnhem
noodknop
overheid
oproep
Binnenkort beschikbaar
In ontwikkeling

Deze bot is nog niet uitgebracht. Documentatie wordt toegevoegd zodra de bot beschikbaar is.