@@ -4,8 +4,8 @@ import { isUserVIP } from "../utils/isUserVIP";
4
4
import { isUserTempVIP } from "../utils/isUserTempVIP" ;
5
5
import { getMaxResThumbnail , YouTubeAPI } from "../utils/youtubeApi" ;
6
6
import { db , privateDB } from "../databases/databases" ;
7
- import { dispatchEvent , getVoteAuthor , getVoteAuthorRaw } from "../utils/webhookUtils" ;
8
- import { getFormattedTime } from "../utils/getFormattedTime " ;
7
+ import { dispatchEvent , getVoteAuthorRaw , createDiscordVoteEmbed } from "../utils/webhookUtils" ;
8
+ import { WebhookData } from "../types/webhook.model " ;
9
9
import { getIP } from "../utils/getIP" ;
10
10
import { getHashCache } from "../utils/getHashCache" ;
11
11
import { config } from "../config" ;
@@ -34,7 +34,7 @@ interface FinalResponse {
34
34
}
35
35
36
36
interface VoteData {
37
- UUID : string ;
37
+ UUID : SegmentUUID ;
38
38
nonAnonUserID : string ;
39
39
originalType : VoteType ;
40
40
voteTypeEnum : number ;
@@ -46,7 +46,7 @@ interface VoteData {
46
46
views : number ;
47
47
locked : boolean ;
48
48
} ;
49
- category : string ;
49
+ category : Category ;
50
50
incrementAmount : number ;
51
51
oldIncrementAmount : number ;
52
52
finalResponse : FinalResponse ;
@@ -99,7 +99,7 @@ async function checkVideoDuration(UUID: SegmentUUID) {
99
99
}
100
100
101
101
async function sendWebhooks ( voteData : VoteData ) {
102
- const submissionInfoRow = await db . prepare ( "get" , `SELECT "s"."videoID", "s"."userID", s."startTime", s."endTime", s."category", u."userName",
102
+ const submissionInfoRow = await db . prepare ( "get" , `SELECT "s"."videoID", "s"."userID", s."startTime", s."endTime", s."category", u."userName",
103
103
(select count(1) from "sponsorTimes" where "userID" = s."userID") count,
104
104
(select count(1) from "sponsorTimes" where "userID" = s."userID" and votes <= -2) disregarded
105
105
FROM "sponsorTimes" s left join "userNames" u on s."userID" = u."userID" where s."UUID"=?` ,
@@ -131,62 +131,44 @@ async function sendWebhooks(voteData: VoteData) {
131
131
132
132
const isUpvote = voteData . incrementAmount > 0 ;
133
133
// Send custom webhooks
134
- dispatchEvent ( isUpvote ? "vote.up" : "vote.down" , {
135
- " user" : {
136
- " status" : getVoteAuthorRaw ( userSubmissionCountRow . submissionCount , voteData . isTempVIP , voteData . isVIP , voteData . isOwnSubmission ) ,
134
+ const webhookData : WebhookData = {
135
+ user : {
136
+ status : getVoteAuthorRaw ( userSubmissionCountRow . submissionCount , voteData . isTempVIP , voteData . isVIP , voteData . isOwnSubmission ) ,
137
137
} ,
138
- " video" : {
139
- "id" : submissionInfoRow . videoID ,
140
- " title" : data ?. title ,
141
- " url" : `https://www.youtube.com/watch?v=${ videoID } ` ,
142
- " thumbnail" : getMaxResThumbnail ( videoID ) ,
138
+ video : {
139
+ id : submissionInfoRow . videoID ,
140
+ title : data ?. title ,
141
+ url : `https://www.youtube.com/watch?v=${ videoID } ` ,
142
+ thumbnail : getMaxResThumbnail ( videoID ) ,
143
143
} ,
144
- "submission" : {
145
- "UUID" : voteData . UUID ,
146
- "views" : voteData . row . views ,
147
- "category" : voteData . category ,
148
- "startTime" : submissionInfoRow . startTime ,
149
- "endTime" : submissionInfoRow . endTime ,
150
- "user" : {
151
- "UUID" : submissionInfoRow . userID ,
152
- "username" : submissionInfoRow . userName ,
153
- "submissions" : {
154
- "total" : submissionInfoRow . count ,
155
- "ignored" : submissionInfoRow . disregarded ,
144
+ submission : {
145
+ UUID : voteData . UUID as SegmentUUID ,
146
+ views : voteData . row . views ,
147
+ locked : voteData . row . locked ,
148
+ category : voteData . category as Category ,
149
+ startTime : submissionInfoRow . startTime ,
150
+ endTime : submissionInfoRow . endTime ,
151
+ user : {
152
+ UUID : submissionInfoRow . userID ,
153
+ username : submissionInfoRow . userName ,
154
+ submissions : {
155
+ total : submissionInfoRow . count ,
156
+ ignored : submissionInfoRow . disregarded ,
156
157
} ,
157
158
} ,
158
159
} ,
159
- " votes" : {
160
- " before" : voteData . row . votes ,
161
- " after" : ( voteData . row . votes + voteData . incrementAmount - voteData . oldIncrementAmount ) ,
160
+ votes : {
161
+ before : voteData . row . votes ,
162
+ after : ( voteData . row . votes + voteData . incrementAmount - voteData . oldIncrementAmount ) ,
162
163
} ,
163
- } ) ;
164
+ authorName : voteData . finalResponse ?. webhookMessage ?? voteData . finalResponse ?. finalMessage
165
+ } ;
166
+ dispatchEvent ( isUpvote ? "vote.up" : "vote.down" , webhookData ) ;
164
167
165
168
// Send discord message
166
169
if ( webhookURL !== null && ! isUpvote ) {
167
170
axios . post ( webhookURL , {
168
- "embeds" : [ {
169
- "title" : data ?. title ,
170
- "url" : `https://www.youtube.com/watch?v=${ submissionInfoRow . videoID } &t=${ ( submissionInfoRow . startTime . toFixed ( 0 ) - 2 ) } s#requiredSegment=${ voteData . UUID } ` ,
171
- "description" : `**${ voteData . row . votes } Votes Prior | \
172
- ${ ( voteData . row . votes + voteData . incrementAmount - voteData . oldIncrementAmount ) } Votes Now | ${ voteData . row . views } \
173
- Views**\n\n**Locked**: ${ voteData . row . locked } \n\n**Submission ID:** ${ voteData . UUID } \
174
- \n**Category:** ${ submissionInfoRow . category } \
175
- \n\n**Submitted by:** ${ submissionInfoRow . userName } \n${ submissionInfoRow . userID } \
176
- \n\n**Total User Submissions:** ${ submissionInfoRow . count } \
177
- \n**Ignored User Submissions:** ${ submissionInfoRow . disregarded } \
178
- \n\n**Timestamp:** \
179
- ${ getFormattedTime ( submissionInfoRow . startTime ) } to ${ getFormattedTime ( submissionInfoRow . endTime ) } ` ,
180
- "color" : 10813440 ,
181
- "author" : {
182
- "name" : voteData . finalResponse ?. webhookMessage ??
183
- voteData . finalResponse ?. finalMessage ??
184
- `${ getVoteAuthor ( userSubmissionCountRow . submissionCount , voteData . isTempVIP , voteData . isVIP , voteData . isOwnSubmission ) } ${ voteData . row . locked ? " (Locked)" : "" } ` ,
185
- } ,
186
- "thumbnail" : {
187
- "url" : getMaxResThumbnail ( videoID ) ,
188
- } ,
189
- } ] ,
171
+ "embeds" : [ createDiscordVoteEmbed ( webhookData ) ] ,
190
172
} )
191
173
. then ( res => {
192
174
if ( res . status >= 400 ) {
0 commit comments