imjoshdean / mascot-bot Goto Github PK
View Code? Open in Web Editor NEWBeatz Bot is BronyCon's Slack assistant, at your service!
License: MIT License
Beatz Bot is BronyCon's Slack assistant, at your service!
License: MIT License
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.
There is an edge case where in someone can attempt to do the following.
> thing++
> ":thing:"++
In the sanitation code, this will boil down to the same sanitized string of thing
which is incorrect.
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
Depends on #1
This should follow a cron-like behavior, preferably with node-schedule
Depends on #1
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.
We need a way for users to interact with Mascot Bot in order to make configurable changes. We should come up with an API to handle this.
Upon first official startup in #all-staff, it should greet everyone with a little bit of information and link to this repo.
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 anythingGiving or taking away karma should be done in the open, we shouldn't grant people the ability to manipulate and abuse the karma system in an easy manner.
If someone uses @everyone
in #all-staff, Beatz messages them privately and scolds them against doing it.
Good thing we told everyone to have their department channels start with "dept-" huh
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.
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!
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'
}
}
]
It would be nice to see the best of the best and worst of the worst of karma. This should be doable with !list top
and !list bottom
and show the top/bottom 10.
They should be unescaped.
Simple Poll is simple, the problem is that they make it work via emoji, meaning the person who installed the app cannot vote.
This could be easily resolved by using Slack's message button API.
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.!clap omg -> o ๐ m ๐ g ๐
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.
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:
!shake Word
the output should be:sh-w::sh-o::sh-r::sh-d:
!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
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.
Currently if a bot command like user++
or !badges
is given in a thread, the output will be put in the channel rather than the thread. The output should stay in the thread rather than confusing the channel. :)
Ran into an issue today where one of our user's who submitted their information could not be found for some reason by the slack API.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.