@notidotbot/noti-api-client 1.9.72 → 1.9.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/classes/guildStatChannels.d.ts +18 -6
  2. package/dist/classes/guildStatChannels.js +4 -3
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.js +8 -1
  5. package/dist/other/bitfields.d.ts +8 -2
  6. package/dist/other/bitfields.js +6 -0
  7. package/dist/other/features.d.ts +1 -1
  8. package/dist/other/features.js +2 -0
  9. package/dist/other/multiDestination.d.ts +89 -0
  10. package/dist/other/multiDestination.js +109 -0
  11. package/dist/other/templates.d.ts +180 -0
  12. package/dist/other/templates.js +194 -0
  13. package/dist/other/zod/clubStreamer.zod.d.ts +7 -0
  14. package/dist/other/zod/clubStreamer.zod.js +3 -0
  15. package/dist/other/zod/kickStreamer.zod.d.ts +17 -0
  16. package/dist/other/zod/kickStreamer.zod.js +4 -0
  17. package/dist/other/zod/rumbleStreamer.zod.d.ts +19 -0
  18. package/dist/other/zod/rumbleStreamer.zod.js +10 -0
  19. package/dist/other/zod/tiktokStreamer.zod.d.ts +18 -0
  20. package/dist/other/zod/tiktokStreamer.zod.js +4 -0
  21. package/dist/other/zod/twitchStreamer.zod.d.ts +18 -0
  22. package/dist/other/zod/twitchStreamer.zod.js +10 -0
  23. package/dist/other/zod/twitterStreamer.zod.d.ts +19 -0
  24. package/dist/other/zod/twitterStreamer.zod.js +10 -0
  25. package/dist/other/zod/youtubeStreamer.zod.d.ts +21 -0
  26. package/dist/other/zod/youtubeStreamer.zod.js +5 -0
  27. package/dist/other/zod/zod.d.ts +15 -0
  28. package/dist/other/zod/zod.js +12 -0
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +1 -1
  31. package/prisma/schema/models/clubStreamer.prisma +4 -0
  32. package/prisma/schema/models/kickStreamer.prisma +6 -0
  33. package/prisma/schema/models/rumbleStreamer.prisma +7 -0
  34. package/prisma/schema/models/tiktokStreamer.prisma +6 -0
  35. package/prisma/schema/models/twitchStreamer.prisma +7 -0
  36. package/prisma/schema/models/twitterStreamer.prisma +7 -0
  37. package/prisma/schema/models/youtubeStreamer.prisma +9 -1
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.KickStreamerZodPartial = exports.KickStreamerZod = void 0;
4
4
  const schema_zod_1 = require("./schema.zod");
5
+ const multiDestination_1 = require("../multiDestination");
5
6
  const zod_1 = require("./zod");
6
7
  const offlineGrace_1 = require("../offlineGrace");
7
8
  const zod_2 = require("zod");
