kellyirc / kurea Goto Github PK
View Code? Open in Web Editor NEWan irc bot framework - discuss with us in irc.esper.net#kellyirc!
License: MIT License
an irc bot framework - discuss with us in irc.esper.net#kellyirc!
License: MIT License
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!).
a syntax like "remind me every 2 minutes for 10 minutes to stir the noodles" would be cool.
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.
For example, when using it, people can use any command regardless of permissions. This is a problem.
It'd be nice to have a grunt task that bumps the module count (the third part of our semver), just so it actually changes from time to time.
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.
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.
Add a module that links to the repository so people can find it more easily.
This leads to confusion as to whether or not a module is loaded or not. It should just be shown as disabled if it is not in the database.
this is a problem
!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
Because we don't have an issue open for it yet.
this is a bit bad.
That thing had a ton of good commands
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.
it always returns undefined when it should always tell you everything is loaded
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.
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.
Once you break up with your gf, you can't let her keep the keys to your apartment!
GitUpdate should also support submodules if necessary. See this.
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.
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".
We used to have a comic generating bot that used this code: http://www.jibble.org/comicbot/
It'd be cool to have it again.
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.
Just in case there are module updates that need to be had.
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.
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)
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.
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
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.
For now it just says no definitions found.
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.
it probably shouldn't do that
And I have no idea why.
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()
There should be a shell command that allows direct access to the server / outputs results, ala the shell module we used to have.
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?
This way we can have all of our database stuff stored in one area. It shouldn't be too rough to change.
Modules that should require permissions (and what I think the associated group should be):
The bot should be able to auth to nickserv.
That one bug that's in irc.js needs to get fixed in our fork of irc.js, and kurea needs to point to that instead of the irc.js one.
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.
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".
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.
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)
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)
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.