34% of
28 tasks
completed.
21 open tasks:
-
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
-
Plugin:
...
Meta:
autoconf=False
name="Verbose Name"
description="""one paragraph of description
goes here.
"""
autoconf should be considered by generateconfig.py like this:
if plugin.hasattr("Meta") and plugin.Meta.hasattr("autoconf" and not plugin.Meta.autoconf:
#skip plugin
-
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
-
self.bot.config.has("mirrorto", "mirror")[2]
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
-
http://www.leeh.co.uk/draft-mitchell-irc-capabilities-02.html.
-
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.
!help
> available commands: !foo !bar ...
!help foo
> helptext
!help !foo
> helptext
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.
documentation: http://unixhelp.ed.ac.uk/CGI/man-cgi?crontab+5
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
http://docs.python.org/library/logging.config.html#configuration-dictionary-schema
Text Version