Giter VIP home page Giter VIP logo

mascot-bot's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

mascot-bot's Issues

BeatzBot should only respond to commands when invoked

Rolling the dice right now rolls whenever someone says 'rtd' and a die configuration.

In order to specifically invoke that functionality, BeatzBot should only respond if invoked, such as @beatzbot roll 4d6 or something similar.

Create Birthday Celebration Behavior

On the day of people's birthday we should update the topic of the channel saying it is the person's birthday, and maybe have the bot mention it in #all-staff

Create Karma Behavior

Add the ability to keep track of a user's karma, via @user++ and @user-- messages, with an optional reason attached to the message. The implementation should probably mimic the old behavior in spikebot.

Random thought: Is it possible to get reactions on a message, as well as be notified when a reaction is added to a message? Might be another interesting way of giving a user karma, based off of a limit set of emoji that convey intent. ๐Ÿ‘ ๐Ÿ‘Ž ๐Ÿ’ฏ ๐Ÿ‘ โค๏ธ ๐ŸŽ‰ are all possibilities, mostly based off of the ones that GitHub uses as reactions to issues and comments.

One time introduction behavior

Upon first official startup in #all-staff, it should greet everyone with a little bit of information and link to this repo.

Karma should work on things, not just slack users

In the current iteration of the karma behavior, you can only give and take karma from slack users. We should allow users to give it to things as well. I'm thinking that it should be case insensitive and do something like:

  • thing++ gives karma to "thing"
  • "complex thing"++ gives karma to "complex thing"
  • "COMPLEX thing"++ gives karma to "complex thing"
  • C++ gives karma to "c"
  • "C++"++ gives karma to "c++"
  • We are going to talk to Michelle -- our account manager should not give karma to anything

@everyone tut-tut behavior

If someone uses @everyone in #all-staff, Beatz messages them privately and scolds them against doing it.

Create greet new user behavior

We should add a behavior that messages new Slack users and tells them to add their name and department to their profile. We can use the team_join event for this.

Add Rock-Paper-Scissors Functionality

Towards the end of our time in HipChat "ROSHAMBO" was added which allowed users to play Rock Paper Scissors with eachother while tracking score. This would be a neat addition to Beatz Bot, although care would have to be taken to ensure people couldn't see other's choices. Perhaps when you challenge someone, Beatz Bot PM's those people, and you reply to it with your choice? I don't know, but it would be neat!

Also, more dice!

behaviors settings should be able to pass in settings.

Currently when passing in behaviors to a bot, you can only pass in the constructor function. This is okay sometimes; however, behaviors might have various settings that you want to pass in with it. I propose that you should be able to pass in either the constructor function or an object that contains both the constructor function as well as settings. Such as:

var beatzBot = new MascotBot({
  behaviors: [
    TestBehavior,
    {
        behavior: SampleBehavior,
        settings: {
          foo: 'bar',
          baz: 'qux'
        }
    }
  ]

Add built-in help command

On !help or /help BeatzBot should inform a user of all the behaviors available as well as the Github repo where BeatzBot comes from.

@imjoshdean suggests implementing this on the bot itself rather than a behavior. Behaviors should have a description property that BeatzBot will use for this.

Additional feature suggestions:

  • !help <behavior> returns help for just that behavior.
  • !help list returns list of installed behaviors.

Create behavior room whitelist/blacklist feature

Some behaviors should only be allowed to work in specific rooms, such as ones that are meant for all-staff chat. I propose an interface along the following to make this happen.

settings = {
    whitelist: '*',
    blacklist: ['#all-staff', '#apple', '@imjoshdean']
}

settings = {
    whitelist: ['#all-staff', '#concom']
}

If a behavior attempts to do utilize a bot integration and there is a blacklist, if the person/room you are attempting to interact with are in the blacklist, it will prevent the behavior from doing anything. If there is a whitelist, it will check the whitelist for the same thing, if there is just '*' then it can be used everywhere.

Implement !shake

BronyCon slack has a series of shake lettered emoji, it would be fun to do something similar to the !clap functionality and create a !shake one as well.

Expected:

  • When a user types in !shake Word the output should be
    :sh-w::sh-o::sh-r::sh-d:
  • When a user types in !shake Some phrase the output should be:
    :sh-s::sh-o::sh-m::sh-e::blank::sh-p::sh-h::sh-r::sh-a::sh-s::sh-e:

This is to be implemented by @chibishibe

Ignore Commands In Certain Scenarios

In certain cases, commands should be ignored and not actually executed by beatz-bot. The main example would be in the case of a command being surrounded by back ticks (rtd 6d2), as that may generally be used when showing other users how commands work, or speculating on new syntax/commands.

It may also be desired that beatz-bot also ignores commands that are not at the start of a message ("... rtd should sum the values. Might look into that when I have a moment. (e.g. rtd 2d6 = You rolled 3, 2 (5))"), since it is likely that those commands are meant to be the subject of discussion, and not meant to be actually executed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.