Coder Social home page Coder Social logo

kurea's People

Stargazers

 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

kurea's Issues

!wordcloud

it'd be neat to have a module that generates a word cloud based on a channel. Though, this would require being hooked in to an external webserver or service (like chartalog!).

Modules should be able to specify permissions per command

Much like usage and helpText, modules should be able to specify their default permission per command. Additionally, there needs to be a way, probably in the config file, to specify who (by the bots current authentication schema) owns the bot. This way we actually have someone to set permissions.

On top of this, most of the core modules will need to have appropriate permission sets applied.

modules per-channel

I think modules should be all opt-in per channel (ie, they're disabled for every channel by default, and people using the bot can toggle modules if they're an Op or greater). This would also allow for fine-grained control of what modules are available per channel, and would make the need for a !quiet unnecessary.

User Settings API

It'd be great if we could have a generic place to store user settings, like gender, timezone, etc. This way modules can take advantage of a users information if they choose to give it. Obviously we have to have a default as well, for when the user isn't in the database.

!repo

Add a module that links to the repository so people can find it more easily.

VoteModule

!vote call [optional time in minutes to cancel the vote] "question" answer1,answer2,answer3,...
!vote end (assuming the time was not specified)

!vote [x](or !v [x]) to vote on something

GrepModule

Because we don't have an issue open for it yet.

more channel management functionality.

We currently don't have any channel management commands. It would be good if we had a general mode command, as this would handle just about everything.

DB search module

It'd be fantastic to have a module that allows for the searching of the database, because, you know, things can happen and they're annoying to debug otherwise.

allow a module to specify a json file to load for a database

this would allow games like trivia to have all of their database stuff available in the repo for anyone to get.

additionally, there would need to be a !refresh-db command that would allow you to do this:

!refresh-db Trivia

and it would refresh the Trivia DB from the file.

Remove Permissions

Once you break up with your gf, you can't let her keep the keys to your apartment!

custom events emitted by modules

Modules should be able to emit custom events to every other module. These modules should only receive the event if they are on the same server.

chatroom mood

it'd be kinda fun if there was a module that kept track of the "mood" based on interactions between users (or not interactions), ie, one person ranting would be "frustrated" whereas a lot of comments indicating funny would be "amused".

allow channel-specific modules

It would be nice if there was a way to make some modules channel-specific.

For example, I have considered making a Phaser Docs module to quickly navigate the docs, however, it does not make sense to show this module anywhere else. This would help clean up and compartmentalize the module list per group.

Custom keybindings

Commands should have a key binding that defaults to ! but is customizable. It only needs to be one character, and if we can enforce that it is a symbol, that would be ideal I think.

Persistent Settings API

Instead of having to create a database for each module that only needs maybe a few persistent settings, it'd be better if we had a Settings API that did all that work.

This can either be a module with an API or some functions in the Module prototype (preferred)

TweetModule

If it is possible to change the twitter account name on the fly, then it would be cool to have a twitter module that could, well, tweet. and change its name.

!watch

A command to watch feeds would be nice, but finding a way to not hit duplicate entries is difficult. Also, it needs to not consume all available memory. Maybe use this: https://www.npmjs.org/package/feedsub

!give [item]

We should be able to !give the bot an item (obv. just a string), and every time we give it something, if it has something, it can give something back. Otherwise it can stockpile items.

Extend permissions to support groups

It would be helpful to be able to check permissions against hops/ops/owners, etc. If it isn't too difficult, it'd also be pretty cool for the owner of the bot to specify custom groups (ie, like we had elevated and such) and be able to add those groups to a module.

Remove modules when restarting because of update

The GitUpdate module should probably signal to the bot to unload all modules before killing itself, so that all destroy() callbacks for modules are invoked, so they can save any data that might need to be saved if they rely on doing it in destroy()

Shell execution command

There should be a shell command that allows direct access to the server / outputs results, ala the shell module we used to have.

List Permissions

Update PermissionsModule to list the permissions a user currently have

!permissions list -- list the sending user's permissions
!permissions list [user] -- you get the idea?

Permissions need to be set on modules

Modules that should require permissions (and what I think the associated group should be):

  • ConfigModule - core.developer.api
  • GitUpdateModule - core.developer.reboot
  • JoinModule - core.manager.join
  • PartModule - core.manager.part
  • PermissionsModule - core.owner.permissions
  • ToggleModule - core.manager.toggle
  • EchoModule - core.owner.send.message

Multiple routes

