beatsaber-bot-core 0.3.0-rc.1 → 0.3.0-rc.11

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 (127) hide show
  1. package/dist/cjs/cmd/bind/bind-beatleader.js +8 -11
  2. package/dist/cjs/cmd/bind/bind-beatleader.js.map +1 -1
  3. package/dist/cjs/cmd/bind/bind-beatsaver.js +7 -12
  4. package/dist/cjs/cmd/bind/bind-beatsaver.js.map +1 -1
  5. package/dist/cjs/cmd/bind/bind-id-beatleader.js +8 -11
  6. package/dist/cjs/cmd/bind/bind-id-beatleader.js.map +1 -1
  7. package/dist/cjs/cmd/bind/bind-id-beatsaver.js +7 -11
  8. package/dist/cjs/cmd/bind/bind-id-beatsaver.js.map +1 -1
  9. package/dist/cjs/cmd/bind/bind-scoresaber.js +9 -14
  10. package/dist/cjs/cmd/bind/bind-scoresaber.js.map +1 -1
  11. package/dist/cjs/cmd/rank.js +3 -3
  12. package/dist/cjs/cmd/rank.js.map +1 -1
  13. package/dist/cjs/cmd/score.js +2 -2
  14. package/dist/cjs/cmd/score.js.map +1 -1
  15. package/dist/cjs/cmd/subscribe/beatleader.js +1 -1
  16. package/dist/cjs/cmd/subscribe/beatleader.js.map +1 -1
  17. package/dist/cjs/cmd/subscribe/beatsaver.js +1 -1
  18. package/dist/cjs/cmd/subscribe/beatsaver.js.map +1 -1
  19. package/dist/cjs/cmd/subscribe/id-beatleader-score.js +1 -1
  20. package/dist/cjs/cmd/subscribe/id-beatleader-score.js.map +1 -1
  21. package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js +1 -1
  22. package/dist/cjs/cmd/subscribe/id-beatsaver-mapper.js.map +1 -1
  23. package/dist/cjs/cmd/subscribe/index.js +4 -4
  24. package/dist/cjs/cmd/subscribe/index.js.map +1 -1
  25. package/dist/cjs/cmd/subscribe/subleave.js +4 -4
  26. package/dist/cjs/cmd/subscribe/subleave.js.map +1 -1
  27. package/dist/cjs/common/i18n/index.js +2 -1
  28. package/dist/cjs/common/i18n/index.js.map +1 -1
  29. package/dist/cjs/components/components/RankDifficulty.js +32 -21
  30. package/dist/cjs/components/components/RankDifficulty.js.map +1 -1
  31. package/dist/cjs/components/components/base/avatar.js +12 -1
  32. package/dist/cjs/components/components/base/avatar.js.map +1 -1
  33. package/dist/cjs/components/components/bl-rank-score-item.js +8 -7
  34. package/dist/cjs/components/components/bl-rank-score-item.js.map +1 -1
  35. package/dist/cjs/components/components/bl-score-item.js +20 -9
  36. package/dist/cjs/components/components/bl-score-item.js.map +1 -1
  37. package/dist/cjs/components/components/characteristic.js +36 -25
  38. package/dist/cjs/components/components/characteristic.js.map +1 -1
  39. package/dist/cjs/components/components/flag.js +4 -3
  40. package/dist/cjs/components/components/flag.js.map +1 -1
  41. package/dist/cjs/components/components/icons/BeatLeader.js +30 -19
  42. package/dist/cjs/components/components/icons/BeatLeader.js.map +1 -1
  43. package/dist/cjs/components/components/scoreItem.js +20 -9
  44. package/dist/cjs/components/components/scoreItem.js.map +1 -1
  45. package/dist/cjs/components/components/scoregraph.js +2 -1
  46. package/dist/cjs/components/components/scoregraph.js.map +1 -1
  47. package/dist/cjs/components/components/skill-graph.js +33 -22
  48. package/dist/cjs/components/components/skill-graph.js.map +1 -1
  49. package/dist/cjs/components/components/socre-badge.js +14 -3
  50. package/dist/cjs/components/components/socre-badge.js.map +1 -1
  51. package/dist/cjs/components/components/ss-rank-score-item.js +8 -7
  52. package/dist/cjs/components/components/ss-rank-score-item.js.map +1 -1
  53. package/dist/cjs/components/components/ss-score-item.js.map +1 -1
  54. package/dist/cjs/components/index.js +1 -1
  55. package/dist/cjs/components/index.js.map +1 -1
  56. package/dist/cjs/components/pages/bl-player.js +1 -1
  57. package/dist/cjs/components/pages/bl-player.js.map +1 -1
  58. package/dist/cjs/components/pages/bl-score-with-rank.js +1 -1
  59. package/dist/cjs/components/pages/bl-score-with-rank.js.map +1 -1
  60. package/dist/cjs/components/pages/bl-score.js +1 -1
  61. package/dist/cjs/components/pages/bl-score.js.map +1 -1
  62. package/dist/cjs/components/pages/ss-player.js +1 -1
  63. package/dist/cjs/components/pages/ss-player.js.map +1 -1
  64. package/dist/esm/cmd/bind/bind-beatleader.js +8 -11
  65. package/dist/esm/cmd/bind/bind-beatleader.js.map +1 -1
  66. package/dist/esm/cmd/bind/bind-beatsaver.js +7 -12
  67. package/dist/esm/cmd/bind/bind-beatsaver.js.map +1 -1
  68. package/dist/esm/cmd/bind/bind-id-beatleader.js +8 -11
  69. package/dist/esm/cmd/bind/bind-id-beatleader.js.map +1 -1
  70. package/dist/esm/cmd/bind/bind-id-beatsaver.js +7 -11
  71. package/dist/esm/cmd/bind/bind-id-beatsaver.js.map +1 -1
  72. package/dist/esm/cmd/bind/bind-scoresaber.js +9 -14
  73. package/dist/esm/cmd/bind/bind-scoresaber.js.map +1 -1
  74. package/dist/esm/cmd/rank.js +3 -3
  75. package/dist/esm/cmd/rank.js.map +1 -1
  76. package/dist/esm/cmd/score.js +2 -2
  77. package/dist/esm/cmd/score.js.map +1 -1
  78. package/dist/esm/cmd/subscribe/beatleader.js +1 -1
  79. package/dist/esm/cmd/subscribe/beatleader.js.map +1 -1
  80. package/dist/esm/cmd/subscribe/beatsaver.js +1 -1
  81. package/dist/esm/cmd/subscribe/beatsaver.js.map +1 -1
  82. package/dist/esm/cmd/subscribe/id-beatleader-score.js +1 -1
  83. package/dist/esm/cmd/subscribe/id-beatleader-score.js.map +1 -1
  84. package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js +1 -1
  85. package/dist/esm/cmd/subscribe/id-beatsaver-mapper.js.map +1 -1
  86. package/dist/esm/cmd/subscribe/index.js +4 -4
  87. package/dist/esm/cmd/subscribe/index.js.map +1 -1
  88. package/dist/esm/cmd/subscribe/subleave.js +4 -4
  89. package/dist/esm/cmd/subscribe/subleave.js.map +1 -1
  90. package/dist/esm/common/i18n/index.js +2 -1
  91. package/dist/esm/common/i18n/index.js.map +1 -1
  92. package/dist/esm/components/components/RankDifficulty.js +1 -0
  93. package/dist/esm/components/components/RankDifficulty.js.map +1 -1
  94. package/dist/esm/components/components/base/avatar.js +1 -0
  95. package/dist/esm/components/components/base/avatar.js.map +1 -1
  96. package/dist/esm/components/components/bl-rank-score-item.js +1 -0
  97. package/dist/esm/components/components/bl-rank-score-item.js.map +1 -1
  98. package/dist/esm/components/components/bl-score-item.js +1 -0
  99. package/dist/esm/components/components/bl-score-item.js.map +1 -1
  100. package/dist/esm/components/components/characteristic.js +1 -0
  101. package/dist/esm/components/components/characteristic.js.map +1 -1
  102. package/dist/esm/components/components/flag.js +1 -0
  103. package/dist/esm/components/components/flag.js.map +1 -1
  104. package/dist/esm/components/components/icons/BeatLeader.js +1 -0
  105. package/dist/esm/components/components/icons/BeatLeader.js.map +1 -1
  106. package/dist/esm/components/components/scoreItem.js +1 -0
  107. package/dist/esm/components/components/scoreItem.js.map +1 -1
  108. package/dist/esm/components/components/scoregraph.js +1 -0
  109. package/dist/esm/components/components/scoregraph.js.map +1 -1
  110. package/dist/esm/components/components/skill-graph.js +1 -0
  111. package/dist/esm/components/components/skill-graph.js.map +1 -1
  112. package/dist/esm/components/components/socre-badge.js +1 -0
  113. package/dist/esm/components/components/socre-badge.js.map +1 -1
  114. package/dist/esm/components/components/ss-rank-score-item.js +1 -0
  115. package/dist/esm/components/components/ss-rank-score-item.js.map +1 -1
  116. package/dist/esm/components/components/ss-score-item.js.map +1 -1
  117. package/dist/esm/components/index.js +1 -1
  118. package/dist/esm/components/index.js.map +1 -1
  119. package/dist/esm/components/pages/bl-player.js +1 -1
  120. package/dist/esm/components/pages/bl-player.js.map +1 -1
  121. package/dist/esm/components/pages/bl-score-with-rank.js +1 -1
  122. package/dist/esm/components/pages/bl-score-with-rank.js.map +1 -1
  123. package/dist/esm/components/pages/bl-score.js +1 -1
  124. package/dist/esm/components/pages/bl-score.js.map +1 -1
  125. package/dist/esm/components/pages/ss-player.js +1 -1
  126. package/dist/esm/components/pages/ss-player.js.map +1 -1
  127. package/package.json +8 -17
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/pages/bl-score-with-rank.tsx"],"sourcesContent":["import {\n Check,\n Key,\n Clock,\n ThumbsUp,\n ThumbsDown,\n Calendar,\n HeartPulse,\n} from 'lucide-react'\nimport ScoreGraph from '../components/scoregraph'\nimport React from 'react'\nimport { BSOR, Score } from '@/services/api/interfaces/beatleader'\nimport { BSMap } from '@/services/api/interfaces/beatsaver'\nimport {\n BlRankScoreItem,\n ScoreItemSkeleton,\n} from '@/components/components/bl-rank-score-item'\nimport { RankDifficulty } from '@/components/components/RankDifficulty'\nimport { Avatar } from '@/components/components/base/avatar'\nimport { formatDuration, formatTime } from '@/components/utils'\nimport Progressbar from '@/components/components/progressbar'\n\ninterface BLScoreProps {\n score: Score\n aroundScores: Score[]\n regionTopScores: Score[]\n bsMap: BSMap\n difficulties: any[]\n statistic: any\n bsor: BSOR\n bg: string\n}\n\nexport default function BLRankScore({\n score,\n aroundScores,\n regionTopScores,\n difficulties,\n bsMap,\n statistic,\n bsor,\n bg,\n}: BLScoreProps) {\n let aroundScore = aroundScores\n .slice(0, 7)\n .map((it) => ({ ...it, template: false }))\n let regionTopScore = regionTopScores\n .slice(0, 7)\n .map((it) => ({ ...it, template: false }))\n if (aroundScore.length < 7) {\n aroundScore = aroundScore.concat(\n new Array(7 - aroundScore.length).fill({ template: true })\n )\n }\n if (regionTopScore.length < 7) {\n regionTopScore = regionTopScore.concat(\n new Array(7 - regionTopScore.length).fill({ template: true })\n )\n }\n\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[1165px] my-auto rounded-none'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white flex flex-col justify-between z-10'\n }\n >\n <div className={'flex justify-between items-start gap-2 grow'}>\n <div className=\"flex flex-col items-start justify-between text-xl font-bold grow h-full\">\n <div className=\"flex space-x-4 items-center justify-between text-2xl font-bold\">\n <Avatar\n className={'h-16 w-16 rounded-full'}\n src={score.player.avatar}\n fallback={score.player.name.slice(0, 1)}\n />\n <div>{score.player.name}</div>\n </div>\n <div className=\"text-xl text-ellipsis line-clamp-2\">\n {score.song.name}\n </div>\n <div className=\"flex space-x-4 h-52\">\n <Avatar\n className={'h-52 w-52 rounded-md'}\n src={score.song.cover}\n fallback={score.song.name.slice(0, 1)}\n />\n <div className=\"text-xs font-bold flex flex-col items-start justify-between grow w-full\">\n <div className=\"flex space-x-2 items-center text-sm\">\n <Avatar\n className={'h-4 w-4 rounded-full'}\n src={bsMap.uploader.avatar}\n fallback={score.song.mapper.slice(0, 1)}\n />\n <div className=\"flex items-center justify-between\">\n <div className=\"text-ellipsis line-clamp-1\">\n {score.song.mapper}\n </div>\n </div>\n </div>\n <div className=\"text-xs flex gap-2 items-center *:space-x-1 *:flex *:items-center font-normal\">\n <div className=\"flex items-center\">\n <HeartPulse className=\"h-3 w-3\" />\n <span>{bsMap.metadata.bpm.toFixed(0)}</span>\n </div>\n <div>\n <span>\n <Key className={'w-3 h-3'} />\n </span>\n <span>\n {score.song.id.toLowerCase().replaceAll('x', '')}\n </span>\n </div>\n\n <div className=\"flex items-center\">\n <Clock className=\"h-3 w-3\" />\n <span>{formatDuration(bsMap.metadata.duration)}</span>\n </div>\n <div className=\"flex items-center text-ellipsis col-span-2 line-clamp-1\">\n <Calendar className=\"h-3 w-3\" />\n <span>{formatTime(bsMap.lastPublishedAt)}</span>\n </div>\n </div>\n <div className=\"flex items-center space-x-2 justify-between font-normal\">\n <Progressbar\n value={bsMap.stats.score * 100}\n // className=\"h-1.5\"\n // containerClassName=\"h-1.5\"\n />\n <span>{(bsMap.stats.score * 100).toFixed(2)} %</span>\n <div className=\"flex items-center\">\n <ThumbsUp className=\"h-3 w-3 mr-0.5\" />\n <span>{bsMap.stats.upvotes}</span>\n </div>\n <div className=\"flex items-center\">\n <ThumbsDown className=\"h-3 w-3 mr-0.5\" />\n <span>{bsMap.stats.downvotes}</span>\n </div>\n </div>\n <div className={'text-lg min-w-60 flex flex-col leading-6'}>\n <div className=\"flex justify-between items-center\">\n <span> # {score.pp.toFixed(2)} PP</span>\n <span> # {score.rank}</span>\n </div>\n {\n <div className=\"flex items-center justify-between\">\n <span>Accuracy</span>\n <span>{(score.accuracy * 100).toFixed(2)} %</span>\n </div>\n }\n {score.fullCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Full Combo</span>\n <Check />\n </div>\n )}\n {score.maxCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Max Combo</span>\n <span>{score.maxCombo}</span>\n </div>\n )}\n\n {\n <div className=\"flex items-center justify-between\">\n <span>Missed Notes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {\n <div className=\"flex items-center justify-between\">\n <span>Total Mistakes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {score.modifiers && (\n <div className=\"flex items-center justify-between\">\n <span>Modifiers</span>\n <span>{score.modifiers}</span>\n </div>\n )}\n </div>\n </div>\n </div>\n {/*diff code */}\n <div className=\"text-xl font-bold h-24 w-[500px] rounded-lg mt-auto flex items-center justify-evenly gap-2 \">\n {bsMap.versions[0].diffs\n .filter((it) => it.characteristic === 'Standard')\n .map((diff) => (\n <RankDifficulty\n difficulty={diff.difficulty}\n star={diff.stars}\n blStar={diff.blStars}\n current={\n score?.difficulty?.modeName === diff?.characteristic &&\n score?.difficulty?.difficultyName === diff?.difficulty\n }\n key={diff.difficulty}\n />\n ))}\n </div>\n\n {/*acc graph*/}\n <div className=\"align-end mt-2 mb-2\">\n <span className=\"text-xl font-bold\">AccGraph</span>\n <ScoreGraph\n scoreId={score.id}\n scoreInfo={score}\n statistic={statistic}\n bsor={bsor}\n height={240}\n width={480}\n />\n {/*<ScoreGraph scoreId={score.id} scoreInfo={score} />*/}\n </div>\n </div>\n <div className={'flex justify-between gap-2 items-start mt-auto'}>\n <div className={'flex flex-col items-start gap-2'}>\n <div className={'text-white font-bold text-3xl mr-auto'}>\n Global Rank\n </div>\n {aroundScore.map((cur: any, idx) =>\n !cur.template ? (\n <BlRankScoreItem\n key={cur.id}\n name={cur.player.name}\n date={cur.timepost}\n countryCode={cur.player.country ?? 'CN'}\n avatar={cur.player.avatar}\n globalRank={cur.rank}\n score={cur.modifiedScore}\n modifiers={cur.modifiers}\n isRegionRank={false}\n acc={cur.accuracy}\n pp={cur.pp}\n self={cur.player.id === score.playerId}\n />\n ) : (\n <ScoreItemSkeleton isRegionRank={false} key={idx} />\n )\n )}\n </div>\n <div className={'flex flex-col items-start gap-2'}>\n <div className={'text-white font-bold text-3xl mr-auto'}>\n Region Top Rank\n </div>\n {regionTopScore.map((cur: any, idx) =>\n !cur.template ? (\n <BlRankScoreItem\n key={cur.id}\n name={cur.player.name}\n date={cur.timepost}\n countryCode={cur.player.country ?? 'CN'}\n avatar={cur.player.avatar}\n globalRank={cur.rank}\n score={cur.modifiedScore}\n modifiers={cur.modifiers}\n isRegionRank\n acc={cur.accuracy}\n pp={cur.pp}\n self={cur.player.id === score.playerId}\n />\n ) : (\n <ScoreItemSkeleton isRegionRank key={idx} />\n )\n )}\n </div>\n </div>\n </div>\n </div>\n <img\n src={bg}\n className={\n 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center'\n }\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":"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","names":["React","Progressbar","ScoreGraph"]}
1
+ {"version":3,"sources":["../../../../src/components/pages/bl-score-with-rank.tsx"],"sourcesContent":["import React from 'react'\nimport {\n Check,\n Key,\n Clock,\n ThumbsUp,\n ThumbsDown,\n Calendar,\n HeartPulse,\n} from 'lucide-react'\nimport ScoreGraph from '../components/scoregraph'\nimport { BSOR, Score } from '@/services/api/interfaces/beatleader'\nimport { BSMap } from '@/services/api/interfaces/beatsaver'\nimport {\n BlRankScoreItem,\n ScoreItemSkeleton,\n} from '@/components/components/bl-rank-score-item'\nimport { RankDifficulty } from '@/components/components/RankDifficulty'\nimport { Avatar } from '@/components/components/base/avatar'\nimport { formatDuration, formatTime } from '@/components/utils'\nimport Progressbar from '@/components/components/progressbar'\n\ninterface BLScoreProps {\n score: Score\n aroundScores: Score[]\n regionTopScores: Score[]\n bsMap: BSMap\n difficulties: any[]\n statistic: any\n bsor: BSOR\n bg: string\n}\n\nexport default function BLRankScore({\n score,\n aroundScores,\n regionTopScores,\n difficulties,\n bsMap,\n statistic,\n bsor,\n bg,\n}: BLScoreProps) {\n let aroundScore = aroundScores\n .slice(0, 7)\n .map((it) => ({ ...it, template: false }))\n let regionTopScore = regionTopScores\n .slice(0, 7)\n .map((it) => ({ ...it, template: false }))\n if (aroundScore.length < 7) {\n aroundScore = aroundScore.concat(\n new Array(7 - aroundScore.length).fill({ template: true })\n )\n }\n if (regionTopScore.length < 7) {\n regionTopScore = regionTopScore.concat(\n new Array(7 - regionTopScore.length).fill({ template: true })\n )\n }\n\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[1165px] my-auto rounded-none'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white flex flex-col justify-between z-10'\n }\n >\n <div className={'flex justify-between items-start gap-2 grow'}>\n <div className=\"flex flex-col items-start justify-between text-xl font-bold grow h-full\">\n <div className=\"flex space-x-4 items-center justify-between text-2xl font-bold\">\n <Avatar\n className={'h-16 w-16 rounded-full'}\n src={score.player.avatar}\n fallback={score.player.name.slice(0, 1)}\n />\n <div>{score.player.name}</div>\n </div>\n <div className=\"text-xl text-ellipsis line-clamp-2\">\n {score.song.name}\n </div>\n <div className=\"flex space-x-4 h-52\">\n <Avatar\n className={'h-52 w-52 rounded-md'}\n src={score.song.cover}\n fallback={score.song.name.slice(0, 1)}\n />\n <div className=\"text-xs font-bold flex flex-col items-start justify-between grow w-full\">\n <div className=\"flex space-x-2 items-center text-sm\">\n <Avatar\n className={'h-4 w-4 rounded-full'}\n src={bsMap.uploader.avatar}\n fallback={score.song.mapper.slice(0, 1)}\n />\n <div className=\"flex items-center justify-between\">\n <div className=\"text-ellipsis line-clamp-1\">\n {score.song.mapper}\n </div>\n </div>\n </div>\n <div className=\"text-xs flex gap-2 items-center *:space-x-1 *:flex *:items-center font-normal\">\n <div className=\"flex items-center\">\n <HeartPulse className=\"h-3 w-3\" />\n <span>{bsMap.metadata.bpm.toFixed(0)}</span>\n </div>\n <div>\n <span>\n <Key className={'w-3 h-3'} />\n </span>\n <span>\n {score.song.id.toLowerCase().replaceAll('x', '')}\n </span>\n </div>\n\n <div className=\"flex items-center\">\n <Clock className=\"h-3 w-3\" />\n <span>{formatDuration(bsMap.metadata.duration)}</span>\n </div>\n <div className=\"flex items-center text-ellipsis col-span-2 line-clamp-1\">\n <Calendar className=\"h-3 w-3\" />\n <span>{formatTime(bsMap.lastPublishedAt)}</span>\n </div>\n </div>\n <div className=\"flex items-center space-x-2 justify-between font-normal\">\n <Progressbar\n value={bsMap.stats.score * 100}\n // className=\"h-1.5\"\n // containerClassName=\"h-1.5\"\n />\n <span>{(bsMap.stats.score * 100).toFixed(2)} %</span>\n <div className=\"flex items-center\">\n <ThumbsUp className=\"h-3 w-3 mr-0.5\" />\n <span>{bsMap.stats.upvotes}</span>\n </div>\n <div className=\"flex items-center\">\n <ThumbsDown className=\"h-3 w-3 mr-0.5\" />\n <span>{bsMap.stats.downvotes}</span>\n </div>\n </div>\n <div className={'text-lg min-w-60 flex flex-col leading-6'}>\n <div className=\"flex justify-between items-center\">\n <span> # {score.pp.toFixed(2)} PP</span>\n <span> # {score.rank}</span>\n </div>\n {\n <div className=\"flex items-center justify-between\">\n <span>Accuracy</span>\n <span>{(score.accuracy * 100).toFixed(2)} %</span>\n </div>\n }\n {score.fullCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Full Combo</span>\n <Check />\n </div>\n )}\n {score.maxCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Max Combo</span>\n <span>{score.maxCombo}</span>\n </div>\n )}\n\n {\n <div className=\"flex items-center justify-between\">\n <span>Missed Notes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {\n <div className=\"flex items-center justify-between\">\n <span>Total Mistakes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {score.modifiers && (\n <div className=\"flex items-center justify-between\">\n <span>Modifiers</span>\n <span>{score.modifiers}</span>\n </div>\n )}\n </div>\n </div>\n </div>\n {/*diff code */}\n <div className=\"text-xl font-bold h-24 w-[500px] rounded-lg mt-auto flex items-center justify-evenly gap-2 \">\n {bsMap.versions[0].diffs\n .filter((it) => it.characteristic === 'Standard')\n .map((diff) => (\n <RankDifficulty\n difficulty={diff.difficulty}\n star={diff.stars}\n blStar={diff.blStars}\n current={\n score?.difficulty?.modeName === diff?.characteristic &&\n score?.difficulty?.difficultyName === diff?.difficulty\n }\n key={diff.difficulty}\n />\n ))}\n </div>\n\n {/*acc graph*/}\n <div className=\"align-end mt-2 mb-2\">\n <span className=\"text-xl font-bold\">AccGraph</span>\n <ScoreGraph\n scoreId={score.id}\n scoreInfo={score}\n statistic={statistic}\n bsor={bsor}\n height={240}\n width={480}\n />\n {/*<ScoreGraph scoreId={score.id} scoreInfo={score} />*/}\n </div>\n </div>\n <div className={'flex justify-between gap-2 items-start mt-auto'}>\n <div className={'flex flex-col items-start gap-2'}>\n <div className={'text-white font-bold text-3xl mr-auto'}>\n Global Rank\n </div>\n {aroundScore.map((cur: any, idx) =>\n !cur.template ? (\n <BlRankScoreItem\n key={cur.id}\n name={cur.player.name}\n date={cur.timepost}\n countryCode={cur.player.country ?? 'CN'}\n avatar={cur.player.avatar}\n globalRank={cur.rank}\n score={cur.modifiedScore}\n modifiers={cur.modifiers}\n isRegionRank={false}\n acc={cur.accuracy}\n pp={cur.pp}\n self={cur.player.id === score.playerId}\n />\n ) : (\n <ScoreItemSkeleton isRegionRank={false} key={idx} />\n )\n )}\n </div>\n <div className={'flex flex-col items-start gap-2'}>\n <div className={'text-white font-bold text-3xl mr-auto'}>\n Region Top Rank\n </div>\n {regionTopScore.map((cur: any, idx) =>\n !cur.template ? (\n <BlRankScoreItem\n key={cur.id}\n name={cur.player.name}\n date={cur.timepost}\n countryCode={cur.player.country ?? 'CN'}\n avatar={cur.player.avatar}\n globalRank={cur.rank}\n score={cur.modifiedScore}\n modifiers={cur.modifiers}\n isRegionRank\n acc={cur.accuracy}\n pp={cur.pp}\n self={cur.player.id === score.playerId}\n />\n ) : (\n <ScoreItemSkeleton isRegionRank key={idx} />\n )\n )}\n </div>\n </div>\n </div>\n </div>\n <img\n src={bg}\n className={\n 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center'\n }\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":"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","names":["React","Progressbar","ScoreGraph"]}
@@ -30,11 +30,11 @@ __export(bl_score_exports, {
30
30
  BLScore: () => BLScore
31
31
  });
32
32
  module.exports = __toCommonJS(bl_score_exports);
33
+ var import_react = __toESM(require("react"));
33
34
  var import_lucide_react = require("lucide-react");
34
35
  var import_utils = require("../utils/index.js");
35
36
  var import_progressbar = __toESM(require("../components/progressbar.js"));
36
37
  var import_scoregraph = __toESM(require("../components/scoregraph.js"));
37
- var import_react = __toESM(require("react"));
38
38
  function BLScore({
39
39
  score,
40
40
  bsMap,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/pages/bl-score.tsx"],"sourcesContent":["import {\n BarChart,\n Check,\n Key,\n Star,\n Clock,\n ThumbsUp,\n ThumbsDown,\n Calendar,\n} from 'lucide-react'\nimport { diffConv, formatDuration, formatTime } from '../utils'\nimport Progressbar from '../components/progressbar'\nimport ScoreGraph from '../components/scoregraph'\nimport React from 'react'\nimport { BSOR, Score } from '@/services/api/interfaces/beatleader'\nimport { BSMap } from '@/services/api/interfaces/beatsaver'\n\ninterface BLScoreProps {\n score: Score\n bsMap: BSMap\n statistic: any\n bsor: BSOR\n qrcodeUrl: string\n}\n\nexport function BLScore({\n score,\n bsMap,\n statistic,\n bsor,\n qrcodeUrl,\n}: BLScoreProps) {\n const bg = 'https://www.loliapi.com/acg/pc/'\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[400px] my-auto rounded-none'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white flex flex-col justify-between z-10'\n }\n >\n <div className=\"flex space-x-4 items-center justify-between text-xl font-bold\">\n <div className=\"flex space-x-4 items-center justify-between text-2xl font-bold\">\n <img\n loading={'eager'}\n className={'h-16 w-16 rounded-full'}\n src={score.player.avatar}\n // fallback={score.player.name.slice(0, 1)}\n />\n <div>{score.player.name}</div>\n </div>\n <div\n className={'w-[100px] flex items-center justify-center flex-col'}\n >\n <img\n src={qrcodeUrl}\n width={80}\n height={80}\n className={'w-[80px] aspect-square'}\n />\n <span className={'text-xs'}>replay</span>\n </div>\n </div>\n <div className=\"flex space-x-4 h-40\">\n <img\n className={'h-40 w-40 rounded-md'}\n src={score.song.cover}\n // fallback={score.song.name.slice(0, 1)}\n />\n <div className=\"text-xs font-bold flex flex-col justify-between\">\n <div className=\"text-xl text-ellipsis line-clamp-2\">\n {score.song.name}\n </div>\n <div className=\"flex space-x-2 items-center text-sm\">\n <img\n className={'h-4 w-4 rounded-full'}\n src={bsMap.uploader.avatar}\n // fallback={score.song.mapper.slice(0, 1)}\n />\n <div className=\"flex items-center justify-between\">\n <div className=\"text-ellipsis line-clamp-1\">\n {score.song.mapper}\n </div>\n </div>\n </div>\n <div className=\"text-xs grid grid-cols-3 gap-1 *:space-x-1 *:flex *:items-center font-normal\">\n <div className=\"flex items-center text-ellipsis col-span-3 line-clamp-1\">\n <Calendar className=\"h-3 w-3\" />\n <span>{formatTime(bsMap.lastPublishedAt)}</span>\n </div>\n <div>\n <span>\n <BarChart className={'w-3 h-3'} />\n </span>\n <span>{diffConv(score.difficulty.difficultyName)}</span>\n </div>\n <div>\n <span>\n <Star className={'w-3 h-3'} />\n </span>\n <span>{score.difficulty.stars?.toFixed(2) ?? 'none'} </span>\n </div>\n <div>\n <span>\n <Key className={'w-3 h-3'} />\n </span>\n <span>{score.song.id.toLowerCase().replaceAll('x', '')}</span>\n </div>\n\n <div className=\"flex items-center\">\n <ThumbsUp className=\"h-3 w-3\" />\n <span>{bsMap.stats.upvotes}</span>\n </div>\n <div className=\"flex items-center\">\n <ThumbsDown className=\"h-3 w-3\" />\n <span>{bsMap.stats.downvotes}</span>\n </div>\n <div className=\"flex items-center\">\n <Clock className=\"h-3 w-3\" />\n <span>{formatDuration(bsMap.metadata.duration)}</span>\n </div>\n </div>\n <div className=\"flex items-center space-x-2 text-xs font-normal\">\n <Progressbar value={bsMap.stats.score * 100} />\n <span>{(bsMap.stats.score * 100).toFixed(2)} %</span>\n </div>\n </div>\n </div>\n <div className=\"text-xl font-bold pt-2\">\n <div className=\"flex justify-between\">\n <span> # {score.rank}</span>\n <span>{score.pp.toFixed(2)} PP</span>\n </div>\n {\n <div className=\"flex items-center justify-between\">\n <span>Accuracy</span>\n <span>{(score.accuracy * 100).toFixed(2)} %</span>\n </div>\n }\n {score.fullCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Full Combo</span>\n <Check />\n </div>\n )}\n {score.maxCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Max Combo</span>\n <span>{score.maxCombo}</span>\n </div>\n )}\n {\n <div className=\"flex items-center justify-between\">\n <span>Missed Notes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {\n <div className=\"flex items-center justify-between\">\n <span>Total Mistakes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {score.modifiers && (\n <div className=\"flex items-center justify-between\">\n <span>Modifiers</span>\n <span>{score.modifiers}</span>\n </div>\n )}\n </div>\n <div className=\"align-end mt-auto mb-2\">\n <span className=\"text-xl font-bold\">AccGraph</span>\n <ScoreGraph\n scoreId={score.id}\n scoreInfo={score}\n statistic={statistic}\n bsor={bsor}\n height={192}\n width={400}\n />\n </div>\n </div>\n\n <img\n src={bg}\n className={'inset-0 rounded-lg absolute h-full object-cover'}\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":"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","names":["React","Progressbar","ScoreGraph"]}
1
+ {"version":3,"sources":["../../../../src/components/pages/bl-score.tsx"],"sourcesContent":["import React from 'react'\nimport {\n BarChart,\n Check,\n Key,\n Star,\n Clock,\n ThumbsUp,\n ThumbsDown,\n Calendar,\n} from 'lucide-react'\nimport { diffConv, formatDuration, formatTime } from '../utils'\nimport Progressbar from '../components/progressbar'\nimport ScoreGraph from '../components/scoregraph'\nimport { BSOR, Score } from '@/services/api/interfaces/beatleader'\nimport { BSMap } from '@/services/api/interfaces/beatsaver'\n\ninterface BLScoreProps {\n score: Score\n bsMap: BSMap\n statistic: any\n bsor: BSOR\n qrcodeUrl: string\n}\n\nexport function BLScore({\n score,\n bsMap,\n statistic,\n bsor,\n qrcodeUrl,\n}: BLScoreProps) {\n const bg = 'https://www.loliapi.com/acg/pc/'\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[400px] my-auto rounded-none'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white flex flex-col justify-between z-10'\n }\n >\n <div className=\"flex space-x-4 items-center justify-between text-xl font-bold\">\n <div className=\"flex space-x-4 items-center justify-between text-2xl font-bold\">\n <img\n loading={'eager'}\n className={'h-16 w-16 rounded-full'}\n src={score.player.avatar}\n // fallback={score.player.name.slice(0, 1)}\n />\n <div>{score.player.name}</div>\n </div>\n <div\n className={'w-[100px] flex items-center justify-center flex-col'}\n >\n <img\n src={qrcodeUrl}\n width={80}\n height={80}\n className={'w-[80px] aspect-square'}\n />\n <span className={'text-xs'}>replay</span>\n </div>\n </div>\n <div className=\"flex space-x-4 h-40\">\n <img\n className={'h-40 w-40 rounded-md'}\n src={score.song.cover}\n // fallback={score.song.name.slice(0, 1)}\n />\n <div className=\"text-xs font-bold flex flex-col justify-between\">\n <div className=\"text-xl text-ellipsis line-clamp-2\">\n {score.song.name}\n </div>\n <div className=\"flex space-x-2 items-center text-sm\">\n <img\n className={'h-4 w-4 rounded-full'}\n src={bsMap.uploader.avatar}\n // fallback={score.song.mapper.slice(0, 1)}\n />\n <div className=\"flex items-center justify-between\">\n <div className=\"text-ellipsis line-clamp-1\">\n {score.song.mapper}\n </div>\n </div>\n </div>\n <div className=\"text-xs grid grid-cols-3 gap-1 *:space-x-1 *:flex *:items-center font-normal\">\n <div className=\"flex items-center text-ellipsis col-span-3 line-clamp-1\">\n <Calendar className=\"h-3 w-3\" />\n <span>{formatTime(bsMap.lastPublishedAt)}</span>\n </div>\n <div>\n <span>\n <BarChart className={'w-3 h-3'} />\n </span>\n <span>{diffConv(score.difficulty.difficultyName)}</span>\n </div>\n <div>\n <span>\n <Star className={'w-3 h-3'} />\n </span>\n <span>{score.difficulty.stars?.toFixed(2) ?? 'none'} </span>\n </div>\n <div>\n <span>\n <Key className={'w-3 h-3'} />\n </span>\n <span>{score.song.id.toLowerCase().replaceAll('x', '')}</span>\n </div>\n\n <div className=\"flex items-center\">\n <ThumbsUp className=\"h-3 w-3\" />\n <span>{bsMap.stats.upvotes}</span>\n </div>\n <div className=\"flex items-center\">\n <ThumbsDown className=\"h-3 w-3\" />\n <span>{bsMap.stats.downvotes}</span>\n </div>\n <div className=\"flex items-center\">\n <Clock className=\"h-3 w-3\" />\n <span>{formatDuration(bsMap.metadata.duration)}</span>\n </div>\n </div>\n <div className=\"flex items-center space-x-2 text-xs font-normal\">\n <Progressbar value={bsMap.stats.score * 100} />\n <span>{(bsMap.stats.score * 100).toFixed(2)} %</span>\n </div>\n </div>\n </div>\n <div className=\"text-xl font-bold pt-2\">\n <div className=\"flex justify-between\">\n <span> # {score.rank}</span>\n <span>{score.pp.toFixed(2)} PP</span>\n </div>\n {\n <div className=\"flex items-center justify-between\">\n <span>Accuracy</span>\n <span>{(score.accuracy * 100).toFixed(2)} %</span>\n </div>\n }\n {score.fullCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Full Combo</span>\n <Check />\n </div>\n )}\n {score.maxCombo && (\n <div className=\"flex items-center justify-between\">\n <span>Max Combo</span>\n <span>{score.maxCombo}</span>\n </div>\n )}\n {\n <div className=\"flex items-center justify-between\">\n <span>Missed Notes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {\n <div className=\"flex items-center justify-between\">\n <span>Total Mistakes</span>\n <span>{score.missedNotes}</span>\n </div>\n }\n {score.modifiers && (\n <div className=\"flex items-center justify-between\">\n <span>Modifiers</span>\n <span>{score.modifiers}</span>\n </div>\n )}\n </div>\n <div className=\"align-end mt-auto mb-2\">\n <span className=\"text-xl font-bold\">AccGraph</span>\n <ScoreGraph\n scoreId={score.id}\n scoreInfo={score}\n statistic={statistic}\n bsor={bsor}\n height={192}\n width={400}\n />\n </div>\n </div>\n\n <img\n src={bg}\n className={'inset-0 rounded-lg absolute h-full object-cover'}\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":"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","names":["React","Progressbar","ScoreGraph"]}
@@ -30,10 +30,10 @@ __export(ss_player_exports, {
30
30
  default: () => SSPlayerPage
31
31
  });
32
32
  module.exports = __toCommonJS(ss_player_exports);
33
+ var import_react = __toESM(require("react"));
33
34
  var import_flag = __toESM(require("../components/flag.js"));
34
35
  var import_tw_join = require("../utils/tw-join.js");
35
36
  var import_ss_score_item = __toESM(require("../components/ss-score-item.js"));
36
- var import_react = __toESM(require("react"));
37
37
  function SSPlayerPage({
38
38
  leaderItems,
39
39
  scoreUser,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/pages/ss-player.tsx"],"sourcesContent":["import Flags, { EarchIcon } from '../components/flag'\nimport { twJoin } from '../utils/tw-join'\nimport ScoreItem from '../components/ss-score-item'\nimport { ScoreSaberItem, ScoreSaberUser } from '@/services/api/interfaces/scoresaber'\nimport React from 'react'\n\ninterface SSPlayerProps {\n leaderItems: ScoreSaberItem[]\n scoreUser: ScoreSaberUser\n params?: Record<string, string>\n bg: string\n}\n\nexport default function SSPlayerPage({\n leaderItems,\n scoreUser,\n bg,\n params,\n}: SSPlayerProps) {\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[1200px] my-auto'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white rounded-lg flex flex-col space-y-2 z-10'\n }\n >\n <div className={'flex space-x-4 pb-2'}>\n <img\n className={'h-32 w-32 rounded-md'}\n src={scoreUser.profilePicture}\n loading={'eager'}\n // fallback={scoreUser.name.slice(0, 1)}\n />\n <div className={'flex flex-col justify-between'}>\n <span className={'text-3xl font-bold'}>{scoreUser.name}</span>\n <div className={'flex space-x-2 text-md font-bold items-center'}>\n <span className=\"flex items-center space-x-1\">\n <EarchIcon />\n <span># {scoreUser.rank}</span>\n </span>\n <span className=\"flex items-center space-x-1\">\n <Flags flagNationCode={scoreUser.country} />\n <span># {scoreUser.countryRank}</span>\n </span>\n </div>\n <div\n className={twJoin(\n 'text-4xl font-bold ',\n ' bg-gradient-to-r bg-clip-text text-transparent from-blue-300 to-red-300',\n 'text-orange-100'\n )}\n >\n {scoreUser.pp.toFixed(3)} PP\n </div>\n </div>\n <div\n className={\n 'text-4xl pl-40 items-center flex text-gray-100 opacity-70'\n }\n >\n <span>coming soon, ... maybe?</span>\n </div>\n </div>\n <div className={'grid grid-cols-4 gap-2'}>\n {leaderItems.map((item, idx) => (\n <ScoreItem scoreItem={item} key={idx} />\n ))}\n </div>\n </div>\n\n <img\n src={bg}\n className={\n 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center'\n }\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiC;AACjC,qBAAuB;AACvB,2BAAsB;AAEtB,mBAAkB;AASH,SAAR,aAA8B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAkB;AAChB,SACE,6BAAAA,QAAA,2BAAAA,QAAA,gBACE,6BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,WACE;AAAA,MAEF,IAAG;AAAA;AAAA,IAEH,6BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,WACE;AAAA;AAAA,MAGF,6BAAAA,QAAA,cAAC,SAAI,WAAW,yBACd,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,UACX,KAAK,UAAU;AAAA,UACf,SAAS;AAAA;AAAA,MAEX,GACA,6BAAAA,QAAA,cAAC,SAAI,WAAW,mCACd,6BAAAA,QAAA,cAAC,UAAK,WAAW,wBAAuB,UAAU,IAAK,GACvD,6BAAAA,QAAA,cAAC,SAAI,WAAW,mDACd,6BAAAA,QAAA,cAAC,UAAK,WAAU,iCACd,6BAAAA,QAAA,cAAC,2BAAU,GACX,6BAAAA,QAAA,cAAC,cAAK,MAAG,UAAU,IAAK,CAC1B,GACA,6BAAAA,QAAA,cAAC,UAAK,WAAU,iCACd,6BAAAA,QAAA,cAAC,YAAAC,SAAA,EAAM,gBAAgB,UAAU,SAAS,GAC1C,6BAAAD,QAAA,cAAC,cAAK,MAAG,UAAU,WAAY,CACjC,CACF,GACA,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,eAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;AAAA,QAEC,UAAU,GAAG,QAAQ,CAAC;AAAA,QAAE;AAAA,MAC3B,CACF,GACA,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,WACE;AAAA;AAAA,QAGF,6BAAAA,QAAA,cAAC,cAAK,yBAAuB;AAAA,MAC/B,CACF;AAAA,MACA,6BAAAA,QAAA,cAAC,SAAI,WAAW,4BACb,YAAY,IAAI,CAAC,MAAM,QACtB,6BAAAA,QAAA,cAAC,qBAAAE,SAAA,EAAU,WAAW,MAAM,KAAK,KAAK,CACvC,CACH;AAAA,IACF;AAAA,IAEA,6BAAAF,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WACE;AAAA,QAEF,SAAS;AAAA;AAAA,IACX;AAAA,EACF,CACF;AAEJ;","names":["React","Flags","ScoreItem"]}
1
+ {"version":3,"sources":["../../../../src/components/pages/ss-player.tsx"],"sourcesContent":["import React from 'react'\nimport Flags, { EarchIcon } from '../components/flag'\nimport { twJoin } from '../utils/tw-join'\nimport ScoreItem from '../components/ss-score-item'\nimport { ScoreSaberItem, ScoreSaberUser } from '@/services/api/interfaces/scoresaber'\n\ninterface SSPlayerProps {\n leaderItems: ScoreSaberItem[]\n scoreUser: ScoreSaberUser\n params?: Record<string, string>\n bg: string\n}\n\nexport default function SSPlayerPage({\n leaderItems,\n scoreUser,\n bg,\n params,\n}: SSPlayerProps) {\n return (\n <>\n <div\n className={\n 'flex flex-col justify-center items-center relative h-[720px] w-[1200px] my-auto'\n }\n id=\"render-result\"\n >\n <div\n className={\n 'bg-blend-darken h-full w-full left-auto absolute right-auto bg-black/[.6] p-4 text-white rounded-lg flex flex-col space-y-2 z-10'\n }\n >\n <div className={'flex space-x-4 pb-2'}>\n <img\n className={'h-32 w-32 rounded-md'}\n src={scoreUser.profilePicture}\n loading={'eager'}\n // fallback={scoreUser.name.slice(0, 1)}\n />\n <div className={'flex flex-col justify-between'}>\n <span className={'text-3xl font-bold'}>{scoreUser.name}</span>\n <div className={'flex space-x-2 text-md font-bold items-center'}>\n <span className=\"flex items-center space-x-1\">\n <EarchIcon />\n <span># {scoreUser.rank}</span>\n </span>\n <span className=\"flex items-center space-x-1\">\n <Flags flagNationCode={scoreUser.country} />\n <span># {scoreUser.countryRank}</span>\n </span>\n </div>\n <div\n className={twJoin(\n 'text-4xl font-bold ',\n ' bg-gradient-to-r bg-clip-text text-transparent from-blue-300 to-red-300',\n 'text-orange-100'\n )}\n >\n {scoreUser.pp.toFixed(3)} PP\n </div>\n </div>\n <div\n className={\n 'text-4xl pl-40 items-center flex text-gray-100 opacity-70'\n }\n >\n <span>coming soon, ... maybe?</span>\n </div>\n </div>\n <div className={'grid grid-cols-4 gap-2'}>\n {leaderItems.map((item, idx) => (\n <ScoreItem scoreItem={item} key={idx} />\n ))}\n </div>\n </div>\n\n <img\n src={bg}\n className={\n 'inset-0 mx-auto w-full rounded-lg absolute h-full object-center'\n }\n loading={'eager'}\n />\n </div>\n </>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,kBAAiC;AACjC,qBAAuB;AACvB,2BAAsB;AAUP,SAAR,aAA8B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAkB;AAChB,SACE,6BAAAA,QAAA,2BAAAA,QAAA,gBACE,6BAAAA,QAAA;AAAA,IAAC;AAAA;AAAA,MACC,WACE;AAAA,MAEF,IAAG;AAAA;AAAA,IAEH,6BAAAA,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,WACE;AAAA;AAAA,MAGF,6BAAAA,QAAA,cAAC,SAAI,WAAW,yBACd,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,UACX,KAAK,UAAU;AAAA,UACf,SAAS;AAAA;AAAA,MAEX,GACA,6BAAAA,QAAA,cAAC,SAAI,WAAW,mCACd,6BAAAA,QAAA,cAAC,UAAK,WAAW,wBAAuB,UAAU,IAAK,GACvD,6BAAAA,QAAA,cAAC,SAAI,WAAW,mDACd,6BAAAA,QAAA,cAAC,UAAK,WAAU,iCACd,6BAAAA,QAAA,cAAC,2BAAU,GACX,6BAAAA,QAAA,cAAC,cAAK,MAAG,UAAU,IAAK,CAC1B,GACA,6BAAAA,QAAA,cAAC,UAAK,WAAU,iCACd,6BAAAA,QAAA,cAAC,YAAAC,SAAA,EAAM,gBAAgB,UAAU,SAAS,GAC1C,6BAAAD,QAAA,cAAC,cAAK,MAAG,UAAU,WAAY,CACjC,CACF,GACA,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,eAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA;AAAA,QAEC,UAAU,GAAG,QAAQ,CAAC;AAAA,QAAE;AAAA,MAC3B,CACF,GACA,6BAAAA,QAAA;AAAA,QAAC;AAAA;AAAA,UACC,WACE;AAAA;AAAA,QAGF,6BAAAA,QAAA,cAAC,cAAK,yBAAuB;AAAA,MAC/B,CACF;AAAA,MACA,6BAAAA,QAAA,cAAC,SAAI,WAAW,4BACb,YAAY,IAAI,CAAC,MAAM,QACtB,6BAAAA,QAAA,cAAC,qBAAAE,SAAA,EAAU,WAAW,MAAM,KAAK,KAAK,CACvC,CACH;AAAA,IACF;AAAA,IAEA,6BAAAF,QAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WACE;AAAA,QAEF,SAAS;AAAA;AAAA,IACX;AAAA,EACF,CACF;AAEJ;","names":["React","Flags","ScoreItem"]}
@@ -19,6 +19,7 @@ var __async = (__this, __arguments, generator) => {
19
19
  });
20
20
  };
21
21
  const handleBeatLeaderBind = (c) => __async(null, null, function* () {
22
+ var _a;
22
23
  const tokenInfo = yield c.services.api.AIOSaber.getBLOAuthToken(c.input);
23
24
  if (!tokenInfo) {
24
25
  c.session.sendQuote(c.session.text("commands.bsbot.bl.account.not-found"));
@@ -48,22 +49,18 @@ const handleBeatLeaderBind = (c) => __async(null, null, function* () {
48
49
  const now = /* @__PURE__ */ new Date();
49
50
  const { blAccount } = yield c.services.db.getUserAccountsByUid(c.session.user.id);
50
51
  const account = {
51
- uid: c.session.user.id,
52
- platform: "beatleader",
53
- platformScope: "profile clan offline_access",
54
- platformUid: self.id,
55
- platformUname: self.name,
56
- otherPlatformInfo: {},
52
+ userId: c.session.user.id,
53
+ accountId: (_a = blAccount == null ? void 0 : blAccount.id) != null ? _a : "",
54
+ providerId: "beatleader",
55
+ providerUsername: self.name,
56
+ metadata: {},
57
57
  accessToken: token.access_token,
58
58
  refreshToken: token.refresh_token,
59
59
  lastModifiedAt: now,
60
60
  lastRefreshAt: now,
61
- type: "oauth",
62
- status: "ok"
61
+ createdAt: now,
62
+ type: "oauth"
63
63
  };
64
- if (blAccount) {
65
- account.id = blAccount.id;
66
- }
67
64
  yield c.services.db.addUserBindingInfo(account);
68
65
  c.session.sendQuote(
69
66
  c.session.text("commands.bsbot.bind.bl.success", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cmd/bind/bind-beatleader.ts"],"sourcesContent":["import { RelateAccount } from '@/interface'\nimport {CmdContext} from \"@/interface\";\n\nexport const handleBeatLeaderBind = async (c: CmdContext) => {\n const tokenInfo = await c.services.api.AIOSaber.getBLOAuthToken(c.input)\n if (!tokenInfo) {\n c.session.sendQuote(c.session.text('commands.bsbot.bl.account.not-found'))\n return\n }\n let token = tokenInfo\n let self = await c.services.api.BeatLeader.getTokenInfo(token.access_token)\n if (!self) {\n const refreshToken = await c.services.api.BeatLeader.refreshOAuthToken(\n token.refresh_token\n )\n if (!refreshToken) {\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bl.invalid-token')\n )\n return\n }\n token = refreshToken\n self = await c.services.api.BeatLeader.getTokenInfo(token.access_token)\n if (!self) {\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bl.unknown-error')\n )\n return\n }\n }\n const now = new Date()\n const { blAccount } = await c.services.db.getUserAccountsByUid(c.session.user.id)\n const account: Partial<RelateAccount> = {\n uid: c.session.user.id,\n platform: 'beatleader',\n platformScope: 'profile clan offline_access',\n platformUid: self.id,\n platformUname: self.name,\n otherPlatformInfo: {},\n accessToken: token.access_token,\n refreshToken: token.refresh_token,\n lastModifiedAt: now,\n lastRefreshAt: now,\n type: 'oauth',\n status: 'ok',\n }\n if (blAccount) {\n account.id = blAccount.id\n }\n\n await c.services.db.addUserBindingInfo(account)\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bl.success', {\n name: self.name,\n id: self.id,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAGO,MAAM,uBAAuB,CAAO,MAAkB;AAC3D,QAAM,YAAY,MAAM,EAAE,SAAS,IAAI,SAAS,gBAAgB,EAAE,KAAK;AACvE,MAAI,CAAC,WAAW;AACd,MAAE,QAAQ,UAAU,EAAE,QAAQ,KAAK,qCAAqC,CAAC;AACzE;AAAA,EACF;AACA,MAAI,QAAQ;AACZ,MAAI,OAAO,MAAM,EAAE,SAAS,IAAI,WAAW,aAAa,MAAM,YAAY;AAC1E,MAAI,CAAC,MAAM;AACT,UAAM,eAAe,MAAM,EAAE,SAAS,IAAI,WAAW;AAAA,MACnD,MAAM;AAAA,IACR;AACA,QAAI,CAAC,cAAc;AACjB,QAAE,QAAQ;AAAA,QACR,EAAE,QAAQ,KAAK,sCAAsC;AAAA,MACvD;AACA;AAAA,IACF;AACA,YAAQ;AACR,WAAO,MAAM,EAAE,SAAS,IAAI,WAAW,aAAa,MAAM,YAAY;AACtE,QAAI,CAAC,MAAM;AACT,QAAE,QAAQ;AAAA,QACR,EAAE,QAAQ,KAAK,sCAAsC;AAAA,MACvD;AACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,EAAE,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,EAAE,QAAQ,KAAK,EAAE;AAChF,QAAM,UAAkC;AAAA,IACtC,KAAK,EAAE,QAAQ,KAAK;AAAA,IACpB,UAAU;AAAA,IACV,eAAe;AAAA,IACf,aAAa,KAAK;AAAA,IAClB,eAAe,KAAK;AAAA,IACpB,mBAAmB,CAAC;AAAA,IACpB,aAAa,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACA,MAAI,WAAW;AACb,YAAQ,KAAK,UAAU;AAAA,EACzB;AAEA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,IAAE,QAAQ;AAAA,IACR,EAAE,QAAQ,KAAK,kCAAkC;AAAA,MAC/C,MAAM,KAAK;AAAA,MACX,IAAI,KAAK;AAAA,IACX,CAAC;AAAA,EACH;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cmd/bind/bind-beatleader.ts"],"sourcesContent":["import { Account } from '@/interface'\nimport {CmdContext} from \"@/interface\";\n\nexport const handleBeatLeaderBind = async (c: CmdContext) => {\n const tokenInfo = await c.services.api.AIOSaber.getBLOAuthToken(c.input)\n if (!tokenInfo) {\n c.session.sendQuote(c.session.text('commands.bsbot.bl.account.not-found'))\n return\n }\n let token = tokenInfo\n let self = await c.services.api.BeatLeader.getTokenInfo(token.access_token)\n if (!self) {\n const refreshToken = await c.services.api.BeatLeader.refreshOAuthToken(\n token.refresh_token\n )\n if (!refreshToken) {\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bl.invalid-token')\n )\n return\n }\n token = refreshToken\n self = await c.services.api.BeatLeader.getTokenInfo(token.access_token)\n if (!self) {\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bl.unknown-error')\n )\n return\n }\n }\n const now = new Date()\n const { blAccount } = await c.services.db.getUserAccountsByUid(c.session.user.id)\n const account: Partial<Account> = {\n userId: c.session.user.id,\n accountId: blAccount?.id ?? '',\n providerId: 'beatleader',\n providerUsername: self.name,\n metadata: {},\n accessToken: token.access_token,\n refreshToken: token.refresh_token,\n lastModifiedAt: now,\n lastRefreshAt: now,\n createdAt: now,\n type: 'oauth',\n }\n await c.services.db.addUserBindingInfo(account)\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bl.success', {\n name: self.name,\n id: self.id,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAGO,MAAM,uBAAuB,CAAO,MAAkB;AAH7D;AAIE,QAAM,YAAY,MAAM,EAAE,SAAS,IAAI,SAAS,gBAAgB,EAAE,KAAK;AACvE,MAAI,CAAC,WAAW;AACd,MAAE,QAAQ,UAAU,EAAE,QAAQ,KAAK,qCAAqC,CAAC;AACzE;AAAA,EACF;AACA,MAAI,QAAQ;AACZ,MAAI,OAAO,MAAM,EAAE,SAAS,IAAI,WAAW,aAAa,MAAM,YAAY;AAC1E,MAAI,CAAC,MAAM;AACT,UAAM,eAAe,MAAM,EAAE,SAAS,IAAI,WAAW;AAAA,MACnD,MAAM;AAAA,IACR;AACA,QAAI,CAAC,cAAc;AACjB,QAAE,QAAQ;AAAA,QACR,EAAE,QAAQ,KAAK,sCAAsC;AAAA,MACvD;AACA;AAAA,IACF;AACA,YAAQ;AACR,WAAO,MAAM,EAAE,SAAS,IAAI,WAAW,aAAa,MAAM,YAAY;AACtE,QAAI,CAAC,MAAM;AACT,QAAE,QAAQ;AAAA,QACR,EAAE,QAAQ,KAAK,sCAAsC;AAAA,MACvD;AACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,EAAE,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,EAAE,QAAQ,KAAK,EAAE;AAChF,QAAM,UAA4B;AAAA,IAChC,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACvB,YAAW,4CAAW,OAAX,YAAiB;AAAA,IAC5B,YAAY;AAAA,IACZ,kBAAkB,KAAK;AAAA,IACvB,UAAU,CAAC;AAAA,IACX,aAAa,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,IAAE,QAAQ;AAAA,IACR,EAAE,QAAQ,KAAK,kCAAkC;AAAA,MAC/C,MAAM,KAAK;AAAA,MACX,IAAI,KAAK;AAAA,IACX,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -40,24 +40,19 @@ const handleBeatSaverBind = (c) => __async(null, null, function* () {
40
40
  self = yield c.services.api.BeatSaver.getTokenInfo(token.access_token);
41
41
  }
42
42
  const now = /* @__PURE__ */ new Date();
43
- const { bsAccount } = yield c.services.db.getUserAccountsByUid(c.session.user.id);
44
43
  const account = {
45
- uid: c.session.user.id,
46
- platform: "beatsaver",
47
- platformUid: self.id,
48
- platformUname: self.name,
49
- otherPlatformInfo: {},
50
- platformScope: "identity,alerts",
44
+ userId: c.session.user.id,
45
+ providerId: "beatsaver",
46
+ accountId: self.id,
47
+ providerUsername: self.name,
48
+ metadata: {},
49
+ scope: "identity,alerts",
51
50
  accessToken: token.access_token,
52
51
  refreshToken: token.refresh_token,
53
52
  lastModifiedAt: now,
54
53
  lastRefreshAt: now,
55
- type: "oauth",
56
- status: "ok"
54
+ type: "oauth"
57
55
  };
58
- if (bsAccount) {
59
- account.id = bsAccount.id;
60
- }
61
56
  yield c.services.db.addUserBindingInfo(account);
62
57
  c.session.sendQuote(
63
58
  c.session.text("commands.bsbot.bind.bs.success", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cmd/bind/bind-beatsaver.ts"],"sourcesContent":["import { CmdContext, RelateAccount } from '@/interface'\n\nexport const handleBeatSaverBind = async (c: CmdContext) => {\n const tokenInfo = await c.services.api.AIOSaber.getBSOAuthToken(c.input)\n if (!tokenInfo) {\n c.session.sendQuote(c.session.text('commands.bsbot.bind.bs.not-found'))\n return\n }\n let token = tokenInfo\n let self = await c.services.api.BeatSaver.getTokenInfo(token.access_token)\n if (!self) {\n const refreshToken = await c.services.api.BeatSaver.refreshOAuthToken(\n token.refresh_token\n )\n if (!refreshToken) {\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bs.invalid-token')\n )\n return\n }\n token = refreshToken\n self = await c.services.api.BeatSaver.getTokenInfo(token.access_token)\n }\n const now = new Date()\n const { bsAccount } = await c.services.db.getUserAccountsByUid(c.session.user.id)\n const account: Partial<RelateAccount> = {\n uid: c.session.user.id,\n platform: 'beatsaver',\n platformUid: self.id,\n platformUname: self.name,\n otherPlatformInfo: {},\n platformScope: 'identity,alerts',\n accessToken: token.access_token,\n refreshToken: token.refresh_token,\n lastModifiedAt: now,\n lastRefreshAt: now,\n type: 'oauth',\n status: 'ok',\n }\n if (bsAccount) {\n account.id = bsAccount.id\n }\n await c.services.db.addUserBindingInfo(account)\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bs.success', {\n name: self.name,\n id: self.id,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEO,MAAM,sBAAsB,CAAO,MAAkB;AAC1D,QAAM,YAAY,MAAM,EAAE,SAAS,IAAI,SAAS,gBAAgB,EAAE,KAAK;AACvE,MAAI,CAAC,WAAW;AACd,MAAE,QAAQ,UAAU,EAAE,QAAQ,KAAK,kCAAkC,CAAC;AACtE;AAAA,EACF;AACA,MAAI,QAAQ;AACZ,MAAI,OAAO,MAAM,EAAE,SAAS,IAAI,UAAU,aAAa,MAAM,YAAY;AACzE,MAAI,CAAC,MAAM;AACT,UAAM,eAAe,MAAM,EAAE,SAAS,IAAI,UAAU;AAAA,MAClD,MAAM;AAAA,IACR;AACA,QAAI,CAAC,cAAc;AACjB,QAAE,QAAQ;AAAA,QACR,EAAE,QAAQ,KAAK,sCAAsC;AAAA,MACvD;AACA;AAAA,IACF;AACA,YAAQ;AACR,WAAO,MAAM,EAAE,SAAS,IAAI,UAAU,aAAa,MAAM,YAAY;AAAA,EACvE;AACA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,EAAE,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,EAAE,QAAQ,KAAK,EAAE;AAChF,QAAM,UAAkC;AAAA,IACtC,KAAK,EAAE,QAAQ,KAAK;AAAA,IACpB,UAAU;AAAA,IACV,aAAa,KAAK;AAAA,IAClB,eAAe,KAAK;AAAA,IACpB,mBAAmB,CAAC;AAAA,IACpB,eAAe;AAAA,IACf,aAAa,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACA,MAAI,WAAW;AACb,YAAQ,KAAK,UAAU;AAAA,EACzB;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,IAAE,QAAQ;AAAA,IACR,EAAE,QAAQ,KAAK,kCAAkC;AAAA,MAC/C,MAAM,KAAK;AAAA,MACX,IAAI,KAAK;AAAA,IACX,CAAC;AAAA,EACH;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cmd/bind/bind-beatsaver.ts"],"sourcesContent":["import { CmdContext, Account } from '@/interface'\n\nexport const handleBeatSaverBind = async (c: CmdContext) => {\n const tokenInfo = await c.services.api.AIOSaber.getBSOAuthToken(c.input)\n if (!tokenInfo) {\n c.session.sendQuote(c.session.text('commands.bsbot.bind.bs.not-found'))\n return\n }\n let token = tokenInfo\n let self = await c.services.api.BeatSaver.getTokenInfo(token.access_token)\n if (!self) {\n const refreshToken = await c.services.api.BeatSaver.refreshOAuthToken(\n token.refresh_token\n )\n if (!refreshToken) {\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bs.invalid-token')\n )\n return\n }\n token = refreshToken\n self = await c.services.api.BeatSaver.getTokenInfo(token.access_token)\n }\n const now = new Date()\n const account: Partial<Account> = {\n userId: c.session.user.id,\n providerId: 'beatsaver',\n accountId: self.id,\n providerUsername: self.name,\n metadata: {},\n scope: 'identity,alerts',\n accessToken: token.access_token,\n refreshToken: token.refresh_token,\n lastModifiedAt: now,\n lastRefreshAt: now,\n type: 'oauth',\n }\n await c.services.db.addUserBindingInfo(account)\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bs.success', {\n name: self.name,\n id: self.id,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEO,MAAM,sBAAsB,CAAO,MAAkB;AAC1D,QAAM,YAAY,MAAM,EAAE,SAAS,IAAI,SAAS,gBAAgB,EAAE,KAAK;AACvE,MAAI,CAAC,WAAW;AACd,MAAE,QAAQ,UAAU,EAAE,QAAQ,KAAK,kCAAkC,CAAC;AACtE;AAAA,EACF;AACA,MAAI,QAAQ;AACZ,MAAI,OAAO,MAAM,EAAE,SAAS,IAAI,UAAU,aAAa,MAAM,YAAY;AACzE,MAAI,CAAC,MAAM;AACT,UAAM,eAAe,MAAM,EAAE,SAAS,IAAI,UAAU;AAAA,MAClD,MAAM;AAAA,IACR;AACA,QAAI,CAAC,cAAc;AACjB,QAAE,QAAQ;AAAA,QACR,EAAE,QAAQ,KAAK,sCAAsC;AAAA,MACvD;AACA;AAAA,IACF;AACA,YAAQ;AACR,WAAO,MAAM,EAAE,SAAS,IAAI,UAAU,aAAa,MAAM,YAAY;AAAA,EACvE;AACA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,UAA4B;AAAA,IAChC,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACvB,YAAY;AAAA,IACZ,WAAW,KAAK;AAAA,IAChB,kBAAkB,KAAK;AAAA,IACvB,UAAU,CAAC;AAAA,IACX,OAAO;AAAA,IACP,aAAa,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,MAAM;AAAA,EACR;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,IAAE,QAAQ;AAAA,IACR,EAAE,QAAQ,KAAK,kCAAkC;AAAA,MAC/C,MAAM,KAAK;AAAA,MACX,IAAI,KAAK;AAAA,IACX,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -33,7 +33,7 @@ const handleBeatLeaderIDBind = (c) => __async(null, null, function* () {
33
33
  const text = c.session.text("commands.bsbot.bind.ack-prompt", {
34
34
  user: `${player.name}(${player.id})`
35
35
  }) + (blAccount ? "," + c.session.text("commands.bsbot.bind.exist", {
36
- id: blAccount.platformUid
36
+ id: blAccount.accountId
37
37
  }) : "");
38
38
  yield c.session.sendQuote(text);
39
39
  const prompt = yield c.session.prompt(3e4);
@@ -41,19 +41,16 @@ const handleBeatLeaderIDBind = (c) => __async(null, null, function* () {
41
41
  throw prompt ? new SessionPromotionCancelError() : new SessionPromotionTimeoutError();
42
42
  }
43
43
  const account = {
44
- uid: c.session.user.id,
45
- platform: "beatleader",
46
- platformUid: player.id.toString(),
47
- platformUname: player.name,
48
- otherPlatformInfo: {},
44
+ userId: c.session.user.id,
45
+ providerId: "beatleader",
46
+ accountId: player.id.toString(),
47
+ providerUsername: player.name,
48
+ metadata: {},
49
49
  lastModifiedAt: now,
50
50
  lastRefreshAt: now,
51
- type: "id",
52
- status: "ok"
51
+ createdAt: now,
52
+ type: "id"
53
53
  };
54
- if (blAccount) {
55
- account.id = blAccount.id;
56
- }
57
54
  yield c.services.db.addUserBindingInfo(account);
58
55
  yield c.session.sendQuote(
59
56
  c.session.text("commands.bsbot.bind.bl.success", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cmd/bind/bind-id-beatleader.ts"],"sourcesContent":["import { CmdContext, RelateAccount } from '@/interface'\nimport {\n BLIDNotFoundError,\n SessionPromotionCancelError,\n SessionPromotionTimeoutError,\n} from '@/services/errors'\n\nexport const handleBeatLeaderIDBind = async (c: CmdContext) => {\n const player = await c.services.api.BeatLeader.getPlayerInfo(c.input)\n if (!player) {\n throw new BLIDNotFoundError({ accountId: c.input })\n }\n\n const now = new Date()\n const { blAccount } = await c.services.db.getUserAccountsByUid(c.session.user.id)\n\n const text =\n c.session.text('commands.bsbot.bind.ack-prompt', {\n user: `${player.name}(${player.id})`,\n }) +\n (blAccount\n ? ',' +\n c.session.text('commands.bsbot.bind.exist', {\n id: blAccount.platformUid,\n })\n : '')\n\n await c.session.sendQuote(text)\n\n const prompt = await c.session.prompt(30000)\n if (!prompt || (prompt != 'y' && prompt != 'yes')) {\n throw prompt\n ? new SessionPromotionCancelError()\n : new SessionPromotionTimeoutError()\n }\n // discord bot\n\n // const binds = c.db.getAccountsByPlatformAndUid()\n // const u = c.session.u\n // 如果当前 u为...,已绑定就进行替换\n const account: Partial<RelateAccount> = {\n uid: c.session.user.id,\n platform: 'beatleader',\n platformUid: player.id.toString(),\n platformUname: player.name,\n otherPlatformInfo: {},\n lastModifiedAt: now,\n lastRefreshAt: now,\n type: 'id',\n status: 'ok',\n }\n if (blAccount) {\n account.id = blAccount.id\n }\n await c.services.db.addUserBindingInfo(account)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bl.success', {\n name: player.name,\n id: player.id,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,yBAAyB,CAAO,MAAkB;AAC7D,QAAM,SAAS,MAAM,EAAE,SAAS,IAAI,WAAW,cAAc,EAAE,KAAK;AACpE,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,kBAAkB,EAAE,WAAW,EAAE,MAAM,CAAC;AAAA,EACpD;AAEA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,EAAE,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,EAAE,QAAQ,KAAK,EAAE;AAEhF,QAAM,OACJ,EAAE,QAAQ,KAAK,kCAAkC;AAAA,IAC/C,MAAM,GAAG,OAAO,IAAI,IAAI,OAAO,EAAE;AAAA,EACnC,CAAC,KACA,YACG,MACA,EAAE,QAAQ,KAAK,6BAA6B;AAAA,IAC1C,IAAI,UAAU;AAAA,EAChB,CAAC,IACD;AAEN,QAAM,EAAE,QAAQ,UAAU,IAAI;AAE9B,QAAM,SAAS,MAAM,EAAE,QAAQ,OAAO,GAAK;AAC3C,MAAI,CAAC,UAAW,UAAU,OAAO,UAAU,OAAQ;AACjD,UAAM,SACF,IAAI,4BAA4B,IAChC,IAAI,6BAA6B;AAAA,EACvC;AAMA,QAAM,UAAkC;AAAA,IACtC,KAAK,EAAE,QAAQ,KAAK;AAAA,IACpB,UAAU;AAAA,IACV,aAAa,OAAO,GAAG,SAAS;AAAA,IAChC,eAAe,OAAO;AAAA,IACtB,mBAAmB,CAAC;AAAA,IACpB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACA,MAAI,WAAW;AACb,YAAQ,KAAK,UAAU;AAAA,EACzB;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,kCAAkC;AAAA,MAC/C,MAAM,OAAO;AAAA,MACb,IAAI,OAAO;AAAA,IACb,CAAC;AAAA,EACH;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cmd/bind/bind-id-beatleader.ts"],"sourcesContent":["import { CmdContext, Account } from '@/interface'\nimport {\n BLIDNotFoundError,\n SessionPromotionCancelError,\n SessionPromotionTimeoutError,\n} from '@/services/errors'\n\nexport const handleBeatLeaderIDBind = async (c: CmdContext) => {\n const player = await c.services.api.BeatLeader.getPlayerInfo(c.input)\n if (!player) {\n throw new BLIDNotFoundError({ accountId: c.input })\n }\n\n const now = new Date()\n const { blAccount } = await c.services.db.getUserAccountsByUid(c.session.user.id)\n\n const text =\n c.session.text('commands.bsbot.bind.ack-prompt', {\n user: `${player.name}(${player.id})`,\n }) +\n (blAccount\n ? ',' +\n c.session.text('commands.bsbot.bind.exist', {\n id: blAccount.accountId,\n })\n : '')\n\n await c.session.sendQuote(text)\n\n const prompt = await c.session.prompt(30000)\n if (!prompt || (prompt != 'y' && prompt != 'yes')) {\n throw prompt\n ? new SessionPromotionCancelError()\n : new SessionPromotionTimeoutError()\n }\n const account: Partial<Account> = {\n userId: c.session.user.id,\n providerId: 'beatleader',\n accountId: player.id.toString(),\n providerUsername: player.name,\n metadata: {},\n lastModifiedAt: now,\n lastRefreshAt: now,\n createdAt: now,\n type: 'id',\n }\n await c.services.db.addUserBindingInfo(account)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bl.success', {\n name: player.name,\n id: player.id,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,yBAAyB,CAAO,MAAkB;AAC7D,QAAM,SAAS,MAAM,EAAE,SAAS,IAAI,WAAW,cAAc,EAAE,KAAK;AACpE,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,kBAAkB,EAAE,WAAW,EAAE,MAAM,CAAC;AAAA,EACpD;AAEA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,EAAE,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,EAAE,QAAQ,KAAK,EAAE;AAEhF,QAAM,OACJ,EAAE,QAAQ,KAAK,kCAAkC;AAAA,IAC/C,MAAM,GAAG,OAAO,IAAI,IAAI,OAAO,EAAE;AAAA,EACnC,CAAC,KACA,YACG,MACA,EAAE,QAAQ,KAAK,6BAA6B;AAAA,IAC1C,IAAI,UAAU;AAAA,EAChB,CAAC,IACD;AAEN,QAAM,EAAE,QAAQ,UAAU,IAAI;AAE9B,QAAM,SAAS,MAAM,EAAE,QAAQ,OAAO,GAAK;AAC3C,MAAI,CAAC,UAAW,UAAU,OAAO,UAAU,OAAQ;AACjD,UAAM,SACF,IAAI,4BAA4B,IAChC,IAAI,6BAA6B;AAAA,EACvC;AACA,QAAM,UAA4B;AAAA,IAChC,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACvB,YAAY;AAAA,IACZ,WAAW,OAAO,GAAG,SAAS;AAAA,IAC9B,kBAAkB,OAAO;AAAA,IACzB,UAAU,CAAC;AAAA,IACX,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,kCAAkC;AAAA,MAC/C,MAAM,OAAO;AAAA,MACb,IAAI,OAAO;AAAA,IACb,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -33,7 +33,7 @@ const handleBeatSaverIDBind = (c) => __async(null, null, function* () {
33
33
  const text = c.session.text("commands.bsbot.bind.ack-prompt", {
34
34
  user: `${mapper.name}(${mapper.id})`
35
35
  }) + (bsAccount ? "," + c.session.text("commands.bsbot.bind.exist", {
36
- id: bsAccount.platformUid
36
+ id: bsAccount.accountId
37
37
  }) : "");
38
38
  yield c.session.sendQuote(text);
39
39
  const prompt = yield c.session.prompt(3e4);
@@ -41,19 +41,15 @@ const handleBeatSaverIDBind = (c) => __async(null, null, function* () {
41
41
  throw prompt ? new SessionPromotionCancelError() : new SessionPromotionTimeoutError();
42
42
  }
43
43
  const account = {
44
- uid: c.session.user.id,
45
- platform: "beatsaver",
46
- platformUid: mapper.id.toString(),
47
- platformUname: mapper.name,
48
- otherPlatformInfo: {},
44
+ userId: c.session.user.id,
45
+ providerId: "beatsaver",
46
+ accountId: mapper.id.toString(),
47
+ providerUsername: mapper.name,
48
+ metadata: {},
49
49
  lastModifiedAt: now,
50
50
  lastRefreshAt: now,
51
- type: "id",
52
- status: "ok"
51
+ type: "id"
53
52
  };
54
- if (bsAccount) {
55
- account.id = bsAccount.id;
56
- }
57
53
  yield c.services.db.addUserBindingInfo(account);
58
54
  c.session.sendQuote(
59
55
  c.session.text("commands.bsbot.bind.bs.success", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cmd/bind/bind-id-beatsaver.ts"],"sourcesContent":["import { CmdContext, RelateAccount } from '@/interface'\n\nimport {\n BSIDNotFoundError,\n SessionPromotionCancelError,\n SessionPromotionTimeoutError,\n} from '@/services/errors'\n\nexport const handleBeatSaverIDBind = async (c: CmdContext) => {\n const mapper = await c.services.api.BeatSaver.getBSMapperById(c.input)\n if (!mapper) {\n throw new BSIDNotFoundError({ accountId: c.input })\n }\n // 如果当前bind 是 oauth?改为 id?\n const now = new Date()\n const { bsAccount } = await c.services.db.getUserAccountsByUid(c.session.user.id)\n\n const text =\n c.session.text('commands.bsbot.bind.ack-prompt', {\n user: `${mapper.name}(${mapper.id})`,\n }) +\n (bsAccount\n ? ',' +\n c.session.text('commands.bsbot.bind.exist', {\n id: bsAccount.platformUid,\n })\n : '')\n\n await c.session.sendQuote(text)\n\n const prompt = await c.session.prompt(30000)\n if (!prompt || (prompt != 'y' && prompt != 'yes')) {\n throw prompt\n ? new SessionPromotionCancelError()\n : new SessionPromotionTimeoutError()\n }\n const account: Partial<RelateAccount> = {\n uid: c.session.user.id,\n platform: 'beatsaver',\n platformUid: mapper.id.toString(),\n platformUname: mapper.name,\n otherPlatformInfo: {},\n lastModifiedAt: now,\n lastRefreshAt: now,\n type: 'id',\n status: 'ok',\n }\n if (bsAccount) {\n account.id = bsAccount.id\n }\n await c.services.db.addUserBindingInfo(account)\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bs.success', {\n name: mapper.name,\n id: mapper.id,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,wBAAwB,CAAO,MAAkB;AAC5D,QAAM,SAAS,MAAM,EAAE,SAAS,IAAI,UAAU,gBAAgB,EAAE,KAAK;AACrE,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,kBAAkB,EAAE,WAAW,EAAE,MAAM,CAAC;AAAA,EACpD;AAEA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,EAAE,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,EAAE,QAAQ,KAAK,EAAE;AAEhF,QAAM,OACJ,EAAE,QAAQ,KAAK,kCAAkC;AAAA,IAC/C,MAAM,GAAG,OAAO,IAAI,IAAI,OAAO,EAAE;AAAA,EACnC,CAAC,KACA,YACG,MACA,EAAE,QAAQ,KAAK,6BAA6B;AAAA,IAC1C,IAAI,UAAU;AAAA,EAChB,CAAC,IACD;AAEN,QAAM,EAAE,QAAQ,UAAU,IAAI;AAE9B,QAAM,SAAS,MAAM,EAAE,QAAQ,OAAO,GAAK;AAC3C,MAAI,CAAC,UAAW,UAAU,OAAO,UAAU,OAAQ;AACjD,UAAM,SACF,IAAI,4BAA4B,IAChC,IAAI,6BAA6B;AAAA,EACvC;AACA,QAAM,UAAkC;AAAA,IACtC,KAAK,EAAE,QAAQ,KAAK;AAAA,IACpB,UAAU;AAAA,IACV,aAAa,OAAO,GAAG,SAAS;AAAA,IAChC,eAAe,OAAO;AAAA,IACtB,mBAAmB,CAAC;AAAA,IACpB,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACA,MAAI,WAAW;AACb,YAAQ,KAAK,UAAU;AAAA,EACzB;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,IAAE,QAAQ;AAAA,IACR,EAAE,QAAQ,KAAK,kCAAkC;AAAA,MAC/C,MAAM,OAAO;AAAA,MACb,IAAI,OAAO;AAAA,IACb,CAAC;AAAA,EACH;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cmd/bind/bind-id-beatsaver.ts"],"sourcesContent":["import { CmdContext, Account } from '@/interface'\n\nimport {\n BSIDNotFoundError,\n SessionPromotionCancelError,\n SessionPromotionTimeoutError,\n} from '@/services/errors'\n\nexport const handleBeatSaverIDBind = async (c: CmdContext) => {\n const mapper = await c.services.api.BeatSaver.getBSMapperById(c.input)\n if (!mapper) {\n throw new BSIDNotFoundError({ accountId: c.input })\n }\n // 如果当前bind 是 oauth?改为 id?\n const now = new Date()\n const { bsAccount } = await c.services.db.getUserAccountsByUid(c.session.user.id)\n\n const text =\n c.session.text('commands.bsbot.bind.ack-prompt', {\n user: `${mapper.name}(${mapper.id})`,\n }) +\n (bsAccount\n ? ',' +\n c.session.text('commands.bsbot.bind.exist', {\n id: bsAccount.accountId,\n })\n : '')\n\n await c.session.sendQuote(text)\n\n const prompt = await c.session.prompt(30000)\n if (!prompt || (prompt != 'y' && prompt != 'yes')) {\n throw prompt\n ? new SessionPromotionCancelError()\n : new SessionPromotionTimeoutError()\n }\n const account: Partial<Account> = {\n userId: c.session.user.id,\n providerId: 'beatsaver',\n accountId: mapper.id.toString(),\n providerUsername: mapper.name,\n metadata: {},\n lastModifiedAt: now,\n lastRefreshAt: now,\n type: 'id',\n }\n await c.services.db.addUserBindingInfo(account)\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.bs.success', {\n name: mapper.name,\n id: mapper.id,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,wBAAwB,CAAO,MAAkB;AAC5D,QAAM,SAAS,MAAM,EAAE,SAAS,IAAI,UAAU,gBAAgB,EAAE,KAAK;AACrE,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,kBAAkB,EAAE,WAAW,EAAE,MAAM,CAAC;AAAA,EACpD;AAEA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,EAAE,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,EAAE,QAAQ,KAAK,EAAE;AAEhF,QAAM,OACJ,EAAE,QAAQ,KAAK,kCAAkC;AAAA,IAC/C,MAAM,GAAG,OAAO,IAAI,IAAI,OAAO,EAAE;AAAA,EACnC,CAAC,KACA,YACG,MACA,EAAE,QAAQ,KAAK,6BAA6B;AAAA,IAC1C,IAAI,UAAU;AAAA,EAChB,CAAC,IACD;AAEN,QAAM,EAAE,QAAQ,UAAU,IAAI;AAE9B,QAAM,SAAS,MAAM,EAAE,QAAQ,OAAO,GAAK;AAC3C,MAAI,CAAC,UAAW,UAAU,OAAO,UAAU,OAAQ;AACjD,UAAM,SACF,IAAI,4BAA4B,IAChC,IAAI,6BAA6B;AAAA,EACvC;AACA,QAAM,UAA4B;AAAA,IAChC,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACvB,YAAY;AAAA,IACZ,WAAW,OAAO,GAAG,SAAS;AAAA,IAC9B,kBAAkB,OAAO;AAAA,IACzB,UAAU,CAAC;AAAA,IACX,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,MAAM;AAAA,EACR;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,IAAE,QAAQ;AAAA,IACR,EAAE,QAAQ,KAAK,kCAAkC;AAAA,MAC/C,MAAM,OAAO;AAAA,MACb,IAAI,OAAO;AAAA,IACb,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -28,12 +28,10 @@ const handleScoreSaberBind = (c) => __async(null, null, function* () {
28
28
  if (!scoreSaberUser) {
29
29
  throw new SSIDNotFoundError({ accountId: c.input });
30
30
  }
31
- const { ssAccount, blAccount } = yield c.services.db.getUserAccountsByUid(
32
- c.session.user.id
33
- );
31
+ const { ssAccount } = yield c.services.db.getUserAccountsByUid(c.session.user.id);
34
32
  const text = c.session.text("commands.bsbot.bind.ack-prompt", {
35
33
  user: `${scoreSaberUser.name}(${scoreSaberUser.id})`
36
- }) + (ssAccount ? "," + c.session.text("commands.bsbot.bind.exist", { id: ssAccount.platformUid }) : "");
34
+ }) + (ssAccount ? "," + c.session.text("commands.bsbot.bind.exist", { id: ssAccount.accountId }) : "");
37
35
  yield c.session.sendQuote(text);
38
36
  const prompt = yield c.session.prompt(3e4);
39
37
  if (!prompt || prompt != "y" && prompt != "yes") {
@@ -41,20 +39,17 @@ const handleScoreSaberBind = (c) => __async(null, null, function* () {
41
39
  }
42
40
  const now = /* @__PURE__ */ new Date();
43
41
  const account = {
44
- uid: c.session.user.id,
45
- platform: "scoresaber",
46
- platformUid: scoreSaberUser.id,
42
+ userId: c.session.user.id,
43
+ accountId: scoreSaberUser.id,
44
+ providerId: "scoresaber",
45
+ providerUsername: scoreSaberUser.name,
47
46
  lastModifiedAt: now,
48
47
  lastRefreshAt: now,
49
- platformUname: scoreSaberUser.name,
50
- type: "id",
51
- status: "ok"
48
+ createdAt: now,
49
+ type: "id"
52
50
  };
53
- if (ssAccount) {
54
- account.id = ssAccount.id;
55
- }
56
51
  yield c.services.db.addUserBindingInfo(account);
57
- c.session.sendQuote(
52
+ yield c.session.sendQuote(
58
53
  c.session.text("commands.bsbot.bind.success", {
59
54
  user: `${scoreSaberUser.name}(${scoreSaberUser.id})`
60
55
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cmd/bind/bind-scoresaber.ts"],"sourcesContent":["import {RelateAccount, CmdContext} from '@/interface'\nimport {\n SessionPromotionCancelError,\n SessionPromotionTimeoutError,\n SSIDNotFoundError,\n} from '@/services/errors'\n\nexport const handleScoreSaberBind = async (c: CmdContext) => {\n const scoreSaberUser = await c.services.api.ScoreSaber.getScoreUserById(c.input)\n if (!scoreSaberUser) {\n throw new SSIDNotFoundError({accountId: c.input})\n }\n const {ssAccount, blAccount} = await c.services.db.getUserAccountsByUid(\n c.session.user.id\n )\n const text =\n c.session.text('commands.bsbot.bind.ack-prompt', {\n user: `${scoreSaberUser.name}(${scoreSaberUser.id})`,\n }) +\n (ssAccount ? ',' + c.session.text('commands.bsbot.bind.exist', {id: ssAccount.platformUid,}) : '')\n\n await c.session.sendQuote(text)\n\n const prompt = await c.session.prompt(30000)\n if (!prompt || (prompt != 'y' && prompt != 'yes')) {\n throw prompt\n ? new SessionPromotionCancelError()\n : new SessionPromotionTimeoutError()\n }\n const now = new Date()\n const account: Partial<RelateAccount> = {\n uid: c.session.user.id,\n platform: 'scoresaber',\n platformUid: scoreSaberUser.id,\n lastModifiedAt: now,\n lastRefreshAt: now,\n platformUname: scoreSaberUser.name,\n type: 'id',\n status: 'ok',\n }\n if (ssAccount) {\n account.id = ssAccount.id\n }\n await c.services.db.addUserBindingInfo(account)\n c.session.sendQuote(\n c.session.text('commands.bsbot.bind.success', {\n user: `${scoreSaberUser.name}(${scoreSaberUser.id})`,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,uBAAuB,CAAO,MAAkB;AAC3D,QAAM,iBAAiB,MAAM,EAAE,SAAS,IAAI,WAAW,iBAAiB,EAAE,KAAK;AAC/E,MAAI,CAAC,gBAAgB;AACnB,UAAM,IAAI,kBAAkB,EAAC,WAAW,EAAE,MAAK,CAAC;AAAA,EAClD;AACA,QAAM,EAAC,WAAW,UAAS,IAAI,MAAM,EAAE,SAAS,GAAG;AAAA,IACjD,EAAE,QAAQ,KAAK;AAAA,EACjB;AACA,QAAM,OACJ,EAAE,QAAQ,KAAK,kCAAkC;AAAA,IAC/C,MAAM,GAAG,eAAe,IAAI,IAAI,eAAe,EAAE;AAAA,EACnD,CAAC,KACA,YAAY,MAAM,EAAE,QAAQ,KAAK,6BAA6B,EAAC,IAAI,UAAU,YAAY,CAAC,IAAI;AAEjG,QAAM,EAAE,QAAQ,UAAU,IAAI;AAE9B,QAAM,SAAS,MAAM,EAAE,QAAQ,OAAO,GAAK;AAC3C,MAAI,CAAC,UAAW,UAAU,OAAO,UAAU,OAAQ;AACjD,UAAM,SACF,IAAI,4BAA4B,IAChC,IAAI,6BAA6B;AAAA,EACvC;AACA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,UAAkC;AAAA,IACtC,KAAK,EAAE,QAAQ,KAAK;AAAA,IACpB,UAAU;AAAA,IACV,aAAa,eAAe;AAAA,IAC5B,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,eAAe,eAAe;AAAA,IAC9B,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACA,MAAI,WAAW;AACb,YAAQ,KAAK,UAAU;AAAA,EACzB;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,IAAE,QAAQ;AAAA,IACR,EAAE,QAAQ,KAAK,+BAA+B;AAAA,MAC5C,MAAM,GAAG,eAAe,IAAI,IAAI,eAAe,EAAE;AAAA,IACnD,CAAC;AAAA,EACH;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/cmd/bind/bind-scoresaber.ts"],"sourcesContent":["import {Account, CmdContext} from '@/interface'\nimport {\n SessionPromotionCancelError,\n SessionPromotionTimeoutError,\n SSIDNotFoundError,\n} from '@/services/errors'\n\nexport const handleScoreSaberBind = async (c: CmdContext) => {\n const scoreSaberUser = await c.services.api.ScoreSaber.getScoreUserById(c.input)\n if (!scoreSaberUser) {\n throw new SSIDNotFoundError({accountId: c.input})\n }\n const {ssAccount} = await c.services.db.getUserAccountsByUid(c.session.user.id)\n const text =\n c.session.text('commands.bsbot.bind.ack-prompt', {\n user: `${scoreSaberUser.name}(${scoreSaberUser.id})`,\n }) +\n (ssAccount ? ',' + c.session.text('commands.bsbot.bind.exist', {id: ssAccount.accountId,}) : '')\n\n await c.session.sendQuote(text)\n\n const prompt = await c.session.prompt(30000)\n if (!prompt || (prompt != 'y' && prompt != 'yes')) {\n throw prompt\n ? new SessionPromotionCancelError()\n : new SessionPromotionTimeoutError()\n }\n const now = new Date()\n const account: Partial<Account> = {\n userId: c.session.user.id,\n accountId: scoreSaberUser.id,\n providerId: 'scoresaber',\n providerUsername: scoreSaberUser.name,\n lastModifiedAt: now,\n lastRefreshAt: now,\n createdAt: now,\n type: 'id',\n }\n await c.services.db.addUserBindingInfo(account)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.bind.success', {\n user: `${scoreSaberUser.name}(${scoreSaberUser.id})`,\n })\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,uBAAuB,CAAO,MAAkB;AAC3D,QAAM,iBAAiB,MAAM,EAAE,SAAS,IAAI,WAAW,iBAAiB,EAAE,KAAK;AAC/E,MAAI,CAAC,gBAAgB;AACnB,UAAM,IAAI,kBAAkB,EAAC,WAAW,EAAE,MAAK,CAAC;AAAA,EAClD;AACA,QAAM,EAAC,UAAS,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,EAAE,QAAQ,KAAK,EAAE;AAC9E,QAAM,OACJ,EAAE,QAAQ,KAAK,kCAAkC;AAAA,IAC/C,MAAM,GAAG,eAAe,IAAI,IAAI,eAAe,EAAE;AAAA,EACnD,CAAC,KACA,YAAY,MAAM,EAAE,QAAQ,KAAK,6BAA6B,EAAC,IAAI,UAAU,UAAU,CAAC,IAAI;AAE/F,QAAM,EAAE,QAAQ,UAAU,IAAI;AAE9B,QAAM,SAAS,MAAM,EAAE,QAAQ,OAAO,GAAK;AAC3C,MAAI,CAAC,UAAW,UAAU,OAAO,UAAU,OAAQ;AACjD,UAAM,SACF,IAAI,4BAA4B,IAChC,IAAI,6BAA6B;AAAA,EACvC;AACA,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,UAA4B;AAAA,IAChC,QAAQ,EAAE,QAAQ,KAAK;AAAA,IACvB,WAAW,eAAe;AAAA,IAC1B,YAAY;AAAA,IACZ,kBAAkB,eAAe;AAAA,IACjC,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,OAAO;AAC9C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,+BAA+B;AAAA,MAC5C,MAAM,GAAG,eAAe,IAAI,IAAI,eAAe,EAAE;AAAA,IACnD,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -21,17 +21,17 @@ var __async = (__this, __arguments, generator) => {
21
21
  import { CommandBuilder } from "../interface/index.js";
22
22
  import { parsePlatform, Platform } from "../utils/index.js";
23
23
  import { UnknownUserIDError } from "../services/errors/index.js";
24
- var rank_default = () => new CommandBuilder().setName("rank").addOption("p", "platform:string").setDescription("clear an auth account relate info").setExecutor((c) => __async(null, null, function* () {
24
+ var rank_default = () => new CommandBuilder().setName("rank").addOption("p", "platform:string").setExecutor((c) => __async(null, null, function* () {
25
25
  let uid = c.session.user.id;
26
26
  if (c.session.mentions && c.session.mentions.length > 0) {
27
27
  uid = c.session.mentions[0].id;
28
28
  }
29
29
  const { blAccount, ssAccount } = yield c.services.db.getUserAccountsByUid(uid);
30
- let accountId = Platform.BL && (blAccount == null ? void 0 : blAccount.platformUid);
30
+ let accountId = Platform.BL && (blAccount == null ? void 0 : blAccount.accountId);
31
31
  if (c.input) {
32
32
  accountId = c.input;
33
33
  } else if (!accountId) {
34
- accountId = Platform.SS && (ssAccount == null ? void 0 : ssAccount.platformUid);
34
+ accountId = Platform.SS && (ssAccount == null ? void 0 : ssAccount.accountId);
35
35
  }
36
36
  if (!accountId && !c.input) {
37
37
  throw new UnknownUserIDError();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cmd/rank.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface\";\nimport { parsePlatform, Platform } from '@/utils'\nimport {UnknownUserIDError} from \"@/services/errors\";\n\nexport default () =>\n new CommandBuilder()\n .setName('rank')\n .addOption('p', 'platform:string')\n .setDescription('clear an auth account relate info')\n .setExecutor(async (c) => {\n let uid = c.session.user.id\n if (c.session.mentions && c.session.mentions.length > 0) {\n uid = c.session.mentions[0].id\n }\n const { blAccount, ssAccount } = await c.services.db.getUserAccountsByUid(uid)\n let accountId = Platform.BL && blAccount?.platformUid\n\n if (c.input) {\n accountId = c.input\n // preference = undefined\n } else if (!accountId) {\n accountId = Platform.SS && ssAccount?.platformUid\n }\n\n if (!accountId && !c.input) {\n throw new UnknownUserIDError()\n }\n const rankPlatform = parsePlatform(c.options.p)\n const img = await c.services.render.renderRank(accountId, rankPlatform)\n await c.session.sendImgBuffer(img)\n })\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,sBAAqB;AAC7B,SAAS,eAAe,gBAAgB;AACxC,SAAQ,0BAAyB;AAEjC,IAAO,eAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,MAAM,EACd,UAAU,KAAK,iBAAiB,EAChC,eAAe,mCAAmC,EAClD,YAAY,CAAO,MAAM;AACxB,MAAI,MAAM,EAAE,QAAQ,KAAK;AACzB,MAAI,EAAE,QAAQ,YAAY,EAAE,QAAQ,SAAS,SAAS,GAAG;AACvD,UAAM,EAAE,QAAQ,SAAS,CAAC,EAAE;AAAA,EAC9B;AACA,QAAM,EAAE,WAAW,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,GAAG;AAC7E,MAAI,YAAY,SAAS,OAAM,uCAAW;AAE1C,MAAI,EAAE,OAAO;AACX,gBAAY,EAAE;AAAA,EAEhB,WAAW,CAAC,WAAW;AACrB,gBAAY,SAAS,OAAM,uCAAW;AAAA,EACxC;AAEA,MAAI,CAAC,aAAa,CAAC,EAAE,OAAO;AAC1B,UAAM,IAAI,mBAAmB;AAAA,EAC/B;AACA,QAAM,eAAe,cAAc,EAAE,QAAQ,CAAC;AAC9C,QAAM,MAAM,MAAM,EAAE,SAAS,OAAO,WAAW,WAAW,YAAY;AACtE,QAAM,EAAE,QAAQ,cAAc,GAAG;AACnC,EAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/cmd/rank.ts"],"sourcesContent":["import {CommandBuilder} from \"@/interface\";\nimport { parsePlatform, Platform } from '@/utils'\nimport {UnknownUserIDError} from \"@/services/errors\";\n\nexport default () =>\n new CommandBuilder()\n .setName('rank')\n .addOption('p', 'platform:string')\n .setExecutor(async (c) => {\n let uid = c.session.user.id\n if (c.session.mentions && c.session.mentions.length > 0) {\n uid = c.session.mentions[0].id\n }\n const { blAccount, ssAccount } = await c.services.db.getUserAccountsByUid(uid)\n let accountId = Platform.BL && blAccount?.accountId\n\n if (c.input) {\n accountId = c.input\n // preference = undefined\n } else if (!accountId) {\n accountId = Platform.SS && ssAccount?.accountId\n }\n\n if (!accountId && !c.input) {\n throw new UnknownUserIDError()\n }\n const rankPlatform = parsePlatform(c.options.p)\n const img = await c.services.render.renderRank(accountId, rankPlatform)\n await c.session.sendImgBuffer(img)\n })\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAQ,sBAAqB;AAC7B,SAAS,eAAe,gBAAgB;AACxC,SAAQ,0BAAyB;AAEjC,IAAO,eAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,MAAM,EACd,UAAU,KAAK,iBAAiB,EAChC,YAAY,CAAO,MAAM;AACxB,MAAI,MAAM,EAAE,QAAQ,KAAK;AACzB,MAAI,EAAE,QAAQ,YAAY,EAAE,QAAQ,SAAS,SAAS,GAAG;AACvD,UAAM,EAAE,QAAQ,SAAS,CAAC,EAAE;AAAA,EAC9B;AACA,QAAM,EAAE,WAAW,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,GAAG;AAC7E,MAAI,YAAY,SAAS,OAAM,uCAAW;AAE1C,MAAI,EAAE,OAAO;AACX,gBAAY,EAAE;AAAA,EAEhB,WAAW,CAAC,WAAW;AACrB,gBAAY,SAAS,OAAM,uCAAW;AAAA,EACxC;AAEA,MAAI,CAAC,aAAa,CAAC,EAAE,OAAO;AAC1B,UAAM,IAAI,mBAAmB;AAAA,EAC/B;AACA,QAAM,eAAe,cAAc,EAAE,QAAQ,CAAC;AAC9C,QAAM,MAAM,MAAM,EAAE,SAAS,OAAO,WAAW,WAAW,YAAY;AACtE,QAAM,EAAE,QAAQ,cAAc,GAAG;AACnC,EAAC;","names":[]}
@@ -45,13 +45,13 @@ var score_default = () => new CommandBuilder().setName("score").addOption("d", "
45
45
  }
46
46
  const mapId = c.input;
47
47
  const score = yield c.services.api.getScoreByPlayerIdAndMapId(
48
- account.platformUid,
48
+ account.accountId,
49
49
  mapId,
50
50
  diffOption
51
51
  );
52
52
  if (!score) {
53
53
  throw new ScoreNotFoundError({
54
- user: account.platformUname,
54
+ user: account.providerUsername,
55
55
  id: mapId,
56
56
  diff: diffOption == null ? void 0 : diffOption.difficulty,
57
57
  mode: c.options.m
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cmd/score.ts"],"sourcesContent":["import { CommandBuilder } from \"@/interface\";\nimport { Platform, convertDiff } from '@/utils'\nimport {\n AccountBindingNotFoundError,\n ScoreNotFoundError,\n} from '@/services/errors'\nexport default () =>\n new CommandBuilder()\n .setName('score')\n .addOption('d', 'difficulty:string')\n .addOption('m', 'mode:string')\n .addAlias('bbscore')\n .addAlias('/score')\n .setExecutor(async (c) => {\n let uid = c.session.user.id\n // let preference = c.userPreference\n if (c.session.mentions && c.session.mentions.length > 0) {\n uid = c.session.mentions[0].id\n // preference = await c.userPreference.getUserPreference(uid)\n }\n\n const { blAccount, ssAccount } = await c.services.db.getUserAccountsByUid(uid)\n let account = Platform.BL && blAccount\n account ||= Platform.SS && ssAccount\n if (!account) {\n throw new AccountBindingNotFoundError()\n }\n\n let diffOption\n if (c.options.d || c.options.m) {\n diffOption = {\n difficulty: convertDiff(c.options.d),\n mode: c.options.m,\n }\n }\n const mapId = c.input\n const score = await c.services.api.getScoreByPlayerIdAndMapId(\n account.platformUid,\n mapId,\n diffOption\n )\n if(!score) {\n throw new ScoreNotFoundError({\n user: account.platformUname, id: mapId,\n diff: diffOption?.difficulty, mode: c.options.m,\n })\n }\n const img = await c.services.render.renderScore(score.id?.toString())\n await c.session.sendImgBuffer(img)\n })\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAS,sBAAsB;AAC/B,SAAS,UAAU,mBAAmB;AACtC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,IAAO,gBAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,OAAO,EACf,UAAU,KAAK,mBAAmB,EAClC,UAAU,KAAK,aAAa,EAC5B,SAAS,SAAS,EAClB,SAAS,QAAQ,EACjB,YAAY,CAAO,MAAM;AAb9B;AAcM,MAAI,MAAM,EAAE,QAAQ,KAAK;AAEzB,MAAI,EAAE,QAAQ,YAAY,EAAE,QAAQ,SAAS,SAAS,GAAG;AACvD,UAAM,EAAE,QAAQ,SAAS,CAAC,EAAE;AAAA,EAE9B;AAEA,QAAM,EAAE,WAAW,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,GAAG;AAC7E,MAAI,UAAU,SAAS,MAAM;AAC7B,wBAAY,SAAS,MAAM;AAC3B,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,4BAA4B;AAAA,EACxC;AAEA,MAAI;AACJ,MAAI,EAAE,QAAQ,KAAK,EAAE,QAAQ,GAAG;AAC9B,iBAAa;AAAA,MACX,YAAY,YAAY,EAAE,QAAQ,CAAC;AAAA,MACnC,MAAM,EAAE,QAAQ;AAAA,IAClB;AAAA,EACF;AACA,QAAM,QAAQ,EAAE;AAChB,QAAM,QAAQ,MAAM,EAAE,SAAS,IAAI;AAAA,IACjC,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF;AACA,MAAG,CAAC,OAAO;AACT,UAAM,IAAI,mBAAmB;AAAA,MAC3B,MAAM,QAAQ;AAAA,MAAe,IAAI;AAAA,MACjC,MAAM,yCAAY;AAAA,MAAY,MAAM,EAAE,QAAQ;AAAA,IAChD,CAAC;AAAA,EACH;AACA,QAAM,MAAM,MAAM,EAAE,SAAS,OAAO,aAAY,WAAM,OAAN,mBAAU,UAAU;AACpE,QAAM,EAAE,QAAQ,cAAc,GAAG;AACnC,EAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/cmd/score.ts"],"sourcesContent":["import { CommandBuilder } from \"@/interface\";\nimport { Platform, convertDiff } from '@/utils'\nimport {\n AccountBindingNotFoundError,\n ScoreNotFoundError,\n} from '@/services/errors'\nexport default () =>\n new CommandBuilder()\n .setName('score')\n .addOption('d', 'difficulty:string')\n .addOption('m', 'mode:string')\n .addAlias('bbscore')\n .addAlias('/score')\n .setExecutor(async (c) => {\n let uid = c.session.user.id\n // let preference = c.userPreference\n if (c.session.mentions && c.session.mentions.length > 0) {\n uid = c.session.mentions[0].id\n // preference = await c.userPreference.getUserPreference(uid)\n }\n\n const { blAccount, ssAccount } = await c.services.db.getUserAccountsByUid(uid)\n let account = Platform.BL && blAccount\n account ||= Platform.SS && ssAccount\n if (!account) {\n throw new AccountBindingNotFoundError()\n }\n\n let diffOption\n if (c.options.d || c.options.m) {\n diffOption = {\n difficulty: convertDiff(c.options.d),\n mode: c.options.m,\n }\n }\n const mapId = c.input\n const score = await c.services.api.getScoreByPlayerIdAndMapId(\n account.accountId,\n mapId,\n diffOption\n )\n if(!score) {\n throw new ScoreNotFoundError({\n user: account.providerUsername, id: mapId,\n diff: diffOption?.difficulty, mode: c.options.m,\n })\n }\n const img = await c.services.render.renderScore(score.id?.toString())\n await c.session.sendImgBuffer(img)\n })\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAS,sBAAsB;AAC/B,SAAS,UAAU,mBAAmB;AACtC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,IAAO,gBAAQ,MACb,IAAI,eAAe,EAChB,QAAQ,OAAO,EACf,UAAU,KAAK,mBAAmB,EAClC,UAAU,KAAK,aAAa,EAC5B,SAAS,SAAS,EAClB,SAAS,QAAQ,EACjB,YAAY,CAAO,MAAM;AAb9B;AAcM,MAAI,MAAM,EAAE,QAAQ,KAAK;AAEzB,MAAI,EAAE,QAAQ,YAAY,EAAE,QAAQ,SAAS,SAAS,GAAG;AACvD,UAAM,EAAE,QAAQ,SAAS,CAAC,EAAE;AAAA,EAE9B;AAEA,QAAM,EAAE,WAAW,UAAU,IAAI,MAAM,EAAE,SAAS,GAAG,qBAAqB,GAAG;AAC7E,MAAI,UAAU,SAAS,MAAM;AAC7B,wBAAY,SAAS,MAAM;AAC3B,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,4BAA4B;AAAA,EACxC;AAEA,MAAI;AACJ,MAAI,EAAE,QAAQ,KAAK,EAAE,QAAQ,GAAG;AAC9B,iBAAa;AAAA,MACX,YAAY,YAAY,EAAE,QAAQ,CAAC;AAAA,MACnC,MAAM,EAAE,QAAQ;AAAA,IAClB;AAAA,EACF;AACA,QAAM,QAAQ,EAAE;AAChB,QAAM,QAAQ,MAAM,EAAE,SAAS,IAAI;AAAA,IACjC,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF;AACA,MAAG,CAAC,OAAO;AACT,UAAM,IAAI,mBAAmB;AAAA,MAC3B,MAAM,QAAQ;AAAA,MAAkB,IAAI;AAAA,MACpC,MAAM,yCAAY;AAAA,MAAY,MAAM,EAAE,QAAQ;AAAA,IAChD,CAAC;AAAA,EACH;AACA,QAAM,MAAM,MAAM,EAAE,SAAS,OAAO,aAAY,WAAM,OAAN,mBAAU,UAAU;AACpE,QAAM,EAAE,QAAQ,cAAc,GAAG;AACnC,EAAC;","names":[]}
@@ -41,7 +41,7 @@ import { SubscriptionExistError } from "../../services/errors/index.js";
41
41
  const beatleader = (c) => __async(null, null, function* () {
42
42
  const { blSub } = yield c.services.db.getSubscriptionsByGID(c.session.channel.id);
43
43
  if (blSub) {
44
- if (blSub.enable) {
44
+ if (blSub.enabled) {
45
45
  throw new SubscriptionExistError();
46
46
  }
47
47
  const data2 = __spreadProps(__spreadValues({}, blSub), { enable: true });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cmd/subscribe/beatleader.ts"],"sourcesContent":["import { CmdContext } from '@/interface'\nimport { SubscriptionExistError } from '@/services/errors'\n\nexport const beatleader = async (c: CmdContext) => {\n const { blSub } = await c.services.db.getSubscriptionsByGID(c.session.channel.id)\n if (blSub) {\n if (blSub.enable) {\n throw new SubscriptionExistError()\n }\n const data = { ...blSub, enable: true }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatleader.success')\n )\n return\n }\n\n const data = {\n gid: c.session.channel.id,\n type: 'beatleader-score',\n time: new Date(),\n enable: true,\n data: {},\n }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatleader.success')\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,8BAA8B;AAEhC,MAAM,aAAa,CAAO,MAAkB;AACjD,QAAM,EAAE,MAAM,IAAI,MAAM,EAAE,SAAS,GAAG,sBAAsB,EAAE,QAAQ,QAAQ,EAAE;AAChF,MAAI,OAAO;AACT,QAAI,MAAM,QAAQ;AAChB,YAAM,IAAI,uBAAuB;AAAA,IACnC;AACA,UAAMA,QAAO,iCAAK,QAAL,EAAY,QAAQ,KAAK;AACtC,UAAM,EAAE,SAAS,GAAG,mBAAmBA,KAAI;AAC3C,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,6CAA6C;AAAA,IAC9D;AACA;AAAA,EACF;AAEA,QAAM,OAAO;AAAA,IACX,KAAK,EAAE,QAAQ,QAAQ;AAAA,IACvB,MAAM;AAAA,IACN,MAAM,oBAAI,KAAK;AAAA,IACf,QAAQ;AAAA,IACR,MAAM,CAAC;AAAA,EACT;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,IAAI;AAC3C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,6CAA6C;AAAA,EAC9D;AACF;","names":["data"]}
1
+ {"version":3,"sources":["../../../../src/cmd/subscribe/beatleader.ts"],"sourcesContent":["import { CmdContext } from '@/interface'\nimport { SubscriptionExistError } from '@/services/errors'\n\nexport const beatleader = async (c: CmdContext) => {\n const { blSub } = await c.services.db.getSubscriptionsByGID(c.session.channel.id)\n if (blSub) {\n if (blSub.enabled) {\n throw new SubscriptionExistError()\n }\n const data = { ...blSub, enable: true }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatleader.success')\n )\n return\n }\n\n const data = {\n gid: c.session.channel.id,\n type: 'beatleader-score',\n time: new Date(),\n enable: true,\n data: {},\n }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatleader.success')\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,8BAA8B;AAEhC,MAAM,aAAa,CAAO,MAAkB;AACjD,QAAM,EAAE,MAAM,IAAI,MAAM,EAAE,SAAS,GAAG,sBAAsB,EAAE,QAAQ,QAAQ,EAAE;AAChF,MAAI,OAAO;AACT,QAAI,MAAM,SAAS;AACjB,YAAM,IAAI,uBAAuB;AAAA,IACnC;AACA,UAAMA,QAAO,iCAAK,QAAL,EAAY,QAAQ,KAAK;AACtC,UAAM,EAAE,SAAS,GAAG,mBAAmBA,KAAI;AAC3C,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,6CAA6C;AAAA,IAC9D;AACA;AAAA,EACF;AAEA,QAAM,OAAO;AAAA,IACX,KAAK,EAAE,QAAQ,QAAQ;AAAA,IACvB,MAAM;AAAA,IACN,MAAM,oBAAI,KAAK;AAAA,IACf,QAAQ;AAAA,IACR,MAAM,CAAC;AAAA,EACT;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,IAAI;AAC3C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,6CAA6C;AAAA,EAC9D;AACF;","names":["data"]}
@@ -41,7 +41,7 @@ import { SubscriptionExistError } from "../../services/errors/index.js";
41
41
  const beatsaver = (c) => __async(null, null, function* () {
42
42
  const { bsMapSub } = yield c.services.db.getSubscriptionsByGID(c.session.channel.id);
43
43
  if (bsMapSub) {
44
- if (bsMapSub.enable) {
44
+ if (bsMapSub.enabled) {
45
45
  throw new SubscriptionExistError();
46
46
  }
47
47
  const data2 = __spreadProps(__spreadValues({}, bsMapSub), { enable: true });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cmd/subscribe/beatsaver.ts"],"sourcesContent":["import { CmdContext } from '@/interface'\nimport { SubscriptionExistError } from '@/services/errors'\nexport const beatsaver = async (c: CmdContext) => {\n const { bsMapSub } = await c.services.db.getSubscriptionsByGID(c.session.channel.id)\n if (bsMapSub) {\n if (bsMapSub.enable) {\n throw new SubscriptionExistError()\n }\n const data = { ...bsMapSub, enable: true }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatsaver.success')\n )\n return\n }\n const data = {\n gid: c.session.channel.id,\n type: 'beatsaver-map',\n time: new Date(),\n enable: true,\n data: {},\n }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatsaver.success')\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,8BAA8B;AAChC,MAAM,YAAY,CAAO,MAAkB;AAChD,QAAM,EAAE,SAAS,IAAI,MAAM,EAAE,SAAS,GAAG,sBAAsB,EAAE,QAAQ,QAAQ,EAAE;AACnF,MAAI,UAAU;AACZ,QAAI,SAAS,QAAQ;AACnB,YAAM,IAAI,uBAAuB;AAAA,IACnC;AACA,UAAMA,QAAO,iCAAK,WAAL,EAAe,QAAQ,KAAK;AACzC,UAAM,EAAE,SAAS,GAAG,mBAAmBA,KAAI;AAC3C,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,4CAA4C;AAAA,IAC7D;AACA;AAAA,EACF;AACA,QAAM,OAAO;AAAA,IACX,KAAK,EAAE,QAAQ,QAAQ;AAAA,IACvB,MAAM;AAAA,IACN,MAAM,oBAAI,KAAK;AAAA,IACf,QAAQ;AAAA,IACR,MAAM,CAAC;AAAA,EACT;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,IAAI;AAC3C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,4CAA4C;AAAA,EAC7D;AACF;","names":["data"]}
1
+ {"version":3,"sources":["../../../../src/cmd/subscribe/beatsaver.ts"],"sourcesContent":["import { CmdContext } from '@/interface'\nimport { SubscriptionExistError } from '@/services/errors'\nexport const beatsaver = async (c: CmdContext) => {\n const { bsMapSub } = await c.services.db.getSubscriptionsByGID(c.session.channel.id)\n if (bsMapSub) {\n if (bsMapSub.enabled) {\n throw new SubscriptionExistError()\n }\n const data = { ...bsMapSub, enable: true }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatsaver.success')\n )\n return\n }\n const data = {\n gid: c.session.channel.id,\n type: 'beatsaver-map',\n time: new Date(),\n enable: true,\n data: {},\n }\n await c.services.db.upsertSubscription(data)\n await c.session.sendQuote(\n c.session.text('commands.bsbot.subscribe.beatsaver.success')\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,8BAA8B;AAChC,MAAM,YAAY,CAAO,MAAkB;AAChD,QAAM,EAAE,SAAS,IAAI,MAAM,EAAE,SAAS,GAAG,sBAAsB,EAAE,QAAQ,QAAQ,EAAE;AACnF,MAAI,UAAU;AACZ,QAAI,SAAS,SAAS;AACpB,YAAM,IAAI,uBAAuB;AAAA,IACnC;AACA,UAAMA,QAAO,iCAAK,WAAL,EAAe,QAAQ,KAAK;AACzC,UAAM,EAAE,SAAS,GAAG,mBAAmBA,KAAI;AAC3C,UAAM,EAAE,QAAQ;AAAA,MACd,EAAE,QAAQ,KAAK,4CAA4C;AAAA,IAC7D;AACA;AAAA,EACF;AACA,QAAM,OAAO;AAAA,IACX,KAAK,EAAE,QAAQ,QAAQ;AAAA,IACvB,MAAM;AAAA,IACN,MAAM,oBAAI,KAAK;AAAA,IACf,QAAQ;AAAA,IACR,MAAM,CAAC;AAAA,EACT;AACA,QAAM,EAAE,SAAS,GAAG,mBAAmB,IAAI;AAC3C,QAAM,EAAE,QAAQ;AAAA,IACd,EAAE,QAAQ,KAAK,4CAA4C;AAAA,EAC7D;AACF;","names":["data"]}