Secret Santa
Secret Santa is the bot to host Secret Santas with on Discord.
Features
- Easy to set up. People can join by command or reaction, and are assigned a role upon joining.
- Supports latecomers. These can be assigned to each other or replace a Santa who has left.
- Anonymous communication between a Santa and their giftee (the one receiving their gift).
- Moderation. Get info about a specific participant, and ban them from the event if you must.
- Privacy. All data is encrypted and deleted 30 days after the Secret Santa has ended.
The bot uses slash commands. Some commands in DM use the >
prefix.
Quick Guide
/setup
to setup a Secret Santa./message
to create an invite message.- Participants use
>letter [text]
to write about themselves/what they want. (Participants use commands in the bot’s DM) /start
to start the Secret Santa.- Participants use
/read
to read their giftee’s letter. - Participants use
>submit [text]
to submit their gift. /end
to end the Secret Santa.- Participants use
/receive
to receive their gift. /destroy
to destroy the Secret Santa, deleting all data. Happens automatically 30 days after ending it.
Guide
Seting up a Secret Santa
After you have added the bot to your server you can create a Secret Santa using the moderator commands. To use these commands you need both the Manage channels and *Manage roles permission.
Use /setup
to set up a Secret Santa. The bot will walk you through all the available configurations.
Revealing
By default everyone gets their gift sent to their DMs, but you can also set the gifts to be revealed in the server instead.
Reveal channel
Use /reveal channel
in the channel where you want the gifts to be revealed.
When a reveal channel is set the bot will not automatically send the gifts to participant’s DM, and participants won’t be able to use /receive
until their gift has been revealed in the channel.
If you don’t want to use a reveal channel anymore you can use /reveal channel remove True
to remove the reveal channel.
Reveal type
Use /reveal what
to set what part of the gift should be revealed in the reveal channel.
By default this is all
, meaning the complete gift. But perhaps you have a Secret Santa where everyone makes art for each other. You want to show off the art, but the personal message that comes with that should be kept private. In that case you want to use images
to only reveal the images attached to the gift.
Or perhaps everyone was instructed to make a poem for each other, but the gift should be kept private. In that case you want to use text
.
After the gift has been revealed in the reveal channel the giftee to whom it belongs can use /receive
in DM to receive the complete gift.
Reveal name
Use /toggle-reveal-name
to turn on/off whether the name of the Santa should be revealed.
This is on by default, but you might want to have the participants guess as to who their Santa is after their gift has been revealed. When this is turned off ‘Santa’ will be used instead of their name.
This also won’t reveal their Santa’s name when they use /receive
in DM to receive the complete gift.
Have people join the Secret Santa
When you’re ready with setting it up you can start inviting people to join. Use /invite [text]
to create an invite with a message and a button that people can click to join. If no text
is provided for the message a default text will be used.
People who want to join should have ‘Allow direct messages from server members.’ turned on, or else the bot can’t send them a DM. This is on by default.
Write a letter
People who have joined can write a letter using >letter [text]
. This command, like with all commands for participants, is to be used in the bot’s DM. For writing the letter you will have to use the > command, as the slash-command doesn’t allow you to write multiple lines, nor does it allow you to edit your message.
What they should write in that letter is up to you as a host of the Secret Santa. In general, you probably want them to write something about themselves and what they like so that their future Santa will know what to buy or make. If file attachments are added when using the command then links to these files will automatically be added to the letter. As long as the Secret Santa hasn’t started yet they can reuse the command to change their letter.
If someone changed their mind about participating they can leave using >leave
in the bot’s DM. If they changed their mind again they can join the same way as they joined before. Whether someone can join again after the Secret Santa has started is based on what you set /toggle-latecomers
. This is on by default. If someone leaves after the Secret Santa has started they are automatically banned from joining again.
Start the Secret Santa
You can use /stats
(in your server) to see how many people still need to write a letter. Use /list letter
to get a list of participants who have yet to write a letter. Use /list all
to get a list of all participants. When you’re ready you can use /start
to start the Secret Santa. Everyone will be assigned a Santa. As a Santa the one you need to give a gift is your giftee, and you are the giftee of your Santa. Note that they are assigned in a chain. No one’s Santa is also their giftee, and it doesn’t matter if you have an odd or even number of participants.
If you only have a few participants the bot will automatically DM everyone their giftee’s letter. If you have lots of participants you should inform them that they can read their giftee’s letter using /read
. A taggable role set with /role
would come in handy for this. The reason for this is that rate limits will not allow the bot to DM many people in a short period.
With /list read
you get a list of participants who still need to read their giftee’s letter. Send them a personal reminder, or if they take too long use /ban [ID]
(in your server) to ban them from the Secret Santa. Note that the Secret Santa bot does no server moderation. They are not banned from the server.
You can unban participants using /unban [ID]
.
Discord ID
The ID-parameter is the Discord ID of the user. To get this ID you first need to turn on Developer Mode. In Discord go to User Settings -> Appearance -> Developer Mode. After you’ve enabled this you can right-click on a user to get their Discord ID.
Anonymous communication
Participants can communicate with their giftee using the command >write-giftee [text]
. Giftees can reply back using >write-santa [text]
. This is useful in case the Santa has some questions for the giftee.
If this feature is abused (e.g. spam, foul language) it should be reported to you, the host of the Secret Santa. Using the ID of the person complaining you can use /info [ID]
(in your server) to find out who their Santa and giftee is. You can then ban the culprit from the Secret Santa using the abuser’s ID.
Latecomers
If you have a bunch of people who joined after the Secret Santa had started you can assign them to each other using /assign-latecomers
. You can use this command multiple times, but only when you have 3 or more latecomers.
Abandoned
When someone leaves or is banned after the Secret Santa has started they leave their Santa without a giftee and their giftee without a Santa. The Santa is offered to switch to the abandoned giftee using /switch
. However, it might be the case that they already bought/made something for the giftee who left them. In that case, they can use /stay
to stay with their old giftee.
While the Santa is still deciding, or if the Santa has decided to stay with their old giftee, latecomers come in handy. A latecomer (who doesn’t have a giftee yet) will automatically be assigned as the Santa of the abandoned giftee. In turn, that latecomer still won’t have a Santa. If there is another latecomer it will be assigned to the other latecomer. This can be repeated for as many latecomers there are. If the Santa whose giftee abandoned them eventually decides to /switch
they will be assigned to the last latecomer in the chain, which closes the gap.
If this sounds confusing to you, don’t worry. It all happens automatically!
Submit a gift
When a Santa has bought or made the gift for their giftee they can submit it using >submit [text]
. If they have something physically sent to their giftees address the submission could simply inform them about it. Just like with letters the links to file attachments will automatically be added. This is useful if you made a drawing for example.
Even after the Secret Santa has ended participants can still submit their gift. However, they can’t edit their gift after their Secret Santa has ended.
You can use /list submit
to get a list of participants who have yet to submit their gift.
End the Secret Santa
Using /stats
you can see how many people have submitted a gift. When you’re ready you can use /end
to end the Secret Santa. If you have a reveal channel set, you can use /start-reveal
to get a button that allows you to show the gifts. If not, and you only have a few participants, then the bot will automatically DM everyone their gift. If you have lots of participants you should inform them that they can read their giftee’s letter using >receive
. Again the role comes in handy.
Destroy the Secret Santa
The letters written for the Secret Santa can contain sensitive information likes names and addresses. After everyone has submitted and received their gift you can use /destroy
to destroy the Secret Santa. This will delete all the relevant data from the database. A Secret Santa is automatically destroyed 30 days after it has ended.
Reset the Secret Santa
After you have started a Secret Santa you can always reset it. This brings it back to the state before you started the Secret Santa.