Skip to content

Commit 4cf49fe

Browse files
committed
Update vote.js
changed display of sent vote panel, troubleshooting deleting message after sending the last feedback
1 parent ef1ab33 commit 4cf49fe

1 file changed

Lines changed: 23 additions & 13 deletions

File tree

commands/vote.js

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -62,22 +62,24 @@ module.exports = {
6262
const voteSetup = VoteSetup.fromJSON(interaction.guild, voteSetupJSON);
6363
switch (choice) {
6464
case 'voteSend':
65-
await sendVote(bot.settings[interaction.guild.id], voteSetup);
65+
interaction.deferUpdate();
66+
await sendVote(voteSetup, getRoleSettingsName(bot.settings[interaction.guild.id], voteSetup.role));
6667
voteSetup.currentMemberIndex++;
67-
updateState('currentMemberIndex', voteSetup.currentMemberIndex);
68-
if (voteSetup.currentMemberIndex >= voteSetup.members.length) {
68+
updateState('currentMemberIndex', voteSetup.currentMemberIndex.toString()); // TODO debug why this isn't updating
69+
console.log(voteSetup);
70+
if (voteSetup.currentMemberIndex > voteSetup.members.length) {
6971
await message.delete();
7072
} else {
71-
await interaction.message.edit({ embeds: [getSetupEmbed(voteSetup)], components: [generateVoteSetupButtons(bot)] });
73+
await message.edit({ embeds: [getSetupEmbed(voteSetup)], components: [generateVoteSetupButtons(bot)] });
7274
}
7375
break;
7476
case 'voteSkip':
7577
voteSetup.currentMemberIndex++;
76-
updateState('currentMemberIndex', voteSetup.currentMemberIndex);
78+
updateState('currentMemberIndex', voteSetup.currentMemberIndex.toString());
7779
if (voteSetup.currentMemberIndex >= voteSetup.members.length) {
7880
await message.delete();
7981
} else {
80-
await interaction.message.edit({ embeds: [getSetupEmbed(voteSetup)], components: [generateVoteSetupButtons(bot)] });
82+
await message.edit({ embeds: [getSetupEmbed(voteSetup)], components: [generateVoteSetupButtons(bot)] });
8183
}
8284
break;
8385
case 'voteAbort':
@@ -86,6 +88,7 @@ module.exports = {
8688
case 'voteAddFeedbacks': {
8789
// TODO add custom value with modal response
8890
// add function to grab custom feedback by message ID and process it
91+
// also make sure first 24 feedbacks show up in the select panel, since last is custom
8992
const { includedFeedbacks, unidentifiedFeedbacks, otherFeedbacks } = sortMemberFeedbacks(voteSetup);
9093
const addableFeedbacks = unidentifiedFeedbacks.concat(otherFeedbacks).slice(0, 25);
9194
let index = includedFeedbacks.length + 1;
@@ -157,6 +160,7 @@ class VoteSetup {
157160
static fromJSON(guild, json) {
158161
return new this({
159162
...json,
163+
currentMemberIndex: parseInt(json.currentMemberIndex),
160164
channel: guild.channels.cache.get(json.channel),
161165
members: json.members.map(memberId => guild.members.cache.get(memberId)),
162166
role: guild.roles.cache.get(json.role)
@@ -191,20 +195,20 @@ function getSetupEmbed(voteSetup) {
191195
.setDescription(`
192196
This vote will be for to <@${member.id}> to ${voteSetup.role}
193197
`);
194-
const { includedFeedbacks, unidentifiedFeedbacks, otherFeedbacks } = sortMemberFeedbacks(voteSetup.feedbacks, member);
198+
const { includedFeedbacks, unidentifiedFeedbacks, otherFeedbacks } = sortMemberFeedbacks(voteSetup);
195199
let index = 1;
196200
// TODO add length check for 1024 character limit, add <type> feedback two as name and continue list
197201
embed.addFields([{
198202
name: 'Included Feedback:',
199-
value: includedFeedbacks.map(feedback => getDisplayString(index++, feedback)).join('\n') || 'None'
203+
value: includedFeedbacks.map(feedback => getSetupDisplayString(index++, feedback)).join('\n') || 'None'
200204
},
201205
{
202206
name: 'Unknown Tags:',
203-
value: unidentifiedFeedbacks.map(feedback => getDisplayString(index++, feedback)).join('\n') || 'None'
207+
value: unidentifiedFeedbacks.map(feedback => getSetupDisplayString(index++, feedback)).join('\n') || 'None'
204208
},
205209
{
206210
name: 'Other Feedback:',
207-
value: otherFeedbacks.map(feedback => getDisplayString(index++, feedback)).join('\n') || 'None'
211+
value: otherFeedbacks.map(feedback => getSetupDisplayString(index++, feedback)).join('\n') || 'None'
208212
}]);
209213
return embed;
210214
}
@@ -227,11 +231,16 @@ function sortMemberFeedbacks(voteSetup) {
227231
return { includedFeedbacks, unidentifiedFeedbacks, otherFeedbacks };
228232
}
229233

230-
function getDisplayString(index, feedback) {
234+
function getSetupDisplayString(index, feedback) {
231235
const tags = (`${feedback.dungeon?.tag || '??'} ${feedback.tier?.tag || '??'}`).padStart(11);
232236
return `\`${index}.\` \`${tags}\` ${feedback.feedbackURL} <t:${feedback.timeStamp}:f>`;
233237
}
234238

239+
function getVoteDisplayString(index, feedback) {
240+
const tags = (`${feedback.dungeon?.tag || '??'} ${feedback.tier?.tag || '??'}`).padStart(11);
241+
return `\`${index}.\` \`${tags}\` ${feedback.feedbackURL} <t:${feedback.timeStamp}:d>`;
242+
}
243+
235244
function getRoleSettingsName(settings, role) {
236245
return Object.keys(settings.roles).find(roleName => settings.roles[roleName] == role.id);
237246
}
@@ -248,10 +257,11 @@ async function sendVote(voteSetup, roleSettingsName) {
248257
.setAuthor({ name: `${member.displayName} to ${voteSetup.role.name}`, iconURL: member.user.displayAvatarURL({ dynamic: true }) })
249258
.setDescription(`${member} \`${member.displayName}\``);
250259
if (embedStyling != undefined && embedStyling.image) { embed.setThumbnail(embedStyling.image); }
251-
const feedbacks = voteSetup.feedbacks.filter(feedback => feedback.mentionedIDs.includes[member.id] && feedback.feedbackState == FeedbackState.Included);
260+
const { includedFeedbacks } = sortMemberFeedbacks(voteSetup);
261+
let index = 1;
252262
embed.addFields({
253263
name: 'Feedback:',
254-
value: getDisplayString(feedbacks) || 'None'
264+
value: includedFeedbacks.map(feedback => getVoteDisplayString(index++, feedback)).join('\n') || 'None'
255265
});
256266
const voteMessage = await voteSetup.channel.send({ embeds: [embed] });
257267
for (const emoji of ['✅', '❌', '👀']) { voteMessage.react(emoji); }

0 commit comments

Comments
 (0)