GithubHelp home page GithubHelp logo

clefable's People

Contributors

eriq-augustine avatar mitchellwrosen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

clefable's Issues

More Intelligent Option Infrastructure

Options should be a lot easier to add.

Maybe automatic verification.

Perhaps making a child of command can take care of some of this.
(Now that I think about it, this is probably the best option).

Channel Preference API

Special behavior based of channels.

Must at least support something like silent or quiet mode.

Reload All

A command to reload command core and all util/commands.

Probably not the server, but maybe clefable.rb

Logging

We need some logging mechanisms.

I started some skeletons during other bugs, but nothing real.

Show Glossary

Show the entire glossary.

Will probably need email.

MyNotes

Either an ability to keep a set of favorite notes, or make them as favorites for east searching.

Would probably put implicit or personal tags on notes.

Clean up Email Replay

When a replay command is supplied an email, there is no need to escape the names with ^.
In the email,
[2012-06-28 15:23:20 -0700] ^eriq: whoa whoa
Should be
[2012-06-28 15:23:20 -0700] eriq: whoa whoa

Also wondering if it would be better to not include the -0700 at every line - maybe just a general note at the top:
"All times are recorded in -0700 (PST)"

Text Overflow doesn't always work

When there's text overflow and Clef splits up the message into multiple parts, parts 3+ are incorrectly done (they include duplicate text). It's always been the 3rd and up for me; never seen it on the second one or not on the third.

Example (not a terrible joke, either):
<Clefable_BOT> Joke #2427: A man has spent many days crossing the desert without water. His camel has died of thirst. He's crawling through the sands, certain that he has breathed his last, when all of a sudden he sees a shiny object sticking out of the sand several yards ahead of him. He crawls to the object, pulls it out of the sand, and discovers what looks to be an ash tray from an old car. He opens it and o
<Clefable_BOT> ut pops a genie.... But this is no ordinary genie. He is wearing a polka dot bow tie and a plaid sport coat. There's a dog-eared little book in the breast pocket with a blue cover. He has a pencil tucked behind one ear. "Well, kid," says the genie. "You know how it works. You have three wishes." "I'm not falling for this." says the man. "I'm not going to trust a used car salesman!" "What do you have to lose? You've got no trans
<Clefable_BOT> ve to lose? You've got no transportation, and it looks like you're a goner anyway! " The man thinks about this for a minute, and decides that the genie is right. "OK, I wish I were in a lush oasis with plentiful food and drink." _POOF_ The man finds himself in the most beautiful oasis he has ever seen. And he is surrounded with jugs of wine and platters of delicacies. "OK, kid, what's your second wish." "My second wish is t
<Clefable_BOT> ond wish." "My second wish is that I were rich beyond my wildest dreams." _POOF_ The Arab finds himself surrounded by treasure chests filled with rare gold coins and precious gems. "OK, kid, you have just one more wish. Better make it a good one!" After thinking for a few minutes, the Arab says: "I wish that no matter where I go a beautiful woman will want and need me." _POOF_ He's turned into a tampon. The moral of the
<Clefable_BOT> into a tampon. The moral of the story? If a used car salesman offers you anything at no cost, there's going to be a string attached s omewhere!

Metronome Command

Clefable will perform a random pokemon attack on a person!

USAGE: METRONOME

Result:
Clefable_BOT DoubleSlaps

Replay should support a time range

Suggested command structure:

replay -m
replay -t [time2, default to current time]

if you wanted to be fancy,
replay -t -m minutes

A supported
-c channel
would also be cool

Threading

Three Threads:

  1. Select/Wait (Input)
  2. Work/Computation/DB
  3. Output

Move Threads out of server.rb and clefable.rb

Besides some possible dependency issues, I don't see a good reason to keep the Thread code in server.rb

In fact, server.rb may be able to be entirely split up.

If there is a dependency issue, it may be able to be solved with a forward declaration.

Sleep in Main

There is an infinite sleep in init.rb (end of the main thread).

It would be better if we could go without this.

Perhaps we can have main stop itself.
Or maybe we could have each other thread own a reference to the main thread?

Debug build

There are some errors/warnings when running in debug mode (-d), clean those up.

Better Thread Error Recovery

Right now there is a rescue in every thread's context.

There might be a better way for error reporting.

Also, make sure that these rescues properly handle thread errors.

Kill

Kill the current command (output) queue.

This is important for when some jokers queues up a bunch of long commands that are killer on flood control.

Login

Allow level 1 and up admins to get a login on clef's machine.

Give them access to pretty much just the working source. Then they can do useful things like restart clef.

Investigate Sleep

There is a sleep at the bottom of every thread proxy's init().
This is so that the return doesn't happen before the thread is ready.

This is a bit messy, explore alternatives.

History Grep

Grep through the history and return results.

Local or global.

Take ruby regexes (or sql)

Be careful of injection.

Maybe provide a JSON query structure like:
{ query: '/foo/', start: 12341243, end: 12342000, user: 'eriq'}

Cloud Storage

Store, at minimum, some smaller, functionally-required data on the cloud somewhere. Primarily user accounts, so that even if the HDD dies, users can still be AUTH'd for full functionality of commands, even if the bulk of the data storage is missing.

`UPDATE

Have clef do a pull and reload all components (except probably init and server).

Allow the user to specify multiple variations of words

Particularly useful for verbs; allow us to specify different tenses. For instance, we should be able to have:
review, reviewed, reviewing
all link to:
The process by which one gets reamed in style, memory safety, and personal preferences.

Obviously, the best we could do is support a separated series of words (comma separated?) e.g.
clef: what -a review, reviewed, reviewing !

`HEALTH

Get clef's current health.

Include things like cpu, mem, ping.

Maybe also include status updates like: "On bare server, these commands will fail: ...".

Interrupt Handling

Not `kill. Like a sigint.

I don't even know if the signal is properly sent to the threads (from a systems standpoint, they should be).

Make sure sigints get to the threads, and the threads shut down properly.

Empty Tags

Note 19 has an empty tag, look into this.

Achievements

Clef should give achievements to worthy IRCers.

Example:
DOUBLE TROUBLE: two commits with nothing in between!

Unambiguous Shorthand

Disambiguate shorthand commands.

Ex: `h

There are no other commands that start with 'h', this can be unambiguously expanded to `help.

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.