jagrosh / GiveawayBot

🎉 Hold giveaways quickly and easily on your Discord server!
https://giveawaybot.party
Apache License 2.0
646 stars 302 forks source link

Feature Request: View current entrant list while giveaway is running #162

Open Cyshachiku opened 2 years ago

Cyshachiku commented 2 years ago

With the new set up of the giveaway bot, one can no longer see who is currently opted in to participate in an ongoing giveaway from Discord reactions. Instead, this is only accessible in a summary link AFTER the giveaway is done and a winner is selected.

Our server has a defined rule that a participant can be removed from a giveaway if they are an inactive member on the Minecraft server associated to it. It encourages those within our Discord to log in more frequently and not take advantage of the giveaways. This was fairly easy before because everyone could see who used a specific Discord reaction, and mods with the permission could remove reactions at ease. With the current set up only allowing us to see participants after the giveaway ends, this is no longer possible and the giveaway would have to be rerolled.

Normally we would take someone aside and remind them in DMs why their reaction was removed due to inactivity. This made it so no one was publicly called out and we could prevent confusion from rerolls ahead of time. Now, this is no longer an option. Additionally, one of our recent giveaways with the new button didn't allow people to opt back out, and the greroll command didn't work until the third or fourth try even with the new Apps feature.

jagrosh commented 2 years ago

There are 3 items to address here:

Removing users from a giveaway: Not being able to remove other users from the giveaway is an intentional consequence of the new button system. The primary goal of this giveaway bot is to be consistent for the users entering giveaways: they should know that if they can see a giveaway, they can enter it, and if they enter a giveaway, they have the same odds as everyone else to win (See #153). The ability to remove reactions on the old system could in theory break that second tenant, and it was likely abused by some admins to adjust the "odds" of a giveaway prior to drawing.

Opting yourself out of a giveaway you've entered: Not being able to opt out of a giveaway is an unintentional consequence that I am working towards solving, but the solution is not trivial. Due to ratelimits, only one action can be taken when a user presses the giveaway button, and I've deemed it more important to update the giveaway message entrant count than to display a confirmation message. A warning is shown if a user presses the button again (as no giveaway entrant count update is necessary, so the singular action can be used to send a new message instead of update an existing one). A potential solution is to show a "leave giveaway" button on that warning message. I am still figuring out the optimal way to handle this.

Showing the entrant list while a giveaway is running: This is another unintentional consequence, and I don't have a great solution to this. However, since it's intentionally not possible to remove users from a giveaway, I'm also not sure if this is really needed. If I come up with a good solution to this, I'm not opposed to adding it, but it isn't a priority.


In regards to your specific situation, I think the best solution is to shift the parameters for allowing people to enter giveaways. Instead of allowing all entries and removing users for inactivity, consider only allowing people to enter in the first place if they have a certain level of activity. Assuming you have some automated tie-in for roles or channel access, you could hold the giveaways in channels only visible to those with enough activity to merit entry.

Cyshachiku commented 2 years ago

Thank you! That all makes sense with how the current set up is, which I know still has some enhancements planned like with being able to leave a giveaway as you described.

Perhaps the best way to work around inactivity is to redefine which roles are able to see the chat, or just have the mods do more frequent activity checks.

Best of luck with everything!

Nzii3 commented 2 years ago

I feel like this is also an issue that ties with custom requirements. Like in my server, I have a custom requirement to have my bot in their server, which obviously isn’t traceable by GiveawayBot (it’s a bot support server and we give away free premium). And I used to manage the entries after a certain duration and check if people have added my public bot to their server. In which, I can’t do now since they aren’t viewable. Maybe a dashboard could be considered for server admins to manage entries before a giveaway ends that updates the database entries for that giveaway? I don’t know how hard that is but I’m sure you can do it because you’re a great developer. However, Web development is completely different than discord bot development.

jagrosh commented 2 years ago

As already stated, it is intentional that you can no longer remove users from a giveaway. If you need to enforce requirements, you need to enforce them via the visibility of the giveaway; if a user can see it, they can enter it.

XxHYFEExX commented 2 years ago

Hi @jagrosh, I was asked to post in here from the discord server. One issue I am having with the new slash update is not being able to tell when you have entered with reaction changes. My mods also like to see who has entered so they can remind people that haven't entered. Will there be any update to this?

jagrosh commented 2 years ago

There's 2 separate issues here:

not being able to tell when you have entered

This unfortunately cannot change. With slash commands, the bot only gets one reply to the interaction (the button click) that it won't hit substantial ratelimits on, so I've chosen to use that one reply to update the giveaway message with the entrant count. If you are unsure if you have entered, you can simply press the button again and let you know that you have already entered.

mods also like to see who has entered

This is also a tricky problem to solve, and I am still thinking about good ways to solve this. The giveaway summary does not exist until after the giveaway ends, and it cannot be edited, so it cannot be generated ahead of time. A message command to view current entries may be feasible, but for giveaways with a large number of participants this could be problematic, as the full list would be unlikely to fit within a single message.

jagrosh commented 2 years ago

Updating the title of this issue to reflect the feature that might be added. As noted before, removing entries is intentionally not possible.

partydragen commented 2 years ago

I upvote this, This have always been really important for me with is also one reason i stayed with the old system