Enhance bot and WebUI functionality with new features and environment updates
- Added support for new environment variables in `.env.example` for public site and legal operator information. - Integrated core commands into the bot's command structure for improved functionality. - Implemented a new `publishBotStatus` function to update bot status in Redis, enhancing monitoring capabilities. - Updated the landing page to include features, invite links, and support server access, improving user experience. - Enhanced localization with new keys for core commands and landing page elements in both English and German. - Improved error handling and logging for bot presence updates and status publishing.
This commit is contained in:
@@ -36,26 +36,86 @@
|
||||
"integrations": "Integrationen"
|
||||
},
|
||||
"modules": {
|
||||
"moderation": { "label": "Moderation", "description": "Bans, Verwarnungen, Timeouts und das Fall-System" },
|
||||
"automod": { "label": "Auto-Moderation", "description": "Spam-, Raid- und Nuke-Schutz" },
|
||||
"logging": { "label": "Logging", "description": "Log-Kanäle für Server-Events" },
|
||||
"welcome": { "label": "Willkommen & Abschied", "description": "Join- und Leave-Nachrichten, Autoroles" },
|
||||
"verification": { "label": "Verifizierung", "description": "Button- und Captcha-Verifizierung" },
|
||||
"leveling": { "label": "Leveling & XP", "description": "Text- und Voice-XP, Rollen-Belohnungen" },
|
||||
"economy": { "label": "Economy", "description": "Währung, Shop und Spiele" },
|
||||
"fun": { "label": "Fun & Spiele", "description": "Minispiele und Medien-Commands" },
|
||||
"giveaways": { "label": "Giveaways", "description": "Button-basierte Giveaways" },
|
||||
"tickets": { "label": "Tickets", "description": "Support-Ticket-Panels und Transkripte" },
|
||||
"selfroles": { "label": "Self Roles", "description": "Reaktions-, Button- und Dropdown-Rollenpanels" },
|
||||
"tags": { "label": "Tags", "description": "Custom Commands und Auto-Responder" },
|
||||
"starboard": { "label": "Starboard", "description": "Beliebte Nachrichten hervorheben" },
|
||||
"suggestions": { "label": "Vorschläge", "description": "Community-Vorschläge mit Abstimmung" },
|
||||
"birthdays": { "label": "Geburtstage", "description": "Geburtstags-Ankündigungen und -Rollen" },
|
||||
"tempvoice": { "label": "Temp-Voice", "description": "Join-to-Create Voice-Kanäle" },
|
||||
"stats": { "label": "Server-Statistiken", "description": "Automatische Statistik-Kanäle und Invites" },
|
||||
"feeds": { "label": "Social Feeds", "description": "Twitch-, YouTube-, RSS- und Reddit-Benachrichtigungen" },
|
||||
"scheduler": { "label": "Scheduler", "description": "Geplante und wiederkehrende Ankündigungen" },
|
||||
"guildbackup": { "label": "Backups", "description": "Server-Backup und -Wiederherstellung" }
|
||||
"moderation": {
|
||||
"label": "Moderation",
|
||||
"description": "Bans, Verwarnungen, Timeouts und das Fall-System"
|
||||
},
|
||||
"automod": {
|
||||
"label": "Auto-Moderation",
|
||||
"description": "Spam-, Raid- und Nuke-Schutz"
|
||||
},
|
||||
"logging": {
|
||||
"label": "Logging",
|
||||
"description": "Log-Kanäle für Server-Events"
|
||||
},
|
||||
"welcome": {
|
||||
"label": "Willkommen & Abschied",
|
||||
"description": "Join- und Leave-Nachrichten, Autoroles"
|
||||
},
|
||||
"verification": {
|
||||
"label": "Verifizierung",
|
||||
"description": "Button- und Captcha-Verifizierung"
|
||||
},
|
||||
"leveling": {
|
||||
"label": "Leveling & XP",
|
||||
"description": "Text- und Voice-XP, Rollen-Belohnungen"
|
||||
},
|
||||
"economy": {
|
||||
"label": "Economy",
|
||||
"description": "Währung, Shop und Spiele"
|
||||
},
|
||||
"fun": {
|
||||
"label": "Fun & Spiele",
|
||||
"description": "Minispiele und Medien-Commands"
|
||||
},
|
||||
"giveaways": {
|
||||
"label": "Giveaways",
|
||||
"description": "Button-basierte Giveaways"
|
||||
},
|
||||
"tickets": {
|
||||
"label": "Tickets",
|
||||
"description": "Support-Ticket-Panels und Transkripte"
|
||||
},
|
||||
"selfroles": {
|
||||
"label": "Self Roles",
|
||||
"description": "Reaktions-, Button- und Dropdown-Rollenpanels"
|
||||
},
|
||||
"tags": {
|
||||
"label": "Tags",
|
||||
"description": "Custom Commands und Auto-Responder"
|
||||
},
|
||||
"starboard": {
|
||||
"label": "Starboard",
|
||||
"description": "Beliebte Nachrichten hervorheben"
|
||||
},
|
||||
"suggestions": {
|
||||
"label": "Vorschläge",
|
||||
"description": "Community-Vorschläge mit Abstimmung"
|
||||
},
|
||||
"birthdays": {
|
||||
"label": "Geburtstage",
|
||||
"description": "Geburtstags-Ankündigungen und -Rollen"
|
||||
},
|
||||
"tempvoice": {
|
||||
"label": "Temp-Voice",
|
||||
"description": "Join-to-Create Voice-Kanäle"
|
||||
},
|
||||
"stats": {
|
||||
"label": "Server-Statistiken",
|
||||
"description": "Automatische Statistik-Kanäle und Invites"
|
||||
},
|
||||
"feeds": {
|
||||
"label": "Social Feeds",
|
||||
"description": "Twitch-, YouTube-, RSS- und Reddit-Benachrichtigungen"
|
||||
},
|
||||
"scheduler": {
|
||||
"label": "Scheduler",
|
||||
"description": "Geplante und wiederkehrende Ankündigungen"
|
||||
},
|
||||
"guildbackup": {
|
||||
"label": "Backups",
|
||||
"description": "Server-Backup und -Wiederherstellung"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
"title": "Nexumi",
|
||||
@@ -141,7 +201,11 @@
|
||||
"addEscalation": "Regel hinzufügen",
|
||||
"warnCount": "Anzahl Verwarnungen",
|
||||
"action": "Aktion",
|
||||
"actions": { "TIMEOUT": "Timeout", "KICK": "Kick", "BAN": "Ban" },
|
||||
"actions": {
|
||||
"TIMEOUT": "Timeout",
|
||||
"KICK": "Kick",
|
||||
"BAN": "Ban"
|
||||
},
|
||||
"durationMs": "Dauer (ms)",
|
||||
"reason": "Grund",
|
||||
"reasonPlaceholder": "Optionaler Standardgrund",
|
||||
@@ -197,7 +261,11 @@
|
||||
"welcomeEnabledLabel": "Willkommensnachricht aktiviert",
|
||||
"welcomeChannelId": "Willkommens-Kanal-ID",
|
||||
"welcomeType": "Nachrichtentyp",
|
||||
"type": { "TEXT": "Text", "EMBED": "Embed", "IMAGE": "Bild-Karte" },
|
||||
"type": {
|
||||
"TEXT": "Text",
|
||||
"EMBED": "Embed",
|
||||
"IMAGE": "Bild-Karte"
|
||||
},
|
||||
"welcomeContent": "Nachrichtentext",
|
||||
"contentPlaceholder": "Willkommen {user} auf {server}!",
|
||||
"placeholdersHint": "Verfügbare Platzhalter: {user}, {user.name}, {user.tag}, {user.id}, {server}, {memberCount}",
|
||||
@@ -337,7 +405,11 @@
|
||||
"channelId": "Kanal-ID",
|
||||
"panelTitle": "Panel-Titel",
|
||||
"mode": "Modus",
|
||||
"modes": { "BUTTONS": "Buttons", "DROPDOWN": "Dropdown", "REACTIONS": "Reaktionen" },
|
||||
"modes": {
|
||||
"BUTTONS": "Buttons",
|
||||
"DROPDOWN": "Dropdown",
|
||||
"REACTIONS": "Reaktionen"
|
||||
},
|
||||
"behavior": "Verhalten",
|
||||
"behaviors": {
|
||||
"NORMAL": "Normal (frei umschaltbar)",
|
||||
@@ -361,7 +433,10 @@
|
||||
"createDescription": "Custom Commands und Auto-Responder, ausgelöst per Name oder Stichwort.",
|
||||
"name": "Name",
|
||||
"responseType": "Antworttyp",
|
||||
"responseTypes": { "TEXT": "Text", "EMBED": "Embed" },
|
||||
"responseTypes": {
|
||||
"TEXT": "Text",
|
||||
"EMBED": "Embed"
|
||||
},
|
||||
"triggerWord": "Auslöse-Wort (optional)",
|
||||
"content": "Inhalt",
|
||||
"allowedRoleIds": "Erlaubte Rollen-IDs",
|
||||
@@ -620,5 +695,88 @@
|
||||
"forbidden": "Du hast keinen Zugriff auf diesen Server.",
|
||||
"notFound": "Nicht gefunden.",
|
||||
"generic": "Etwas ist schiefgelaufen. Bitte erneut versuchen."
|
||||
},
|
||||
"site": {
|
||||
"nav": {
|
||||
"status": "Status",
|
||||
"invite": "Einladen",
|
||||
"support": "Support",
|
||||
"login": "Anmelden",
|
||||
"dashboard": "Dashboard",
|
||||
"theme": "Design"
|
||||
},
|
||||
"footer": {
|
||||
"status": "Status",
|
||||
"impressum": "Impressum",
|
||||
"privacy": "Datenschutz",
|
||||
"terms": "Nutzungsbedingungen",
|
||||
"dashboard": "Dashboard"
|
||||
}
|
||||
},
|
||||
"landing": {
|
||||
"hero": {
|
||||
"subtitle": "Selbst gehosteter Discord-Bot mit Moderations-, Community- und Integrationsmodulen sowie Web-Dashboard.",
|
||||
"invite": "Bot einladen",
|
||||
"login": "Zum Dashboard",
|
||||
"dashboard": "Dashboard öffnen",
|
||||
"support": "Support-Server"
|
||||
},
|
||||
"stats": {
|
||||
"guilds": "Server",
|
||||
"users": "Nutzer (ca.)"
|
||||
},
|
||||
"features": {
|
||||
"title": "Module",
|
||||
"subtitle": "Funktionen, die Nexumi pro Server bereitstellt."
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"title": "Status",
|
||||
"subtitle": "Verfügbarkeit, Shard-Status und aktuelle Hinweise.",
|
||||
"overall": {
|
||||
"operational": "Betriebsbereit",
|
||||
"maintenance": "Wartung",
|
||||
"degraded": "Eingeschränkt"
|
||||
},
|
||||
"latency": "API-Latenz",
|
||||
"guilds": "Server",
|
||||
"uptime": "Bot-Uptime",
|
||||
"shardsTitle": "Shards",
|
||||
"shardsEmpty": "Keine Shard-Daten vom Bot (Redis bot:status fehlt oder ist abgelaufen).",
|
||||
"shardLabel": "Shard {id}",
|
||||
"shardStatus": "Status",
|
||||
"updatesTitle": "Updates & Incidents",
|
||||
"updatesEmpty": "Noch keine Einträge.",
|
||||
"incident": "Incident"
|
||||
},
|
||||
"legal": {
|
||||
"navTitle": "Rechtliches",
|
||||
"scaffoldNotice": "Gerüsttext — bitte vor Produktion rechtlich prüfen und anpassen.",
|
||||
"impressum": {
|
||||
"title": "Impressum",
|
||||
"intro": "Angaben gemäß § 5 DDG.",
|
||||
"name": "Anbieter",
|
||||
"address": "Anschrift",
|
||||
"email": "E-Mail",
|
||||
"phone": "Telefon",
|
||||
"notConfigured": "Betreiberdaten fehlen. Bitte LEGAL_OPERATOR_NAME, LEGAL_OPERATOR_ADDRESS und LEGAL_OPERATOR_EMAIL in der .env setzen.",
|
||||
"p1": "Verantwortlich für den Inhalt dieser Website und den Betrieb von Nexumi ist der oben genannte Anbieter.",
|
||||
"p2": "Für Inhalte externer Links übernehmen wir keine Haftung. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich."
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Datenschutzerklärung",
|
||||
"p1": "Nexumi verarbeitet Discord-Daten, soweit dies für den Betrieb des Bots und des Dashboards erforderlich ist (z. B. Server-IDs, Nutzer-IDs, Moderationsfälle, Modul-Einstellungen).",
|
||||
"p2": "Die Anmeldung am Dashboard erfolgt über Discord OAuth2 (Scopes identify und guilds). Es werden Sitzungsdaten in Redis gespeichert.",
|
||||
"p3": "Daten werden in der selbst gehosteten PostgreSQL-Datenbank gespeichert. Aufbewahrungsdauern sind über Modul-Einstellungen bzw. Löschanfragen steuerbar.",
|
||||
"p4": "Es findet keine Weitergabe an Dritte statt, außer soweit für den Betrieb technisch erforderlich (z. B. Discord API, optional Sentry).",
|
||||
"p5": "Betroffene können Auskunft, Berichtigung und Löschung verlangen. Kontakt über die im Impressum genannte Adresse oder den Bot-Command /gdpr sofern verfügbar."
|
||||
},
|
||||
"terms": {
|
||||
"title": "Nutzungsbedingungen",
|
||||
"p1": "Nexumi wird als selbst gehosteter Discord-Bot bereitgestellt. Die Nutzung erfolgt auf eigene Verantwortung.",
|
||||
"p2": "Missbrauch, Spam oder Verstöße gegen die Discord Terms of Service können zum Ausschluss (Blacklist) führen.",
|
||||
"p3": "Wir übernehmen keine Gewähr für unterbrechungsfreien Betrieb. Wartungsfenster werden nach Möglichkeit angekündigt.",
|
||||
"p4": "Es gilt das Recht der Bundesrepublik Deutschland, soweit zwingende Verbraucherschutzvorschriften nichts anderes vorsehen."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,26 +36,86 @@
|
||||
"integrations": "Integrations"
|
||||
},
|
||||
"modules": {
|
||||
"moderation": { "label": "Moderation", "description": "Bans, warns, timeouts and the case system" },
|
||||
"automod": { "label": "Auto-Moderation", "description": "Spam, raid and nuke protection" },
|
||||
"logging": { "label": "Logging", "description": "Server event log channels" },
|
||||
"welcome": { "label": "Welcome & Leave", "description": "Join and leave messages, autoroles" },
|
||||
"verification": { "label": "Verification", "description": "Button and captcha verification" },
|
||||
"leveling": { "label": "Leveling & XP", "description": "Text and voice XP, level rewards" },
|
||||
"economy": { "label": "Economy", "description": "Currency, shop and games" },
|
||||
"fun": { "label": "Fun & Games", "description": "Mini games and media commands" },
|
||||
"giveaways": { "label": "Giveaways", "description": "Button-based giveaways" },
|
||||
"tickets": { "label": "Tickets", "description": "Support ticket panels and transcripts" },
|
||||
"selfroles": { "label": "Self Roles", "description": "Reaction, button and dropdown role panels" },
|
||||
"tags": { "label": "Tags", "description": "Custom commands and auto-responders" },
|
||||
"starboard": { "label": "Starboard", "description": "Highlight popular messages" },
|
||||
"suggestions": { "label": "Suggestions", "description": "Community suggestion voting" },
|
||||
"birthdays": { "label": "Birthdays", "description": "Birthday announcements and roles" },
|
||||
"tempvoice": { "label": "Temp Voice", "description": "Join-to-create voice channels" },
|
||||
"stats": { "label": "Server Stats", "description": "Auto-updating stat channels and invites" },
|
||||
"feeds": { "label": "Social Feeds", "description": "Twitch, YouTube, RSS and Reddit notifications" },
|
||||
"scheduler": { "label": "Scheduler", "description": "Scheduled and recurring announcements" },
|
||||
"guildbackup": { "label": "Backups", "description": "Server backup and restore" }
|
||||
"moderation": {
|
||||
"label": "Moderation",
|
||||
"description": "Bans, warns, timeouts and the case system"
|
||||
},
|
||||
"automod": {
|
||||
"label": "Auto-Moderation",
|
||||
"description": "Spam, raid and nuke protection"
|
||||
},
|
||||
"logging": {
|
||||
"label": "Logging",
|
||||
"description": "Server event log channels"
|
||||
},
|
||||
"welcome": {
|
||||
"label": "Welcome & Leave",
|
||||
"description": "Join and leave messages, autoroles"
|
||||
},
|
||||
"verification": {
|
||||
"label": "Verification",
|
||||
"description": "Button and captcha verification"
|
||||
},
|
||||
"leveling": {
|
||||
"label": "Leveling & XP",
|
||||
"description": "Text and voice XP, level rewards"
|
||||
},
|
||||
"economy": {
|
||||
"label": "Economy",
|
||||
"description": "Currency, shop and games"
|
||||
},
|
||||
"fun": {
|
||||
"label": "Fun & Games",
|
||||
"description": "Mini games and media commands"
|
||||
},
|
||||
"giveaways": {
|
||||
"label": "Giveaways",
|
||||
"description": "Button-based giveaways"
|
||||
},
|
||||
"tickets": {
|
||||
"label": "Tickets",
|
||||
"description": "Support ticket panels and transcripts"
|
||||
},
|
||||
"selfroles": {
|
||||
"label": "Self Roles",
|
||||
"description": "Reaction, button and dropdown role panels"
|
||||
},
|
||||
"tags": {
|
||||
"label": "Tags",
|
||||
"description": "Custom commands and auto-responders"
|
||||
},
|
||||
"starboard": {
|
||||
"label": "Starboard",
|
||||
"description": "Highlight popular messages"
|
||||
},
|
||||
"suggestions": {
|
||||
"label": "Suggestions",
|
||||
"description": "Community suggestion voting"
|
||||
},
|
||||
"birthdays": {
|
||||
"label": "Birthdays",
|
||||
"description": "Birthday announcements and roles"
|
||||
},
|
||||
"tempvoice": {
|
||||
"label": "Temp Voice",
|
||||
"description": "Join-to-create voice channels"
|
||||
},
|
||||
"stats": {
|
||||
"label": "Server Stats",
|
||||
"description": "Auto-updating stat channels and invites"
|
||||
},
|
||||
"feeds": {
|
||||
"label": "Social Feeds",
|
||||
"description": "Twitch, YouTube, RSS and Reddit notifications"
|
||||
},
|
||||
"scheduler": {
|
||||
"label": "Scheduler",
|
||||
"description": "Scheduled and recurring announcements"
|
||||
},
|
||||
"guildbackup": {
|
||||
"label": "Backups",
|
||||
"description": "Server backup and restore"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
"title": "Nexumi",
|
||||
@@ -141,7 +201,11 @@
|
||||
"addEscalation": "Add rule",
|
||||
"warnCount": "Warning count",
|
||||
"action": "Action",
|
||||
"actions": { "TIMEOUT": "Timeout", "KICK": "Kick", "BAN": "Ban" },
|
||||
"actions": {
|
||||
"TIMEOUT": "Timeout",
|
||||
"KICK": "Kick",
|
||||
"BAN": "Ban"
|
||||
},
|
||||
"durationMs": "Duration (ms)",
|
||||
"reason": "Reason",
|
||||
"reasonPlaceholder": "Optional default reason",
|
||||
@@ -197,7 +261,11 @@
|
||||
"welcomeEnabledLabel": "Welcome message enabled",
|
||||
"welcomeChannelId": "Welcome channel ID",
|
||||
"welcomeType": "Message type",
|
||||
"type": { "TEXT": "Text", "EMBED": "Embed", "IMAGE": "Image card" },
|
||||
"type": {
|
||||
"TEXT": "Text",
|
||||
"EMBED": "Embed",
|
||||
"IMAGE": "Image card"
|
||||
},
|
||||
"welcomeContent": "Message content",
|
||||
"contentPlaceholder": "Welcome {user} to {server}!",
|
||||
"placeholdersHint": "Available placeholders: {user}, {user.name}, {user.tag}, {user.id}, {server}, {memberCount}",
|
||||
@@ -337,7 +405,11 @@
|
||||
"channelId": "Channel ID",
|
||||
"panelTitle": "Panel title",
|
||||
"mode": "Mode",
|
||||
"modes": { "BUTTONS": "Buttons", "DROPDOWN": "Dropdown", "REACTIONS": "Reactions" },
|
||||
"modes": {
|
||||
"BUTTONS": "Buttons",
|
||||
"DROPDOWN": "Dropdown",
|
||||
"REACTIONS": "Reactions"
|
||||
},
|
||||
"behavior": "Behavior",
|
||||
"behaviors": {
|
||||
"NORMAL": "Normal (toggle freely)",
|
||||
@@ -361,7 +433,10 @@
|
||||
"createDescription": "Custom commands and auto-responders triggered by name or keyword.",
|
||||
"name": "Name",
|
||||
"responseType": "Response type",
|
||||
"responseTypes": { "TEXT": "Text", "EMBED": "Embed" },
|
||||
"responseTypes": {
|
||||
"TEXT": "Text",
|
||||
"EMBED": "Embed"
|
||||
},
|
||||
"triggerWord": "Trigger word (optional)",
|
||||
"content": "Content",
|
||||
"allowedRoleIds": "Allowed role IDs",
|
||||
@@ -620,5 +695,88 @@
|
||||
"forbidden": "You do not have access to this server.",
|
||||
"notFound": "Not found.",
|
||||
"generic": "Something went wrong. Please try again."
|
||||
},
|
||||
"site": {
|
||||
"nav": {
|
||||
"status": "Status",
|
||||
"invite": "Invite",
|
||||
"support": "Support",
|
||||
"login": "Log in",
|
||||
"dashboard": "Dashboard",
|
||||
"theme": "Theme"
|
||||
},
|
||||
"footer": {
|
||||
"status": "Status",
|
||||
"impressum": "Legal notice",
|
||||
"privacy": "Privacy",
|
||||
"terms": "Terms",
|
||||
"dashboard": "Dashboard"
|
||||
}
|
||||
},
|
||||
"landing": {
|
||||
"hero": {
|
||||
"subtitle": "Self-hosted Discord bot with moderation, community, and integration modules plus a web dashboard.",
|
||||
"invite": "Invite bot",
|
||||
"login": "Open dashboard",
|
||||
"dashboard": "Open dashboard",
|
||||
"support": "Support server"
|
||||
},
|
||||
"stats": {
|
||||
"guilds": "Servers",
|
||||
"users": "Users (approx.)"
|
||||
},
|
||||
"features": {
|
||||
"title": "Modules",
|
||||
"subtitle": "Features Nexumi provides per server."
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"title": "Status",
|
||||
"subtitle": "Availability, shard status, and recent notices.",
|
||||
"overall": {
|
||||
"operational": "Operational",
|
||||
"maintenance": "Maintenance",
|
||||
"degraded": "Degraded"
|
||||
},
|
||||
"latency": "API latency",
|
||||
"guilds": "Servers",
|
||||
"uptime": "Bot uptime",
|
||||
"shardsTitle": "Shards",
|
||||
"shardsEmpty": "No shard data from the bot (Redis bot:status missing or expired).",
|
||||
"shardLabel": "Shard {id}",
|
||||
"shardStatus": "Status",
|
||||
"updatesTitle": "Updates & incidents",
|
||||
"updatesEmpty": "No entries yet.",
|
||||
"incident": "Incident"
|
||||
},
|
||||
"legal": {
|
||||
"navTitle": "Legal",
|
||||
"scaffoldNotice": "Scaffold text — review and adapt before production use.",
|
||||
"impressum": {
|
||||
"title": "Legal notice",
|
||||
"intro": "Information according to German Telemedia Act (DDG).",
|
||||
"name": "Operator",
|
||||
"address": "Address",
|
||||
"email": "Email",
|
||||
"phone": "Phone",
|
||||
"notConfigured": "Operator details missing. Set LEGAL_OPERATOR_NAME, LEGAL_OPERATOR_ADDRESS, and LEGAL_OPERATOR_EMAIL in .env.",
|
||||
"p1": "The operator named above is responsible for this website and for running Nexumi.",
|
||||
"p2": "We are not responsible for external links. Operators of linked sites are solely responsible for their content."
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Privacy policy",
|
||||
"p1": "Nexumi processes Discord data as required to operate the bot and dashboard (e.g. guild IDs, user IDs, moderation cases, module settings).",
|
||||
"p2": "Dashboard login uses Discord OAuth2 (identify and guilds scopes). Session data is stored in Redis.",
|
||||
"p3": "Data is stored in the self-hosted PostgreSQL database. Retention can be configured per module or via deletion requests.",
|
||||
"p4": "Data is not shared with third parties except where technically required (e.g. Discord API, optional Sentry).",
|
||||
"p5": "Data subjects may request access, correction, and deletion via the contact in the legal notice or bot commands where available."
|
||||
},
|
||||
"terms": {
|
||||
"title": "Terms of service",
|
||||
"p1": "Nexumi is provided as a self-hosted Discord bot. Use is at your own risk.",
|
||||
"p2": "Abuse, spam, or violations of Discord Terms of Service may result in blacklisting.",
|
||||
"p3": "We do not guarantee uninterrupted service. Maintenance windows are announced when possible.",
|
||||
"p4": "German law applies unless mandatory consumer protection rules require otherwise."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user