room-11 / jeeves Goto Github PK
View Code? Open in Web Editor NEWChatbot for Stack Overflow
License: MIT License
Chatbot for Stack Overflow
License: MIT License
It would be nice to have a way to redirect commands to other users.
This prevent people from having to run the command and ping the person afterwards like here:
Danack - !!package rdlowrey/auryn
Jeeves - [ rdlowrey/auryn ] Auryn is a dependency injector for bootstrapping object-oriented PHP applications.
Danack - @someFolk I'd suggest checking that out.
Currently !!changelog gets the last commit from the master of given repo and the usage is like:
!!changelog ekinhbayar/Jeeves
We could use the master by default but if a $command->getParameter(1)
is given and is a valid branch, use that instead.
ie. !!changelog ekinhbayar/Jeeves fix/changelog
would get this as a result set.
See: http://chat.stackoverflow.com/transcript/message/29748612#29748612
Currently the result is something like:
[ Zootopia ] 2016, Byron Howard...
The rating of the movie, and possibly a lil' description would be a nice feature!
Cheers!
If a non-admin user makes too many commands within a short period of time (thresholds tbd, configurable per room) Jeeves should direct them to the sandbox room once and cease responding to them otherwise.
Connect Jeeves to a Meme generator, so we can easily create images for known memes, e.g.
Gordon: !!meme one does not simply add a meme command
would post a One Does Not Simply meme image captioned with "add a meme command"
Add a command to set reminders, e.g.
Gordon: !!reminder 5m Grab some beer!
After 5 minutes, Jeeves will respond with
@Gordon Grab some beer!
Currently we only support !!docs ClassName
. Also implement !!docs ClassName::method
to retrieve method docs.
Implement V8
Hiya,
Say if I ask Jeeves a question which could produce an expected output based on a calculation, would that:
a) Fall into the scope of this plugin (Terminator) and
b) Be something that would be nice to have?
For example, a question like Jeeves, do you like humans?
, if not predefined, could respond with something much like a magic 8-ball. where it picks an option randomly from a selection provided.
The main way I could think of doing that with the current plugin is to allow callbacks to be provided in the array of matches. The callback would be passed the original message and any captured groups, and would simply expect a string output.
That or some weird string syntax.
Thoughts?
Now that I have implement an admin list I was thinking about implementing a tweet command like:
!!tweet {url of message to tweet}
Only bot admins will be allowed to tweet. Current admin can be viewed using !!admin list
and current admins can add others using !!admin add {userid}
.
IIRC the room already has an twitter account (I think I lost the credentials though so if somebody could provide it, yes please).
ROs should be able to add bot admins.
Bot admins could have a couple more permissions like banning users from using the bot and (un)pinning messages.
This depends on #12
The Google results are rather spam than helpful. I think we should replace the results with a link to http://lmgtfy.com/.
Request that shit!
It would be nice if the bots has some way to store data.
Create command to retrieve canonicals
Welcome command, JS room has one ... like they are better than us or somethin' ...
Wouldn't be much about it. Just gives a brief sentence description about Jeeves, a link to its repo and its maintainer.
There have been breaking changes in https://github.com/ekinhbayar/IntervalParser.
When @ekinhbayar releases a new version we need to make at least !!reminder
compatible again.
Do other things use it yet?
Add a command to enable/disable/configure/list individual plugins, e.g.
Gordon: !!plugin list
Jeeves: {list of all plugins}
Gordon: !!plugin status giphy
Jeeves: Giphy is currently disabled
Gordon: !!plugin enable giphy
Jeeves: I can totally giphy now.
Gordon: !!plugin configure image-type=still
Jeeves: Setting image-type to still.
Gordon: !!plugin disable giphy
Jeeves: Ok, no more giphy, bro.
Trying to enable/disable an unknown plugin should result in something like this:
Gordon: !!plugin enable doesnt-exist
Jeeves: I dont know this plugin
Trying to configure an unknown setting should result in something like this:
Gordon: !!plugin configure invalid=foo
Jeeves: I dont know this setting. Try one of {list of valid settings}
Trying to enable/disable an already enabled/disabled plugin should simply give the regular response.
This command should be limited to admins obviously.
This command might make the !!help command redundant.
@Jeeves consider learning man /cc @PeeHaa.
I would say simply request http://linux.die.net/man/1/scp
Implement better insult matching.
Play around with Andrea's gist to see it works nicely and have a minimum matching threshold to not interfere with possible future conversational plugins.
List of things we want should we ever reach a v2 before getting bored with the project:
When a package could not be found in the !!package
plugin either fallback to searching for the package or perhaps have a dedicated search command.
Example: !!package nikic/fastroute
should be able to find nikic/fast-route
Add a command that will list all commands Jeeves is currently capable of handling, e.g.
Gordon: !!help
Jeeves: Supported commands: `about`, `docs`, `man`, `swordfighting`. Type `!!help command` to learn more about an individual command.
Gordon: !!help man
Jeeves: Lists the man page for a shell command. Usage: `!!man shellcommand`
Command that translates text from one language to another
Me: !!translate en de Speak Dutch to me
Jeeves: Praat Nederlands met me
working example hacked together. Consider doing away with the language is user is translating from, so:
Me: !!translate de Speak Dutch to me
Jeeves: Praat Nederlands met me
Occasionally many people will start abusing Jeeves all at once. It'd be handy if an admin/room-owner could put the kibosh on it for a while with a single command to restrict access in that room to only admins. All commands from anyone else during that time would be silently ignored.
!!mute would take an optional duration, after which Jeeves would automatically !!unmute. An admin could use !!unmute to cancel it early at any time. If a duration isn't given Jeeves would stay muted until told otherwise.
A !!mute 30 minutes
or thereabouts should be enough to quash the annoyance when too many people get a little too excited, without needing to hand out temporary bans to each person individually (or deal with the associated begging for unbanning that follows.)
I've seen a couple of code format messages from Jeeves yesterday where it resulted in a confused users instead of a nicely formatted code block.
The latest example was a post by Ekin which resulted in the following edit history:
Ekin
yst 9:59 PM
deleted this message
Ekin
yst 9:58 PM
edited: hey, would this fail somehow to unset the array before filling it? `unset($array); while($query->fetch())[ $array[] = $element; }
Ekin
yst 9:58 PM
edited: hey, would this fail somehow to unset the array before filling it? unset($array); while($query->fetch())[ $array[] = $element; }
Ekin
yst 9:57 PM
said: hey, would this fail somehow to unset the array before filling it? unset($array); while($query->fetch())[ $array[] = $element; }
Perhaps we should only let it trigger if the message starts with php code keywords. This doesn't prevent all people from dumping unformatted code, but it also doesn't result in confused users trying to fix their messages in broken chat mark down.
Thoughts?
Update the README to reflect the newly introduced hard dependency.
Jeeve's Microsoft Translator API subscriptions will be canceled on April 30, 2017.
Plan should be made for migration to Microsoft Translator on the Azure portal.
There are many questions about JS / CSS, not only PHP. That way, we can easily link people to MDN.
http://chat.stackoverflow.com/transcript/message/29718374#29718374
Create command which uses 3v4l
Goochle needs love, a (lowish, tbd) chance of changing the tense of verbs would be right up its alley.
It would be pretty useful to implement a way to test commands that don't require an SE connection/functionality from the CLI.
Can we please get something to support this?
No idea why that wasn't implemented as one of the first things
Would help with things like #62
Implement !!undo
command which delete either the last message of Jeeves (!!undo
), deletes the last n message of Jeeves (!!undo n
) or a specific message (!!undo messageid
).
Feature Request
Since we no longer have chat support for the CVBacklogUI I was thinking we can utilize Jeeves to monitor the chat and add cv-pls
entries to the backlog. We had originally talked about eventually setting up some sort of central database (flat-file or sqlite would suffice) which multiple services (cv-pls plugin, backlog, etc) could connect to for cv-pls use. I have chat parsing code already available which should be easy to add to Jeeves. This way I don't need to drop chatlog support. I'll have more free time come summer to finish the backlog v2. Let me know if this is something we want to do. =o)
Jeeves should respond to messages containing links to w3schools.com with a ping and reping all people pinged in the message and explain that w3schools.com shouldn't be used. Include a link to http://www.phptherightway.com/ if the article is about PHP, otherwise maybe MDN or other links.
Jeeves internal APIs, and SE "API"s that we use.
Show also the voting results when invoke !!rfcs
Known issues/checks needed:
Please add to this list if you find anything else.
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.