mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-12-25 04:02:46 +01:00
Removed CHANGELOG and TODO, not very useful these days
This commit is contained in:
parent
471397616b
commit
85e7e3ae05
209
CHANGELOG
209
CHANGELOG
@ -1,209 +0,0 @@
|
|||||||
* Implemented the FreeBSD module for searching ports.
|
|
||||||
* Implemented the Unix module for *nix-specific stuff.
|
|
||||||
* Implemented a few more commands for the Http module.
|
|
||||||
* Changed names of modules to follow a standard convention.
|
|
||||||
* Implemented @morehelp system.
|
|
||||||
* Gave modules a .public attribute to determine if they should
|
|
||||||
be in @list.
|
|
||||||
* Made threaded callbacks nestable :)
|
|
||||||
* Removed 'commands' attribute/complication from irclib.Irc.
|
|
||||||
|
|
||||||
2002-Sep-03 Jeremy Fincher <jemfinch@users.sourceforge.net>
|
|
||||||
|
|
||||||
* Version 0.60.0
|
|
||||||
* Fixed TONS and TONS and TONS of bugs.
|
|
||||||
* Included sample.conf, to show what a config file should look like.
|
|
||||||
* Data for supybot/data has been separated out into its own package to
|
|
||||||
decrease upload/download times.
|
|
||||||
* A new Anagrams module has been added, as has a new Notes module.
|
|
||||||
* All classes are new-style classes now.
|
|
||||||
* I wrote a new reload function that both works more efficiently (no
|
|
||||||
need to keep a cache of old objects anymore), more consistently (I can
|
|
||||||
use new-style classes now), and in less code (it's much simpler the way
|
|
||||||
it works). This is a big gain.
|
|
||||||
* I've written the beginnings of a ChannelStats class that handles the
|
|
||||||
"seen" command, and later will collect information about different
|
|
||||||
messages (how many JOINs, TOPICs, QUITs, etc.) and different stats like
|
|
||||||
how many characters, words, messages sent to a channel in toto.
|
|
||||||
* COMMAND NESTING R0X0RS!!!
|
|
||||||
* Improved the telnet REPL slightly, a better login, printing, etc.
|
|
||||||
* Improved the command-line version of the bot.
|
|
||||||
* Added several new commands: xor, cfactive, version, crypt,
|
|
||||||
timecommand, last, nslookup,
|
|
||||||
|
|
||||||
2002-Aug-27 Jeremy Fincher <jemfinch@users.sourceforge.net>
|
|
||||||
|
|
||||||
* Version 0.5 -- We're at least halfway to 1.0 :)
|
|
||||||
* Again, fixed TONS AND TONS AND TONS of bugs.
|
|
||||||
* callbacks.Privmsg.reply is no longer implemented via an exception;
|
|
||||||
subclasses can now self.reply more than once.
|
|
||||||
* Minor API change in callbacks.Privmsg.getArgs; getArgsLastOptional
|
|
||||||
has been removed in favor of the more-flexible optional keyword arg to
|
|
||||||
getArgs.
|
|
||||||
* Added several commands: exec, (un)setdefaultcapability, (un)settrace,
|
|
||||||
calc (in FunCommands)
|
|
||||||
* Added cdb library for constant databases that'll be independent of
|
|
||||||
platform.
|
|
||||||
* Added an asyncore-based interpreter via a socket that lets you telnet
|
|
||||||
into the bot and execute code in the bot process. Very useful for when
|
|
||||||
I break things and need to reload but can't talk to the bot anymore :)
|
|
||||||
* plugins.Forums is *really* useful :)
|
|
||||||
* plugins.Http is getting useful :)
|
|
||||||
* TONS of bugs fixed!
|
|
||||||
* callbacks.Privmsg now has a "threaded" attribute that you can set if
|
|
||||||
you want your subclass to spawn a new thread for every command.
|
|
||||||
|
|
||||||
2002-Aug-21 Jeremy Fincher <jemfinch@users.sourceforge.net>
|
|
||||||
|
|
||||||
* Version 0.37.0 -- enough bugs to warrant a new minor release :)
|
|
||||||
* Fixed ***TONS*** of bugs.
|
|
||||||
* Added LICENSE to the top of all .py files written by me.
|
|
||||||
* Added plugins/parter.py, which automatically parts a channel on JOIN.
|
|
||||||
Useful for networks where, to determine who's a bot, they send everyone
|
|
||||||
to a channel such as #botsmustgo and akill those who don't leave.
|
|
||||||
* Added plugins/http.py, which hasn't been tested because I don't have
|
|
||||||
threads on this Python install.
|
|
||||||
* Made FunCommands.port work in reverse, too. That's why the size of
|
|
||||||
this tarball is significantly increased.
|
|
||||||
* Added plugins/moobot.py, a duplication of some of the functionality
|
|
||||||
of moobot, another bot written in Python.
|
|
||||||
* Made ircutils.nick class, to support irc-case-insensitive comparison
|
|
||||||
of nicks (and hashing) automatically.
|
|
||||||
* Added unit testing framework for classes subclassing
|
|
||||||
callbacks.Privmsg.
|
|
||||||
|
|
||||||
2002-Aug-07 Jeremy Fincher <jemfinch@user.sourceforge.net>
|
|
||||||
|
|
||||||
* Version 0.36.3 (this header forgotten in the real release)
|
|
||||||
* Ok, fine. I'm using List Comprehensions now. Happy?
|
|
||||||
* Changed conf.makeClass to use imp instead of exec.
|
|
||||||
* Changed traceback logging over to a modified text form of cgitb.
|
|
||||||
* Added "find" to FactoidsCommands.
|
|
||||||
* Added "capabilities" and "auth" and "unauth" to UserCommands.
|
|
||||||
* Lots of little bugfixes.
|
|
||||||
|
|
||||||
|
|
||||||
2002-Jul-31 Jeremy Fincher <jemfinch@users.sourceforge.net>
|
|
||||||
|
|
||||||
* Version 0.36.2
|
|
||||||
* A whole lotta bug fixes, in general.
|
|
||||||
* Fixed bug in FunCommands.timefun.
|
|
||||||
* Added 'reconfig' command to OwnerCommands, to configuration changes
|
|
||||||
can be enacted without restarting the bot.
|
|
||||||
* Added 'protected' to the default turned-off capabilities in an
|
|
||||||
IrcChannel.
|
|
||||||
* Fixed callbacks.ChannelEnforcer so it wouldn't enforce MODES against
|
|
||||||
the sender of the MODE itself).
|
|
||||||
* Fixed username to make it lookup the hostmask of a nick given to it.
|
|
||||||
* Fixed bug in sections command, and moved it to privmsgs.UserCommands
|
|
||||||
since it's referenced by OwnerCommands.unload.
|
|
||||||
* Fixed what I hope is the LAST bug in the help command.
|
|
||||||
* Added users/channels default arguments to ircdb.checkIgnored and
|
|
||||||
ircdb.checkCapability so they don't *have* to rely on global state.
|
|
||||||
* Added CTCP SOURCE command.
|
|
||||||
|
|
||||||
|
|
||||||
2002-Jul-31 Jeremy Fincher <jemfinch@users.sourceforge.net>
|
|
||||||
|
|
||||||
* Version 0.36.
|
|
||||||
* Added makeFactoids.py and dumpFactoids.py to the tools/ subdirectory
|
|
||||||
to facilitate the transfer of the bot from one Python installation to
|
|
||||||
another.
|
|
||||||
* Added Logger, a per-channel logger that logs rather similar to mIRC's
|
|
||||||
channel format.
|
|
||||||
* Fixed bug in RawLogger -- it was filtering away all messages from
|
|
||||||
ever being sent to the network.
|
|
||||||
* Added a factoids plugin.
|
|
||||||
* Added __eq__ and __hash__ methods to ircmsgs.IrcMsg so it can be
|
|
||||||
compared for equality and used in hash tables. As a side note, I also
|
|
||||||
changed .args to be a tuple rather than a list.
|
|
||||||
* Added 'sections' command to FunCommands, to see what Privmsg-derived
|
|
||||||
classes are hanging about in the bot.
|
|
||||||
* Added 'unload' command to OwnerCommands, to remove a callback in a
|
|
||||||
running Irc instance.
|
|
||||||
* Added 'load' command to OwnerCommands, allowing owners to dynamically
|
|
||||||
load a module that wasn't previously loaded and insert it into a
|
|
||||||
running Irc instance.
|
|
||||||
* Made UserCommands.addhostmask require that the hostmask not already
|
|
||||||
be an identifier for any other user.
|
|
||||||
* Fixed bug in help command (again :))
|
|
||||||
|
|
||||||
|
|
||||||
2002-Jul-30 Jeremy Fincher <tweedgeezer@hotmail.com>
|
|
||||||
|
|
||||||
* Version 0.35.
|
|
||||||
* Started moving some stuff out to the plugins/ subdirectory. Haven't
|
|
||||||
yet developed an adequate interface for plugin modules, though -- I'm
|
|
||||||
not entirely sure that it's needed.
|
|
||||||
* Began writing tests. At least I know the format of the test *data*,
|
|
||||||
I just haven't quite developed the framework in which to execute it :)
|
|
||||||
* Wrote ctcp.Ctcp, an example of PrivmsgRegexp use and a module to
|
|
||||||
respond to CTCP commands.
|
|
||||||
* Changed callbacks.PrivmsgRegexp to be much easier to use.
|
|
||||||
* Fixed bug in ircdb -- channels needed to have a !op capability by
|
|
||||||
default, otherwise everyone can do anything requiring op capabilities.
|
|
||||||
Found several of these type of bugs; had to revert to the old config
|
|
||||||
style (using a dictionary for capabilities instead of a list) in order
|
|
||||||
to resolve them.
|
|
||||||
* Generalized exception propogation mechanism so any exception in
|
|
||||||
conf.deadlyExceptions would be propogated, not just asyncore.ExitNow.
|
|
||||||
* Added command-line parsing and the ability to specify a configuration
|
|
||||||
file as an option.
|
|
||||||
* Added ircmsgs.IrcMsg.__len__, so calculating the (probable) length of
|
|
||||||
an IRC message doesn't require making a string of it first.
|
|
||||||
* Added code to make the Irc object ping the server every
|
|
||||||
conf.pingInterval seconds. I've always found that having the bot ping
|
|
||||||
the server leads to a more robust bot (easier detection of bad network
|
|
||||||
or a dropped connection).
|
|
||||||
* Made AsyncoreDriver capable of reconnecting.
|
|
||||||
* Moved AsynchatDriver to asyncoreDrivers.py, renamed some things, and
|
|
||||||
redesigned it so there's always an asyncore polling driver and the
|
|
||||||
individual asyncore drivers don't poll. The code is much simpler and
|
|
||||||
clearer this way.
|
|
||||||
* Fixed bug in ircutils.separateModes (tried to pop arguments on modes
|
|
||||||
that didn't take an argument.)
|
|
||||||
* Renamed the "unixstats" command in FunCommands to "progstats".
|
|
||||||
* Fixed bug in callbacks.Privmsg.help.
|
|
||||||
* Removed ircdb.checkPrivmsgCapability.
|
|
||||||
|
|
||||||
|
|
||||||
2002-Jul-29 Jeremy Fincher <tweedgeezer@hotmail.com>
|
|
||||||
|
|
||||||
* Version 0.34.
|
|
||||||
* Changed FunCommands.cputime to FunCommands.cpustats.
|
|
||||||
* Moved bot.upkeep to world.upkeep (superReload can't reload __main__,
|
|
||||||
so having it in world allows it to be reloaded.)
|
|
||||||
* Added timestamp to debug message printing in irclib.
|
|
||||||
* Changed IrcMsg .{nick,user,host} to simple attributes.
|
|
||||||
* Added OwnerCommands.{set, unset} to set and unset temporary runtime
|
|
||||||
variables. As an example of their use, look at bot.upkeep.
|
|
||||||
* Added conf.timestampFormat, so timestamps can be universally of the
|
|
||||||
same form.
|
|
||||||
* Added FunCommands.netstats.
|
|
||||||
* Added callbacks.RootWarner, to warn people when they join a channel
|
|
||||||
as root.
|
|
||||||
* Added callbacks.ChannelEnforcer, to enforce certain capabilities on
|
|
||||||
channel.
|
|
||||||
* added ircdb.checkCapabilties and ircdb.checkPrivmsgCapabilities,
|
|
||||||
which check for any capability in a list of capabilities.
|
|
||||||
* added privmsgs.ChannelCommands.{voice,halfop}
|
|
||||||
* added ircdb.IrcChannel.checkBan
|
|
||||||
* Fixed bug in IrcUser.__init__
|
|
||||||
|
|
||||||
|
|
||||||
2002-Jul-27 Jeremy Fincher <tweedgeezer@hotmail.com>
|
|
||||||
|
|
||||||
* Version 0.33 (third release).
|
|
||||||
* Bot now exits cleanly on @quit.
|
|
||||||
* Renamed former 'irccontrol' module to the much more appropriate name
|
|
||||||
'ircdb', which is also much easier to type and read.
|
|
||||||
* Changed slightly the config format for conf/users and conf/channels.
|
|
||||||
* Added a new command in ChannelCommands, 'setdefaultcapability', to
|
|
||||||
set the default capability response for a channel.
|
|
||||||
* Rewrote ircdb.checkCapability because the old version was buggy.
|
|
||||||
Hopefully this one isn't.
|
|
||||||
* Added callbacks.Privmsg.reply and .error, to make things a bit in
|
|
||||||
client code. Major caveat, though: you can't blindly "except:" any
|
|
||||||
longer. You *must* stick a "except self.reserved: raise" in there.
|
|
||||||
"except Exception, e:" should still work, since the classes raised
|
|
||||||
don't inherit from Exception.
|
|
12
TODO
12
TODO
@ -1,12 +0,0 @@
|
|||||||
Write tests (both unit tests and regression tests on the whole shebang).
|
|
||||||
-- Ugh. I don't want to have to do this.
|
|
||||||
|
|
||||||
Continue to document a bit more. Perhaps use doctest on ircutils and ircmsgs.
|
|
||||||
-- Let me know what isn't instantly understandable, and I'll recode or write
|
|
||||||
documentation so it *is* instantly understandable.
|
|
||||||
|
|
||||||
Write DCC stuff.
|
|
||||||
|
|
||||||
Write the following callbacks:
|
|
||||||
-- News
|
|
||||||
-- Debian
|
|
@ -235,7 +235,10 @@ class FunDB(callbacks.Privmsg):
|
|||||||
irc.queueMsg(ircmsgs.action(channel, '%s (#%s)' % (lart, id)))
|
irc.queueMsg(ircmsgs.action(channel, '%s (#%s)' % (lart, id)))
|
||||||
|
|
||||||
def addlart(self, irc, msg, args):
|
def addlart(self, irc, msg, args):
|
||||||
"""<lart>"""
|
"""<lart>
|
||||||
|
|
||||||
|
The target of the lart is represented with '$who'.
|
||||||
|
"""
|
||||||
lart = privmsgs.getArgs(args)
|
lart = privmsgs.getArgs(args)
|
||||||
if lart.find('$who') == -1:
|
if lart.find('$who') == -1:
|
||||||
irc.error(msg, 'There must be an $who in the lart somewhere.')
|
irc.error(msg, 'There must be an $who in the lart somewhere.')
|
||||||
|
@ -120,6 +120,10 @@ class Notes(callbacks.Privmsg):
|
|||||||
public = 1
|
public = 1
|
||||||
else:
|
else:
|
||||||
public = 0
|
public = 0
|
||||||
|
debug.printf(senderID)
|
||||||
|
debug.printf(recipID)
|
||||||
|
debug.printf(public)
|
||||||
|
debug.printf(note)
|
||||||
self.cursor.execute("""INSERT INTO notes VALUES
|
self.cursor.execute("""INSERT INTO notes VALUES
|
||||||
(NULL, %s, %s, %s, %s, %s, %s)""",
|
(NULL, %s, %s, %s, %s, %s, %s)""",
|
||||||
senderID, recipID, int(time.time()),
|
senderID, recipID, int(time.time()),
|
||||||
|
@ -56,8 +56,9 @@ class Topic(callbacks.Privmsg):
|
|||||||
def addtopic(self, irc, msg, args):
|
def addtopic(self, irc, msg, args):
|
||||||
"[<channel>] (if not sent in the channel itself) <topic>"
|
"[<channel>] (if not sent in the channel itself) <topic>"
|
||||||
channel = privmsgs.getChannel(msg, args)
|
channel = privmsgs.getChannel(msg, args)
|
||||||
|
capability = ircdb.makeChannelCapability(channel, 'topic')
|
||||||
topic = privmsgs.getArgs(args)
|
topic = privmsgs.getArgs(args)
|
||||||
if ircdb.checkCapability(msg.prefix, 'topic'):
|
if ircdb.checkCapability(msg.prefix, capability):
|
||||||
if topic.find(self.topicSeparator) != -1:
|
if topic.find(self.topicSeparator) != -1:
|
||||||
s = 'You can\'t have %s in your topic' % self.topicSeparator
|
s = 'You can\'t have %s in your topic' % self.topicSeparator
|
||||||
irc.error(msg, s)
|
irc.error(msg, s)
|
||||||
@ -72,28 +73,30 @@ class Topic(callbacks.Privmsg):
|
|||||||
newTopic = formattedTopic
|
newTopic = formattedTopic
|
||||||
irc.queueMsg(ircmsgs.topic(channel, newTopic))
|
irc.queueMsg(ircmsgs.topic(channel, newTopic))
|
||||||
else:
|
else:
|
||||||
irc.error(msg, conf.replyNoCapability % 'topic')
|
irc.error(msg, conf.replyNoCapability % capability)
|
||||||
|
|
||||||
def shuffletopic(self, irc, msg, args):
|
def shuffletopic(self, irc, msg, args):
|
||||||
"[<channel>] (if not sent in the channel itself)"
|
"[<channel>] (if not sent in the channel itself)"
|
||||||
channel = privmsgs.getChannel(msg, args)
|
channel = privmsgs.getChannel(msg, args)
|
||||||
if ircdb.checkCapability(msg.prefix, 'topic'):
|
capability = ircdb.makeChannelCapability(channel, 'topic')
|
||||||
|
if ircdb.checkCapability(msg.prefix, capability):
|
||||||
topics = irc.state.getTopic(channel).split(self.topicSeparator)
|
topics = irc.state.getTopic(channel).split(self.topicSeparator)
|
||||||
random.shuffle(topics)
|
random.shuffle(topics)
|
||||||
newtopic = self.topicSeparator.join(topics)
|
newtopic = self.topicSeparator.join(topics)
|
||||||
irc.queueMsg(ircmsgs.topic(channel, newtopic))
|
irc.queueMsg(ircmsgs.topic(channel, newtopic))
|
||||||
else:
|
else:
|
||||||
irc.error(msg, conf.replyNoCapability % 'topic')
|
irc.error(msg, conf.replyNoCapability % capability)
|
||||||
|
|
||||||
def removetopic(self, irc, msg, args):
|
def removetopic(self, irc, msg, args):
|
||||||
"[<channel>] (if not sent in the channel itself) <topic number>"
|
"[<channel>] (if not sent in the channel itself) <topic number>"
|
||||||
channel = privmsgs.getChannel(msg, args)
|
channel = privmsgs.getChannel(msg, args)
|
||||||
|
capability = ircdb.makeChannelCapability(channel, 'topic')
|
||||||
try:
|
try:
|
||||||
number = int(privmsgs.getArgs(args))
|
number = int(privmsgs.getArgs(args))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
irc.error(msg, 'The argument must be a number.')
|
irc.error(msg, 'The argument must be a number.')
|
||||||
return
|
return
|
||||||
if ircdb.checkCapability(msg.prefix, 'topic'):
|
if ircdb.checkCapability(msg.prefix, capability):
|
||||||
topics = irc.state.getTopic(channel).split(self.topicSeparator)
|
topics = irc.state.getTopic(channel).split(self.topicSeparator)
|
||||||
topic = topics.pop(number)
|
topic = topics.pop(number)
|
||||||
debug.printf(topic)
|
debug.printf(topic)
|
||||||
@ -105,7 +108,7 @@ class Topic(callbacks.Privmsg):
|
|||||||
newTopic = self.topicSeparator.join(topics)
|
newTopic = self.topicSeparator.join(topics)
|
||||||
irc.queueMsg(ircmsgs.topic(channel, newTopic))
|
irc.queueMsg(ircmsgs.topic(channel, newTopic))
|
||||||
else:
|
else:
|
||||||
irc.error(msg, conf.replyNoCapability % 'topic')
|
irc.error(msg, conf.replyNoCapability % capability)
|
||||||
|
|
||||||
|
|
||||||
Class = Topic
|
Class = Topic
|
||||||
|
@ -483,4 +483,13 @@ def checkCapabilities(hostmask, capabilities, requireAll=False):
|
|||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def getUser(irc, s):
|
||||||
|
if ircutils.isHostmask(s):
|
||||||
|
return users.getUserName(s)
|
||||||
|
else:
|
||||||
|
if users.hasUser(s):
|
||||||
|
return s
|
||||||
|
else:
|
||||||
|
return users.getUserName(irc.state.nickToHostmask(s))
|
||||||
|
|
||||||
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
||||||
|
Loading…
Reference in New Issue
Block a user