#making users only press an option once

1 messages · Page 1 of 1 (latest)

covert timber

I have a set of buttons with different options and want to know what i could do for preventing them to click the buttons if they already did.

heres my interaction buttons event function

client.on('interactionCreate', async interaction => {
    if (!interaction.isButton()) return
    
    const interactionButton = interaction.customId
    const interactionEmbedMessage = interaction.message.embeds.pop()
    const interactionEdit = new EmbedBuilder()
        .setColor(interactionEmbedMessage.hexColor)
        .setTitle(interactionEmbedMessage.title)
        .setDescription(interactionEmbedMessage.description)

    let interactionFields = interactionEmbedMessage.fields
    // the next if is for preventing them to interact once they did once
    if (!interactionButton.endsWith(interaction.user.id))
        return interaction.reply({
            content: 'you can only click once',
            ephemeral: true
        })

    switch (interactionButton) {
        case 'btn-0':
            interactionFields[0].value = (parseInt(interactionFields[0].value) + 1).toString()
            interactionEdit.addFields(interactionFields)
            break
            
        case 'btn-1':
            interactionFields[1].value = (parseInt(interactionFields[1].value) + 1).toString()
            interactionEdit.addFields(interactionFields)
            break

        case 'btn-2':
            interactionFields[2].value = (parseInt(interactionFields[2].value) + 1).toString()
            interactionEdit.addFields(interactionFields)
            break

        case 'btn-3':
            interactionFields[3].value = (parseInt(interactionFields[3].value) + 1).toString()
            interactionEdit.addFields(interactionFields)
            break

        default:
            break
    }

    await interaction.update({ embeds: [interactionEdit] })
})