Giter Site home page Giter Site logo

tokbot's Introduction

Tokbot

This is a little factoid bot, initially created for use in vaperhangout in Freenode.

Installation

Clone the repository:

git clone [email protected]:jaketnotjacob/tokbot

Install the dependencies:

$ bundle install

Build the database (and tables):

$ rake db:create

======= Create the config file using the template:

$ cp config/config.example.yaml config/config.yaml

Modify this file to your needs before running.

Usage

Run the bot using (either):

$ bundle exec tokbot

or simply... $ tokbot

Development

Please follow the development model A Successful Git branching model (Vincent Driessen) when working on this project. We feel that this is the best way to keep the tree nice and tidy for the time being (though we are always open to suggestions!).

Bug reports and pull requests are welcome on GitHub at https://github.com/jakenotjacob/tokbot.

License

The gem is available as open source under the terms of the MIT License.

tokbot's People

Contributors

jakenotjacob avatar bryceroesner avatar

Stargazers

 avatar  avatar

Watchers

James Cloos avatar tomf avatar  avatar  avatar

Forkers

bryceroesner

tokbot's Issues

Factoids with arguments

As Symmetry pointed out, it would be nice to have factoids also accept optional arguments to restrain unnecessary information. IE -- "!battery 25r" would show all pertinent information (possibly: description, specs, links), but the more explicit "!battery 25r price" would be available as well.

Might need to look into if factoids need categories... ("!25r ..." vs "!battery 25r ...".)

TO THE PLUGIN MOBILE

After checking out code from Supybot, and having some thoughts on removing the hardcoded dispatch table entirely, I'm looking into moving all features into a plugin architecture.

Should be on the develop branch for awhile until it checks out.

ipv6 hostname parsing

Haven't touched this base in awhile or checked on the bot, but noticed what looked like an issue with parsing users with a hostname...

Would be easier to read if... I had been timestamping error logs! Will be mentioned in the next issue posting.

Rake Tasks

Need to setup Rake Tasks for creation, deletion, etc of the database. Possibly for config file as well (regenerate skeleton, duplicate to backup etc.).

Error logger: timestamping

Near-pointless to have error-logging without timestamps; though how it looks so far is decent enough, this would make it actually worthwhile.

Public Log Display

Logs will be view-able at a sub-domain such as logs.ooonter.net and/or vapebot.ooonter.net.

Function Timeout

PM Only Command
!timeout
Allows for Devs, Admins, and OPs, to temporarily disable a function if it is being abused by the channel.

Refactor of epic proportions... magnitudes... world changing things!

After asking folks in #ruby for a code-review as I felt the code is sub-part (hey, all it was written over an evening!) there were many insights/suggestions to refactor the code.

Primary issue I want to address is fixing modules/mixins to work as they should (as 'mixins'), as well as making the code more follow "ruby gem" standards.

I'll either be making a new branch to fix this, or possible a full-rewrite. We'll see in the next week.

Factoid to user

Add in factoids to directly address a user.

ie - "!somefact | someuser" will result in the user being 'announced': "username: Factoid description."

Private Channel

Command can be run from the Channel, or Private Message.
User types !talk ... VapeBot joins random, unused channel, sets modes +pri, and invites the person who initiated the command, and all nicks mentioned in the command.

URL shortening

Need to look into URL shorteners for factoids: goo.gl seems like it would be best to use. Just need to see about parsing "page titles" so when factoids are announced, the page title is sent with the short-URL. (Better to be dynamic than static here?)

Plugins and Factoids conflict with names

Not sure what happens as I haven't tried yet... but I know that Plugins and Facts have conflicts when it comes to names: If a factoid shares a name with a plugin method, something fucky will happen.

It needs to be decided which holds precedence, the Plugin method, or the Fact. and that will determine the logic (who is at fault for having the same name, error saying they need to change their method name).

This needs to be discussed, so all of you please think about this. @cyberfawkes @stevewillows @symmetryrtemmys

Command queue

Need a global (per channel?) queue for filtering spam requests as well as prioritizing requests. Need to decide if 'single user spam'/'aggregate' warrant differentiating.

Do we weigh commands on enqueue? Ie - Factoids vs plugins, etc.

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.