feat: PollBuilder (#10324)

* Add PollBuilder

* Add exports

* Update typings

* Update validations

* Use correct enum validator method

* Fix assertion, formatting

* Add tests

* Fix assertion

* Add JSDoc, format

* Make requested changes

* Remove unnecessary blank import

* Add support for PollBuilder in mainlib discord.js

* Add types, fix formatting

* Correct typings & assertions for poll answer emojis

* Improve typings readability

* Add JSDoc typings for overrides

* Add types for using PollBuilder in message payload

* Add tests, allow passing Emoji instance to emoji option

* Fix formatting

* Update max poll duration

* refactor: implement builders v2 pattern
This commit is contained in:
TÆMBØ
2025-02-28 02:07:27 -08:00
committed by GitHub
parent b6fda781c8
commit 88bfeaab22
10 changed files with 645 additions and 12 deletions

View File

@@ -0,0 +1,17 @@
import type { APIPollMedia } from 'discord-api-types/v10';
import { validate } from '../../util/validation.js';
import { pollQuestionPredicate } from './Assertions.js';
import { PollMediaBuilder } from './PollMedia.js';
/**
* A builder that creates API-compatible JSON data for a poll question.
*/
export class PollQuestionBuilder extends PollMediaBuilder {
public override toJSON(validationOverride?: boolean): Omit<APIPollMedia, 'emoji'> {
const clone = structuredClone(this.data);
validate(pollQuestionPredicate, clone, validationOverride);
return clone as Omit<APIPollMedia, 'emoji'>;
}
}