Umfragen: /umfrage als native Discord-Abstimmung
Deploy / check (push) Has been cancelled
Deploy / deploy (push) Has been cancelled

Bewusst Discords eigenes Poll-Objekt statt einer Nachbildung mit Knoepfen —
Oberflaeche, Auszaehlen und Ergebnisanzeige macht Discord dann selbst, auch
auf dem Handy. Wir bauen nur die Frage zusammen.

Bis zu vier Antworten (Discord erlaubt zehn, vier halten den Befehl
uebersichtlich), Laufzeit von einer Stunde bis einer Woche, Mehrfachauswahl
optional. Rechte: ManageMessages.

Zwei gleiche Antworten werden abgefangen. Discord stoert das nicht, aber
abstimmen kann darauf niemand sinnvoll.

Nicht zu verwechseln mit /wunsch: das sammelt Feature-Wuensche dauerhaft und
zeigt sie auf der Roadmap. /umfrage ist die schnelle Frage zwischendurch und
laeuft von selbst ab. Steht so auch als Kommentar im Befehl.

Geprueft gegen die installierte discord.js-Fassung (14.27) statt gegen die
Dokumentation: Feldnamen aus den Typdefinitionen gelesen, und die fertige
Nutzlast durch discord.js' eigene Serialisierung gejagt. Kommt als
poll_media / allow_multiselect / layout_type 1 raus, genau wie Discords API
es erwartet.

Dazu: 18 Befehle laden ohne Namenskollision, Befehl steht auf der
oeffentlichen Liste in beiden Sprachen, Zahl auf der Produktseite von 17
auf 18.

Nutzungsbedingungen als Entwurf unter docs/ — Text fuer den Seiten-Editor,
keine Rechtsberatung.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-01 06:34:04 +02:00
co-authored by Claude Fable 5
parent 52a735f83a
commit c8b1f604f0
9 changed files with 186 additions and 3 deletions
+1
View File
@@ -267,6 +267,7 @@ export default {
'commands.remind': 'Erinnert dich per Direktnachricht — etwa „2h" oder „30m".',
'commands.tag': 'Ruft einen gespeicherten Textbaustein ab, mit Vorschlägen beim Tippen.',
'commands.ping': 'Lebenszeichen des Bots.',
'commands.umfrage': 'Startet eine Abstimmung mit bis zu vier Antworten — Discord zählt selbst aus.',
'commands.warn': 'Verwarnt jemanden, schickt eine Nachricht und schreibt es ins Protokoll.',
'commands.warns': 'Zeigt die Verwarnungs-Historie.',
'commands.timeout': 'Setzt eine Auszeit.',
+3
View File
@@ -279,6 +279,8 @@ export default {
'feat.gallery.desc': 'Images from one channel show up in the public gallery.',
'feat.voting': 'Feature wishes',
'feat.voting.desc': 'Submit wishes and vote on them — on Discord and on the roadmap.',
'feat.polls': 'Polls',
'feat.polls.desc': 'Quick votes as a native Discord poll — /umfrage.',
'feat.giveaways': 'Giveaways',
'feat.giveaways.desc': 'Enter with a button, automatic draw, reroll available.',
'feat.birthdays': 'Birthdays',
@@ -352,6 +354,7 @@ export default {
'commands.remind': 'Reminds you by direct message — something like “2h” or “30m”.',
'commands.tag': 'Fetches a saved text snippet, with suggestions as you type.',
'commands.ping': 'A sign of life from the bot.',
'commands.umfrage': 'Starts a vote with up to four answers — Discord does the counting.',
'commands.warn': 'Warns someone, sends them a message and writes it to the log.',
'commands.warns': 'Shows the warning history.',
'commands.timeout': 'Puts someone in timeout.',
+1 -1
View File
@@ -20,7 +20,7 @@ export const MODULE_ICONS = {
events: IconEvents, playtester: IconGame, alpha_keys: IconKey,
role_menus: IconRoles, applications: IconApplications,
moderation: IconShield, anti_raid: IconLock, modlog: IconArchive, modmail: IconMail,
linked_roles: IconLink,
linked_roles: IconLink, polls: IconThumbsUp,
tickets: IconSupport, welcome: IconMagic, autorole: IconTeam,
sticky_roles: IconRefresh, bug_reports: IconWarning,
server_monitor: IconServer, watchdog: IconMonitor, temp_voice: IconVoice,
+1
View File
@@ -14,6 +14,7 @@ const GROUPS = [
['/remind dauer:… text:…', 'commands.remind'],
['/tag name:…', 'commands.tag'],
['/ping', 'commands.ping'],
['/umfrage frage:… a:… b:…', 'commands.umfrage'],
]],
['commands.g.mod', true, [
['/warn user:… grund:…', 'commands.warn'],
+1 -1
View File
@@ -67,7 +67,7 @@ export default function BotLanding() {
</div>
)}
<div className="srv-sum-item">
<span className="srv-sum-n">17</span>
<span className="srv-sum-n">18</span>
<span className="srv-sum-label">{t('bot.statCommands')}</span>
</div>
<div className="srv-sum-item">