From 4530a4fcda49e3f2f8077dd1b59eb44c0eea6c3e Mon Sep 17 00:00:00 2001 From: Benedikt Magnus <magnus@magnuscraft.de> Date: Fri, 5 Nov 2021 17:37:13 +0100 Subject: [PATCH] Added confirmation before deregistration. --- locale/de-DE.texts.json | 2 ++ scripts/utility/localisation.ts | 2 ++ .../wichtelbot/endpoint/definitions/state.ts | 2 +- .../wichtelbot/message/handlingDefinition.ts | 35 ++++++++++++++++--- 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/locale/de-DE.texts.json b/locale/de-DE.texts.json index 74f5dd5..248b688 100644 --- a/locale/de-DE.texts.json +++ b/locale/de-DE.texts.json @@ -2,6 +2,7 @@ "becameMember": "Herzlichen Glückwunsch, du hast dich erfolgreich zum Wichteln „{var.currentEventName}“ registriert.\nToll!\n\nWas nun? Nun wird gewartet, bis der Anmeldeschluss kommt. Dann wird gelost und du bekommst hier alle Informationen zu deinem Wichtel.\n\nDu hast einen Fehler gemacht oder etwas vergessen? Kein Problem, mit „ändern“ kannst du deine Angaben bis zum Anmeldeschluss jederzeit überarbeiten. (Achte allerdings darauf, dass alle Änderungen bis Registrierungsschluss abgeschlossen sein müssen, sonst bist du nicht registriert!)\n\nFrohes Hibbeln bis zum Auslosetag!", "changedInformation": "Angaben erfolgreich geändert. Du kannst jederzeit mittels „ändern“ die Angaben erneut anpassen.", "commandInfo": "\"{command.name}\": {command.info}", + "confirmDeregistration": "Bist du sicher, dass du dich vom Wichteln abmelden möchtest?", "contactingFailedResponse": "Ich konnte dich nicht erreichen, {contact.nickname}. Hast du Direktnachrichten von Servermitgliedern erlaubt?", "contactingTooEarly": "Die Anmeldephase beginnt erst am {date.day}.{date.month}.{date.year} um {date.hour}:{date.minute} Uhr.", "contactingRegistration": "Hallo, {contact.nickname}!\nSchön, dass du am 8ter Wichteln teilnehmen willst!\nSchreibe „registrieren“, um den Anmeldevorgang zu starten.", @@ -11,6 +12,7 @@ "contactingWhileRegistration": "Du registrierst dich doch gerade!", "countrySelectPlaceholder": "Land auswählen", "deregistration": "Schade, {contact.nickname}! Ich hab dich vom Wichteln abgemeldet. Wenn du wieder mitmachen möchtest, schreibe „registrieren“.", + "deregistrationCancelled": "Puh, nochmal Glück gehabt! Schön dass du dabei bleibst!", "goodAfternoon": "Guten Tag, {contact.nickname}!", "goodMorning": "Guten Morgen, {contact.nickname}!", "goodNight": "Schlaf schön, {contact.nickname}!", diff --git a/scripts/utility/localisation.ts b/scripts/utility/localisation.ts index 779788d..472eae9 100644 --- a/scripts/utility/localisation.ts +++ b/scripts/utility/localisation.ts @@ -35,6 +35,7 @@ interface Texts becameMember: TokenString; changedInformation: TokenString; commandInfo: TokenString; + confirmDeregistration: TokenString; contactingFailedResponse: TokenString; contactingTooEarly: TokenString; contactingRegistration: TokenString; @@ -44,6 +45,7 @@ interface Texts contactingWhileRegistration: TokenString; countrySelectPlaceholder: TokenString; deregistration: TokenString; + deregistrationCancelled: TokenString; goodAfternoon: TokenString; goodMorning: TokenString; goodNight: TokenString; diff --git a/scripts/wichtelbot/endpoint/definitions/state.ts b/scripts/wichtelbot/endpoint/definitions/state.ts index 3f77b97..a03d151 100644 --- a/scripts/wichtelbot/endpoint/definitions/state.ts +++ b/scripts/wichtelbot/endpoint/definitions/state.ts @@ -18,7 +18,7 @@ enum State InformationFreeText = 'informationFreeText', // As member: Waiting = 'waiting', // Waiting for becoming a wichtel. - ConfirmInformationChange = 'confirmInformationChange', + ConfirmDeregistration = 'confirmDeregistration', // As wichtel: MessageToGiftGiver = 'messageToGiftGiver', MessageToGiftTaker = 'messageToGiftTaker', diff --git a/scripts/wichtelbot/message/handlingDefinition.ts b/scripts/wichtelbot/message/handlingDefinition.ts index 97c8f82..88825da 100644 --- a/scripts/wichtelbot/message/handlingDefinition.ts +++ b/scripts/wichtelbot/message/handlingDefinition.ts @@ -377,7 +377,7 @@ export default class HandlingDefinition await this.informationModule.completeInformationGathering(message); } }, - // Change information: + // Waiting for Wichtel assignment: { state: State.Waiting, expectsComponentResult: false, @@ -388,7 +388,7 @@ export default class HandlingDefinition }, { command: Localisation.commands.deregistration, - result: Localisation.texts.deregistration, + result: Localisation.texts.confirmDeregistration, } ], handlerFunction: async (message: Message, result: TokenString): Promise<void> => @@ -398,13 +398,38 @@ export default class HandlingDefinition await this.generalModule.continue(message, State.InformationGiftTypeAsGiver, result, ComponentBuilder.giftTypes); await this.informationModule.sendCurrentGiftTypeAsGiver(message); } - else if (result === Localisation.texts.deregistration) + else if (result === Localisation.texts.confirmDeregistration) { - await this.generalModule.continue(message, State.New, result); + await this.generalModule.continue(message, State.ConfirmDeregistration, result, ComponentBuilder.yesNo); + } + } + }, + // Confirm Deregistration: + { + state: State.ConfirmDeregistration, + expectsComponentResult: true, + paths: [ + { + command: Localisation.commands.yes, + result: true + }, + { + command: Localisation.commands.no, + result: false + }, + ], + handlerFunction: async (message: Message, result: boolean): Promise<void> => + { + if (result) + { + await this.generalModule.continue(message, State.New, Localisation.texts.deregistration); + } + else + { + await this.generalModule.continue(message, State.Waiting, Localisation.texts.deregistrationCancelled); } } } - // TODO: Deregister command ]; public publicCommands: CommandDefinition[] = [ -- GitLab