1###
2# Copyright (c) 2003-2005, Daniel DiPaolo
3# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions are met:
7#
8#   * Redistributions of source code must retain the above copyright notice,
9#     this list of conditions, and the following disclaimer.
10#   * Redistributions in binary form must reproduce the above copyright notice,
11#     this list of conditions, and the following disclaimer in the
12#     documentation and/or other materials provided with the distribution.
13#   * Neither the name of the author of this software nor the name of
14#     contributors to this software may be used to endorse or promote products
15#     derived from this software without specific prior written consent.
16#
17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20# ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27# POSSIBILITY OF SUCH DAMAGE.
28###
29
30from supybot.commands import *
31import supybot.plugins as plugins
32import supybot.ircutils as ircutils
33from supybot.i18n import PluginInternationalization, internationalizeDocstring
34_ = PluginInternationalization('Dunno')
35
36class Dunno(plugins.ChannelIdDatabasePlugin):
37    """This plugin was written initially to work with MoobotFactoids, the two
38    of them to provide a similar-to-moobot-and-blootbot interface for factoids.
39    Basically, it replaces the standard 'Error: <x> is not a valid command.'
40    messages with messages kept in a database, able to give more personable
41    responses."""
42
43    callAfter = ['MoobotFactoids', 'Factoids', 'Infobot']
44    def invalidCommand(self, irc, msg, tokens):
45        channel = msg.args[0]
46        if irc.isChannel(channel):
47            dunno = self.db.random(channel)
48            if dunno is not None:
49                dunno = dunno.text
50                prefixNick = self.registryValue('prefixNick', channel)
51                env = {'command': tokens[0]}
52                self.log.info('Issuing "dunno" answer, %s is not a command.',
53                        tokens[0])
54                dunno = ircutils.standardSubstitute(irc, msg, dunno, env=env)
55                irc.reply(dunno, prefixNick=prefixNick)
56Dunno = internationalizeDocstring(Dunno)
57
58Class = Dunno
59
60
61# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
62