mirror of
https://github.com/Burn-E99/GroupUp.git
synced 2026-01-06 19:37:54 -05:00
Add manager Join/Leave/Alternate commands
additionally update deleteConfirmed such that the group up manager name syntax matches name syntax elsewhere in the bot
This commit is contained in:
@ -10,7 +10,7 @@ export const confirmedCustomId = 'confirmedCustomId';
|
||||
export const confirmStr = 'yes';
|
||||
|
||||
const execute = async (bot: Bot, interaction: Interaction) => {
|
||||
if (interaction?.data?.customId && interaction?.data?.components?.length && interaction.channelId && interaction.guildId && interaction.member) {
|
||||
if (interaction?.data?.customId && interaction?.data?.components?.length && interaction.channelId && interaction.guildId && interaction.member && interaction.member.user) {
|
||||
// Light Telemetry
|
||||
dbClient.execute(queries.callIncCnt('btn-confirmDelEvent')).catch((e) => utils.commonLoggers.dbError('deleteConfirmed.ts@incCnt', 'call sproc INC_CNT on', e));
|
||||
|
||||
@ -33,6 +33,7 @@ const execute = async (bot: Bot, interaction: Interaction) => {
|
||||
if (tempDataMap.get(confirmedCustomId)?.toLowerCase() === confirmStr) {
|
||||
const eventMessage = await bot.helpers.getMessage(evtChannelId, evtMessageId).catch((e: Error) => utils.commonLoggers.messageGetError('deleteConfirmed.ts', 'get eventMessage', e));
|
||||
const userId = interaction.member.id;
|
||||
const userName = interaction.member.user.username;
|
||||
// Delete event
|
||||
bot.helpers.deleteMessage(evtChannelId, evtMessageId, 'User deleted event').then(() => {
|
||||
dbClient.execute(queries.deleteEvent, [evtChannelId, evtMessageId]).catch((e) => utils.commonLoggers.dbError('deleteConfirmed.ts@deleteEvent', 'delete event from', e));
|
||||
@ -56,7 +57,7 @@ const execute = async (bot: Bot, interaction: Interaction) => {
|
||||
embeds: [{
|
||||
color: infoColor2,
|
||||
title: `Event deleted by a ${config.name} Manager`,
|
||||
description: `The following event was deleted by <@${userId}>.`,
|
||||
description: `The following event was deleted by ${userName} - <@${userId}>.`,
|
||||
timestamp: new Date().getTime(),
|
||||
}, eventEmbed],
|
||||
}).catch((e: Error) => utils.commonLoggers.messageSendError('deleteConfirmed.ts', 'send log message', e));
|
||||
|
||||
@ -18,7 +18,7 @@ const execute = async (bot: Bot, interaction: Interaction) => {
|
||||
const memberRequesting = getLfgMembers(interaction.message.embeds[0].fields[0].value || '')[0];
|
||||
const approved = interaction.data.customId.includes(approveStr);
|
||||
const responseStr = interaction.data.customId.split(idSeparator)[1] || '';
|
||||
const capResponseStr = `${responseStr.charAt(0).toUpperCase()}${responseStr.slice(1)}`;
|
||||
const capResponseStr = utils.capitalizeFirstChar(responseStr);
|
||||
const eventIds = utils.messageUrlToIds(interaction.message.embeds[0].description.split(')')[0] || '');
|
||||
const eventUrl = utils.idsToMessageUrl(eventIds);
|
||||
const joinRequestMapId = generateMapId(eventIds.messageId, eventIds.channelId, memberRequesting.id);
|
||||
|
||||
@ -81,7 +81,7 @@ const editEvent = async (
|
||||
memberList: Array<LFGMember>,
|
||||
maxMemberCount: number,
|
||||
alternateList: Array<LFGMember>,
|
||||
loudAcknowledge = false,
|
||||
loudAcknowledge: boolean,
|
||||
) => {
|
||||
if (evtMessageEmbed.fields) {
|
||||
// Update the fields
|
||||
@ -122,7 +122,7 @@ ${safelyDismissMsg}`,
|
||||
};
|
||||
|
||||
// Generic no response response
|
||||
const noEdit = async (bot: Bot, interaction: Interaction, loudAcknowledge = false) => {
|
||||
const noEdit = async (bot: Bot, interaction: Interaction, loudAcknowledge: boolean) => {
|
||||
if (loudAcknowledge) {
|
||||
bot.helpers.sendInteractionResponse(interaction.id, interaction.token, {
|
||||
type: InteractionResponseTypes.ChannelMessageWithSource,
|
||||
@ -149,7 +149,16 @@ export const getGuildName = async (bot: Bot, guildId: bigint): Promise<string> =
|
||||
(await bot.helpers.getGuild(guildId).catch((e: Error) => utils.commonLoggers.messageGetError('utils.ts', 'get guild', e)) || { name: 'failed to get guild name' }).name;
|
||||
|
||||
// Remove member from the event
|
||||
export const removeMemberFromEvent = async (bot: Bot, interaction: Interaction, evtMessageEmbed: Embed, evtMessageId: bigint, evtChannelId: bigint, userId: bigint, evtGuildId: bigint) => {
|
||||
export const removeMemberFromEvent = async (
|
||||
bot: Bot,
|
||||
interaction: Interaction,
|
||||
evtMessageEmbed: Embed,
|
||||
evtMessageId: bigint,
|
||||
evtChannelId: bigint,
|
||||
userId: bigint,
|
||||
evtGuildId: bigint,
|
||||
loudAcknowledge = false,
|
||||
): Promise<boolean> => {
|
||||
if (evtMessageEmbed.fields) {
|
||||
// Get old counts
|
||||
const [oldMemberCount, maxMemberCount] = getEventMemberCount(evtMessageEmbed.fields[LfgEmbedIndexes.JoinedMembers].name);
|
||||
@ -202,13 +211,16 @@ export const removeMemberFromEvent = async (bot: Bot, interaction: Interaction,
|
||||
}
|
||||
|
||||
// Update the event
|
||||
await editEvent(bot, interaction, evtMessageEmbed, evtMessageId, evtChannelId, memberList, maxMemberCount, alternateList);
|
||||
await editEvent(bot, interaction, evtMessageEmbed, evtMessageId, evtChannelId, memberList, maxMemberCount, alternateList, loudAcknowledge);
|
||||
return true;
|
||||
} else {
|
||||
// Send noEdit response because user did not actually leave
|
||||
await noEdit(bot, interaction);
|
||||
await noEdit(bot, interaction, loudAcknowledge);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
await somethingWentWrong(bot, interaction, 'noFieldsInRemoveMember');
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
@ -222,7 +234,7 @@ export const alternateMemberToEvent = async (
|
||||
member: LFGMember,
|
||||
userJoinOnFull = false,
|
||||
loudAcknowledge = false,
|
||||
) => {
|
||||
): Promise<boolean> => {
|
||||
if (evtMessageEmbed.fields) {
|
||||
member.joined = userJoinOnFull;
|
||||
// Get current alternates
|
||||
@ -241,18 +253,30 @@ export const alternateMemberToEvent = async (
|
||||
// Update the event
|
||||
evtMessageEmbed.fields[LfgEmbedIndexes.AlternateMembers].value = generateAlternateList(alternateList);
|
||||
await editEvent(bot, interaction, evtMessageEmbed, evtMessageId, evtChannelId, memberList, maxMemberCount, alternateList, loudAcknowledge);
|
||||
return true;
|
||||
} else {
|
||||
// Send noEdit response because user was already an alternate and joined status did not change
|
||||
await noEdit(bot, interaction, loudAcknowledge);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// No fields, can't alternate
|
||||
await somethingWentWrong(bot, interaction, 'noFieldsInAlternateMember');
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
// Join member to the event
|
||||
export const joinMemberToEvent = async (bot: Bot, interaction: Interaction, evtMessageEmbed: Embed, evtMessageId: bigint, evtChannelId: bigint, member: LFGMember, evtGuildId: bigint) => {
|
||||
export const joinMemberToEvent = async (
|
||||
bot: Bot,
|
||||
interaction: Interaction,
|
||||
evtMessageEmbed: Embed,
|
||||
evtMessageId: bigint,
|
||||
evtChannelId: bigint,
|
||||
member: LFGMember,
|
||||
evtGuildId: bigint,
|
||||
loudAcknowledge = false,
|
||||
): Promise<boolean> => {
|
||||
if (evtMessageEmbed.fields) {
|
||||
// Get current member list and count
|
||||
const [oldMemberCount, maxMemberCount] = getEventMemberCount(evtMessageEmbed.fields[LfgEmbedIndexes.JoinedMembers].name);
|
||||
@ -260,10 +284,11 @@ export const joinMemberToEvent = async (bot: Bot, interaction: Interaction, evtM
|
||||
// Verify user is not already on the joined list
|
||||
if (memberList.find((joinedMember) => joinedMember.id === member.id)) {
|
||||
// Send noEdit response because user was already joined
|
||||
await noEdit(bot, interaction);
|
||||
await noEdit(bot, interaction, loudAcknowledge);
|
||||
return false;
|
||||
} else if (oldMemberCount === maxMemberCount) {
|
||||
// Event full, add member to alternate list
|
||||
await alternateMemberToEvent(bot, interaction, evtMessageEmbed, evtMessageId, evtChannelId, member, true);
|
||||
return await alternateMemberToEvent(bot, interaction, evtMessageEmbed, evtMessageId, evtChannelId, member, true, loudAcknowledge);
|
||||
} else {
|
||||
// Join member to event
|
||||
memberList.push(member);
|
||||
@ -272,7 +297,7 @@ export const joinMemberToEvent = async (bot: Bot, interaction: Interaction, evtM
|
||||
const alternateList = removeLfgMember(getLfgMembers(evtMessageEmbed.fields[LfgEmbedIndexes.AlternateMembers].value), member.id);
|
||||
|
||||
// Update the event
|
||||
await editEvent(bot, interaction, evtMessageEmbed, evtMessageId, evtChannelId, memberList, maxMemberCount, alternateList);
|
||||
await editEvent(bot, interaction, evtMessageEmbed, evtMessageId, evtChannelId, memberList, maxMemberCount, alternateList, loudAcknowledge);
|
||||
|
||||
// Check if we need to notify the owner that their event has filled
|
||||
if (memberList.length === maxMemberCount) {
|
||||
@ -292,10 +317,12 @@ export const joinMemberToEvent = async (bot: Bot, interaction: Interaction, evtM
|
||||
}],
|
||||
}).catch((e: Error) => utils.commonLoggers.messageSendError('utils.ts', 'event filled dm', e));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
// No fields, can't join
|
||||
await somethingWentWrong(bot, interaction, 'noFieldsInJoinMember');
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user