types: fix recurrence rule types

#10694 djs
This commit is contained in:
Elysia
2025-02-14 23:55:17 +07:00
parent c24584f408
commit 5b7b2a67eb
3 changed files with 27 additions and 17 deletions

View File

@@ -40,15 +40,12 @@ class GuildScheduledEventManager extends CachedManager {
* Options for setting a recurrence rule for a guild scheduled event. * Options for setting a recurrence rule for a guild scheduled event.
* @typedef {Object} GuildScheduledEventRecurrenceRuleOptions * @typedef {Object} GuildScheduledEventRecurrenceRuleOptions
* @property {DateResolvable} startAt The time the recurrence rule interval starts at * @property {DateResolvable} startAt The time the recurrence rule interval starts at
* @property {?DateResolvable} endAt The time the recurrence rule interval ends at
* @property {GuildScheduledEventRecurrenceRuleFrequency} frequency How often the event occurs * @property {GuildScheduledEventRecurrenceRuleFrequency} frequency How often the event occurs
* @property {number} interval The spacing between the events * @property {number} interval The spacing between the events
* @property {?GuildScheduledEventRecurrenceRuleWeekday[]} byWeekday The days within a week to recur on * @property {?GuildScheduledEventRecurrenceRuleWeekday[]} byWeekday The days within a week to recur on
* @property {?GuildScheduledEventRecurrenceRuleNWeekday[]} byNWeekday The days within a week to recur on * @property {?GuildScheduledEventRecurrenceRuleNWeekday[]} byNWeekday The days within a week to recur on
* @property {?GuildScheduledEventRecurrenceRuleMonth[]} byMonth The months to recur on * @property {?GuildScheduledEventRecurrenceRuleMonth[]} byMonth The months to recur on
* @property {?number[]} byMonthDay The days within a month to recur on * @property {?number[]} byMonthDay The days within a month to recur on
* @property {?number[]} byYearDay The days within a year to recur on
* @property {?number} count The total amount of times the event is allowed to recur before stopping
*/ */
/** /**

View File

@@ -793,16 +793,12 @@ class Util extends null {
static transformGuildScheduledEventRecurrenceRule(recurrenceRule) { static transformGuildScheduledEventRecurrenceRule(recurrenceRule) {
return { return {
start: new Date(recurrenceRule.startAt).toISOString(), start: new Date(recurrenceRule.startAt).toISOString(),
// eslint-disable-next-line eqeqeq
end: recurrenceRule.endAt != null ? new Date(recurrenceRule.endAt).toISOString() : recurrenceRule.endAt,
frequency: recurrenceRule.frequency, frequency: recurrenceRule.frequency,
interval: recurrenceRule.interval, interval: recurrenceRule.interval,
by_weekday: recurrenceRule.byWeekday, by_weekday: recurrenceRule.byWeekday,
by_n_weekday: recurrenceRule.byNWeekday, by_n_weekday: recurrenceRule.byNWeekday,
by_month: recurrenceRule.byMonth, by_month: recurrenceRule.byMonth,
by_month_day: recurrenceRule.byMonthDay, by_month_day: recurrenceRule.byMonthDay,
by_year_day: recurrenceRule.byYearDay,
count: recurrenceRule.count,
}; };
} }

35
typings/index.d.ts vendored
View File

@@ -6766,18 +6766,35 @@ export interface GuildScheduledEventCreateOptions {
recurrenceRule?: GuildScheduledEventRecurrenceRuleOptions; recurrenceRule?: GuildScheduledEventRecurrenceRuleOptions;
} }
export interface GuildScheduledEventRecurrenceRuleOptions { export type GuildScheduledEventRecurrenceRuleOptions =
startAt: DateResolvable; | BaseGuildScheduledEventRecurrenceRuleOptions<
endAt: DateResolvable; GuildScheduledEventRecurrenceRuleFrequency.Yearly,
frequency: GuildScheduledEventRecurrenceRuleFrequency; {
interval: number;
byWeekday: readonly GuildScheduledEventRecurrenceRuleWeekday[];
byNWeekday: readonly GuildScheduledEventRecurrenceRuleNWeekday[];
byMonth: readonly GuildScheduledEventRecurrenceRuleMonth[]; byMonth: readonly GuildScheduledEventRecurrenceRuleMonth[];
byMonthDay: readonly number[]; byMonthDay: readonly number[];
byYearDay: readonly number[];
count: number;
} }
>
| BaseGuildScheduledEventRecurrenceRuleOptions<
GuildScheduledEventRecurrenceRuleFrequency.Monthly,
{
byNWeekday: readonly GuildScheduledEventRecurrenceRuleNWeekday[];
}
>
| BaseGuildScheduledEventRecurrenceRuleOptions<
GuildScheduledEventRecurrenceRuleFrequency.Weekly | GuildScheduledEventRecurrenceRuleFrequency.Daily,
{
byWeekday: readonly GuildScheduledEventRecurrenceRuleWeekday[];
}
>;
type BaseGuildScheduledEventRecurrenceRuleOptions<
Frequency extends GuildScheduledEventRecurrenceRuleFrequency,
Extra extends {},
> = {
startAt: DateResolvable;
interval: number;
frequency: Frequency;
} & Extra;
export interface GuildScheduledEventEditOptions< export interface GuildScheduledEventEditOptions<
S extends GuildScheduledEventStatus, S extends GuildScheduledEventStatus,