@notidotbot/noti-api-client 1.4.23 → 1.4.24

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.
@@ -61,9 +61,15 @@ model GuildGameConfig {
61
61
  changelogChannelId String?
62
62
  changelogPingRoleId String?
63
63
 
64
+ // Roblox experience tracking (updates + experience events) — independent of price tracking
65
+ // (free-to-play Roblox games have no price). Default channel/role for `roblox.*` pings.
66
+ robloxChannelId String?
67
+ robloxPingRoleId String?
68
+
64
69
  categoryRoutes GuildGameCategoryRoute[]
65
70
  trackedGames GuildTrackedGame[]
66
71
  changelogGames GuildGameChangelog[]
72
+ robloxGames GuildRobloxGame[]
67
73
  }
68
74
 
69
75
  // PREMIUM: per-category channel/role routing. The first route (lowest `priority`) whose
@@ -138,4 +144,28 @@ model GuildGameChangelog {
138
144
  gameConfig GuildGameConfig? @relation(fields: [gameConfigId], references: [dbId], onUpdate: Cascade, onDelete: Cascade)
139
145
 
140
146
  @@unique([gameConfigId, steamAppId])
147
+ }
148
+
149
+ // A Roblox experience this guild follows for updates and/or experience events (roblox.update /
150
+ // roblox.event). Keyed by canonical root `placeId` (what the user pastes / `roblox.com/games/<id>`);
151
+ // `universeId` is resolved by the gameApi and kept as a secondary match key. IDs are stored as
152
+ // strings because Roblox ids overflow a 32-bit Int (and to match how every other id is stored).
153
+ model GuildRobloxGame {
154
+ dbId String @id @default(uuid())
155
+
156
+ placeId String
157
+ universeId String? // resolved by the gameApi watchlist; null until first poll
158
+ title String?
159
+
160
+ // Which signal(s) to notify on (default both).
161
+ kinds GameRobloxKindEnum @default(both)
162
+
163
+ // Optional per-game routing override (else uses the guild's default Roblox channel/role).
164
+ channelId String?
165
+ pingRoleId String?
166
+
167
+ gameConfigId String
168
+ gameConfig GuildGameConfig? @relation(fields: [gameConfigId], references: [dbId], onUpdate: Cascade, onDelete: Cascade)
169
+
170
+ @@unique([gameConfigId, placeId])
141
171
  }
@@ -190,6 +190,14 @@ enum GameDeliveryEnum {
190
190
  weekly
191
191
  }
192
192
 
193
+ // Roblox experience tracking (Noti Games API `roblox.*`). Which signal(s) a followed game pings on:
194
+ // `updates` = a `roblox.update` change signal, `events` = a `roblox.event`, `both` = either.
195
+ enum GameRobloxKindEnum {
196
+ updates
197
+ events
198
+ both
199
+ }
200
+
193
201
  model AllEnumsModel {
194
202
  dbId String @id @default(uuid())
195
203
 
@@ -213,4 +221,5 @@ model AllEnumsModel {
213
221
  gameKinds GameKindEnum
214
222
  gameFlags GameFlagEnum
215
223
  gameDelivery GameDeliveryEnum
224
+ gameRobloxKinds GameRobloxKindEnum
216
225
  }