@helyx/module-polls
v1.0.13
Published
Run clear single or multiple-choice polls.
Readme
Polls module
Polls lets authorised members prepare a private preview and then publish a single-choice or multiple-choice poll to a Discord text or announcement channel. Polls accept between 2 and 10 unique choices. Ballots remain private, and public cards never reveal who selected an option.
This package is in Testing. It contains the executable Discord workflow, bounded record declarations, durable behavioural task handlers, privacy provider and authenticated dashboard Polls resource. Testing status must be retained until the migration, shard-safe scheduler and live Discord acceptance evidence have passed.
Permissions
Helyx needs View Channel, Send Messages and Read Message History so it can post and update its poll message. It does not request Administrator, Manage Messages, Manage Roles, Mention Everyone or Message Content.
The stable command permissions are poll.create, poll.close, poll.results
and poll.list. Creation and list management default to members with Manage
Messages. Closing also applies the stored creator's resource-scoped authority.
Aggregate dashboard reads require polls.read; retained voter identities and
selections require the narrower polls.voters.read.
Configuration
The dashboard provides defaults for selection mode, maximum selections, result visibility, vote changes, duration, an optional voter role and public creator attribution. Published polls snapshot these values, so later default changes do not reinterpret an existing poll.
Stored data and retention
Helyx stores the poll's Discord server, channel and message IDs, its question, ordered choice labels, snapshotted voting rules and lifecycle state. Creator and closer IDs are nullable attribution. Current ballot rows store only the Discord voter ID and selected opaque option IDs. Usernames, display names, avatars, email addresses and device details are not stored.
At closure, aggregate counts are retained separately from individual ballots. Ballot identities are scheduled for deletion after 30 days and aggregate poll history after 180 days. These fixed deadlines are committed with closure into the core retention lane, so deletion does not depend on Polls remaining enabled or installed. Creator-authored question and choice text is subject to manual privacy review when it may identify a requester. Runtime privacy erasure must detach attribution, delete only the requester's ballot rows, preserve anonymous final aggregates and make no Discord API calls.
Operational boundary
Polls uses the shared record, message-builder, permission, rate-limit, logging, privacy and durable scheduled-task services. It must not open a database connection, create module-owned timers or schedulers, duplicate the Discord renderer, or emit a customer log for each vote.
