Roadmap for version 1.0.1 Expand all | Collapse all
- FS#84 - titleparser in url.py has problems with some titles Expand Collapse
20:53 <@allo> http://blog.andreas.org/display?id=6
20:53 <!OtfBot> [Link Info] Compiler Construction: display
<title>Sex, Drugs & Compiler Construction: display</title>
as our code does not do anything fancy there, this seems to be a problem with HTMLParser. Maybe another title-parsing method is better?
Roadmap for version 1.1 Expand all | Collapse all
- FS#21 - deprecate chatMod Expand Collapse
evaluate if we really need a plugin baseclass (at the moment for .setLogger), if needed create lib.plugin, which can be extended by services i.e. ircClientPlugin, if needed. But maybe its just cleaner to leave Plugin-Classes without forced baseclass (apirunner already uses getattr to check if the needed methods are available instead).
At least plugins for other Services than ircClient should not use chatMod with all its functions as baseclass.
- FS#25 - rate limit the command callback Expand Collapse
rate limit the command callback, maybe on per user basis.
an option could be to tweak register_callback by adding an rate_limit parameter, so a plugin could decide itself, how many commands (query lines, etc.) it will process per time unit for a user.
another option is to leave the rate limiting to the plugins and implement it in the most important ones. or provide an rate_limit helper, which can be used by plugins.
- FS#31 - add channel names to log Expand Collapse
add an option to add the channelname to the log. change logging calls at the most important places.
- FS#33 - youtube: replace by rsssearch Expand Collapse
use youtube.py to build a rsssearch.py plugin, which can search arbitrary rss-enabled pages. provide an example with youtube configured.
- FS#37 - add a Meta class to plugins and services Expand Collapse
description="""one paragraph of description
autoconf should be considered by generateconfig.py like this:
if plugin.hasattr("Meta") and plugin.Meta.hasattr("autoconf" and not plugin.Meta.autoconf:
- FS#40 - add decorators class for some often used tasks Expand Collapse
i.e. a decorator for config.get, which sets the pluginname.
- FS#41 - add clearer methods to config.has Expand Collapse
is not as nice as it could be.
maybe return a class, which has __getitem__ as the result now does, but provides some nice functions as .issetinNetwork(network)
- FS#51 - Clean up config Expand Collapse
Remove "." from config-keys and get a clearer tree structure
- FS#54 - Implement CAP Expand Collapse
- FS#60 - Query channel modes on join Expand Collapse
To have a full view of the channel status it is necessary to query all channel modes and all available lists (eg ban, ban exception and so on)
- FS#63 - Autoreload datafiles Expand Collapse
Monitor files with FAM or sth related and reload them, if changed.
- FS#68 - Decide about testing framework Expand Collapse
doctests, unittests, twisteds trial or something customized?
- FS#75 - tracking of channelmodes (especially +b) Expand Collapse
the bot does not retrieve the list of banned users on join. So it had an error on /mode -b user until [a8ed3ad].
this is fixed, but the bot should track banned users, too.
- FS#77 - !help command Expand Collapse
a !help command which answers with a list of available commands or help to a specific command.
> available commands: !foo !bar ...
some register_ctl_command like framework for the plugins to register the help function.
or via registerCommand (instead of callback) and displaying __doc__ of specific command callbacks (only for plugins with static commands like !8ball but not like commands plugin)
- FS#86 - Use Unicode wherever possible Expand Collapse
Use Unicode for all suitable I/O. Everything that leaves the bot should be Unicode and every input should be Unicode by default.
The only exception should be when the used protocol does not support Unicode.
- FS#87 - Make the bot multilingual Expand Collapse
Make the whole bot multilingual and never use any hard coded strings to communicate with the user.
This involves changing quite all plugins.
All text strings should at least be provided in English.
- FS#91 - Clean up tcpServer service & svn-push plugin Expand Collapse
Clean up the tcpServer service and its only plugin svn-push if we want to include it with v1.0.
- FS#92 - Implement cron-like scheduling for tasks Expand Collapse
Make a function in the scheduler service to enable some things to be run periodically at a given time. This could be useful eg. for the ircClient.log plugin to change the day.
5 values: minute hour day-of-month month day-of-week
* means "anything"
day-of-week: TLA or numbers, where 0 and 7 both are sunday.
items can be comma-seperated lists,
each item of a list can be:
- a number: i.e 5
- a range: i.e. 6-23
- a modulo-range: i.e. */2 2-12/2
ranges should be easy to do, just use range(from, to+1, modulo).
the hard part is date-math, as example calculating the next "friday the 13th" without enumberating all days from now to then.
Especially tricky with leap-years, so it would be good to handle most of the calculation with date-functions and not with own calculations.
our api could be something like cronCall(minutes=None, hours=None, days=None, months=None, day_of_week=None), where None means "*"
- FS#94 - adapt plugins to the color-lib Expand Collapse
we have since some time a color lib, see
FS#80. Some plugins still need to be adapted to use it.
- FS#96 - simple ignore-list support for all callbacks Expand Collapse
something like ircClient.network.ignore: ["nick", "nick2"] to have an ignore function for other bots and avoid things like this:
21:27 < annalisa> http://www.youtube.com/watch?v=iugkT4lvzCc&feature=youtube_gdata - The Christmas Song - Owl City *with lyrics*
21:27 <!OtfBot> [Link Info] YouTube - The Christmas Song - Owl City *with lyrics*
and then just do not invoce the callbacks msg/query/privmsg if the nick is on the ignorelist.
- FS#109 - Logging Config Expand Collapse
add a logging config dict somewhere
Roadmap for version 1.2 Expand all | Collapse all
- FS#3 - access rights based on flags Expand Collapse
each service/plugin should be able to register access-right-flags like "can_add_feed" in feedmod. the auth service should store these access-tags in the User-object. There should be a decorator @has_right("can_add_feed") to prefix plugin functions with.
- FS#35 - Webinterface for config Expand Collapse
Webinterface for config
- FS#39 - Better encoding handling Expand Collapse
at the moment, the bot should use intern utf-8 strings (.encode("UTF-8"), with helper functions as sendmsg(..., encoding="myencoding").
Maybe it would be better using unicode(...) object instead of unicode encoded normal strings.
- FS#62 - Better handling for confidential data in config Expand Collapse
Find a better place to store passwords and private keys. Maybe in another file or encrypted/hashed some way