Git Product home page Git Product logo

jeeves's People

Contributors

carusogabriel avatar daverandom avatar ekinhbayar avatar fabieno avatar gooh avatar ikariiin avatar jayphp avatar kelunik avatar kyrad avatar mega6382 avatar nessworthy avatar pcrov avatar peehaa avatar ralt avatar sgolemon avatar sjonhortensius avatar staabm avatar statikstasis avatar wes0617 avatar zvax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jeeves's Issues

Add ability to redirect commands to other users

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.

Improve changelog to get last commit from specified branch

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.

Add automatic user throttling

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.

add !!meme command

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 !!reminder 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!

Retrieve class methods

Currently we only support !!docs ClassName. Also implement !!docs ClassName::method to retrieve method docs.

Adding logic to Terminator

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?

Implement tweet command

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).

Keep track of regulars / bot admins

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

Add welcome command

Welcome command, JS room has one ... like they are better than us or somethin' ...

Add about command

Wouldn't be much about it. Just gives a brief sentence description about Jeeves, a link to its repo and its maintainer.

add !!plugin command

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.

Improve swordfight plugin

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.

v2 wishlist

List of things we want should we ever reach a v2 before getting bored with the project:

  • Add the ability for Jeeves to live in multiple rooms
  • Instead of letting plugins post error messages themselves let them throw some exception instead so something higher up the chain can post the error message (need to check whether I still want/need this)
  • Update readme

Implement package search fallback

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 !!help command

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`

Add !!translate command

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

Add admin !!mute [duration] and !!unmute commands

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.)

`CodeFormat` plugins tends to confuse people / is too spammy

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?

Translator migration

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.

CLI Command Testing

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?

Add xkcd command

No idea why that wasn't implemented as one of the first things

Add !!undo

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).

Add CVBacklogUI Support

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)


Room discussion about this: https://chat.stackoverflow.com/transcript/message/30380286#30380286

Detect w3schools.com links

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.

Manifest system

  • Allow plugins to exist in their own repos
  • Specify options supported by the plugin
  • Specify permissions supported by the plugin
  • Specify help text

Tweet fixes

  • retrieve the shortened url length daily
  • Spread out tweet over multiple messages when hitting the character limit
  • Upload images using the media api
  • Add reference using the places api
  • retweet linked tweets instead of posting them
  • handle nested chat posts?
  • respond with the oneboxed tweet instead of the "message posted" reply
  • convert tags to hashtags
  • add ability to add extra text to tweets

Improve ChatClient sanity checks before attempting to post things

Known issues/checks needed:

  • Check that single line message length is acceptable by the server (<=500 unicode code points)
  • Keep a history of the last message posted in each room and prevent attempts to post duplicate messages

Please add to this list if you find anything else.

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.