@@ -14,6 +15,8 @@ const KickStreamerSchema = zod_2.z.object({
14
15
  sendOfflineMessage: zod_2.z.boolean().nullable(),
15
16
  usePerStreamerEmbeds: zod_2.z.boolean().nullable(),
16
17
  autoPublishIfAnnouncmentChannel: zod_2.z.boolean().nullable(),
18
+ /** Premium Plus (`MultiDestination`): up to 2 extra channels, each with its own ping role and post types. */
19
+ extraDestinations: zod_1.CentralZod.ExtraDestinations(multiDestination_1.DESTINATION_TYPES.kick).nullable(),
17
20
  customMessages: (0, zod_1.NoDuplicate)(zod_2.z.array(zod_2.z.lazy(() => KSCustomMessageSchema)), ['type']),
18
21
  clipEnabled: zod_2.z.boolean().nullable(),
19
22
  clipChannelId: zod_1.SnowFlake.nullable(),
@@ -91,6 +94,7 @@ const KSCurrentlyLiveSchema = zod_2.z.object({
91
94
  correct: zod_2.z.boolean().nullable(),
92
95
  channelId: zod_1.SnowFlake.nullable(),
93
96
  messageId: zod_1.SnowFlake.nullable(),
97
+ extraPosts: zod_1.CentralZod.ExtraPosts().nullable(),
94
98
  });
95
99
  exports.KickStreamerZod = {
96
100
  KickStreamerSchema,
@@ -16,6 +16,15 @@ export declare const RumbleStreamerZod: {
16
16
  sendOfflineMessage: z.ZodNullable<z.ZodBoolean>;
17
17
  usePerStreamerEmbeds: z.ZodNullable<z.ZodBoolean>;
18
18
  autoPublishIfAnnouncmentChannel: z.ZodNullable<z.ZodBoolean>;
19
+ updateLivePost: z.ZodNullable<z.ZodBoolean>;
20
+ extraDestinations: z.ZodNullable<z.ZodArray<z.ZodObject<{
21
+ channelId: z.ZodString;
22
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
23
+ types: z.ZodArray<z.ZodEnum<{
24
+ live: "live";
25
+ video: "video";
26
+ }>>;
27
+ }, z.core.$strip>>>;
19
28
  customMessages: z.ZodArray<z.ZodLazy<z.ZodObject<{
20
29
  content: z.ZodNullable<z.ZodString>;
21
30
  showInviteButton: z.ZodNullable<z.ZodBoolean>;
@@ -89,6 +98,11 @@ export declare const RumbleStreamerZod: {
89
98
  correct: z.ZodNullable<z.ZodBoolean>;
90
99
  channelId: z.ZodNullable<z.ZodString>;
91
100
  messageId: z.ZodNullable<z.ZodString>;
101
+ extraPosts: z.ZodNullable<z.ZodArray<z.ZodObject<{
102
+ channelId: z.ZodString;
103
+ messageId: z.ZodString;
104
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
105
+ }, z.core.$strip>>>;
92
106
  }, z.core.$strip>>>;
93
107
  lastLive: z.ZodNullable<z.ZodDate>;
94
108
  lastVideo: z.ZodNullable<z.ZodDate>;
@@ -156,6 +170,11 @@ export declare const RumbleStreamerZod: {
156
170
  correct: z.ZodNullable<z.ZodBoolean>;
157
171
  channelId: z.ZodNullable<z.ZodString>;
158
172
  messageId: z.ZodNullable<z.ZodString>;
173
+ extraPosts: z.ZodNullable<z.ZodArray<z.ZodObject<{
174
+ channelId: z.ZodString;
175
+ messageId: z.ZodString;
176
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
177
+ }, z.core.$strip>>>;
159
178
  }, z.core.$strip>;
160
179
  };
161
180
  export declare const RumbleStreamerZodPartial: PartialZodObject<typeof RumbleStreamerZod>;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RumbleStreamerZodPartial = exports.RumbleStreamerZod = void 0;
4
4
  const schema_zod_1 = require("./schema.zod");
5
+ const multiDestination_1 = require("../multiDestination");
5
6
  const zod_1 = require("./zod");
6
7
  const offlineGrace_1 = require("../offlineGrace");
7
8
  const zod_2 = require("zod");
@@ -13,6 +14,14 @@ const RumbleStreamerSchema = zod_2.z.object({
13
14
  sendOfflineMessage: zod_2.z.boolean().nullable(),
14
15
  usePerStreamerEmbeds: zod_2.z.boolean().nullable(),
15
16
  autoPublishIfAnnouncmentChannel: zod_2.z.boolean().nullable(),
17
+ /**
18
+ * Premium Plus (`GuildFeatures.LivePostUpdates`, launch flag `livePostUpdates`). `null` = on, `false` = off:
19
+ * edit the live post when the streamer changes their title or category. Without the bit the bot clears
20
+ * this on save and never edits.
21
+ */
22
+ updateLivePost: zod_2.z.boolean().nullable(),
23
+ /** Premium Plus (`MultiDestination`): up to 2 extra channels, each with its own ping role and post types. */
24
+ extraDestinations: zod_1.CentralZod.ExtraDestinations(multiDestination_1.DESTINATION_TYPES.rumble).nullable(),
16
25
  customMessages: (0, zod_1.NoDuplicate)(zod_2.z.array(zod_2.z.lazy(() => RSCustomMessageSchema)), ['type']),
17
26
  notificationChannelId: zod_1.SnowFlake.nullable(),
18
27
  videoNotificationChannelId: zod_1.SnowFlake.nullable(),
@@ -44,6 +53,7 @@ const RSCurrentlyLiveSchema = zod_2.z.object({
44
53
  correct: zod_2.z.boolean().nullable(),
45
54
  channelId: zod_1.SnowFlake.nullable(),
46
55
  messageId: zod_1.SnowFlake.nullable(),
56
+ extraPosts: zod_1.CentralZod.ExtraPosts().nullable(),
47
57
  });
48
58
  exports.RumbleStreamerZod = {
49
59
  RumbleStreamerSchema,
@@ -12,6 +12,14 @@ export declare const TiktokStreamerZod: {
12
12
  sendOfflineMessage: z.ZodNullable<z.ZodBoolean>;
13
13
  usePerStreamerEmbeds: z.ZodNullable<z.ZodBoolean>;
14
14
  autoPublishIfAnnouncmentChannel: z.ZodNullable<z.ZodBoolean>;
15
+ extraDestinations: z.ZodNullable<z.ZodArray<z.ZodObject<{
16
+ channelId: z.ZodString;
17
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
18
+ types: z.ZodArray<z.ZodEnum<{
19
+ live: "live";
20
+ video: "video";
21
+ }>>;
22
+ }, z.core.$strip>>>;
15
23
  customMessages: z.ZodArray<z.ZodLazy<z.ZodObject<{
16
24
  content: z.ZodNullable<z.ZodString>;
17
25
  showInviteButton: z.ZodNullable<z.ZodBoolean>;
@@ -84,6 +92,11 @@ export declare const TiktokStreamerZod: {
84
92
  correct: z.ZodNullable<z.ZodBoolean>;
85
93
  channelId: z.ZodNullable<z.ZodString>;
86
94
  messageId: z.ZodNullable<z.ZodString>;
95
+ extraPosts: z.ZodNullable<z.ZodArray<z.ZodObject<{
96
+ channelId: z.ZodString;
97
+ messageId: z.ZodString;
98
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
99
+ }, z.core.$strip>>>;
87
100
  }, z.core.$strip>>>;
88
101
  lastLive: z.ZodNullable<z.ZodDate>;
89
102
  lastVideo: z.ZodNullable<z.ZodDate>;
@@ -150,6 +163,11 @@ export declare const TiktokStreamerZod: {
150
163
  correct: z.ZodNullable<z.ZodBoolean>;
151
164
  channelId: z.ZodNullable<z.ZodString>;
152
165
  messageId: z.ZodNullable<z.ZodString>;
166
+ extraPosts: z.ZodNullable<z.ZodArray<z.ZodObject<{
167
+ channelId: z.ZodString;
168
+ messageId: z.ZodString;
169
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
170
+ }, z.core.$strip>>>;
153
171
  }, z.core.$strip>;
154
172
  };
155
173
  export declare const TiktokStreamerZodPartial: PartialZodObject<typeof TiktokStreamerZod>;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TiktokStreamerZodPartial = exports.TiktokStreamerZod = void 0;
4
4
  const schema_zod_1 = require("./schema.zod");
5
+ const multiDestination_1 = require("../multiDestination");
5
6
  const zod_1 = require("./zod");
6
7
  const offlineGrace_1 = require("../offlineGrace");
7
8
  const zod_2 = require("zod");
@@ -12,6 +13,8 @@ const TiktokStreamerSchema = zod_2.z.object({
12
13
  sendOfflineMessage: zod_2.z.boolean().nullable(),
13
14
  usePerStreamerEmbeds: zod_2.z.boolean().nullable(),
14
15
  autoPublishIfAnnouncmentChannel: zod_2.z.boolean().nullable(),
16
+ /** Premium Plus (`MultiDestination`): up to 2 extra channels, each with its own ping role and post types. */
17
+ extraDestinations: zod_1.CentralZod.ExtraDestinations(multiDestination_1.DESTINATION_TYPES.tiktok).nullable(),
15
18
  customMessages: zod_2.z.array(zod_2.z.lazy(() => TTSCustomMessageSchema)),
16
19
  liveNotificationChannelId: zod_1.SnowFlake.nullable(),
17
20
  videoNotificationChannelId: zod_1.SnowFlake.nullable(),
@@ -42,6 +45,7 @@ const TTSCurrentlyLiveSchema = zod_2.z.object({
42
45
  correct: zod_2.z.boolean().nullable(),
43
46
  channelId: zod_1.SnowFlake.nullable(),
44
47
  messageId: zod_1.SnowFlake.nullable(),
48
+ extraPosts: zod_1.CentralZod.ExtraPosts().nullable(),
45
49
  });
46
50
  exports.TiktokStreamerZod = {
47
51
  TiktokStreamerSchema,
@@ -14,6 +14,14 @@ export declare const TwitchStreamerZod: {
14
14
  sendOfflineMessage: z.ZodNullable<z.ZodBoolean>;
15
15
  usePerStreamerEmbeds: z.ZodNullable<z.ZodBoolean>;
16
16
  autoPublishIfAnnouncmentChannel: z.ZodNullable<z.ZodBoolean>;
17
+ updateLivePost: z.ZodNullable<z.ZodBoolean>;
18
+ extraDestinations: z.ZodNullable<z.ZodArray<z.ZodObject<{
19
+ channelId: z.ZodString;
20
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
21
+ types: z.ZodArray<z.ZodEnum<{
22
+ live: "live";
23
+ }>>;
24
+ }, z.core.$strip>>>;
17
25
  customMessages: z.ZodArray<z.ZodLazy<z.ZodObject<{
18
26
  content: z.ZodNullable<z.ZodString>;
19
27
  showInviteButton: z.ZodNullable<z.ZodBoolean>;
@@ -84,6 +92,11 @@ export declare const TwitchStreamerZod: {
84
92
  correct: z.ZodNullable<z.ZodBoolean>;
85
93
  channelId: z.ZodNullable<z.ZodString>;
86
94
  messageId: z.ZodNullable<z.ZodString>;
95
+ extraPosts: z.ZodNullable<z.ZodArray<z.ZodObject<{
96
+ channelId: z.ZodString;
97
+ messageId: z.ZodString;
98
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
99
+ }, z.core.$strip>>>;
87
100
  }, z.core.$strip>>>;
88
101
  lastLive: z.ZodNullable<z.ZodDate>;
89
102
  }, z.core.$strip>;
@@ -149,6 +162,11 @@ export declare const TwitchStreamerZod: {
149
162
  correct: z.ZodNullable<z.ZodBoolean>;
150
163
  channelId: z.ZodNullable<z.ZodString>;
151
164
  messageId: z.ZodNullable<z.ZodString>;
165
+ extraPosts: z.ZodNullable<z.ZodArray<z.ZodObject<{
166
+ channelId: z.ZodString;
167
+ messageId: z.ZodString;
168
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
169
+ }, z.core.$strip>>>;
152
170
  }, z.core.$strip>;
153
171
  };
154
172
  export declare const TwitchStreamerZodPartial: PartialZodObject<typeof TwitchStreamerZod>;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TwitchStreamerZodPartial = exports.TwitchStreamerZod = void 0;
4
4
  const schema_zod_1 = require("./schema.zod");
5
+ const multiDestination_1 = require("../multiDestination");
5
6
  const zod_1 = require("./zod");
6
7
  const offlineGrace_1 = require("../offlineGrace");
7
8
  const zod_2 = require("zod");
@@ -14,6 +15,14 @@ const TwitchStreamerSchema = zod_2.z.object({
14
15
  sendOfflineMessage: zod_2.z.boolean().nullable(),
15
16
  usePerStreamerEmbeds: zod_2.z.boolean().nullable(),
16
17
  autoPublishIfAnnouncmentChannel: zod_2.z.boolean().nullable(),
18
+ /**
19
+ * Premium Plus (`GuildFeatures.LivePostUpdates`, launch flag `livePostUpdates`). `null` = on, `false` = off:
20
+ * edit the live post when the streamer changes their title or category. Without the bit the bot clears
21
+ * this on save and never edits.
22
+ */
23
+ updateLivePost: zod_2.z.boolean().nullable(),
24
+ /** Premium Plus (`MultiDestination`): up to 2 extra channels, each with its own ping role and post types. */
25
+ extraDestinations: zod_1.CentralZod.ExtraDestinations(multiDestination_1.DESTINATION_TYPES.twitch).nullable(),
17
26
  customMessages: zod_2.z.array(zod_2.z.lazy(() => TSCustomMessageSchema)),
18
27
  notificationChannelId: zod_1.SnowFlake.nullable(),
19
28
  showNotifyButton: zod_2.z.boolean().nullable(),
@@ -40,6 +49,7 @@ const TSCurrentlyLiveSchema = zod_2.z.object({
40
49
  correct: zod_2.z.boolean().nullable(),
41
50
  channelId: zod_1.SnowFlake.nullable(),
42
51
  messageId: zod_1.SnowFlake.nullable(),
52
+ extraPosts: zod_1.CentralZod.ExtraPosts().nullable(),
43
53
  });
44
54
  exports.TwitchStreamerZod = {
45
55
  TwitchStreamerSchema,
@@ -11,6 +11,14 @@ export declare const TwitterStreamerZod: {
11
11
  streamerId: z.ZodNullable<z.ZodString>;
12
12
  usePerStreamerEmbeds: z.ZodNullable<z.ZodBoolean>;
13
13
  autoPublishIfAnnouncmentChannel: z.ZodNullable<z.ZodBoolean>;
14
+ extraDestinations: z.ZodNullable<z.ZodArray<z.ZodObject<{
15
+ channelId: z.ZodString;
16
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
17
+ types: z.ZodArray<z.ZodEnum<{
18
+ live: "live";
19
+ post: "post";
20
+ }>>;
21
+ }, z.core.$strip>>>;
14
22
  customMessages: z.ZodArray<z.ZodLazy<z.ZodObject<{
15
23
  content: z.ZodNullable<z.ZodString>;
16
24
  showInviteButton: z.ZodNullable<z.ZodBoolean>;
@@ -76,6 +84,7 @@ export declare const TwitterStreamerZod: {
76
84
  pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
77
85
  sendOfflineMessage: z.ZodNullable<z.ZodBoolean>;
78
86
  deleteEmbeds: z.ZodNullable<z.ZodBoolean>;
87
+ updateLivePost: z.ZodNullable<z.ZodBoolean>;
79
88
  customCoolDownBeforeNextLive: z.ZodNullable<z.ZodNumber>;
80
89
  offlineGracePeriod: z.ZodNullable<z.ZodUnion<[z.ZodLiteral<number>, z.ZodLiteral<number>, ...z.ZodLiteral<number>[]]>>;
81
90
  liveRoleId: z.ZodNullable<z.ZodString>;
@@ -88,6 +97,11 @@ export declare const TwitterStreamerZod: {
88
97
  correct: z.ZodNullable<z.ZodBoolean>;
89
98
  channelId: z.ZodNullable<z.ZodString>;
90
99
  messageId: z.ZodNullable<z.ZodString>;
100
+ extraPosts: z.ZodNullable<z.ZodArray<z.ZodObject<{
101
+ channelId: z.ZodString;
102
+ messageId: z.ZodString;
103
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
104
+ }, z.core.$strip>>>;
91
105
  }, z.core.$strip>>>;
92
106
  currentBroadcastId: z.ZodNullable<z.ZodString>;
93
107
  lastLive: z.ZodNullable<z.ZodDate>;
@@ -154,6 +168,11 @@ export declare const TwitterStreamerZod: {
154
168
  correct: z.ZodNullable<z.ZodBoolean>;
155
169
  channelId: z.ZodNullable<z.ZodString>;
156
170
  messageId: z.ZodNullable<z.ZodString>;
171
+ extraPosts: z.ZodNullable<z.ZodArray<z.ZodObject<{
172
+ channelId: z.ZodString;
173
+ messageId: z.ZodString;
174
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
175
+ }, z.core.$strip>>>;
157
176
  }, z.core.$strip>;
158
177
  };
159
178
  export declare const TwitterStreamerZodPartial: PartialZodObject<typeof TwitterStreamerZod>;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TwitterStreamerZodPartial = exports.TwitterStreamerZod = void 0;
4
4
  const schema_zod_1 = require("./schema.zod");
5
+ const multiDestination_1 = require("../multiDestination");
5
6
  const zod_1 = require("./zod");
6
7
  const offlineGrace_1 = require("../offlineGrace");
7
8
  const zod_2 = require("zod");
@@ -12,6 +13,8 @@ const TwitterStreamerSchema = zod_2.z.object({
12
13
  streamerId: zod_2.z.string().nullable(),
13
14
  usePerStreamerEmbeds: zod_2.z.boolean().nullable(),
14
15
  autoPublishIfAnnouncmentChannel: zod_2.z.boolean().nullable(),
16
+ /** Premium Plus (`MultiDestination`): up to 2 extra channels, each with its own ping role and post types. */
17
+ extraDestinations: zod_1.CentralZod.ExtraDestinations(multiDestination_1.DESTINATION_TYPES.twitter).nullable(),
15
18
  customMessages: zod_2.z.array(zod_2.z.lazy(() => TWSCustomMessageSchema)),
16
19
  // POSTS - free tier. Own channel and own ping role.
17
20
  postNotificationChannelId: zod_1.SnowFlake.nullable(),
@@ -26,6 +29,12 @@ const TwitterStreamerSchema = zod_2.z.object({
26
29
  pingRoleId: zod_1.SnowFlakeOrEveryone.nullable(),
27
30
  sendOfflineMessage: zod_2.z.boolean().nullable(),
28
31
  deleteEmbeds: zod_2.z.boolean().nullable(),
32
+ /**
33
+ * Premium Plus (`GuildFeatures.LivePostUpdates`, launch flag `livePostUpdates`). `null` = on, `false` = off:
34
+ * edit the live post when the streamer changes their title or category. Without the bit the bot clears
35
+ * this on save and never edits.
36
+ */
37
+ updateLivePost: zod_2.z.boolean().nullable(),
29
38
  customCoolDownBeforeNextLive: zod_2.z.number().min(0).max(360).nullable(),
30
39
  // A literal union, not min/max: it is a dropdown, and 7 minutes is not a value the UI can produce.
31
40
  offlineGracePeriod: zod_2.z.union(offlineGrace_1.OFFLINE_GRACE_CHOICES.map((n) => zod_2.z.literal(n))).nullable(),
@@ -48,6 +57,7 @@ const TWSCurrentlyLiveSchema = zod_2.z.object({
48
57
  correct: zod_2.z.boolean().nullable(),
49
58
  channelId: zod_1.SnowFlake.nullable(),
50
59
  messageId: zod_1.SnowFlake.nullable(),
60
+ extraPosts: zod_1.CentralZod.ExtraPosts().nullable(),
51
61
  });
52
62
  exports.TwitterStreamerZod = {
53
63
  TwitterStreamerSchema,
@@ -13,6 +13,15 @@ export declare const YoutubeStreamerZod: {
13
13
  sendOfflineMessage: z.ZodNullable<z.ZodBoolean>;
14
14
  usePerStreamerEmbeds: z.ZodNullable<z.ZodBoolean>;
15
15
  autoPublishIfAnnouncmentChannel: z.ZodNullable<z.ZodBoolean>;
16
+ extraDestinations: z.ZodNullable<z.ZodArray<z.ZodObject<{
17
+ channelId: z.ZodString;
18
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
19
+ types: z.ZodArray<z.ZodEnum<{
20
+ live: "live";
21
+ video: "video";
22
+ replay: "replay";
23
+ }>>;
24
+ }, z.core.$strip>>>;
16
25
  customMessages: z.ZodArray<z.ZodLazy<z.ZodObject<{
17
26
  content: z.ZodNullable<z.ZodString>;
18
27
  showInviteButton: z.ZodNullable<z.ZodBoolean>;
@@ -80,12 +89,18 @@ export declare const YoutubeStreamerZod: {
80
89
  usersForLiveRole: z.ZodArray<z.ZodString>;
81
90
  usersWhoHaveLiveRole: z.ZodArray<z.ZodString>;
82
91
  statsChannelIds: z.ZodNullable<z.ZodLazy<z.ZodObject<{
92
+ followers: z.ZodNullable<z.ZodString>;
83
93
  isLive: z.ZodNullable<z.ZodString>;
84
94
  }, z.core.$strip>>>;
85
95
  isCurrentlyLive: z.ZodNullable<z.ZodLazy<z.ZodObject<{
86
96
  correct: z.ZodNullable<z.ZodBoolean>;
87
97
  channelId: z.ZodNullable<z.ZodString>;
88
98
  messageId: z.ZodNullable<z.ZodString>;
99
+ extraPosts: z.ZodNullable<z.ZodArray<z.ZodObject<{
100
+ channelId: z.ZodString;
101
+ messageId: z.ZodString;
102
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
103
+ }, z.core.$strip>>>;
89
104
  }, z.core.$strip>>>;
90
105
  lastLive: z.ZodNullable<z.ZodDate>;
91
106
  lastVideo: z.ZodNullable<z.ZodDate>;
@@ -146,12 +161,18 @@ export declare const YoutubeStreamerZod: {
146
161
  }>;
147
162
  }, z.core.$strip>;
148
163
  readonly YTSStatsChannelIdSchema: z.ZodObject<{
164
+ followers: z.ZodNullable<z.ZodString>;
149
165
  isLive: z.ZodNullable<z.ZodString>;
150
166
  }, z.core.$strip>;
151
167
  readonly YTSCurrentlyLiveSchema: z.ZodObject<{
152
168
  correct: z.ZodNullable<z.ZodBoolean>;
153
169
  channelId: z.ZodNullable<z.ZodString>;
154
170
  messageId: z.ZodNullable<z.ZodString>;
171
+ extraPosts: z.ZodNullable<z.ZodArray<z.ZodObject<{
172
+ channelId: z.ZodString;
173
+ messageId: z.ZodString;
174
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
175
+ }, z.core.$strip>>>;
155
176
  }, z.core.$strip>;
156
177
  };
157
178
  export declare const YoutubeStreamerZodPartial: PartialZodObject<typeof YoutubeStreamerZod>;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.YoutubeStreamerZodPartial = exports.YoutubeStreamerZod = void 0;
4
4
  const schema_zod_1 = require("./schema.zod");
5
+ const multiDestination_1 = require("../multiDestination");
5
6
  const zod_1 = require("./zod");
6
7
  const zod_2 = require("zod");
7
8
  const YoutubeStreamerSchema = zod_2.z.object({
@@ -12,6 +13,8 @@ const YoutubeStreamerSchema = zod_2.z.object({
12
13
  sendOfflineMessage: zod_2.z.boolean().nullable(),
13
14
  usePerStreamerEmbeds: zod_2.z.boolean().nullable(),
14
15
  autoPublishIfAnnouncmentChannel: zod_2.z.boolean().nullable(),
16
+ /** Premium Plus (`MultiDestination`): up to 2 extra channels, each with its own ping role and post types. */
17
+ extraDestinations: zod_1.CentralZod.ExtraDestinations(multiDestination_1.DESTINATION_TYPES.youtube).nullable(),
15
18
  customMessages: zod_2.z.array(zod_2.z.lazy(() => YTSCustomMessageSchema)),
16
19
  liveNotificationChannelId: zod_1.SnowFlake.nullable(),
17
20
  videoNotificationChannelId: zod_1.SnowFlake.nullable(),
@@ -38,12 +41,14 @@ const YTSCustomMessageSchema = zod_2.z.object({
38
41
  ...zod_1.CentralZod.Message(),
39
42
  });
40
43
  const YTSStatsChannelIdSchema = zod_2.z.object({
44
+ followers: zod_2.z.string().nullable(),
41
45
  isLive: zod_2.z.string().nullable(),
42
46
  });
43
47
  const YTSCurrentlyLiveSchema = zod_2.z.object({
44
48
  correct: zod_2.z.boolean().nullable(),
45
49
  channelId: zod_1.SnowFlake.nullable(),
46
50
  messageId: zod_1.SnowFlake.nullable(),
51
+ extraPosts: zod_1.CentralZod.ExtraPosts().nullable(),
47
52
  });
48
53
  exports.YoutubeStreamerZod = {
49
54
  YoutubeStreamerSchema,
@@ -34,6 +34,21 @@ export declare const SnowFlakeRegex: RegExp;
34
34
  export declare const SnowFlake: z.ZodString;
35
35
  export declare const SnowFlakeOrEveryone: z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>;
36
36
  export declare const CentralZod: {
37
+ /**
38
+ * Premium Plus (`GuildFeatures.MultiDestination`, launch flag `multiDestination`): up to 2 extra channels for
39
+ * one creator, each with its own ping role and post types (empty = all). The bot also normalizes on save.
40
+ */
41
+ ExtraDestinations: <T extends readonly [string, ...string[]]>(types: T) => z.ZodArray<z.ZodObject<{
42
+ channelId: z.ZodString;
43
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
44
+ types: z.ZodArray<z.ZodEnum<{ [k_1 in T[number]]: k_1; } extends infer T_1 ? { [k in keyof T_1]: { [k_1 in T[number]]: k_1; }[k]; } : never>>;
45
+ }, z.core.$strip>>;
46
+ /** Internal: copies of the live post in extra destinations. Read-only for the dashboard. */
47
+ ExtraPosts: () => z.ZodArray<z.ZodObject<{
48
+ channelId: z.ZodString;
49
+ messageId: z.ZodString;
50
+ pingRoleId: z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"everyone">, z.ZodLiteral<"here">]>>;
51
+ }, z.core.$strip>>;
37
52
  SingleMessage: () => {
38
53
  message: z.ZodNullable<z.ZodString>;
39
54
  webhook: z.ZodNullable<z.ZodLazy<z.ZodObject<{
@@ -4,6 +4,7 @@ exports.CentralZod = exports.SnowFlakeOrEveryone = exports.SnowFlake = exports.S
4
4
  exports.makePartialTyped = makePartialTyped;
5
5
  const schema_zod_1 = require("./schema.zod");
6
6
  const zod_1 = require("zod");
7
+ const multiDestination_1 = require("../multiDestination");
7
8
  const NoDuplicate = (type, fields) => type.refine((arr) => {
8
9
  if (fields?.length) {
9
10
  const values = arr.map((a) => fields.map((f) => a[f]).join(''));
@@ -18,6 +19,17 @@ exports.SnowFlakeRegex = /^\d{17,21}$/;
18
19
  exports.SnowFlake = zod_1.z.string().refine((x) => exports.SnowFlakeRegex.test(x));
19
20
  exports.SnowFlakeOrEveryone = zod_1.z.union([exports.SnowFlake, zod_1.z.literal('everyone'), zod_1.z.literal('here')]);
20
21
  exports.CentralZod = {
22
+ /**
23
+ * Premium Plus (`GuildFeatures.MultiDestination`, launch flag `multiDestination`): up to 2 extra channels for
24
+ * one creator, each with its own ping role and post types (empty = all). The bot also normalizes on save.
25
+ */
26
+ ExtraDestinations: (types) => (0, exports.NoDuplicate)(zod_1.z.array(zod_1.z.object({
27
+ channelId: exports.SnowFlake,
28
+ pingRoleId: exports.SnowFlakeOrEveryone.nullable(),
29
+ types: (0, exports.NoDuplicate)(zod_1.z.array(zod_1.z.enum(types))),
30
+ })).max(multiDestination_1.MAX_EXTRA_DESTINATIONS), ['channelId']),
31
+ /** Internal: copies of the live post in extra destinations. Read-only for the dashboard. */
32
+ ExtraPosts: () => zod_1.z.array(zod_1.z.object({ channelId: exports.SnowFlake, messageId: exports.SnowFlake, pingRoleId: exports.SnowFlakeOrEveryone.nullable() })),
21
33
  SingleMessage: () => ({
22
34
  message: zod_1.z.string().max(100).nullable(),
23
35
  webhook: zod_1.z.lazy(() => zod_1.z.object(exports.CentralZod.Webhook())).nullable(),