I like the idea of having a command change where it's output goes based on the route. I think we should consider this when checking routes. For example,

Moop, choose x or y would route the commands output to the channel.
!choose x or y would route the commands output to the channel.
!!choose x or y would route the output to a PM with the person who said it.

API API

Modules should be able to export an API that can be require()d by other modules.

There could be an API class backed by a promise, so no functions are executed until the API is "ready".

have webserver available for modules

There should be a way to cleverly host a light web server to serve webpages that can include logs, comics, wordclouds, or other interesting bits of information.

Possibly, Meteor will be the webserver of choice simply based on its client / server push capabilities. The advantages of this are having the website automatically update when the DB is changed. The downsides are that the templating system, at first glance, is not as powerful as angular.

Express is also a consideration. The advantages of this are: front-end templating, such as with angular. The disadvantages would include making a push system, or having to refresh a page to get new information.

reboot module

there should be a module that requires core permissions and allows the user to reboot the bot (ie, kill the bot - forever will kick in and reboot it)

Wordnik Module load issue

Here's the stack trace every time it loads:

data:    Main.coffee:30134 - There was a problem while loading /root/kurea/src/modules/util/WordnikModule.coffee
data:    Main.coffee:30134 - TypeError: Cannot read property 'defaultPort' of undefined
data:    Main.coffee:30134 -     at new ClientRequest (_http_client.js:50:54)
data:    Main.coffee:30134 -     at Agent.request (_http_agent.js:301:10)
data:    Main.coffee:30134 -     at Object.exports.request (https.js:129:22)
data:    Main.coffee:30134 -     at createRequest (/root/kurea/node_modules/swagger-client/node_modules/shred/lib/shred/request.js:417:23)
data:    Main.coffee:30134 -     at new Request (/root/kurea/node_modules/swagger-client/node_modules/shred/lib/shred/request.js:78:3)
data:    Main.coffee:30134 -     at Object.Shred.request (/root/kurea/node_modules/swagger-client/node_modules/shred/lib/shred.js:47:12)
data:    Main.coffee:30134 -     at SwaggerHttp.execute (/root/kurea/node_modules/swagger-client/lib/swagger.js:1138:25)
data:    Main.coffee:30134 -     at SwaggerApi.build (/root/kurea/node_modules/swagger-client/lib/swagger.js:84:25)
data:    Main.coffee:30134 -     at new SwaggerApi (/root/kurea/node_modules/swagger-client/lib/swagger.js:41:14)
data:    Main.coffee:30134 -     at new WordnikModule (/root/kurea/src/modules/util/WordnikModule.coffee:48:24)
data:    Main.coffee:30134 -     at reloadFileModules (/root/kurea/src/core/ModuleFinder.coffee:34:35)
data:    Main.coffee:30134 -     at loadFile (/root/kurea/src/core/ModuleFinder.coffee:46:25)
data:    Main.coffee:30134 -     at /root/kurea/src/core/ModuleFinder.coffee:97:23
data:    Main.coffee:30134 -     at Object.exports.walkSync (/root/kurea/node_modules/file/lib/file.js:170:5)
data:    Main.coffee:30134 -     at /root/kurea/node_modules/file/lib/file.js:174:15
data:    Main.coffee:30134 -     at Array.forEach (native)
data:    Main.coffee:30134 -     at Object.exports.walkSync (/root/kurea/node_modules/file/lib/file.js:172:15)
data:    Main.coffee:30134 -     at Object.buildModuleList (/root/kurea/src/core/ModuleFinder.coffee:89:10)
data:    Main.coffee:30134 -     at new ModuleManager (/root/kurea/src/core/ModuleManager.coffee:62:48)
data:    Main.coffee:30134 -     at new BotManager (/root/kurea/src/core/BotManager.coffee:54:28)
data:    Main.coffee:30134 -     at Object.<anonymous> (/root/kurea/Main.coffee:6:16)
data:    Main.coffee:30134 -     at Object.<anonymous> (/root/kurea/Main.coffee:8:4)
data:    Main.coffee:30134 -     at Module._compile (module.js:449:26)
data:    Main.coffee:30134 -     at Object.exports.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:124:25)
data:    Main.coffee:30134 -     at compileScript (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:166:29)
data:    Main.coffee:30134 -     at /usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:141:18
data:    Main.coffee:30134 -     at fs.js:258:14
data:    Main.coffee:30134 -     at Object.oncomplete (fs.js:97:15)

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.