Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New module: giveaway #73

Open
nmlorg opened this issue Aug 15, 2019 · 0 comments
Open

New module: giveaway #73

nmlorg opened this issue Aug 15, 2019 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@nmlorg
Copy link
Owner

nmlorg commented Aug 15, 2019

An admin will provide a list of items to be given away, and the bot will keep track of people calling dibs on them. At the end of an interval, any items with a single reservation will be assigned to the reserver. Any items with more than one reservation will be assigned randomly. (Alternative:  Find optimal assignments to maintain the least number of assignments per person?)

Presentation could be any of:

<admin>
  Here is our giveaway! Type /grab followed by a title to reserve one.
  A Cool Item
  A Great Thing
  Some Other Thing
<user1>
  /grab cool item
<BOTUSER>
  user1 reserved A Cool Item.

where users just type part of the text of the title after a predefined command, and the bot will match it (as leniently as possible) to the title of the item.

Or:

<admin>
  Here is our giveaway! Click the command after a title to reserve it.
  A Cool Item — /grab_cool
  A Great Thing — /grab_great
  Some Other Thing — /grab_other
<user1>
  /grab_cool
<BOTUSER>
  user1 reserved A Cool Item.

where each item has a separate command, which Telegram automatically linkifies in text, so the list's text is a little more cluttered but users just have to click.

Or:

<admin>
  Here is our giveaway! Click a title to reserve one.
  [A Cool Item](https://t.me/BOTUSER?start=/grab+cool)
  [A Great Thing](https://t.me/BOTUSER?start=/grab+great)
  [Some Other Thing](https://t.me/BOTUSER?start=/grab+other)
———
(private message)
<user1>
  /start
<BOTUSER>
  You reserved A Cool Item.

where each command is a deep link that sends the appropriate command to the bot as a private message, creating a private chat with the bot if necessary. This means users won't see each other reserving items, which could be a positive or a negative. It's also a little clunky—all Telegram clients force the user to change from the group chat view to the [potentially newly created] private chat view when activating a deep link, and the official Telegram client (but not Telegram X) forces users to click an extra button (with no additional labeling) before actually sending the command.

Or:

<admin>
  Here is our giveaway! Click a title to reserve one.
<admin>
  /giveaway
<BOTUSER>
  Giveaway Title
  [A Cool Item | /grab cool]
  [A Great Thing | /grab great]
  [Some Other Thing | /grab other]

where the admin inputs items into a list in the bot somehow, and the bot responds to a command (like /giveaway) to display the list in the group chat. Each item will be a callback button (like what's used for navigation in /events), rather than a line of text, and clicking on it causes the user to send essentially a private message to the bot, but that doesn't navigate them away from the group chat view (or require a private chat with the bot to even exist). The button UI uses a little more screen real estate, and unfortunately Telegram X conforms to Android's "Material" style for buttons, forcing button text to be in all caps, so this would be rendered (in Telegram X) as:

<BOTUSER>
  Giveaway Title
  [A COOL ITEM | /grab cool]
  [A GREAT THING | /grab great]
  [SOME OTHER THING | /grab other]

The initial implementation will focus on UI and data collection (presumably under giveaway's modconf), so an instance admin will have to extract the data manually at the end of the giveaway. After the user-facing UI has been ironed out, we can come back to things like storing the data externally, admin-facing UIs, etc.

@bhsgoclub

@nmlorg nmlorg added the enhancement New feature or request label Aug 15, 2019
@nmlorg nmlorg self-assigned this Aug 15, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant