Toxicable / ngbot

MIT License
6 stars 3 forks source link

Encourage user interaction - gamification #17

Closed Kunepro closed 6 years ago

Kunepro commented 7 years ago

Stack Exchange's badges and reputation system or Google Guide's levels are meant to encourage user interaction. Similar to those a bot on Gitter has been programmed to create a similar reward system. I'm referring to the bot on https://gitter.im/FreeCodeCamp/linux. This bot searches for strings containing the words "thanks" or other common variation of it and a mention to a user to give "brownies" to that user.

For example:

User1 @[user1] [date] [message] thanks to @[user2]

CamperBot @[camperbot] [date] user1 sends brownie points to @[user2]
[number][brownies emoticon] | @[user2] |[user's account page on CodeCamp]

Or:

User1 @[user1] [date] [message], thanks a lot @[user2]

CamperBot @[camperbot] [date] user1 sends brownie points to @[user2]
[number][brownies emoticon] | @[user2] |[user's account page on CodeCamp]

This system eventually would require a database to work. It should also be considered wether to merge angular/angular and angular/angular-cli reputation or not. Merging them might end up with more repositories wanting in, so I would suggest not to.

Toxicable commented 7 years ago

Sounds pretty good to me. Yes it'll need a DB, I think firebase would be the easy way to go.

I think there will be a few key points to this

Naming

Since it'll need a name for commands i'm floating the idea of ngbot points but feel free to suggest any other names rather than points

Leaderboards

I think it should also include a leaderboard function with a command similar to ngbot points or ngbot points leaderboard which should either post information like top points in the last month or total or other such leaderboard functions.

Rewards

Also once we have some more data on it, I think we'd be able to offer some sort of rewards to certain users who've done really well

Other notes

-To keep spam down, it should not post after each thanks but rather every 10 (or some other interval)

As for timeframe; I'm planning this feature for after the bot is live, which I plan to have have it live by 2 weeks from today (so by April 23rd)

Kunepro commented 7 years ago

Personally I don't like super heroes, but they seem to be the Angular's theme. They are in the Angular.io website background and also in the examples. Therefore for the name I suggest we find something pertinent to super heroes/villains. Mutagens? Crystals? Adamantium? Using "points" is too cliché. We could give the users the possibility to decide if they are heroes or villains ngbot side villain|hero. I'm definitely a villain.

As reward people could receive a random power every level.

F.e.: You start at level 1 with 1 random power after 1 "thanks". You get the second random power at level 2 with 10… then at 50… 100… This would also limit the spam, as the messages will be displayed on level up, not for every "thanks".

We could have a leaderboard "Good vs. Evil". For example ngbot leaderboard (heroes|villains)?, if neither "heroes" or "villains" is specified the leaderboard will display the top 10 from all.

Toxicable commented 7 years ago

Hmmm. Not certain i'm sold on the versus thing, could cause arguments/would be a mess to get people to join a side/who side do you give the points to if they don't, etc etc Definitely like the idea of something that's not the generic like points . I also like the idea of leveling up rather than just an aggregated total, slightly better way of managing spam.

cc @robwormald @lazarljubenovic @alxhub opinions?

lazarljubenovic commented 7 years ago

Let's not turn a bot which should try to help people into a game system that advanced users will use to feed their egos. I swear I will kill a cute puppy each time someone says "can you include thanks in your message and tag me?" (and it will happen).

Also let's first get the basic bot functionality running before even thinking about something as complex as this.

Toxicable commented 7 years ago

That's a fair point. However, as for getting basic functions out first, this is my top priority right now, just getting it running with basic commands, which is it close.

As for your criticisms about the system, I totally get what you mean about "can you include thanks in your message and tag me?" (and it will happen)." and I would also dislike encouraging that behavior, but we could take steps towards not having that happen like being more silent, or not awarding points when people ask for it, put filters can time based caps on etc etc. But there will always be the aspect where people will try abuse it and we'll just have to weigh that against the positive sides

lazarljubenovic commented 7 years ago

It's an interesting idea if the whole chatroom was created with idea of such bot, from the start. Dropping a bot that measures points in an existing, extremly active chatroom (most active? any data on this?) just doesn't fit for me at all. It will create too much clutter.