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