@lumiastream/lumia-types 2.6.6 → 2.6.8
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.
- package/dist/activity.types.d.ts +3 -0
- package/dist/activity.types.js +3 -0
- package/dist/alert.types.js +19 -0
- package/dist/custom-overlays/custom-overlays.d.ts +14 -0
- package/dist/custom-overlays.d.ts +14 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/variables.types.d.ts +13 -0
- package/dist/variables.types.js +24 -0
- package/dist/viewer_profile_achievements.d.ts +10 -0
- package/dist/viewer_profile_achievements.js +312 -0
- package/package.json +1 -1
package/dist/activity.types.d.ts
CHANGED
|
@@ -153,6 +153,8 @@ export declare enum LumiaAlertValues {
|
|
|
153
153
|
LUMIASTREAM_VIEWERQUEUE_STARTED = "lumiastream-viewerqueueStarted",
|
|
154
154
|
/** Viewer queue ended */
|
|
155
155
|
LUMIASTREAM_VIEWERQUEUE_ENDED = "lumiastream-viewerqueueEnded",
|
|
156
|
+
/** Viewer achievement unlocked */
|
|
157
|
+
LUMIASTREAM_VIEWER_ACHIEVEMENT = "lumiastream-viewerAchievement",
|
|
156
158
|
/** Roulette winner selected */
|
|
157
159
|
LUMIASTREAM_ROULETTE_WINNER = "lumiastream-rouletteWinner",
|
|
158
160
|
/** Slots winner */
|
|
@@ -541,6 +543,7 @@ export declare const LumiaAlertFriendlyValues: {
|
|
|
541
543
|
"lumiastream-pollEnded": string;
|
|
542
544
|
"lumiastream-viewerqueueStarted": string;
|
|
543
545
|
"lumiastream-viewerqueueEnded": string;
|
|
546
|
+
"lumiastream-viewerAchievement": string;
|
|
544
547
|
"lumiastream-rouletteWinner": string;
|
|
545
548
|
"lumiastream-slotsWinner": string;
|
|
546
549
|
"twitch-extension": string;
|
package/dist/activity.types.js
CHANGED
|
@@ -168,6 +168,8 @@ var LumiaAlertValues;
|
|
|
168
168
|
LumiaAlertValues["LUMIASTREAM_VIEWERQUEUE_STARTED"] = "lumiastream-viewerqueueStarted";
|
|
169
169
|
/** Viewer queue ended */
|
|
170
170
|
LumiaAlertValues["LUMIASTREAM_VIEWERQUEUE_ENDED"] = "lumiastream-viewerqueueEnded";
|
|
171
|
+
/** Viewer achievement unlocked */
|
|
172
|
+
LumiaAlertValues["LUMIASTREAM_VIEWER_ACHIEVEMENT"] = "lumiastream-viewerAchievement";
|
|
171
173
|
/** Roulette winner selected */
|
|
172
174
|
LumiaAlertValues["LUMIASTREAM_ROULETTE_WINNER"] = "lumiastream-rouletteWinner";
|
|
173
175
|
/** Slots winner */
|
|
@@ -573,6 +575,7 @@ exports.LumiaAlertFriendlyValues = {
|
|
|
573
575
|
[LumiaAlertValues.LUMIASTREAM_POLL_ENDED]: 'Poll Ended',
|
|
574
576
|
[LumiaAlertValues.LUMIASTREAM_VIEWERQUEUE_STARTED]: 'Viewer Queue Started',
|
|
575
577
|
[LumiaAlertValues.LUMIASTREAM_VIEWERQUEUE_ENDED]: 'Viewer Queue Ended',
|
|
578
|
+
[LumiaAlertValues.LUMIASTREAM_VIEWER_ACHIEVEMENT]: 'Viewer Achievement',
|
|
576
579
|
[LumiaAlertValues.LUMIASTREAM_ROULETTE_WINNER]: 'Roulette Winner',
|
|
577
580
|
[LumiaAlertValues.LUMIASTREAM_SLOTS_WINNER]: 'Slots Winner',
|
|
578
581
|
[LumiaAlertValues.TWITCH_EXTENSION]: 'Twitch Extension',
|
package/dist/alert.types.js
CHANGED
|
@@ -5,6 +5,7 @@ const activity_types_1 = require("./activity.types");
|
|
|
5
5
|
const event_types_1 = require("./event.types");
|
|
6
6
|
const variables_types_1 = require("./variables.types");
|
|
7
7
|
const youtube_superstickers_1 = require("./youtube_superstickers");
|
|
8
|
+
const viewer_profile_achievements_1 = require("./viewer_profile_achievements");
|
|
8
9
|
var LumiaVariationConditions;
|
|
9
10
|
(function (LumiaVariationConditions) {
|
|
10
11
|
LumiaVariationConditions["RANDOM"] = "RANDOM";
|
|
@@ -555,6 +556,24 @@ exports.LumiaAlertConfigs = {
|
|
|
555
556
|
inputFields: [],
|
|
556
557
|
LumiaVariationConditions: [{ type: LumiaVariationConditions.RANDOM }],
|
|
557
558
|
},
|
|
559
|
+
[activity_types_1.LumiaAlertValues.LUMIASTREAM_VIEWER_ACHIEVEMENT]: {
|
|
560
|
+
connection: event_types_1.LumiaIntegrations.LUMIASTREAM,
|
|
561
|
+
message: '{{username}} unlocked the {{achievement_name}} achievement!',
|
|
562
|
+
eventlistSpecialUsername: 'lumiastream',
|
|
563
|
+
eventlistMessage: 'Viewer Achievement',
|
|
564
|
+
eventlistDetailedMessage: '{{username}} unlocked the {{achievement_name}} achievement!',
|
|
565
|
+
acceptedVariables: variables_types_1.AllVariables.lumiastream.alerts.viewerAchievement,
|
|
566
|
+
quickActions: [],
|
|
567
|
+
inputFields: [],
|
|
568
|
+
LumiaVariationConditions: [
|
|
569
|
+
{ type: LumiaVariationConditions.RANDOM },
|
|
570
|
+
{
|
|
571
|
+
type: LumiaVariationConditions.EQUAL_SELECTION,
|
|
572
|
+
description: 'Achievement Name',
|
|
573
|
+
selections: viewer_profile_achievements_1.VIEWER_PROFILE_ACHIEVEMENTS.map((achievement) => ({ label: achievement.label, value: achievement.label })),
|
|
574
|
+
},
|
|
575
|
+
],
|
|
576
|
+
},
|
|
558
577
|
[activity_types_1.LumiaAlertValues.LUMIASTREAM_ROULETTE_WINNER]: {
|
|
559
578
|
connection: event_types_1.LumiaIntegrations.LUMIASTREAM,
|
|
560
579
|
message: 'Congratulations {{username}}! The ball landed on {{ball_position}}. You win {{outcome_amount}} {{loyalty_currency_name}}! Well played! 🎉',
|
|
@@ -416,6 +416,8 @@ export declare enum LumiaAlertValues {
|
|
|
416
416
|
LUMIASTREAM_VIEWERQUEUE_STARTED = "lumiastream-viewerqueueStarted",
|
|
417
417
|
/** Viewer queue ended */
|
|
418
418
|
LUMIASTREAM_VIEWERQUEUE_ENDED = "lumiastream-viewerqueueEnded",
|
|
419
|
+
/** Viewer achievement unlocked */
|
|
420
|
+
LUMIASTREAM_VIEWER_ACHIEVEMENT = "lumiastream-viewerAchievement",
|
|
419
421
|
/** Roulette winner selected */
|
|
420
422
|
LUMIASTREAM_ROULETTE_WINNER = "lumiastream-rouletteWinner",
|
|
421
423
|
/** Slots winner */
|
|
@@ -959,6 +961,18 @@ export declare enum SystemVariables {
|
|
|
959
961
|
VIEWERQUEUE_ENTRIES_COUNT = "viewerqueue_entries_count",
|
|
960
962
|
/** Viewer queue max entries limit. Use as {{viewerqueue_queue_limit}}. */
|
|
961
963
|
VIEWERQUEUE_QUEUE_LIMIT = "viewerqueue_queue_limit",
|
|
964
|
+
/** Achievement id. Use as {{achievement_id}}. */
|
|
965
|
+
ACHIEVEMENT_ID = "achievement_id",
|
|
966
|
+
/** Achievement name. Use as {{achievement_name}}. */
|
|
967
|
+
ACHIEVEMENT_NAME = "achievement_name",
|
|
968
|
+
/** Achievement description. Use as {{achievement_description}}. */
|
|
969
|
+
ACHIEVEMENT_DESCRIPTION = "achievement_description",
|
|
970
|
+
/** Achievements completed count. Use as {{achievements_completed}}. */
|
|
971
|
+
ACHIEVEMENTS_COMPLETED = "achievements_completed",
|
|
972
|
+
/** Achievements total count. Use as {{achievements_total}}. */
|
|
973
|
+
ACHIEVEMENTS_TOTAL = "achievements_total",
|
|
974
|
+
/** Achievement completion percent. Use as {{achievements_percent}}. */
|
|
975
|
+
ACHIEVEMENTS_PERCENT = "achievements_percent",
|
|
962
976
|
/** Response from most recent API Action (JSON stringified). Use as {{api_action_global_response}}. */
|
|
963
977
|
API_ACTION_GLOBAL_RESPONSE = "api_action_global_response",
|
|
964
978
|
/** Last RANDOM_INPUT selection. Use as {{last_random_input}}. */
|
|
@@ -416,6 +416,8 @@ export declare enum LumiaAlertValues {
|
|
|
416
416
|
LUMIASTREAM_VIEWERQUEUE_STARTED = "lumiastream-viewerqueueStarted",
|
|
417
417
|
/** Viewer queue ended */
|
|
418
418
|
LUMIASTREAM_VIEWERQUEUE_ENDED = "lumiastream-viewerqueueEnded",
|
|
419
|
+
/** Viewer achievement unlocked */
|
|
420
|
+
LUMIASTREAM_VIEWER_ACHIEVEMENT = "lumiastream-viewerAchievement",
|
|
419
421
|
/** Roulette winner selected */
|
|
420
422
|
LUMIASTREAM_ROULETTE_WINNER = "lumiastream-rouletteWinner",
|
|
421
423
|
/** Slots winner */
|
|
@@ -959,6 +961,18 @@ export declare enum SystemVariables {
|
|
|
959
961
|
VIEWERQUEUE_ENTRIES_COUNT = "viewerqueue_entries_count",
|
|
960
962
|
/** Viewer queue max entries limit. Use as {{viewerqueue_queue_limit}}. */
|
|
961
963
|
VIEWERQUEUE_QUEUE_LIMIT = "viewerqueue_queue_limit",
|
|
964
|
+
/** Achievement id. Use as {{achievement_id}}. */
|
|
965
|
+
ACHIEVEMENT_ID = "achievement_id",
|
|
966
|
+
/** Achievement name. Use as {{achievement_name}}. */
|
|
967
|
+
ACHIEVEMENT_NAME = "achievement_name",
|
|
968
|
+
/** Achievement description. Use as {{achievement_description}}. */
|
|
969
|
+
ACHIEVEMENT_DESCRIPTION = "achievement_description",
|
|
970
|
+
/** Achievements completed count. Use as {{achievements_completed}}. */
|
|
971
|
+
ACHIEVEMENTS_COMPLETED = "achievements_completed",
|
|
972
|
+
/** Achievements total count. Use as {{achievements_total}}. */
|
|
973
|
+
ACHIEVEMENTS_TOTAL = "achievements_total",
|
|
974
|
+
/** Achievement completion percent. Use as {{achievements_percent}}. */
|
|
975
|
+
ACHIEVEMENTS_PERCENT = "achievements_percent",
|
|
962
976
|
/** Response from most recent API Action (JSON stringified). Use as {{api_action_global_response}}. */
|
|
963
977
|
API_ACTION_GLOBAL_RESPONSE = "api_action_global_response",
|
|
964
978
|
/** Last RANDOM_INPUT selection. Use as {{last_random_input}}. */
|
package/dist/index.d.ts
CHANGED
|
@@ -4,3 +4,4 @@ export { ILumiaSendPack, ILumiaEvent, ILumiaEventChatCommandBody, ILumiaEventCha
|
|
|
4
4
|
export { LumiaEventListTypes, LumiaMapAlertTypeToEventListType } from './eventlist.types';
|
|
5
5
|
export { SystemVariables, ReservedVariables, AllVariables } from './variables.types';
|
|
6
6
|
export { formatCondition } from './helpers';
|
|
7
|
+
export { VIEWER_PROFILE_ACHIEVEMENTS, type ViewerProfileAchievementDefinition, type ViewerProfileAchievementMetric } from './viewer_profile_achievements';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.formatCondition = exports.AllVariables = exports.ReservedVariables = exports.SystemVariables = exports.LumiaMapAlertTypeToEventListType = exports.LumiaEventListTypes = exports.LumiaEventTypes = exports.LumiaIntegrations = exports.LumiaAlertConfigs = exports.VariationCurrencySymbol = exports.LumiaVariationCurrency = exports.LumiaVariationConditions = exports.LumiaActivityTestType = exports.LumiaActivityNoValueTypes = exports.LumiaActivityApiValueType = exports.LumiaActivityOriginTypes = exports.LumiaAlertFriendlyValues = exports.LumiaAlertValues = exports.LumiaExternalActivityCommandTypes = exports.LumiaActivityCommandTypes = exports.LumiaStreamingSites = void 0;
|
|
3
|
+
exports.VIEWER_PROFILE_ACHIEVEMENTS = exports.formatCondition = exports.AllVariables = exports.ReservedVariables = exports.SystemVariables = exports.LumiaMapAlertTypeToEventListType = exports.LumiaEventListTypes = exports.LumiaEventTypes = exports.LumiaIntegrations = exports.LumiaAlertConfigs = exports.VariationCurrencySymbol = exports.LumiaVariationCurrency = exports.LumiaVariationConditions = exports.LumiaActivityTestType = exports.LumiaActivityNoValueTypes = exports.LumiaActivityApiValueType = exports.LumiaActivityOriginTypes = exports.LumiaAlertFriendlyValues = exports.LumiaAlertValues = exports.LumiaExternalActivityCommandTypes = exports.LumiaActivityCommandTypes = exports.LumiaStreamingSites = void 0;
|
|
4
4
|
var activity_types_1 = require("./activity.types");
|
|
5
5
|
Object.defineProperty(exports, "LumiaStreamingSites", { enumerable: true, get: function () { return activity_types_1.LumiaStreamingSites; } });
|
|
6
6
|
Object.defineProperty(exports, "LumiaActivityCommandTypes", { enumerable: true, get: function () { return activity_types_1.LumiaActivityCommandTypes; } });
|
|
@@ -28,3 +28,5 @@ Object.defineProperty(exports, "ReservedVariables", { enumerable: true, get: fun
|
|
|
28
28
|
Object.defineProperty(exports, "AllVariables", { enumerable: true, get: function () { return variables_types_1.AllVariables; } });
|
|
29
29
|
var helpers_1 = require("./helpers");
|
|
30
30
|
Object.defineProperty(exports, "formatCondition", { enumerable: true, get: function () { return helpers_1.formatCondition; } });
|
|
31
|
+
var viewer_profile_achievements_1 = require("./viewer_profile_achievements");
|
|
32
|
+
Object.defineProperty(exports, "VIEWER_PROFILE_ACHIEVEMENTS", { enumerable: true, get: function () { return viewer_profile_achievements_1.VIEWER_PROFILE_ACHIEVEMENTS; } });
|
|
@@ -159,6 +159,18 @@ export declare enum SystemVariables {
|
|
|
159
159
|
VIEWERQUEUE_ENTRIES_COUNT = "viewerqueue_entries_count",
|
|
160
160
|
/** Viewer queue max entries limit. Use as {{viewerqueue_queue_limit}}. */
|
|
161
161
|
VIEWERQUEUE_QUEUE_LIMIT = "viewerqueue_queue_limit",
|
|
162
|
+
/** Achievement id. Use as {{achievement_id}}. */
|
|
163
|
+
ACHIEVEMENT_ID = "achievement_id",
|
|
164
|
+
/** Achievement name. Use as {{achievement_name}}. */
|
|
165
|
+
ACHIEVEMENT_NAME = "achievement_name",
|
|
166
|
+
/** Achievement description. Use as {{achievement_description}}. */
|
|
167
|
+
ACHIEVEMENT_DESCRIPTION = "achievement_description",
|
|
168
|
+
/** Achievements completed count. Use as {{achievements_completed}}. */
|
|
169
|
+
ACHIEVEMENTS_COMPLETED = "achievements_completed",
|
|
170
|
+
/** Achievements total count. Use as {{achievements_total}}. */
|
|
171
|
+
ACHIEVEMENTS_TOTAL = "achievements_total",
|
|
172
|
+
/** Achievement completion percent. Use as {{achievements_percent}}. */
|
|
173
|
+
ACHIEVEMENTS_PERCENT = "achievements_percent",
|
|
162
174
|
/** Response from most recent API Action (JSON stringified). Use as {{api_action_global_response}}. */
|
|
163
175
|
API_ACTION_GLOBAL_RESPONSE = "api_action_global_response",
|
|
164
176
|
/** Last RANDOM_INPUT selection. Use as {{last_random_input}}. */
|
|
@@ -687,6 +699,7 @@ export declare const AllVariables: {
|
|
|
687
699
|
pollEnded: string[];
|
|
688
700
|
viewerqueueStarted: string[];
|
|
689
701
|
viewerqueueEnded: string[];
|
|
702
|
+
viewerAchievement: string[];
|
|
690
703
|
rouletteWinner: string[];
|
|
691
704
|
slotsWinner: string[];
|
|
692
705
|
};
|
package/dist/variables.types.js
CHANGED
|
@@ -171,6 +171,18 @@ var SystemVariables;
|
|
|
171
171
|
SystemVariables["VIEWERQUEUE_ENTRIES_COUNT"] = "viewerqueue_entries_count";
|
|
172
172
|
/** Viewer queue max entries limit. Use as {{viewerqueue_queue_limit}}. */
|
|
173
173
|
SystemVariables["VIEWERQUEUE_QUEUE_LIMIT"] = "viewerqueue_queue_limit";
|
|
174
|
+
/** Achievement id. Use as {{achievement_id}}. */
|
|
175
|
+
SystemVariables["ACHIEVEMENT_ID"] = "achievement_id";
|
|
176
|
+
/** Achievement name. Use as {{achievement_name}}. */
|
|
177
|
+
SystemVariables["ACHIEVEMENT_NAME"] = "achievement_name";
|
|
178
|
+
/** Achievement description. Use as {{achievement_description}}. */
|
|
179
|
+
SystemVariables["ACHIEVEMENT_DESCRIPTION"] = "achievement_description";
|
|
180
|
+
/** Achievements completed count. Use as {{achievements_completed}}. */
|
|
181
|
+
SystemVariables["ACHIEVEMENTS_COMPLETED"] = "achievements_completed";
|
|
182
|
+
/** Achievements total count. Use as {{achievements_total}}. */
|
|
183
|
+
SystemVariables["ACHIEVEMENTS_TOTAL"] = "achievements_total";
|
|
184
|
+
/** Achievement completion percent. Use as {{achievements_percent}}. */
|
|
185
|
+
SystemVariables["ACHIEVEMENTS_PERCENT"] = "achievements_percent";
|
|
174
186
|
/** Response from most recent API Action (JSON stringified). Use as {{api_action_global_response}}. */
|
|
175
187
|
SystemVariables["API_ACTION_GLOBAL_RESPONSE"] = "api_action_global_response";
|
|
176
188
|
/** Last RANDOM_INPUT selection. Use as {{last_random_input}}. */
|
|
@@ -1311,6 +1323,18 @@ exports.AllVariables = {
|
|
|
1311
1323
|
pollEnded: ['poll_id', 'poll_title', 'poll_choices', 'poll_winning_title', 'poll_winning_id', 'poll_winning_votes', 'poll_total_votes'],
|
|
1312
1324
|
viewerqueueStarted: ['viewerqueue_title', 'viewerqueue_entry_command', 'viewerqueue_entries', 'viewerqueue_players', 'viewerqueue_entries_count'],
|
|
1313
1325
|
viewerqueueEnded: ['viewerqueue_title', 'viewerqueue_entry_command', 'viewerqueue_entries', 'viewerqueue_players', 'viewerqueue_entries_count'],
|
|
1326
|
+
viewerAchievement: [
|
|
1327
|
+
'username',
|
|
1328
|
+
'displayname',
|
|
1329
|
+
'avatar',
|
|
1330
|
+
'platform',
|
|
1331
|
+
'achievement_id',
|
|
1332
|
+
'achievement_name',
|
|
1333
|
+
'achievement_description',
|
|
1334
|
+
'achievements_completed',
|
|
1335
|
+
'achievements_total',
|
|
1336
|
+
'achievements_percent',
|
|
1337
|
+
],
|
|
1314
1338
|
rouletteWinner: ['username', 'outcome_amount', 'ball_position'],
|
|
1315
1339
|
slotsWinner: ['username', 'outcome_amount', 'slots_combo'],
|
|
1316
1340
|
},
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type ViewerProfileAchievementMetric = 'totalCommands' | 'uniqueCommands' | 'totalChatbotCommands' | 'totalPointsCommands' | 'totalPointsSpent' | 'totalTwitchExtensionsCommands' | 'totalBitsSpent' | 'totalKicksSpent' | 'totalMoneySpent' | 'totalAlerts' | 'uniqueAlerts' | 'totalCommandsAndAlerts' | 'daysActive' | 'allRounder';
|
|
2
|
+
export type ViewerProfileAchievementDefinition = {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
description: string;
|
|
6
|
+
metric: ViewerProfileAchievementMetric;
|
|
7
|
+
threshold: number;
|
|
8
|
+
connectionKeys?: string[];
|
|
9
|
+
};
|
|
10
|
+
export declare const VIEWER_PROFILE_ACHIEVEMENTS: ViewerProfileAchievementDefinition[];
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VIEWER_PROFILE_ACHIEVEMENTS = void 0;
|
|
4
|
+
exports.VIEWER_PROFILE_ACHIEVEMENTS = [
|
|
5
|
+
// ───────── Command Usage ─────────
|
|
6
|
+
{
|
|
7
|
+
id: 'commands-regular',
|
|
8
|
+
label: 'Commands Regular',
|
|
9
|
+
description: 'Triggered 25 commands.',
|
|
10
|
+
metric: 'totalCommands',
|
|
11
|
+
threshold: 25,
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: 'commands-runner',
|
|
15
|
+
label: 'Commands Runner',
|
|
16
|
+
description: 'Triggered 50 commands.',
|
|
17
|
+
metric: 'totalCommands',
|
|
18
|
+
threshold: 50,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: 'commands-overdrive',
|
|
22
|
+
label: 'Commands Overdrive',
|
|
23
|
+
description: 'Triggered 100 commands.',
|
|
24
|
+
metric: 'totalCommands',
|
|
25
|
+
threshold: 100,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: 'commands-speedster',
|
|
29
|
+
label: 'Commands Speedster',
|
|
30
|
+
description: 'Triggered 250 commands.',
|
|
31
|
+
metric: 'totalCommands',
|
|
32
|
+
threshold: 250,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: 'commands-blazer',
|
|
36
|
+
label: 'Commands Blazer',
|
|
37
|
+
description: 'Triggered 500 commands.',
|
|
38
|
+
metric: 'totalCommands',
|
|
39
|
+
threshold: 500,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: 'commands-veteran',
|
|
43
|
+
label: 'Commands Veteran',
|
|
44
|
+
description: 'Triggered 1,000 commands.',
|
|
45
|
+
metric: 'totalCommands',
|
|
46
|
+
threshold: 1000,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: 'commands-legend',
|
|
50
|
+
label: 'Commands Legend',
|
|
51
|
+
description: 'Triggered 5,000 commands.',
|
|
52
|
+
metric: 'totalCommands',
|
|
53
|
+
threshold: 5000,
|
|
54
|
+
},
|
|
55
|
+
// ───────── Unique Commands ─────────
|
|
56
|
+
{
|
|
57
|
+
id: 'commands-unique-expolorer',
|
|
58
|
+
label: 'Commands Explorer',
|
|
59
|
+
description: 'Used 10 different commands.',
|
|
60
|
+
metric: 'uniqueCommands',
|
|
61
|
+
threshold: 10,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
id: 'commands-unique-adventurer',
|
|
65
|
+
label: 'Commands Adventurer',
|
|
66
|
+
description: 'Used 20 different commands.',
|
|
67
|
+
metric: 'uniqueCommands',
|
|
68
|
+
threshold: 20,
|
|
69
|
+
},
|
|
70
|
+
// ───────── Channel Points ─────────
|
|
71
|
+
{
|
|
72
|
+
id: 'twitch-points-spark',
|
|
73
|
+
label: 'Points Starter',
|
|
74
|
+
description: 'Triggered 50 channel point commands.',
|
|
75
|
+
metric: 'totalPointsCommands',
|
|
76
|
+
threshold: 50,
|
|
77
|
+
connectionKeys: ['twitch'],
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
id: 'twitch-points-regular',
|
|
81
|
+
label: 'Points Regular',
|
|
82
|
+
description: 'Triggered 200 channel point commands.',
|
|
83
|
+
metric: 'totalPointsCommands',
|
|
84
|
+
threshold: 200,
|
|
85
|
+
connectionKeys: ['twitch'],
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: 'twitch-points-glow',
|
|
89
|
+
label: 'Points Spender',
|
|
90
|
+
description: 'Spent 5,000 channel points.',
|
|
91
|
+
metric: 'totalPointsSpent',
|
|
92
|
+
threshold: 5000,
|
|
93
|
+
connectionKeys: ['twitch'],
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
id: 'twitch-points-beacon',
|
|
97
|
+
label: 'Points Beacon',
|
|
98
|
+
description: 'Spent 25,000 channel points.',
|
|
99
|
+
metric: 'totalPointsSpent',
|
|
100
|
+
threshold: 25000,
|
|
101
|
+
connectionKeys: ['twitch'],
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
id: 'twitch-points-tycoon',
|
|
105
|
+
label: 'Points Tycoon',
|
|
106
|
+
description: 'Spent 100,000 channel points.',
|
|
107
|
+
metric: 'totalPointsSpent',
|
|
108
|
+
threshold: 100000,
|
|
109
|
+
connectionKeys: ['twitch'],
|
|
110
|
+
},
|
|
111
|
+
// ───────── Twitch Extensions ─────────
|
|
112
|
+
{
|
|
113
|
+
id: 'twitch-extension-explorer',
|
|
114
|
+
label: 'Twitch Extension Explorer',
|
|
115
|
+
description: 'Used 5 extension commands.',
|
|
116
|
+
metric: 'totalTwitchExtensionsCommands',
|
|
117
|
+
threshold: 5,
|
|
118
|
+
connectionKeys: ['twitch'],
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
id: 'twitch-extension-adventurer-ii',
|
|
122
|
+
label: 'Twitch Extension Adventurer II',
|
|
123
|
+
description: 'Used 10 extension commands.',
|
|
124
|
+
metric: 'totalTwitchExtensionsCommands',
|
|
125
|
+
threshold: 10,
|
|
126
|
+
connectionKeys: ['twitch'],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: 'twitch-extension-adventurer',
|
|
130
|
+
label: 'Twitch Extension Adventurer',
|
|
131
|
+
description: 'Used 25 extension commands.',
|
|
132
|
+
metric: 'totalTwitchExtensionsCommands',
|
|
133
|
+
threshold: 25,
|
|
134
|
+
connectionKeys: ['twitch'],
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
id: 'twitch-extension-operator',
|
|
138
|
+
label: 'Twitch Extension Operator',
|
|
139
|
+
description: 'Used 100 extension commands.',
|
|
140
|
+
metric: 'totalTwitchExtensionsCommands',
|
|
141
|
+
threshold: 100,
|
|
142
|
+
connectionKeys: ['twitch'],
|
|
143
|
+
},
|
|
144
|
+
// ───────── Bits ─────────
|
|
145
|
+
{
|
|
146
|
+
id: 'bits-spark',
|
|
147
|
+
label: 'Bits Spark',
|
|
148
|
+
description: 'Spent 100 bits.',
|
|
149
|
+
metric: 'totalBitsSpent',
|
|
150
|
+
threshold: 100,
|
|
151
|
+
connectionKeys: ['twitch'],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
id: 'bits-beam',
|
|
155
|
+
label: 'Bits Beam',
|
|
156
|
+
description: 'Spent 500 bits.',
|
|
157
|
+
metric: 'totalBitsSpent',
|
|
158
|
+
threshold: 500,
|
|
159
|
+
connectionKeys: ['twitch'],
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
id: 'bits-glow',
|
|
163
|
+
label: 'Bits Glow',
|
|
164
|
+
description: 'Spent 1,000 bits.',
|
|
165
|
+
metric: 'totalBitsSpent',
|
|
166
|
+
threshold: 1000,
|
|
167
|
+
connectionKeys: ['twitch'],
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
id: 'bits-supernova',
|
|
171
|
+
label: 'Bits Supernova',
|
|
172
|
+
description: 'Spent 5,000 bits.',
|
|
173
|
+
metric: 'totalBitsSpent',
|
|
174
|
+
threshold: 5000,
|
|
175
|
+
connectionKeys: ['twitch'],
|
|
176
|
+
},
|
|
177
|
+
// ───────── Kick ─────────
|
|
178
|
+
{
|
|
179
|
+
id: 'kick-spark',
|
|
180
|
+
label: 'Kicks Starter',
|
|
181
|
+
description: 'Spent 50 kicks.',
|
|
182
|
+
metric: 'totalKicksSpent',
|
|
183
|
+
threshold: 50,
|
|
184
|
+
connectionKeys: ['kick'],
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
id: 'kick-glow',
|
|
188
|
+
label: 'Kicks Supporter',
|
|
189
|
+
description: 'Spent 100 kicks.',
|
|
190
|
+
metric: 'totalKicksSpent',
|
|
191
|
+
threshold: 100,
|
|
192
|
+
connectionKeys: ['kick'],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
id: 'kick-beam',
|
|
196
|
+
label: 'Kick Power User',
|
|
197
|
+
description: 'Spent 500 kicks.',
|
|
198
|
+
metric: 'totalKicksSpent',
|
|
199
|
+
threshold: 500,
|
|
200
|
+
connectionKeys: ['kick'],
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
id: 'kick-supernova',
|
|
204
|
+
label: 'Kick Superstar',
|
|
205
|
+
description: 'Spent 1,000 kicks.',
|
|
206
|
+
metric: 'totalKicksSpent',
|
|
207
|
+
threshold: 1000,
|
|
208
|
+
connectionKeys: ['kick'],
|
|
209
|
+
},
|
|
210
|
+
// ───────── Donations ─────────
|
|
211
|
+
{
|
|
212
|
+
id: 'light-supporter',
|
|
213
|
+
label: 'Supporter',
|
|
214
|
+
description: 'Donated 5 in your default currency.',
|
|
215
|
+
metric: 'totalMoneySpent',
|
|
216
|
+
threshold: 5,
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
id: 'light-backer',
|
|
220
|
+
label: 'Backer',
|
|
221
|
+
description: 'Donated 25 in your default currency.',
|
|
222
|
+
metric: 'totalMoneySpent',
|
|
223
|
+
threshold: 25,
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
id: 'light-advocate',
|
|
227
|
+
label: 'Advocate',
|
|
228
|
+
description: 'Donated 50 in your default currency.',
|
|
229
|
+
metric: 'totalMoneySpent',
|
|
230
|
+
threshold: 50,
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
id: 'light-hero',
|
|
234
|
+
label: 'Hero',
|
|
235
|
+
description: 'Donated 100 in your default currency.',
|
|
236
|
+
metric: 'totalMoneySpent',
|
|
237
|
+
threshold: 100,
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
id: 'light-patron',
|
|
241
|
+
label: 'Patron',
|
|
242
|
+
description: 'Donated 100 in your default currency.',
|
|
243
|
+
metric: 'totalMoneySpent',
|
|
244
|
+
threshold: 100,
|
|
245
|
+
},
|
|
246
|
+
// ───────── Alerts ─────────
|
|
247
|
+
{
|
|
248
|
+
id: 'alert-storm',
|
|
249
|
+
label: 'Alert Storm',
|
|
250
|
+
description: 'Triggered 10 alerts.',
|
|
251
|
+
metric: 'totalAlerts',
|
|
252
|
+
threshold: 10,
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
id: 'alert-enthusiast',
|
|
256
|
+
label: 'Alert Enthusiast',
|
|
257
|
+
description: 'Triggered 50 alerts.',
|
|
258
|
+
metric: 'totalAlerts',
|
|
259
|
+
threshold: 50,
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
id: 'alert-curator',
|
|
263
|
+
label: 'Alert Explorer',
|
|
264
|
+
description: 'Triggered 10 different alerts.',
|
|
265
|
+
metric: 'uniqueAlerts',
|
|
266
|
+
threshold: 10,
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
id: 'alert-historian',
|
|
270
|
+
label: 'Alert Historian',
|
|
271
|
+
description: 'Triggered 25 different alerts.',
|
|
272
|
+
metric: 'uniqueAlerts',
|
|
273
|
+
threshold: 25,
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
id: 'alert-archivist',
|
|
277
|
+
label: 'Alert Archivist',
|
|
278
|
+
description: 'Triggered 50 different alerts.',
|
|
279
|
+
metric: 'uniqueAlerts',
|
|
280
|
+
threshold: 50,
|
|
281
|
+
},
|
|
282
|
+
// ───────── Overall Engagement ─────────
|
|
283
|
+
{
|
|
284
|
+
id: 'livewire-operator',
|
|
285
|
+
label: 'Livewire',
|
|
286
|
+
description: 'Triggered 500 commands or alerts.',
|
|
287
|
+
metric: 'totalCommandsAndAlerts',
|
|
288
|
+
threshold: 500,
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
id: 'on-air-regular',
|
|
292
|
+
label: 'On-Air Regular',
|
|
293
|
+
description: 'Active for 60 days or more.',
|
|
294
|
+
metric: 'daysActive',
|
|
295
|
+
threshold: 60,
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
id: 'yearlong-viewer',
|
|
299
|
+
label: 'Year-Long Viewer',
|
|
300
|
+
description: 'Active for 365 days or more.',
|
|
301
|
+
metric: 'daysActive',
|
|
302
|
+
threshold: 365,
|
|
303
|
+
},
|
|
304
|
+
// ───────── Ultimate ─────────
|
|
305
|
+
{
|
|
306
|
+
id: 'lumia-luminary',
|
|
307
|
+
label: 'Lumia Luminary',
|
|
308
|
+
description: 'Reached major milestones across commands, alerts, extensions, and support.',
|
|
309
|
+
metric: 'allRounder',
|
|
310
|
+
threshold: 1,
|
|
311
|
+
},
|
|
312
|
+
];
|