shaunduncan / helga Goto Github PK
View Code? Open in Web Editor NEWOne chat bot to rule them all
Home Page: http://helga.readthedocs.org
License: Other
One chat bot to rule them all
Home Page: http://helga.readthedocs.org
License: Other
Or: 'allow for editing of reminders by specifying the channel(s)'
This needs no explanation
The oneliners plugin is a massive collection of stuff I didn't know where to previously put. Split things up into new plugins where possible.
Haiku and haiku should both work.
Some of them already have comments, but it would really nice if I didn't have to open up a browser just to know what gif i'm linking to.
I'd like to be able to ask helga about certain memes. I imagine this would come straight from Know Your Meme. Something like:
helga memeinfo look of disapproval
Don't just use a nick to give operator permissions to someone.
jveatch is on notice
http://bechdeltest.com/
http://bechdeltest.com/api/v1/doc
Either do this asynchronously, or add two commands: one to pull updates from api and store in mongo and another to query mongo for a given movie.
Our boss wants a weekly sharing of what we learned in the past week.
I have a hard time remembering when I learned a thing, and remembering a list of all the things I learned.
I'd like to eliminate the ensuing paperwork by asking Helga to remember when I say "TIL ..." Maybe she can report back during our IRC standup, or maybe just stick those utterances into a page on the Intranet for us to summarize.
Maybe this issue really is for a general-purpose utility for Helga to append a blob of text to a page on a Confluence wiki?
Just like the help menu, so that the whole list doesn't spam the channel
My recent change to make helga ignore case when responding to commands is also lowercasing haiku lines:
jveatch: helga haiku use fives CAP CAP CAP CAP CAP
helga: cap cap cap cap cap
etc, etc
I should be able to pip install helga
jheady: sduncan: can i request an improvement to helga? help help should PM the user, not the channel.
I think it would be really cool if @HelgaBot could respond to mentions and replies (in a sane way). This should only work if a twitter account is configured for tweeting haikus but should be configurable to be disabled
0.3.2
KARMA_SCALED_RANGE=(1,5)
Tweets are currently done synchronously. They should really be done asynchronously and then report back to the user/channel with the response.
helga's api is really terrible ... so maybe we should fix that and make plugins easier? This will mean a 1.0.
Plugins should have an optional rate limiter. I should be able to specify a rate limiter via plugin decorators that is equivalent to a maximum number of responses per minute, per channel.
@match('foo', rate_limit=5)
def this_is_noisy(*args):
pass
Don't use mongodb anymore
Calling on beetlejuice is nice, but wouldn't it be more fun if we could call on Biggie Smalls?
$ biggie smalls biggie smalls biggie smalls
$ You punk ass fool.
$ biggie smalls biggie smalls biggie smalls
$ All the time, I gots to deal with this shit. I'm in hell, minding my own business. Then the next thing I know, I'm in some kids bathroom.
$ biggie smalls biggie smalls biggie smalls
$ Why'd you summon me?
Some irc clients will hyperlink URLs in such a way that commas are tacked onto the end, which will 404 for some users. Remove the commas and use plain spaces instead.
Helga's documentation is ok for now, but it should probably have some better, more detailed documentation on the internals
jbruce: showme jbruce
helga: http://intranet.cmgdigital.com/display/~jbruce/Home
An easy way for folks to match up nicks with profiles on the wiki. Doesn't need to be "showme". "whois" is already in use though. Not sure if this is something that can be generalized so folks outside CMGd can use it.
Because of reasons
Some plugins use smokesignal to deal with callbacks, but it requires some confusing logic regarding imports. One should be able to import helga.signals directly. Also, it would be nice to have some predefined signals available.
Helga responds via PM for plugin help. She should respond with something like `/me whispers to ' if she was asked on a public channel
The helga.log
is a hacky sort of way I put together to handle a single log file. Instead, consider having a logging dictConfig type of configuration for various loggers.
Helga should store who added fives/sevens lines so after a haiku I can do something like helga haiku credits
and she'll respond with something like "This haiku brought to you by: , , "
Butthurt about possibly being referred to a as a butthurt dictator for life?
Did someone fill all the fives with your IRC handle and you're being pinged constantly?
Who added that sevens line "Well, your momma is so fat" which was unfortunately followed by the fives line "Her ass cancer smells?"
Find out the history of any line with...
$ helga haiku blame
It "git blames" each line of the last haiku in the channel w/ nick and date.
This really applies to when helga is set to reply with the first plugin response it receives. If one plugin does some work via a deferred and returns None, it will move along to another plugin. Right now this happens when JIRA and Reviewboard keywords both are in a message (assuming the JIRA plugin fetches ticket descriptions).
I think that if a plugin should need to do something with a deferred, there should be a rule that it raises a known exception that can prevent other plugins from running. Something like this
from twisted.internet import reactor
from helga.async import DeferredInProgress
def do_something_later():
return 'foo'
def my_plugin(*args):
reactor.callLater(60, do_something_later)
raise DeferredInProgress
If I mention the same JIRA ticket twice, helga shows two links instead of one
There's a fair amount of stuff in helga.plugins
that should be maintained in their own repositories. Example helga.plugins.giphy
and helga.plugins.dubstep
When I first wrote helga, the settings.py logic seemed like a good choice at the time. But now it's kind of a pain to use an environment variable set to an importable python module. I should be able to run helga with a path to a config file like helga --config=config.py
.
Other possible alternatives to python based configuration could be ini, toml, yaml, etc
I'd like to ask helga for more info about plugins. This should return any relevant docstring from the plugin class so that helga about foo
messages me with details
jhsiao: sduncan, also, she should take multiple extensions to disable
Contextual plugins should, by default, keep track of the things they provide some context for. This will reduce possibility of flood.
A lot of times, I say things like "thanks helga" in an IRC channel. Helga should recognize this and respond appropriately
There is a reminder I did not create but even though I am an admin I cannot delete the hash.
The bot replies with no errors.
Until the giphy api allows me to filter possibly inappropriate content, the giphy plugin should only work either via private message or on whitelisted channels.
I'd like to toss some shell script into the works in our Hudson/Jenkins jobs that will cause some announcement to happen in IRC. It would be nice to have an interface like this:
curl \
-d "target=#platform" \
-d "message=FE5 successfully finished deploying" \
http://yourmachine:9999/helga
and helga would say "FE5 successfully finished deploying" in the platform channel (joining it if necessary and leaving afterward if she wasn't there to begin with.)
I'm not sure what the best way would be to limit who is allowed to post such announcements to helga.
Giphy has an API for getting a random animated gif. More here: https://github.com/Giphy/GiphyAPI
Reminders set to occur at a specific time didn't account for DST
Right now I have documentation written as "virtualenv; git clone; python setup.py...". That's far from ideal. Helga is now packaged on PyPI, so there should really be puppet/chef/etc configs
Pull out all the noisy/extra plugins and have them in their own repo. Look at the Flask model for extension management and see about using a bit of that here
I'd like helga to name someone at random from those in the room, avoiding picking someone who was recently picked by a previous invocation. She should be able to guess that (nick)_nom or (nick)_afk is the same as (nick) when thinking about who has been recently picked. She should avoid picking someone marked as "away."
It's fine if she picks somebody who's temporarily AFK or on vacation without being "away," as she can be asked to pick again.
It would be handy to have a feature that would allow a running bot, upon a code change, to kill and reinstantiate itself.
Online code reloads would be even nicer, if we can figure out a mechanism to do that.
Showing help messages on a channel gets noisy. Doing helga help foo
should message the user directly rather than responding in a channel
The way the command regex is constructed, should a short version of a command appear in aliases prior to a more verbose one, only the short is matched. For example:
@command('foo', aliases=['b', 'bar'])
def foobar(*args, **kwargs):
pass
The command will never match 'bar', but instead will have the cmd argument as 'b' and that args argument as ['ar']. This is because the constructed regex looks something like (b|bar)(.*)
I'd like a plugin where one could configure helga to announce when someone has pushed commits up to certain branches of certain git repositories.
<helga> cmgdeploy just pushed 4 commits to branch master in storyville
<helga> datagrok just pushed 4 commits to branch CMS-1234 in storyville
<helga> it looks like sduncan just rebased and force-pushed CMS-1234 in storyville.
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.