mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-14 22:49:23 +01:00
Internationalize Herald, Internet, Karma, Lart, Later, Limiter, Math, and Misc
This commit is contained in:
parent
9917232d9a
commit
203fe3c56a
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Heral')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -41,31 +43,31 @@ def configure(advanced):
|
|||||||
|
|
||||||
Herald = conf.registerPlugin('Herald')
|
Herald = conf.registerPlugin('Herald')
|
||||||
conf.registerChannelValue(Herald, 'heralding',
|
conf.registerChannelValue(Herald, 'heralding',
|
||||||
registry.Boolean(True, """Determines whether messages will be sent to the
|
registry.Boolean(True, _("""Determines whether messages will be sent to the
|
||||||
channel when a recognized user joins; basically enables or disables the
|
channel when a recognized user joins; basically enables or disables the
|
||||||
plugin."""))
|
plugin.""")))
|
||||||
conf.registerGlobalValue(Herald, 'requireCapability',
|
conf.registerGlobalValue(Herald, 'requireCapability',
|
||||||
registry.String('', """Determines what capability (if any) is required to
|
registry.String('', _("""Determines what capability (if any) is required to
|
||||||
add/change/remove the herald of another user."""))
|
add/change/remove the herald of another user.""")))
|
||||||
conf.registerChannelValue(Herald, 'throttle',
|
conf.registerChannelValue(Herald, 'throttle',
|
||||||
registry.PositiveInteger(600, """Determines the minimum number of seconds
|
registry.PositiveInteger(600, _("""Determines the minimum number of seconds
|
||||||
between heralds."""))
|
between heralds.""")))
|
||||||
conf.registerChannelValue(Herald.throttle, 'afterPart',
|
conf.registerChannelValue(Herald.throttle, 'afterPart',
|
||||||
registry.NonNegativeInteger(0, """Determines the minimum number of seconds
|
registry.NonNegativeInteger(0, _("""Determines the minimum number of seconds
|
||||||
after parting that the bot will not herald the person when he or she
|
after parting that the bot will not herald the person when he or she
|
||||||
rejoins."""))
|
rejoins.""")))
|
||||||
conf.registerChannelValue(Herald.throttle, 'afterSplit',
|
conf.registerChannelValue(Herald.throttle, 'afterSplit',
|
||||||
registry.NonNegativeInteger(60, """Determines the minimum number of seconds
|
registry.NonNegativeInteger(60, _("""Determines the minimum number of seconds
|
||||||
after a netsplit that the bot will not herald the users that split."""))
|
after a netsplit that the bot will not herald the users that split.""")))
|
||||||
conf.registerChannelValue(Herald, 'default',
|
conf.registerChannelValue(Herald, 'default',
|
||||||
registry.String('', """Sets the default herald to use. If a user has a
|
registry.String('', _("""Sets the default herald to use. If a user has a
|
||||||
personal herald specified, that will be used instead. If set to the empty
|
personal herald specified, that will be used instead. If set to the empty
|
||||||
string, the default herald will be disabled."""))
|
string, the default herald will be disabled.""")))
|
||||||
conf.registerChannelValue(Herald.default, 'notice',
|
conf.registerChannelValue(Herald.default, 'notice',
|
||||||
registry.Boolean(True, """Determines whether the default herald will be
|
registry.Boolean(True, _("""Determines whether the default herald will be
|
||||||
sent as a NOTICE instead of a PRIVMSG."""))
|
sent as a NOTICE instead of a PRIVMSG.""")))
|
||||||
conf.registerChannelValue(Herald.default, 'public',
|
conf.registerChannelValue(Herald.default, 'public',
|
||||||
registry.Boolean(False, """Determines whether the default herald will be
|
registry.Boolean(False, _("""Determines whether the default herald will be
|
||||||
sent publicly."""))
|
sent publicly.""")))
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
140
plugins/Herald/messages.pot
Normal file
140
plugins/Herald/messages.pot
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:21+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: config.py:46
|
||||||
|
msgid ""
|
||||||
|
"Determines whether messages will be sent to the\n"
|
||||||
|
" channel when a recognized user joins; basically enables or disables the\n"
|
||||||
|
" plugin."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:50
|
||||||
|
msgid ""
|
||||||
|
"Determines what capability (if any) is required to\n"
|
||||||
|
" add/change/remove the herald of another user."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:53
|
||||||
|
msgid ""
|
||||||
|
"Determines the minimum number of seconds\n"
|
||||||
|
" between heralds."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:56
|
||||||
|
msgid ""
|
||||||
|
"Determines the minimum number of seconds\n"
|
||||||
|
" after parting that the bot will not herald the person when he or she\n"
|
||||||
|
" rejoins."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:60
|
||||||
|
msgid ""
|
||||||
|
"Determines the minimum number of seconds\n"
|
||||||
|
" after a netsplit that the bot will not herald the users that split."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:63
|
||||||
|
msgid ""
|
||||||
|
"Sets the default herald to use. If a user has a\n"
|
||||||
|
" personal herald specified, that will be used instead. If set to the empty\n"
|
||||||
|
" string, the default herald will be disabled."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:67
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the default herald will be\n"
|
||||||
|
" sent as a NOTICE instead of a PRIVMSG."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:70
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the default herald will be\n"
|
||||||
|
" sent publicly."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:143
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] [--remove|<msg>]\n"
|
||||||
|
"\n"
|
||||||
|
" If <msg> is given, sets the default herald to <msg>. A <msg> of \"\"\n"
|
||||||
|
" will remove the default herald. If <msg> is not given, returns the\n"
|
||||||
|
" current default herald. <channel> is only necessary if the message\n"
|
||||||
|
" isn't sent in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:162
|
||||||
|
msgid "I do not have a default herald set for %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:170
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] [<user|nick>]\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the current herald message for <user> (or the user\n"
|
||||||
|
" <nick|hostmask> is currently identified or recognized as). If <user>\n"
|
||||||
|
" is not given, defaults to the user giving the command. <channel>\n"
|
||||||
|
" is only necessary if the message isn't sent in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:181
|
||||||
|
msgid "I have no herald for %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:201
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] <user|nick> <msg>\n"
|
||||||
|
"\n"
|
||||||
|
" Sets the herald message for <user> (or the user <nick|hostmask> is\n"
|
||||||
|
" currently identified or recognized as) to <msg>. <channel> is only\n"
|
||||||
|
" necessary if the message isn't sent in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:214
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] [<user|nick>]\n"
|
||||||
|
"\n"
|
||||||
|
" Removes the herald message set for <user>, or the user\n"
|
||||||
|
" <nick|hostmask> is currently identified or recognized as. If <user>\n"
|
||||||
|
" is not given, defaults to the user giving the command.\n"
|
||||||
|
" <channel> is only necessary if the message isn't sent in the channel\n"
|
||||||
|
" itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:227
|
||||||
|
msgid "I have no herald for that user."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:232
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] [<user|nick>] <regexp>\n"
|
||||||
|
"\n"
|
||||||
|
" Changes the herald message for <user>, or the user <nick|hostmask> is\n"
|
||||||
|
" currently identified or recognized as, according to <regexp>. If\n"
|
||||||
|
" <user> is not given, defaults to the calling user. <channel> is only\n"
|
||||||
|
" necessary if the message isn't sent in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
@ -40,6 +40,8 @@ import supybot.plugins as plugins
|
|||||||
import supybot.ircutils as ircutils
|
import supybot.ircutils as ircutils
|
||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
from supybot.utils.structures import TimeoutQueue
|
from supybot.utils.structures import TimeoutQueue
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Heral')
|
||||||
|
|
||||||
filename = conf.supybot.directories.data.dirize('Herald.db')
|
filename = conf.supybot.directories.data.dirize('Herald.db')
|
||||||
|
|
||||||
@ -136,6 +138,7 @@ class Herald(callbacks.Plugin):
|
|||||||
raise KeyError
|
raise KeyError
|
||||||
return id
|
return id
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def default(self, irc, msg, args, channel, optlist, text):
|
def default(self, irc, msg, args, channel, optlist, text):
|
||||||
"""[<channel>] [--remove|<msg>]
|
"""[<channel>] [--remove|<msg>]
|
||||||
|
|
||||||
@ -156,12 +159,13 @@ class Herald(callbacks.Plugin):
|
|||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
else:
|
else:
|
||||||
resp = self.registryValue('default', channel) or \
|
resp = self.registryValue('default', channel) or \
|
||||||
'I do not have a default herald set for %s.' % channel
|
_('I do not have a default herald set for %s.') % channel
|
||||||
irc.reply(resp)
|
irc.reply(resp)
|
||||||
default = wrap(default, ['channel',
|
default = wrap(default, ['channel',
|
||||||
getopts({'remove': ''}),
|
getopts({'remove': ''}),
|
||||||
additional('text')])
|
additional('text')])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def get(self, irc, msg, args, channel, user):
|
def get(self, irc, msg, args, channel, user):
|
||||||
"""[<channel>] [<user|nick>]
|
"""[<channel>] [<user|nick>]
|
||||||
|
|
||||||
@ -174,7 +178,7 @@ class Herald(callbacks.Plugin):
|
|||||||
herald = self.db[channel, user.id]
|
herald = self.db[channel, user.id]
|
||||||
irc.reply(herald)
|
irc.reply(herald)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
irc.error('I have no herald for %s.' % user.name)
|
irc.error(_('I have no herald for %s.') % user.name)
|
||||||
get = wrap(get, ['channel', first('otherUser', 'user')])
|
get = wrap(get, ['channel', first('otherUser', 'user')])
|
||||||
|
|
||||||
def _preCheck(self, irc, msg, user):
|
def _preCheck(self, irc, msg, user):
|
||||||
@ -192,6 +196,7 @@ class Herald(callbacks.Plugin):
|
|||||||
# I chose not to make <user|nick> optional in this command because
|
# I chose not to make <user|nick> optional in this command because
|
||||||
# if it's not a valid username (e.g., if the user tyops and misspells a
|
# if it's not a valid username (e.g., if the user tyops and misspells a
|
||||||
# username), it may be nice not to clobber the user's herald.
|
# username), it may be nice not to clobber the user's herald.
|
||||||
|
@internationalizeDocstring
|
||||||
def add(self, irc, msg, args, channel, user, herald):
|
def add(self, irc, msg, args, channel, user, herald):
|
||||||
"""[<channel>] <user|nick> <msg>
|
"""[<channel>] <user|nick> <msg>
|
||||||
|
|
||||||
@ -204,6 +209,7 @@ class Herald(callbacks.Plugin):
|
|||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
add = wrap(add, ['channel', 'otherUser', 'text'])
|
add = wrap(add, ['channel', 'otherUser', 'text'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def remove(self, irc, msg, args, channel, user):
|
def remove(self, irc, msg, args, channel, user):
|
||||||
"""[<channel>] [<user|nick>]
|
"""[<channel>] [<user|nick>]
|
||||||
|
|
||||||
@ -218,9 +224,10 @@ class Herald(callbacks.Plugin):
|
|||||||
del self.db[channel, user.id]
|
del self.db[channel, user.id]
|
||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
except KeyError:
|
except KeyError:
|
||||||
irc.error('I have no herald for that user.')
|
irc.error(_('I have no herald for that user.'))
|
||||||
remove = wrap(remove, ['channel', first('otherUser', 'user')])
|
remove = wrap(remove, ['channel', first('otherUser', 'user')])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def change(self, irc, msg, args, channel, user, changer):
|
def change(self, irc, msg, args, channel, user, changer):
|
||||||
"""[<channel>] [<user|nick>] <regexp>
|
"""[<channel>] [<user|nick>] <regexp>
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Internet')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -42,7 +44,7 @@ def configure(advanced):
|
|||||||
Internet = conf.registerPlugin('Internet')
|
Internet = conf.registerPlugin('Internet')
|
||||||
# This is where your configuration variables (if any) should go. For example:
|
# This is where your configuration variables (if any) should go. For example:
|
||||||
# conf.registerGlobalValue(Internet, 'someConfigVariableName',
|
# conf.registerGlobalValue(Internet, 'someConfigVariableName',
|
||||||
# registry.Boolean(False, """Help for someConfigVariableName."""))
|
# registry.Boolean(False, _("""Help for someConfigVariableName.""")))
|
||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
85
plugins/Internet/messages.pot
Normal file
85
plugins/Internet/messages.pot
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:20+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: plugin.py:43
|
||||||
|
#, docstring
|
||||||
|
msgid "Add the help for \"@help Internet\" here."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:47
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<host|ip>\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the ip of <host> or the reverse DNS hostname of <ip>.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:54 plugin.py:61 plugin.py:65
|
||||||
|
msgid "Host not found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:77
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<domain>\n"
|
||||||
|
"\n"
|
||||||
|
" Returns WHOIS information on the registration of <domain>.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:83
|
||||||
|
msgid "domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:112
|
||||||
|
msgid "updated %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:115
|
||||||
|
msgid "registered %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:118
|
||||||
|
msgid "expires %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:138
|
||||||
|
msgid " <registered at %s>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:140
|
||||||
|
msgid " <registered by %s>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:145
|
||||||
|
msgid "%s%s is %L."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:148
|
||||||
|
msgid "I couldn't find such a domain."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:153
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<ip>\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the hexadecimal IP for that IP.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
@ -35,11 +35,14 @@ import supybot.utils as utils
|
|||||||
from supybot.commands import *
|
from supybot.commands import *
|
||||||
from supybot.utils.iter import any
|
from supybot.utils.iter import any
|
||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Internet')
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
class Internet(callbacks.Plugin):
|
class Internet(callbacks.Plugin):
|
||||||
"""Add the help for "@help Internet" here."""
|
"""Add the help for "@help Internet" here."""
|
||||||
threaded = True
|
threaded = True
|
||||||
|
@internationalizeDocstring
|
||||||
def dns(self, irc, msg, args, host):
|
def dns(self, irc, msg, args, host):
|
||||||
"""<host|ip>
|
"""<host|ip>
|
||||||
|
|
||||||
@ -48,18 +51,18 @@ class Internet(callbacks.Plugin):
|
|||||||
if utils.net.isIP(host):
|
if utils.net.isIP(host):
|
||||||
hostname = socket.getfqdn(host)
|
hostname = socket.getfqdn(host)
|
||||||
if hostname == host:
|
if hostname == host:
|
||||||
irc.reply('Host not found.')
|
irc.reply(_('Host not found.'))
|
||||||
else:
|
else:
|
||||||
irc.reply(hostname)
|
irc.reply(hostname)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
ip = socket.gethostbyname(host)
|
ip = socket.gethostbyname(host)
|
||||||
if ip == '64.94.110.11': # Verisign sucks!
|
if ip == '64.94.110.11': # Verisign sucks!
|
||||||
irc.reply('Host not found.')
|
irc.reply(_('Host not found.'))
|
||||||
else:
|
else:
|
||||||
irc.reply(ip)
|
irc.reply(ip)
|
||||||
except socket.error:
|
except socket.error:
|
||||||
irc.reply('Host not found.')
|
irc.reply(_('Host not found.'))
|
||||||
dns = wrap(dns, ['something'])
|
dns = wrap(dns, ['something'])
|
||||||
|
|
||||||
_domain = ['Domain Name', 'Server Name', 'domain']
|
_domain = ['Domain Name', 'Server Name', 'domain']
|
||||||
@ -69,6 +72,7 @@ class Internet(callbacks.Plugin):
|
|||||||
_created = ['Created On', 'Domain Registration Date', 'Creation Date']
|
_created = ['Created On', 'Domain Registration Date', 'Creation Date']
|
||||||
_expires = ['Expiration Date', 'Domain Expiration Date']
|
_expires = ['Expiration Date', 'Domain Expiration Date']
|
||||||
_status = ['Status', 'Domain Status', 'status']
|
_status = ['Status', 'Domain Status', 'status']
|
||||||
|
@internationalizeDocstring
|
||||||
def whois(self, irc, msg, args, domain):
|
def whois(self, irc, msg, args, domain):
|
||||||
"""<domain>
|
"""<domain>
|
||||||
|
|
||||||
@ -76,7 +80,7 @@ class Internet(callbacks.Plugin):
|
|||||||
"""
|
"""
|
||||||
usertld = domain.split('.')[-1]
|
usertld = domain.split('.')[-1]
|
||||||
if '.' not in domain:
|
if '.' not in domain:
|
||||||
irc.errorInvalid('domain')
|
irc.errorInvalid(_('domain'))
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
t = telnetlib.Telnet('%s.whois-servers.net' % usertld, 43)
|
t = telnetlib.Telnet('%s.whois-servers.net' % usertld, 43)
|
||||||
@ -105,13 +109,13 @@ class Internet(callbacks.Plugin):
|
|||||||
registrar = ':'.join(line.split(':')[1:]).strip()
|
registrar = ':'.join(line.split(':')[1:]).strip()
|
||||||
elif not updated and any(line.startswith, self._updated):
|
elif not updated and any(line.startswith, self._updated):
|
||||||
s = ':'.join(line.split(':')[1:]).strip()
|
s = ':'.join(line.split(':')[1:]).strip()
|
||||||
updated = 'updated %s' % s
|
updated = _('updated %s') % s
|
||||||
elif not created and any(line.startswith, self._created):
|
elif not created and any(line.startswith, self._created):
|
||||||
s = ':'.join(line.split(':')[1:]).strip()
|
s = ':'.join(line.split(':')[1:]).strip()
|
||||||
created = 'registered %s' % s
|
created = _('registered %s') % s
|
||||||
elif not expires and any(line.startswith, self._expires):
|
elif not expires and any(line.startswith, self._expires):
|
||||||
s = ':'.join(line.split(':')[1:]).strip()
|
s = ':'.join(line.split(':')[1:]).strip()
|
||||||
expires = 'expires %s' % s
|
expires = _('expires %s') % s
|
||||||
elif not status and any(line.startswith, self._status):
|
elif not status and any(line.startswith, self._status):
|
||||||
status = ':'.join(line.split(':')[1:]).strip().lower()
|
status = ':'.join(line.split(':')[1:]).strip().lower()
|
||||||
if not status:
|
if not status:
|
||||||
@ -131,19 +135,20 @@ class Internet(callbacks.Plugin):
|
|||||||
if not line:
|
if not line:
|
||||||
continue
|
continue
|
||||||
if line.startswith('Email'):
|
if line.startswith('Email'):
|
||||||
url = ' <registered at %s>' % line.split('@')[-1]
|
url = _(' <registered at %s>') % line.split('@')[-1]
|
||||||
elif line.startswith('Registrar Organization:'):
|
elif line.startswith('Registrar Organization:'):
|
||||||
url = ' <registered by %s>' % line.split(':')[1].strip()
|
url = _(' <registered by %s>') % line.split(':')[1].strip()
|
||||||
elif line == 'Not a valid ID pattern':
|
elif line == 'Not a valid ID pattern':
|
||||||
url = ''
|
url = ''
|
||||||
if server and status:
|
if server and status:
|
||||||
info = filter(None, [status, created, updated, expires])
|
info = filter(None, [status, created, updated, expires])
|
||||||
s = format('%s%s is %L.', server, url, info)
|
s = format(_('%s%s is %L.'), server, url, info)
|
||||||
irc.reply(s)
|
irc.reply(s)
|
||||||
else:
|
else:
|
||||||
irc.error('I couldn\'t find such a domain.')
|
irc.error(_('I couldn\'t find such a domain.'))
|
||||||
whois = wrap(whois, ['lowered'])
|
whois = wrap(whois, ['lowered'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def hexip(self, irc, msg, args, ip):
|
def hexip(self, irc, msg, args, ip):
|
||||||
"""<ip>
|
"""<ip>
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Karma')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -41,22 +43,22 @@ def configure(advanced):
|
|||||||
conf.registerPlugin('Karma')
|
conf.registerPlugin('Karma')
|
||||||
|
|
||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'simpleOutput',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'simpleOutput',
|
||||||
registry.Boolean(False, """Determines whether the bot will output shorter
|
registry.Boolean(False, _("""Determines whether the bot will output shorter
|
||||||
versions of the karma output when requesting a single thing's karma."""))
|
versions of the karma output when requesting a single thing's karma.""")))
|
||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'response',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'response',
|
||||||
registry.Boolean(False, """Determines whether the bot will reply with a
|
registry.Boolean(False, _("""Determines whether the bot will reply with a
|
||||||
success message when something's karma is increased or decreased."""))
|
success message when something's karma is increased or decreased.""")))
|
||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'rankingDisplay',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'rankingDisplay',
|
||||||
registry.Integer(3, """Determines how many highest/lowest karma things are
|
registry.Integer(3, _("""Determines how many highest/lowest karma things
|
||||||
shown when karma is called with no arguments."""))
|
are shown when karma is called with no arguments.""")))
|
||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'mostDisplay',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'mostDisplay',
|
||||||
registry.Integer(25, """Determines how many karma things are shown when
|
registry.Integer(25, _("""Determines how many karma things are shown when
|
||||||
the most command is called.'"""))
|
the most command is called.'""")))
|
||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowSelfRating',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowSelfRating',
|
||||||
registry.Boolean(False, """Determines whether users can adjust the karma
|
registry.Boolean(False, _("""Determines whether users can adjust the karma
|
||||||
of their nick."""))
|
of their nick.""")))
|
||||||
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowUnaddressedKarma',
|
conf.registerChannelValue(conf.supybot.plugins.Karma, 'allowUnaddressedKarma',
|
||||||
registry.Boolean(False, """Determines whether the bot will
|
registry.Boolean(False, _("""Determines whether the bot will
|
||||||
increase/decrease karma without being addressed."""))
|
increase/decrease karma without being addressed.""")))
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
137
plugins/Karma/messages.pot
Normal file
137
plugins/Karma/messages.pot
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:21+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: config.py:46
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the bot will output shorter\n"
|
||||||
|
" versions of the karma output when requesting a single thing's karma."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:49
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the bot will reply with a\n"
|
||||||
|
" success message when something's karma is increased or decreased."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:52
|
||||||
|
msgid ""
|
||||||
|
"Determines how many highest/lowest karma things\n"
|
||||||
|
" are shown when karma is called with no arguments."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:55
|
||||||
|
msgid ""
|
||||||
|
"Determines how many karma things are shown when\n"
|
||||||
|
" the most command is called.'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:58
|
||||||
|
msgid ""
|
||||||
|
"Determines whether users can adjust the karma\n"
|
||||||
|
" of their nick."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:61
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the bot will\n"
|
||||||
|
" increase/decrease karma without being addressed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:243 plugin.py:251
|
||||||
|
msgid "You're not allowed to adjust your own karma."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:280
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] [<thing> ...]\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the karma of <thing>. If <thing> is not given, returns the top\n"
|
||||||
|
" N karmas, where N is determined by the config variable\n"
|
||||||
|
" supybot.plugins.Karma.rankingDisplay. If one <thing> is given, returns\n"
|
||||||
|
" the details of its karma; if more than one <thing> is given, returns\n"
|
||||||
|
" the total karma of each of the the things. <channel> is only necessary\n"
|
||||||
|
" if the message isn't sent on the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:293
|
||||||
|
msgid "%s has neutral karma."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:300
|
||||||
|
msgid "Karma for %q has been increased %n and decreased %n for a total karma of %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:315
|
||||||
|
msgid "I didn't know the karma for any of those things."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:325 plugin.py:354
|
||||||
|
msgid "I have no karma for this channel."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:330
|
||||||
|
msgid " You (%s) are ranked %i out of %i."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:334
|
||||||
|
msgid "Highest karma: %L. Lowest karma: %L.%s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:342
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] {increased,decreased,active}\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the most increased, the most decreased, or the most active\n"
|
||||||
|
" (the sum of increased and decreased) karma things. <channel> is only\n"
|
||||||
|
" necessary if the message isn't sent in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:360
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] <name>\n"
|
||||||
|
"\n"
|
||||||
|
" Resets the karma of <name> to 0.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:370
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] <filename>\n"
|
||||||
|
"\n"
|
||||||
|
" Dumps the Karma database for <channel> to <filename> in the bot's\n"
|
||||||
|
" data directory. <channel> is only necessary if the message isn't sent\n"
|
||||||
|
" in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:382
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] <filename>\n"
|
||||||
|
"\n"
|
||||||
|
" Loads the Karma database for <channel> from <filename> in the bot's\n"
|
||||||
|
" data directory. <channel> is only necessary if the message isn't sent\n"
|
||||||
|
" in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
@ -38,6 +38,8 @@ import supybot.plugins as plugins
|
|||||||
import supybot.ircmsgs as ircmsgs
|
import supybot.ircmsgs as ircmsgs
|
||||||
import supybot.ircutils as ircutils
|
import supybot.ircutils as ircutils
|
||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Karma')
|
||||||
|
|
||||||
class SqliteKarmaDB(object):
|
class SqliteKarmaDB(object):
|
||||||
def __init__(self, filename):
|
def __init__(self, filename):
|
||||||
@ -238,7 +240,7 @@ class Karma(callbacks.Plugin):
|
|||||||
thing = thing[:-2]
|
thing = thing[:-2]
|
||||||
if ircutils.strEqual(thing, irc.msg.nick) and \
|
if ircutils.strEqual(thing, irc.msg.nick) and \
|
||||||
not self.registryValue('allowSelfRating', channel):
|
not self.registryValue('allowSelfRating', channel):
|
||||||
irc.error('You\'re not allowed to adjust your own karma.')
|
irc.error(_('You\'re not allowed to adjust your own karma.'))
|
||||||
elif thing:
|
elif thing:
|
||||||
self.db.increment(channel, self._normalizeThing(thing))
|
self.db.increment(channel, self._normalizeThing(thing))
|
||||||
self._respond(irc, channel)
|
self._respond(irc, channel)
|
||||||
@ -246,7 +248,7 @@ class Karma(callbacks.Plugin):
|
|||||||
thing = thing[:-2]
|
thing = thing[:-2]
|
||||||
if ircutils.strEqual(thing, irc.msg.nick) and \
|
if ircutils.strEqual(thing, irc.msg.nick) and \
|
||||||
not self.registryValue('allowSelfRating', channel):
|
not self.registryValue('allowSelfRating', channel):
|
||||||
irc.error('You\'re not allowed to adjust your own karma.')
|
irc.error(_('You\'re not allowed to adjust your own karma.'))
|
||||||
elif thing:
|
elif thing:
|
||||||
self.db.decrement(channel, self._normalizeThing(thing))
|
self.db.decrement(channel, self._normalizeThing(thing))
|
||||||
self._respond(irc, channel)
|
self._respond(irc, channel)
|
||||||
@ -273,6 +275,7 @@ class Karma(callbacks.Plugin):
|
|||||||
if thing[-2:] in ('++', '--'):
|
if thing[-2:] in ('++', '--'):
|
||||||
self._doKarma(irc, channel, thing)
|
self._doKarma(irc, channel, thing)
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def karma(self, irc, msg, args, channel, things):
|
def karma(self, irc, msg, args, channel, things):
|
||||||
"""[<channel>] [<thing> ...]
|
"""[<channel>] [<thing> ...]
|
||||||
|
|
||||||
@ -287,15 +290,15 @@ class Karma(callbacks.Plugin):
|
|||||||
name = things[0]
|
name = things[0]
|
||||||
t = self.db.get(channel, name)
|
t = self.db.get(channel, name)
|
||||||
if t is None:
|
if t is None:
|
||||||
irc.reply(format('%s has neutral karma.', name))
|
irc.reply(format(_('%s has neutral karma.'), name))
|
||||||
else:
|
else:
|
||||||
(added, subtracted) = t
|
(added, subtracted) = t
|
||||||
total = added - subtracted
|
total = added - subtracted
|
||||||
if self.registryValue('simpleOutput', channel):
|
if self.registryValue('simpleOutput', channel):
|
||||||
s = format('%s: %i', name, total)
|
s = format('%s: %i', name, total)
|
||||||
else:
|
else:
|
||||||
s = format('Karma for %q has been increased %n and '
|
s = format(_('Karma for %q has been increased %n and '
|
||||||
'decreased %n for a total karma of %s.',
|
'decreased %n for a total karma of %s.'),
|
||||||
name, (added, 'time'), (subtracted, 'time'),
|
name, (added, 'time'), (subtracted, 'time'),
|
||||||
total)
|
total)
|
||||||
irc.reply(s)
|
irc.reply(s)
|
||||||
@ -309,7 +312,8 @@ class Karma(callbacks.Plugin):
|
|||||||
s += neutral
|
s += neutral
|
||||||
irc.reply(s + '.')
|
irc.reply(s + '.')
|
||||||
else:
|
else:
|
||||||
irc.reply('I didn\'t know the karma for any of those things.')
|
irc.reply(_('I didn\'t know the karma for any of those '
|
||||||
|
'things.'))
|
||||||
else: # No name was given. Return the top/bottom N karmas.
|
else: # No name was given. Return the top/bottom N karmas.
|
||||||
limit = self.registryValue('rankingDisplay', channel)
|
limit = self.registryValue('rankingDisplay', channel)
|
||||||
top = self.db.top(channel, limit)
|
top = self.db.top(channel, limit)
|
||||||
@ -318,21 +322,22 @@ class Karma(callbacks.Plugin):
|
|||||||
lowest = [format('%q (%s)', s, t)
|
lowest = [format('%q (%s)', s, t)
|
||||||
for (s, t) in self.db.bottom(channel, limit)]
|
for (s, t) in self.db.bottom(channel, limit)]
|
||||||
if not (highest and lowest):
|
if not (highest and lowest):
|
||||||
irc.error('I have no karma for this channel.')
|
irc.error(_('I have no karma for this channel.'))
|
||||||
return
|
return
|
||||||
rank = self.db.rank(channel, msg.nick)
|
rank = self.db.rank(channel, msg.nick)
|
||||||
if rank is not None:
|
if rank is not None:
|
||||||
total = self.db.size(channel)
|
total = self.db.size(channel)
|
||||||
rankS = format(' You (%s) are ranked %i out of %i.',
|
rankS = format(_(' You (%s) are ranked %i out of %i.'),
|
||||||
msg.nick, rank, total)
|
msg.nick, rank, total)
|
||||||
else:
|
else:
|
||||||
rankS = ''
|
rankS = ''
|
||||||
s = format('Highest karma: %L. Lowest karma: %L.%s',
|
s = format(_('Highest karma: %L. Lowest karma: %L.%s'),
|
||||||
highest, lowest, rankS)
|
highest, lowest, rankS)
|
||||||
irc.reply(s)
|
irc.reply(s)
|
||||||
karma = wrap(karma, ['channel', any('something')])
|
karma = wrap(karma, ['channel', any('something')])
|
||||||
|
|
||||||
_mostAbbrev = utils.abbrev(['increased', 'decreased', 'active'])
|
_mostAbbrev = utils.abbrev(['increased', 'decreased', 'active'])
|
||||||
|
@internationalizeDocstring
|
||||||
def most(self, irc, msg, args, channel, kind):
|
def most(self, irc, msg, args, channel, kind):
|
||||||
"""[<channel>] {increased,decreased,active}
|
"""[<channel>] {increased,decreased,active}
|
||||||
|
|
||||||
@ -346,10 +351,11 @@ class Karma(callbacks.Plugin):
|
|||||||
L = [format('%q: %i', name, i) for (name, i) in L]
|
L = [format('%q: %i', name, i) for (name, i) in L]
|
||||||
irc.reply(format('%L', L))
|
irc.reply(format('%L', L))
|
||||||
else:
|
else:
|
||||||
irc.error('I have no karma for this channel.')
|
irc.error(_('I have no karma for this channel.'))
|
||||||
most = wrap(most, ['channel',
|
most = wrap(most, ['channel',
|
||||||
('literal', ['increased', 'decreased', 'active'])])
|
('literal', ['increased', 'decreased', 'active'])])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def clear(self, irc, msg, args, channel, name):
|
def clear(self, irc, msg, args, channel, name):
|
||||||
"""[<channel>] <name>
|
"""[<channel>] <name>
|
||||||
|
|
||||||
@ -359,6 +365,7 @@ class Karma(callbacks.Plugin):
|
|||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
clear = wrap(clear, [('checkChannelCapability', 'op'), 'text'])
|
clear = wrap(clear, [('checkChannelCapability', 'op'), 'text'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def dump(self, irc, msg, args, channel, filename):
|
def dump(self, irc, msg, args, channel, filename):
|
||||||
"""[<channel>] <filename>
|
"""[<channel>] <filename>
|
||||||
|
|
||||||
@ -370,6 +377,7 @@ class Karma(callbacks.Plugin):
|
|||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
dump = wrap(dump, [('checkCapability', 'owner'), 'channeldb', 'filename'])
|
dump = wrap(dump, [('checkCapability', 'owner'), 'channeldb', 'filename'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def load(self, irc, msg, args, channel, filename):
|
def load(self, irc, msg, args, channel, filename):
|
||||||
"""[<channel>] <filename>
|
"""[<channel>] <filename>
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Lart')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -42,10 +44,10 @@ def configure(advanced):
|
|||||||
Lart = conf.registerPlugin('Lart')
|
Lart = conf.registerPlugin('Lart')
|
||||||
# This is where your configuration variables (if any) should go. For example:
|
# This is where your configuration variables (if any) should go. For example:
|
||||||
# conf.registerGlobalValue(Lart, 'someConfigVariableName',
|
# conf.registerGlobalValue(Lart, 'someConfigVariableName',
|
||||||
# registry.Boolean(False, """Help for someConfigVariableName."""))
|
# registry.Boolean(False, _("""Help for someConfigVariableName.""")))
|
||||||
conf.registerChannelValue(Lart, 'showIds',
|
conf.registerChannelValue(Lart, 'showIds',
|
||||||
registry.Boolean(False, """Determines whether the bot will show the ids of
|
registry.Boolean(False, _("""Determines whether the bot will show the ids
|
||||||
a lart when the lart is given."""))
|
of a lart when the lart is given.""")))
|
||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
54
plugins/Lart/messages.pot
Normal file
54
plugins/Lart/messages.pot
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:21+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: config.py:49
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the bot will show the ids\n"
|
||||||
|
" of a lart when the lart is given."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:48
|
||||||
|
msgid "Larts must contain $who."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:52
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<channel>] [<id>] <who|what> [for <reason>]\n"
|
||||||
|
"\n"
|
||||||
|
" Uses the Luser Attitude Readjustment Tool on <who|what> (for <reason>,\n"
|
||||||
|
" if given). If <id> is given, uses that specific lart. <channel> is\n"
|
||||||
|
" only necessary if the message isn't sent in the channel itself.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:66
|
||||||
|
msgid "There is no lart with id #%i."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:71
|
||||||
|
msgid "There are no larts in my database for %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:77
|
||||||
|
msgid "trying to dis me"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:85
|
||||||
|
msgid " for "
|
||||||
|
msgstr ""
|
||||||
|
|
@ -32,6 +32,8 @@ import re
|
|||||||
from supybot.commands import *
|
from supybot.commands import *
|
||||||
import supybot.plugins as plugins
|
import supybot.plugins as plugins
|
||||||
import supybot.ircutils as ircutils
|
import supybot.ircutils as ircutils
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Lart')
|
||||||
|
|
||||||
class Lart(plugins.ChannelIdDatabasePlugin):
|
class Lart(plugins.ChannelIdDatabasePlugin):
|
||||||
_meRe = re.compile(r'\bme\b', re.I)
|
_meRe = re.compile(r'\bme\b', re.I)
|
||||||
@ -43,8 +45,9 @@ class Lart(plugins.ChannelIdDatabasePlugin):
|
|||||||
|
|
||||||
def addValidator(self, irc, text):
|
def addValidator(self, irc, text):
|
||||||
if '$who' not in text:
|
if '$who' not in text:
|
||||||
irc.error('Larts must contain $who.', Raise=True)
|
irc.error(_('Larts must contain $who.'), Raise=True)
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def lart(self, irc, msg, args, channel, id, text):
|
def lart(self, irc, msg, args, channel, id, text):
|
||||||
"""[<channel>] [<id>] <who|what> [for <reason>]
|
"""[<channel>] [<id>] <who|what> [for <reason>]
|
||||||
|
|
||||||
@ -60,18 +63,18 @@ class Lart(plugins.ChannelIdDatabasePlugin):
|
|||||||
try:
|
try:
|
||||||
lart = self.db.get(channel, id)
|
lart = self.db.get(channel, id)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
irc.error(format('There is no lart with id #%i.', id))
|
irc.error(format(_('There is no lart with id #%i.'), id))
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
lart = self.db.random(channel)
|
lart = self.db.random(channel)
|
||||||
if not lart:
|
if not lart:
|
||||||
irc.error(format('There are no larts in my database '
|
irc.error(format(_('There are no larts in my database '
|
||||||
'for %s.', channel))
|
'for %s.'), channel))
|
||||||
return
|
return
|
||||||
text = lart.text
|
text = lart.text
|
||||||
if ircutils.strEqual(target, irc.nick):
|
if ircutils.strEqual(target, irc.nick):
|
||||||
target = msg.nick
|
target = msg.nick
|
||||||
reason = self._replaceFirstPerson('trying to dis me', irc.nick)
|
reason = self._replaceFirstPerson(_('trying to dis me'), irc.nick)
|
||||||
else:
|
else:
|
||||||
target = self._replaceFirstPerson(target, msg.nick)
|
target = self._replaceFirstPerson(target, msg.nick)
|
||||||
reason = self._replaceFirstPerson(reason, msg.nick)
|
reason = self._replaceFirstPerson(reason, msg.nick)
|
||||||
@ -79,7 +82,7 @@ class Lart(plugins.ChannelIdDatabasePlugin):
|
|||||||
target = target.rstrip('.')
|
target = target.rstrip('.')
|
||||||
text = text.replace('$who', target)
|
text = text.replace('$who', target)
|
||||||
if reason:
|
if reason:
|
||||||
text += ' for ' + reason
|
text += _(' for ') + reason
|
||||||
if self.registryValue('showIds', channel):
|
if self.registryValue('showIds', channel):
|
||||||
text += format(' (#%i)', lart.id)
|
text += format(' (#%i)', lart.id)
|
||||||
irc.reply(text, action=True)
|
irc.reply(text, action=True)
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Later')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by setup.py to configure this module. Advanced is
|
# This will be called by setup.py to configure this module. Advanced is
|
||||||
@ -40,10 +42,11 @@ def configure(advanced):
|
|||||||
|
|
||||||
Later = conf.registerPlugin('Later')
|
Later = conf.registerPlugin('Later')
|
||||||
conf.registerGlobalValue(Later, 'maximum',
|
conf.registerGlobalValue(Later, 'maximum',
|
||||||
registry.NonNegativeInteger(0, """Determines the maximum number of messages
|
registry.NonNegativeInteger(0, _("""Determines the maximum number of
|
||||||
to be queued for a user. If this value is 0, there is no maximum."""))
|
messages to be queued for a user. If this value is 0, there is no maximum.
|
||||||
|
""")))
|
||||||
conf.registerGlobalValue(Later, 'private',
|
conf.registerGlobalValue(Later, 'private',
|
||||||
registry.Boolean(True, """Determines whether users will be notified in the
|
registry.Boolean(True, _("""Determines whether users will be notified in
|
||||||
first place in which they're seen, or in private."""))
|
the first place in which they're seen, or in private.""")))
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
101
plugins/Later/messages.pot
Normal file
101
plugins/Later/messages.pot
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:21+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: config.py:45
|
||||||
|
msgid ""
|
||||||
|
"Determines the maximum number of\n"
|
||||||
|
" messages to be queued for a user. If this value is 0, there is no maximum.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:49
|
||||||
|
msgid ""
|
||||||
|
"Determines whether users will be notified in\n"
|
||||||
|
" the first place in which they're seen, or in private."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:47
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"Used to do things later; currently, it only allows the sending of\n"
|
||||||
|
" nick-based notes. Do note (haha!) that these notes are *not* private\n"
|
||||||
|
" and don't even pretend to be; if you want such features, consider using the\n"
|
||||||
|
" Note plugin."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:87
|
||||||
|
msgid "just now"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:108
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<nick> <text>\n"
|
||||||
|
"\n"
|
||||||
|
" Tells <nick> <text> the next time <nick> is in seen. <nick> can\n"
|
||||||
|
" contain wildcard characters, and the first matching nick will be\n"
|
||||||
|
" given the note.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:115
|
||||||
|
msgid "I can't send notes to myself."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:121
|
||||||
|
msgid "That person's message queue is already full."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:126
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<nick>]\n"
|
||||||
|
"\n"
|
||||||
|
" If <nick> is given, replies with what notes are waiting on <nick>,\n"
|
||||||
|
" otherwise, replies with the nicks that have notes waiting for them.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:137
|
||||||
|
msgid "I have no notes for that nick."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:142
|
||||||
|
msgid "I currently have notes waiting for %L."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:145
|
||||||
|
msgid "I have no notes waiting to be delivered."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:150
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<nick>\n"
|
||||||
|
"\n"
|
||||||
|
" Removes the notes waiting on <nick>.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:159
|
||||||
|
msgid "There were no notes for %r"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:183
|
||||||
|
msgid "Sent %s: <%s> %s"
|
||||||
|
msgstr ""
|
||||||
|
|
@ -38,8 +38,11 @@ from supybot.commands import *
|
|||||||
import supybot.ircmsgs as ircmsgs
|
import supybot.ircmsgs as ircmsgs
|
||||||
import supybot.ircutils as ircutils
|
import supybot.ircutils as ircutils
|
||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Later')
|
||||||
|
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
class Later(callbacks.Plugin):
|
class Later(callbacks.Plugin):
|
||||||
"""Used to do things later; currently, it only allows the sending of
|
"""Used to do things later; currently, it only allows the sending of
|
||||||
nick-based notes. Do note (haha!) that these notes are *not* private
|
nick-based notes. Do note (haha!) that these notes are *not* private
|
||||||
@ -81,7 +84,7 @@ class Later(callbacks.Plugin):
|
|||||||
try:
|
try:
|
||||||
return utils.timeElapsed(diff, seconds=False) + ' ago'
|
return utils.timeElapsed(diff, seconds=False) + ' ago'
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return 'just now'
|
return _('just now')
|
||||||
|
|
||||||
def _addNote(self, nick, whence, text, at=None, maximum=None):
|
def _addNote(self, nick, whence, text, at=None, maximum=None):
|
||||||
if at is None:
|
if at is None:
|
||||||
@ -100,6 +103,7 @@ class Later(callbacks.Plugin):
|
|||||||
self.wildcards.append(nick)
|
self.wildcards.append(nick)
|
||||||
self._flushNotes()
|
self._flushNotes()
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def tell(self, irc, msg, args, nick, text):
|
def tell(self, irc, msg, args, nick, text):
|
||||||
"""<nick> <text>
|
"""<nick> <text>
|
||||||
|
|
||||||
@ -108,15 +112,16 @@ class Later(callbacks.Plugin):
|
|||||||
given the note.
|
given the note.
|
||||||
"""
|
"""
|
||||||
if ircutils.strEqual(nick, irc.nick):
|
if ircutils.strEqual(nick, irc.nick):
|
||||||
irc.error('I can\'t send notes to myself.')
|
irc.error(_('I can\'t send notes to myself.'))
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
self._addNote(nick, msg.nick, text)
|
self._addNote(nick, msg.nick, text)
|
||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
except ValueError:
|
except ValueError:
|
||||||
irc.error('That person\'s message queue is already full.')
|
irc.error(_('That person\'s message queue is already full.'))
|
||||||
tell = wrap(tell, ['something', 'text'])
|
tell = wrap(tell, ['something', 'text'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def notes(self, irc, msg, args, nick):
|
def notes(self, irc, msg, args, nick):
|
||||||
"""[<nick>]
|
"""[<nick>]
|
||||||
|
|
||||||
@ -129,17 +134,18 @@ class Later(callbacks.Plugin):
|
|||||||
for (when, whence, note) in self._notes[nick]]
|
for (when, whence, note) in self._notes[nick]]
|
||||||
irc.reply(format('%L', notes))
|
irc.reply(format('%L', notes))
|
||||||
else:
|
else:
|
||||||
irc.error('I have no notes for that nick.')
|
irc.error(_('I have no notes for that nick.'))
|
||||||
else:
|
else:
|
||||||
nicks = self._notes.keys()
|
nicks = self._notes.keys()
|
||||||
if nicks:
|
if nicks:
|
||||||
utils.sortBy(ircutils.toLower, nicks)
|
utils.sortBy(ircutils.toLower, nicks)
|
||||||
irc.reply(format('I currently have notes waiting for %L.',
|
irc.reply(format(_('I currently have notes waiting for %L.'),
|
||||||
nicks))
|
nicks))
|
||||||
else:
|
else:
|
||||||
irc.error('I have no notes waiting to be delivered.')
|
irc.error(_('I have no notes waiting to be delivered.'))
|
||||||
notes = wrap(notes, [additional('something')])
|
notes = wrap(notes, [additional('something')])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def remove(self, irc, msg, args, nick):
|
def remove(self, irc, msg, args, nick):
|
||||||
"""<nick>
|
"""<nick>
|
||||||
|
|
||||||
@ -150,7 +156,7 @@ class Later(callbacks.Plugin):
|
|||||||
self._flushNotes()
|
self._flushNotes()
|
||||||
irc.replySuccess()
|
irc.replySuccess()
|
||||||
except KeyError:
|
except KeyError:
|
||||||
irc.error('There were no notes for %r' % nick)
|
irc.error(_('There were no notes for %r') % nick)
|
||||||
remove = wrap(remove, [('checkCapability', 'admin'), 'something'])
|
remove = wrap(remove, [('checkCapability', 'admin'), 'something'])
|
||||||
|
|
||||||
def doPrivmsg(self, irc, msg):
|
def doPrivmsg(self, irc, msg):
|
||||||
@ -174,7 +180,7 @@ class Later(callbacks.Plugin):
|
|||||||
self._flushNotes()
|
self._flushNotes()
|
||||||
|
|
||||||
def _formatNote(self, when, whence, note):
|
def _formatNote(self, when, whence, note):
|
||||||
return 'Sent %s: <%s> %s' % (self._timestamp(when), whence, note)
|
return _('Sent %s: <%s> %s') % (self._timestamp(when), whence, note)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Limiter')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -41,17 +43,17 @@ def configure(advanced):
|
|||||||
|
|
||||||
Limiter = conf.registerPlugin('Limiter')
|
Limiter = conf.registerPlugin('Limiter')
|
||||||
conf.registerChannelValue(Limiter, 'enable',
|
conf.registerChannelValue(Limiter, 'enable',
|
||||||
registry.Boolean(False, """Determines whether the bot will maintain the
|
registry.Boolean(False, _("""Determines whether the bot will maintain the
|
||||||
channel limit to be slightly above the current number of people in the
|
channel limit to be slightly above the current number of people in the
|
||||||
channel, in order to make clone/drone attacks harder."""))
|
channel, in order to make clone/drone attacks harder.""")))
|
||||||
conf.registerChannelValue(Limiter, 'minimumExcess',
|
conf.registerChannelValue(Limiter, 'minimumExcess',
|
||||||
registry.PositiveInteger(5, """Determines the minimum number of free
|
registry.PositiveInteger(5, _("""Determines the minimum number of free
|
||||||
spots that will be saved when limits are being enforced. This should
|
spots that will be saved when limits are being enforced. This should
|
||||||
always be smaller than supybot.plugins.Limiter.limit.maximumExcess."""))
|
always be smaller than supybot.plugins.Limiter.limit.maximumExcess.""")))
|
||||||
conf.registerChannelValue(Limiter, 'maximumExcess',
|
conf.registerChannelValue(Limiter, 'maximumExcess',
|
||||||
registry.PositiveInteger(10, """Determines the maximum number of free spots
|
registry.PositiveInteger(10, _("""Determines the maximum number of free spots
|
||||||
that will be saved when limits are being enforced. This should always be
|
that will be saved when limits are being enforced. This should always be
|
||||||
larger than supybot.plugins.Limiter.limit.minimumExcess."""))
|
larger than supybot.plugins.Limiter.limit.minimumExcess.""")))
|
||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
50
plugins/Limiter/messages.pot
Normal file
50
plugins/Limiter/messages.pot
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:35+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: config.py:46
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the bot will maintain the\n"
|
||||||
|
" channel limit to be slightly above the current number of people in the\n"
|
||||||
|
" channel, in order to make clone/drone attacks harder."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:50
|
||||||
|
msgid ""
|
||||||
|
"Determines the minimum number of free\n"
|
||||||
|
" spots that will be saved when limits are being enforced. This should\n"
|
||||||
|
" always be smaller than supybot.plugins.Limiter.limit.maximumExcess."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:54
|
||||||
|
msgid ""
|
||||||
|
"Determines the maximum number of free spots\n"
|
||||||
|
" that will be saved when limits are being enforced. This should always be\n"
|
||||||
|
" larger than supybot.plugins.Limiter.limit.minimumExcess."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:40
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"In order to use this plugin, its config values need to be properly\n"
|
||||||
|
" setup. supybot.plugins.Limiter.enable needs to be set to True and\n"
|
||||||
|
" supybot.plugins.Limiter.{maximumExcess,minimumExcess} should be set to\n"
|
||||||
|
" values appropriate to your channel (if the defaults aren't satisfactory.\n"
|
||||||
|
" Once these are set, and someone enters/leaves the channel, Supybot will\n"
|
||||||
|
" start setting the proper +l modes.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
@ -32,8 +32,10 @@ from supybot.commands import *
|
|||||||
import supybot.ircmsgs as ircmsgs
|
import supybot.ircmsgs as ircmsgs
|
||||||
import supybot.ircutils as ircutils
|
import supybot.ircutils as ircutils
|
||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Limiter')
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
class Limiter(callbacks.Plugin):
|
class Limiter(callbacks.Plugin):
|
||||||
"""In order to use this plugin, its config values need to be properly
|
"""In order to use this plugin, its config values need to be properly
|
||||||
setup. supybot.plugins.Limiter.enable needs to be set to True and
|
setup. supybot.plugins.Limiter.enable needs to be set to True and
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Math')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -42,7 +44,7 @@ def configure(advanced):
|
|||||||
Math = conf.registerPlugin('Math')
|
Math = conf.registerPlugin('Math')
|
||||||
# This is where your configuration variables (if any) should go. For example:
|
# This is where your configuration variables (if any) should go. For example:
|
||||||
# conf.registerGlobalValue(Math, 'someConfigVariableName',
|
# conf.registerGlobalValue(Math, 'someConfigVariableName',
|
||||||
# registry.Boolean(False, """Help for someConfigVariableName."""))
|
# registry.Boolean(False, _("""Help for someConfigVariableName.""")))
|
||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
129
plugins/Math/messages.pot
Normal file
129
plugins/Math/messages.pot
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:35+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: plugin.py:52
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<fromBase> [<toBase>] <number>\n"
|
||||||
|
"\n"
|
||||||
|
" Converts <number> from base <fromBase> to base <toBase>.\n"
|
||||||
|
" If <toBase> is left out, it converts to decimal.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:63
|
||||||
|
msgid "Invalid <number> for base %s: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:69
|
||||||
|
#, docstring
|
||||||
|
msgid "Convert a decimal number to another base; returns a string."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:90
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"Convert a number from any base, 2 through 36, to any other\n"
|
||||||
|
" base, 2 through 36. Returns a string."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:157
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<math expression>\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the value of the evaluated <math expression>. The syntax is\n"
|
||||||
|
" Python syntax; the type of arithmetic is floating point. Floating\n"
|
||||||
|
" point arithmetic is used in order to prevent a user from being able to\n"
|
||||||
|
" crash to the bot with something like '10**10**10**10'. One consequence\n"
|
||||||
|
" is that large values such as '10**24' might not be exact.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:166 plugin.py:220
|
||||||
|
msgid "There's really no reason why you should have underscores or brackets in your mathematical expression. Please remove them."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:172 plugin.py:228
|
||||||
|
msgid "You can't use lambda in this command."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:202 plugin.py:236
|
||||||
|
msgid "The answer exceeded %s or so."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:204 plugin.py:238
|
||||||
|
msgid "Something in there wasn't a valid number."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:206 plugin.py:240
|
||||||
|
msgid "%s is not a defined function."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:213
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<math expression>\n"
|
||||||
|
"\n"
|
||||||
|
" This is the same as the calc command except that it allows integer\n"
|
||||||
|
" math, and can thus cause the bot to suck up CPU. Hence it requires\n"
|
||||||
|
" the 'trusted' capability to use.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:250
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<rpn math expression>\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the value of an RPN expression.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:275
|
||||||
|
msgid "Not enough arguments for %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:288
|
||||||
|
msgid "%q is not a defined function."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:295
|
||||||
|
msgid "Stack: [%s]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:299
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<number>] <unit> to <other unit>\n"
|
||||||
|
"\n"
|
||||||
|
" Converts from <unit> to <other unit>. If number isn't given, it\n"
|
||||||
|
" defaults to 1. For unit information, see 'units' command.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:314
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
" [<type>]\n"
|
||||||
|
"\n"
|
||||||
|
" With no arguments, returns a list of measurement types, which can be\n"
|
||||||
|
" passed as arguments. When called with a type as an argument, returns\n"
|
||||||
|
" the units of that type.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
@ -39,12 +39,15 @@ import string
|
|||||||
import supybot.utils as utils
|
import supybot.utils as utils
|
||||||
from supybot.commands import *
|
from supybot.commands import *
|
||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Math')
|
||||||
|
|
||||||
convertcore = utils.python.universalImport('local.convertcore')
|
convertcore = utils.python.universalImport('local.convertcore')
|
||||||
|
|
||||||
baseArg = ('int', 'base', lambda i: i <= 36)
|
baseArg = ('int', 'base', lambda i: i <= 36)
|
||||||
|
|
||||||
class Math(callbacks.Plugin):
|
class Math(callbacks.Plugin):
|
||||||
|
@internationalizeDocstring
|
||||||
def base(self, irc, msg, args, frm, to, number):
|
def base(self, irc, msg, args, frm, to, number):
|
||||||
"""<fromBase> [<toBase>] <number>
|
"""<fromBase> [<toBase>] <number>
|
||||||
|
|
||||||
@ -57,7 +60,7 @@ class Math(callbacks.Plugin):
|
|||||||
try:
|
try:
|
||||||
irc.reply(self._convertBaseToBase(number, to, frm))
|
irc.reply(self._convertBaseToBase(number, to, frm))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
irc.error('Invalid <number> for base %s: %s' % (frm, number))
|
irc.error(_('Invalid <number> for base %s: %s') % (frm, number))
|
||||||
base = wrap(base, [('int', 'base', lambda i: 2 <= i <= 36),
|
base = wrap(base, [('int', 'base', lambda i: 2 <= i <= 36),
|
||||||
optional(('int', 'base', lambda i: 2 <= i <= 36), 10),
|
optional(('int', 'base', lambda i: 2 <= i <= 36), 10),
|
||||||
additional('something')])
|
additional('something')])
|
||||||
@ -149,6 +152,7 @@ class Math(callbacks.Plugin):
|
|||||||
# Then we delete all square brackets, underscores, and whitespace, so no
|
# Then we delete all square brackets, underscores, and whitespace, so no
|
||||||
# one can do list comprehensions or call __...__ functions.
|
# one can do list comprehensions or call __...__ functions.
|
||||||
###
|
###
|
||||||
|
@internationalizeDocstring
|
||||||
def calc(self, irc, msg, args, text):
|
def calc(self, irc, msg, args, text):
|
||||||
"""<math expression>
|
"""<math expression>
|
||||||
|
|
||||||
@ -159,13 +163,13 @@ class Math(callbacks.Plugin):
|
|||||||
is that large values such as '10**24' might not be exact.
|
is that large values such as '10**24' might not be exact.
|
||||||
"""
|
"""
|
||||||
if text != text.translate(utils.str.chars, '_[]'):
|
if text != text.translate(utils.str.chars, '_[]'):
|
||||||
irc.error('There\'s really no reason why you should have '
|
irc.error(_('There\'s really no reason why you should have '
|
||||||
'underscores or brackets in your mathematical '
|
'underscores or brackets in your mathematical '
|
||||||
'expression. Please remove them.')
|
'expression. Please remove them.'))
|
||||||
return
|
return
|
||||||
#text = text.translate(utils.str.chars, '_[] \t')
|
#text = text.translate(utils.str.chars, '_[] \t')
|
||||||
if 'lambda' in text:
|
if 'lambda' in text:
|
||||||
irc.error('You can\'t use lambda in this command.')
|
irc.error(_('You can\'t use lambda in this command.'))
|
||||||
return
|
return
|
||||||
text = text.lower()
|
text = text.lower()
|
||||||
def handleMatch(m):
|
def handleMatch(m):
|
||||||
@ -195,15 +199,16 @@ class Math(callbacks.Plugin):
|
|||||||
irc.reply(self._complexToString(x))
|
irc.reply(self._complexToString(x))
|
||||||
except OverflowError:
|
except OverflowError:
|
||||||
maxFloat = math.ldexp(0.9999999999999999, 1024)
|
maxFloat = math.ldexp(0.9999999999999999, 1024)
|
||||||
irc.error('The answer exceeded %s or so.' % maxFloat)
|
irc.error(_('The answer exceeded %s or so.') % maxFloat)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
irc.error('Something in there wasn\'t a valid number.')
|
irc.error(_('Something in there wasn\'t a valid number.'))
|
||||||
except NameError, e:
|
except NameError, e:
|
||||||
irc.error('%s is not a defined function.' % str(e).split()[1])
|
irc.error(_('%s is not a defined function.') % str(e).split()[1])
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
irc.error(str(e))
|
irc.error(str(e))
|
||||||
calc = wrap(calc, ['text'])
|
calc = wrap(calc, ['text'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def icalc(self, irc, msg, args, text):
|
def icalc(self, irc, msg, args, text):
|
||||||
"""<math expression>
|
"""<math expression>
|
||||||
|
|
||||||
@ -212,15 +217,15 @@ class Math(callbacks.Plugin):
|
|||||||
the 'trusted' capability to use.
|
the 'trusted' capability to use.
|
||||||
"""
|
"""
|
||||||
if text != text.translate(utils.str.chars, '_[]'):
|
if text != text.translate(utils.str.chars, '_[]'):
|
||||||
irc.error('There\'s really no reason why you should have '
|
irc.error(_('There\'s really no reason why you should have '
|
||||||
'underscores or brackets in your mathematical '
|
'underscores or brackets in your mathematical '
|
||||||
'expression. Please remove them.')
|
'expression. Please remove them.'))
|
||||||
return
|
return
|
||||||
# This removes spaces, too, but we'll leave the removal of _[] for
|
# This removes spaces, too, but we'll leave the removal of _[] for
|
||||||
# safety's sake.
|
# safety's sake.
|
||||||
text = text.translate(utils.str.chars, '_[] \t')
|
text = text.translate(utils.str.chars, '_[] \t')
|
||||||
if 'lambda' in text:
|
if 'lambda' in text:
|
||||||
irc.error('You can\'t use lambda in this command.')
|
irc.error(_('You can\'t use lambda in this command.'))
|
||||||
return
|
return
|
||||||
text = text.replace('lambda', '')
|
text = text.replace('lambda', '')
|
||||||
try:
|
try:
|
||||||
@ -228,11 +233,11 @@ class Math(callbacks.Plugin):
|
|||||||
irc.reply(str(eval(text, self._mathEnv, self._mathEnv)))
|
irc.reply(str(eval(text, self._mathEnv, self._mathEnv)))
|
||||||
except OverflowError:
|
except OverflowError:
|
||||||
maxFloat = math.ldexp(0.9999999999999999, 1024)
|
maxFloat = math.ldexp(0.9999999999999999, 1024)
|
||||||
irc.error('The answer exceeded %s or so.' % maxFloat)
|
irc.error(_('The answer exceeded %s or so.') % maxFloat)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
irc.error('Something in there wasn\'t a valid number.')
|
irc.error(_('Something in there wasn\'t a valid number.'))
|
||||||
except NameError, e:
|
except NameError, e:
|
||||||
irc.error('%s is not a defined function.' % str(e).split()[1])
|
irc.error(_('%s is not a defined function.') % str(e).split()[1])
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
irc.error(utils.exnToString(e))
|
irc.error(utils.exnToString(e))
|
||||||
icalc = wrap(icalc, [('checkCapability', 'trusted'), 'text'])
|
icalc = wrap(icalc, [('checkCapability', 'trusted'), 'text'])
|
||||||
@ -267,7 +272,7 @@ class Math(callbacks.Plugin):
|
|||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
if not called:
|
if not called:
|
||||||
irc.error('Not enough arguments for %s' % arg)
|
irc.error(_('Not enough arguments for %s') % arg)
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
stack.append(f)
|
stack.append(f)
|
||||||
@ -280,14 +285,16 @@ class Math(callbacks.Plugin):
|
|||||||
try:
|
try:
|
||||||
stack.append(eval(s, self._mathEnv, self._mathEnv))
|
stack.append(eval(s, self._mathEnv, self._mathEnv))
|
||||||
except SyntaxError:
|
except SyntaxError:
|
||||||
irc.error(format('%q is not a defined function.', arg))
|
irc.error(format(_('%q is not a defined function.'),
|
||||||
|
arg))
|
||||||
return
|
return
|
||||||
if len(stack) == 1:
|
if len(stack) == 1:
|
||||||
irc.reply(str(self._complexToString(complex(stack[0]))))
|
irc.reply(str(self._complexToString(complex(stack[0]))))
|
||||||
else:
|
else:
|
||||||
s = ', '.join(map(self._complexToString, map(complex, stack)))
|
s = ', '.join(map(self._complexToString, map(complex, stack)))
|
||||||
irc.reply('Stack: [%s]' % s)
|
irc.reply(_('Stack: [%s]') % s)
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def convert(self, irc, msg, args, number, unit1, unit2):
|
def convert(self, irc, msg, args, number, unit1, unit2):
|
||||||
"""[<number>] <unit> to <other unit>
|
"""[<number>] <unit> to <other unit>
|
||||||
|
|
||||||
@ -302,6 +309,7 @@ class Math(callbacks.Plugin):
|
|||||||
irc.error(str(ude))
|
irc.error(str(ude))
|
||||||
convert = wrap(convert, [optional('float', 1.0),'something','to','text'])
|
convert = wrap(convert, [optional('float', 1.0),'something','to','text'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def units(self, irc, msg, args, type):
|
def units(self, irc, msg, args, type):
|
||||||
""" [<type>]
|
""" [<type>]
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
import supybot.conf as conf
|
import supybot.conf as conf
|
||||||
import supybot.registry as registry
|
import supybot.registry as registry
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Misc')
|
||||||
|
|
||||||
def configure(advanced):
|
def configure(advanced):
|
||||||
# This will be called by supybot to configure this module. advanced is
|
# This will be called by supybot to configure this module. advanced is
|
||||||
@ -40,24 +42,24 @@ def configure(advanced):
|
|||||||
|
|
||||||
Misc = conf.registerPlugin('Misc')
|
Misc = conf.registerPlugin('Misc')
|
||||||
conf.registerGlobalValue(Misc, 'listPrivatePlugins',
|
conf.registerGlobalValue(Misc, 'listPrivatePlugins',
|
||||||
registry.Boolean(True, """Determines whether the bot will list private
|
registry.Boolean(True, _("""Determines whether the bot will list private
|
||||||
plugins with the list command if given the --private switch. If this is
|
plugins with the list command if given the --private switch. If this is
|
||||||
disabled, non-owner users should be unable to see what private plugins
|
disabled, non-owner users should be unable to see what private plugins
|
||||||
are loaded."""))
|
are loaded.""")))
|
||||||
conf.registerGlobalValue(Misc, 'timestampFormat',
|
conf.registerGlobalValue(Misc, 'timestampFormat',
|
||||||
registry.String('[%H:%M:%S]', """Determines the format string for
|
registry.String('[%H:%M:%S]', _("""Determines the format string for
|
||||||
timestamps in the Misc.last command. Refer to the Python documentation
|
timestamps in the Misc.last command. Refer to the Python documentation
|
||||||
for the time module to see what formats are accepted. If you set this
|
for the time module to see what formats are accepted. If you set this
|
||||||
variable to the empty string, the timestamp will not be shown."""))
|
variable to the empty string, the timestamp will not be shown.""")))
|
||||||
conf.registerGroup(Misc, 'last')
|
conf.registerGroup(Misc, 'last')
|
||||||
conf.registerGroup(Misc.last, 'nested')
|
conf.registerGroup(Misc.last, 'nested')
|
||||||
conf.registerChannelValue(Misc.last.nested,
|
conf.registerChannelValue(Misc.last.nested,
|
||||||
'includeTimestamp', registry.Boolean(False, """Determines whether or not
|
'includeTimestamp', registry.Boolean(False, _("""Determines whether or not
|
||||||
the timestamp will be included in the output of last when it is part of a
|
the timestamp will be included in the output of last when it is part of a
|
||||||
nested command"""))
|
nested command""")))
|
||||||
conf.registerChannelValue(Misc.last.nested,
|
conf.registerChannelValue(Misc.last.nested,
|
||||||
'includeNick', registry.Boolean(False, """Determines whether or not the
|
'includeNick', registry.Boolean(False, _("""Determines whether or not the
|
||||||
nick will be included in the output of last when it is part of a nested
|
nick will be included in the output of last when it is part of a nested
|
||||||
command"""))
|
command""")))
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
230
plugins/Misc/messages.pot
Normal file
230
plugins/Misc/messages.pot
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR ORGANIZATION
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
|
"POT-Creation-Date: 2010-10-17 15:35+CEST\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
|
"Content-Transfer-Encoding: ENCODING\n"
|
||||||
|
"Generated-By: pygettext.py 1.5\n"
|
||||||
|
|
||||||
|
|
||||||
|
#: config.py:45
|
||||||
|
msgid ""
|
||||||
|
"Determines whether the bot will list private\n"
|
||||||
|
" plugins with the list command if given the --private switch. If this is\n"
|
||||||
|
" disabled, non-owner users should be unable to see what private plugins\n"
|
||||||
|
" are loaded."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:50
|
||||||
|
msgid ""
|
||||||
|
"Determines the format string for\n"
|
||||||
|
" timestamps in the Misc.last command. Refer to the Python documentation\n"
|
||||||
|
" for the time module to see what formats are accepted. If you set this\n"
|
||||||
|
" variable to the empty string, the timestamp will not be shown."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:57
|
||||||
|
msgid ""
|
||||||
|
"Determines whether or not\n"
|
||||||
|
" the timestamp will be included in the output of last when it is part of a\n"
|
||||||
|
" nested command"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: config.py:61
|
||||||
|
msgid ""
|
||||||
|
"Determines whether or not the\n"
|
||||||
|
" nick will be included in the output of last when it is part of a nested\n"
|
||||||
|
" command"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:81
|
||||||
|
msgid "You've given me %s invalid commands within the last minute; I'm now ignoring you for %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:93
|
||||||
|
msgid "The %q plugin is loaded, but there is no command named %q in it. Try \"list %s\" to see the commands in the %q plugin."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:119
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[--private] [<plugin>]\n"
|
||||||
|
"\n"
|
||||||
|
" Lists the commands available in the given plugin. If no plugin is\n"
|
||||||
|
" given, lists the public plugins available. If --private is given,\n"
|
||||||
|
" lists the private plugins.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:144
|
||||||
|
msgid "There are no private plugins."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:146
|
||||||
|
msgid "There are no public plugins."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:153
|
||||||
|
msgid "That plugin exists, but has no commands. This probably means that it has some configuration variables that can be changed in order to modify its behavior. Try \"config list supybot.plugins.%s\" to see what configuration variables it has."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:164
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<string>\n"
|
||||||
|
"\n"
|
||||||
|
" Searches for <string> in the commands currently offered by the bot,\n"
|
||||||
|
" returning a list of the commands containing that string.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:183
|
||||||
|
msgid "No appropriate commands were found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:188
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<plugin>] [<command>]\n"
|
||||||
|
"\n"
|
||||||
|
" This command gives a useful description of what <command> does.\n"
|
||||||
|
" <plugin> is only necessary if the command is in more than one plugin.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:198
|
||||||
|
msgid "That command exists in the %L plugins. Please specify exactly which plugin command you want help with."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:205
|
||||||
|
msgid "There is no command %q."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:211
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"takes no arguments\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the version of the current bot.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:217
|
||||||
|
msgid "The newest version available online is %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:221
|
||||||
|
msgid "I couldn't fetch the newest version from the Supybot website."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:223
|
||||||
|
msgid "The current (running) version of this Supybot is %s. %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:230
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"takes no arguments\n"
|
||||||
|
"\n"
|
||||||
|
" Returns a URL saying where to get Supybot.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:234
|
||||||
|
msgid "My source is at http://supybot.com/"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:239
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[<nick>]\n"
|
||||||
|
"\n"
|
||||||
|
" If the last command was truncated due to IRC message length\n"
|
||||||
|
" limitations, returns the next chunk of the result of the last command.\n"
|
||||||
|
" If <nick> is given, it takes the continuation of the last command from\n"
|
||||||
|
" <nick> instead of the person sending this message.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:253
|
||||||
|
msgid "%s has no public mores."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:256
|
||||||
|
msgid "Sorry, I can't find any mores for %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:265
|
||||||
|
msgid "You haven't asked me a command; perhaps you want to see someone else's more. To do so, call this command with that person's nick."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:269
|
||||||
|
msgid "That's all, there is no more."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:279
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"[--{from,in,on,with,without,regexp} <value>] [--nolimit]\n"
|
||||||
|
"\n"
|
||||||
|
" Returns the last message matching the given criteria. --from requires\n"
|
||||||
|
" a nick from whom the message came; --in requires a channel the message\n"
|
||||||
|
" was sent to; --on requires a network the message was sent on; --with\n"
|
||||||
|
" requires some string that had to be in the message; --regexp requires\n"
|
||||||
|
" a regular expression the message must match; --nolimit returns all\n"
|
||||||
|
" the messages that can be found. By default, the channel this command is\n"
|
||||||
|
" given in is searched.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:373
|
||||||
|
msgid "I couldn't find a message matching that criteria in my history of %s messages."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:388
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"<nick> <text>\n"
|
||||||
|
"\n"
|
||||||
|
" Tells the <nick> whatever <text> is. Use nested commands to your\n"
|
||||||
|
" benefit here.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:396
|
||||||
|
msgid "Dude, just give the command. No need for the tell."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:401
|
||||||
|
msgid "You just told me, why should I tell myself?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:406
|
||||||
|
msgid "I haven't seen %s, I'll let you do the telling."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:411
|
||||||
|
msgid "%s wants me to tell you: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:417
|
||||||
|
#, docstring
|
||||||
|
msgid ""
|
||||||
|
"takes no arguments\n"
|
||||||
|
"\n"
|
||||||
|
" Checks to see if the bot is alive.\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: plugin.py:421
|
||||||
|
msgid "pong"
|
||||||
|
msgstr ""
|
||||||
|
|
@ -44,6 +44,8 @@ import supybot.ircutils as ircutils
|
|||||||
import supybot.callbacks as callbacks
|
import supybot.callbacks as callbacks
|
||||||
|
|
||||||
from supybot.utils.iter import ifilter
|
from supybot.utils.iter import ifilter
|
||||||
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
||||||
|
_ = PluginInternationalization('Misc')
|
||||||
|
|
||||||
class Misc(callbacks.Plugin):
|
class Misc(callbacks.Plugin):
|
||||||
def __init__(self, irc):
|
def __init__(self, irc):
|
||||||
@ -76,8 +78,8 @@ class Misc(callbacks.Plugin):
|
|||||||
'permanently.')
|
'permanently.')
|
||||||
ircdb.ignores.add(banmask, time.time() + punishment)
|
ircdb.ignores.add(banmask, time.time() + punishment)
|
||||||
if conf.supybot.abuse.flood.command.invalid.notify():
|
if conf.supybot.abuse.flood.command.invalid.notify():
|
||||||
irc.reply('You\'ve given me %s invalid commands within the last '
|
irc.reply(_('You\'ve given me %s invalid commands within the last '
|
||||||
'minute; I\'m now ignoring you for %s.' %
|
'minute; I\'m now ignoring you for %s.') %
|
||||||
(maximum,
|
(maximum,
|
||||||
utils.timeElapsed(punishment, seconds=False)))
|
utils.timeElapsed(punishment, seconds=False)))
|
||||||
return
|
return
|
||||||
@ -88,10 +90,10 @@ class Misc(callbacks.Plugin):
|
|||||||
cb = irc.getCallback(tokens[0])
|
cb = irc.getCallback(tokens[0])
|
||||||
if cb:
|
if cb:
|
||||||
plugin = cb.name()
|
plugin = cb.name()
|
||||||
irc.error(format('The %q plugin is loaded, but there is '
|
irc.error(format(_('The %q plugin is loaded, but there is '
|
||||||
'no command named %q in it. Try "list '
|
'no command named %q in it. Try "list '
|
||||||
'%s" to see the commands in the %q '
|
'%s" to see the commands in the %q '
|
||||||
'plugin.', plugin, tokens[1],
|
'plugin.'), plugin, tokens[1],
|
||||||
plugin, plugin))
|
plugin, plugin))
|
||||||
else:
|
else:
|
||||||
irc.errorInvalid('command', tokens[0], repr=False)
|
irc.errorInvalid('command', tokens[0], repr=False)
|
||||||
@ -112,6 +114,7 @@ class Misc(callbacks.Plugin):
|
|||||||
else:
|
else:
|
||||||
pass # Let's just do nothing, I can't think of better.
|
pass # Let's just do nothing, I can't think of better.
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def list(self, irc, msg, args, optlist, cb):
|
def list(self, irc, msg, args, optlist, cb):
|
||||||
"""[--private] [<plugin>]
|
"""[--private] [<plugin>]
|
||||||
|
|
||||||
@ -138,24 +141,25 @@ class Misc(callbacks.Plugin):
|
|||||||
irc.reply(format('%L', names))
|
irc.reply(format('%L', names))
|
||||||
else:
|
else:
|
||||||
if private:
|
if private:
|
||||||
irc.reply('There are no private plugins.')
|
irc.reply(_('There are no private plugins.'))
|
||||||
else:
|
else:
|
||||||
irc.reply('There are no public plugins.')
|
irc.reply(_('There are no public plugins.'))
|
||||||
else:
|
else:
|
||||||
commands = cb.listCommands()
|
commands = cb.listCommands()
|
||||||
if commands:
|
if commands:
|
||||||
commands.sort()
|
commands.sort()
|
||||||
irc.reply(format('%L', commands))
|
irc.reply(format('%L', commands))
|
||||||
else:
|
else:
|
||||||
irc.reply(format('That plugin exists, but has no commands. '
|
irc.reply(format(_('That plugin exists, but has no commands. '
|
||||||
'This probably means that it has some '
|
'This probably means that it has some '
|
||||||
'configuration variables that can be '
|
'configuration variables that can be '
|
||||||
'changed in order to modify its behavior. '
|
'changed in order to modify its behavior. '
|
||||||
'Try "config list supybot.plugins.%s" to see '
|
'Try "config list supybot.plugins.%s" to see '
|
||||||
'what configuration variables it has.',
|
'what configuration variables it has.'),
|
||||||
cb.name()))
|
cb.name()))
|
||||||
list = wrap(list, [getopts({'private':''}), additional('plugin')])
|
list = wrap(list, [getopts({'private':''}), additional('plugin')])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def apropos(self, irc, msg, args, s):
|
def apropos(self, irc, msg, args, s):
|
||||||
"""<string>
|
"""<string>
|
||||||
|
|
||||||
@ -176,9 +180,10 @@ class Misc(callbacks.Plugin):
|
|||||||
L.sort()
|
L.sort()
|
||||||
irc.reply(format('%L', L))
|
irc.reply(format('%L', L))
|
||||||
else:
|
else:
|
||||||
irc.reply('No appropriate commands were found.')
|
irc.reply(_('No appropriate commands were found.'))
|
||||||
apropos = wrap(apropos, ['lowered'])
|
apropos = wrap(apropos, ['lowered'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def help(self, irc, msg, args, command):
|
def help(self, irc, msg, args, command):
|
||||||
"""[<plugin>] [<command>]
|
"""[<plugin>] [<command>]
|
||||||
|
|
||||||
@ -190,17 +195,18 @@ class Misc(callbacks.Plugin):
|
|||||||
if maxL == command:
|
if maxL == command:
|
||||||
if len(cbs) > 1:
|
if len(cbs) > 1:
|
||||||
names = sorted([cb.name() for cb in cbs])
|
names = sorted([cb.name() for cb in cbs])
|
||||||
irc.error(format('That command exists in the %L plugins. '
|
irc.error(format(_('That command exists in the %L plugins. '
|
||||||
'Please specify exactly which plugin command '
|
'Please specify exactly which plugin command '
|
||||||
'you want help with.', names))
|
'you want help with.'), names))
|
||||||
else:
|
else:
|
||||||
assert cbs, 'Odd, maxL == command, but no cbs.'
|
assert cbs, 'Odd, maxL == command, but no cbs.'
|
||||||
irc.reply(cbs[0].getCommandHelp(command, False))
|
irc.reply(cbs[0].getCommandHelp(command, False))
|
||||||
else:
|
else:
|
||||||
irc.error(format('There is no command %q.',
|
irc.error(format(_('There is no command %q.'),
|
||||||
callbacks.formatCommand(command)))
|
callbacks.formatCommand(command)))
|
||||||
help = wrap(help, [many('something')])
|
help = wrap(help, [many('something')])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def version(self, irc, msg, args):
|
def version(self, irc, msg, args):
|
||||||
"""takes no arguments
|
"""takes no arguments
|
||||||
|
|
||||||
@ -208,24 +214,27 @@ class Misc(callbacks.Plugin):
|
|||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
newest = utils.web.getUrl('http://supybot.sf.net/version.txt')
|
newest = utils.web.getUrl('http://supybot.sf.net/version.txt')
|
||||||
newest ='The newest version available online is %s.'%newest.strip()
|
newest = _('The newest version available online is %s.') % \
|
||||||
|
newest.strip()
|
||||||
except utils.web.Error, e:
|
except utils.web.Error, e:
|
||||||
self.log.info('Couldn\'t get website version: %s', e)
|
self.log.info('Couldn\'t get website version: %s', e)
|
||||||
newest = 'I couldn\'t fetch the newest version ' \
|
newest = _('I couldn\'t fetch the newest version '
|
||||||
'from the Supybot website.'
|
'from the Supybot website.')
|
||||||
s = 'The current (running) version of this Supybot is %s. %s' % \
|
s = _('The current (running) version of this Supybot is %s. %s') % \
|
||||||
(conf.version, newest)
|
(conf.version, newest)
|
||||||
irc.reply(s)
|
irc.reply(s)
|
||||||
version = wrap(thread(version))
|
version = wrap(thread(version))
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def source(self, irc, msg, args):
|
def source(self, irc, msg, args):
|
||||||
"""takes no arguments
|
"""takes no arguments
|
||||||
|
|
||||||
Returns a URL saying where to get Supybot.
|
Returns a URL saying where to get Supybot.
|
||||||
"""
|
"""
|
||||||
irc.reply('My source is at http://supybot.com/')
|
irc.reply(_('My source is at http://supybot.com/'))
|
||||||
source = wrap(source)
|
source = wrap(source)
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def more(self, irc, msg, args, nick):
|
def more(self, irc, msg, args, nick):
|
||||||
"""[<nick>]
|
"""[<nick>]
|
||||||
|
|
||||||
@ -241,10 +250,10 @@ class Misc(callbacks.Plugin):
|
|||||||
if not private:
|
if not private:
|
||||||
irc._mores[userHostmask] = L[:]
|
irc._mores[userHostmask] = L[:]
|
||||||
else:
|
else:
|
||||||
irc.error('%s has no public mores.' % nick)
|
irc.error(_('%s has no public mores.') % nick)
|
||||||
return
|
return
|
||||||
except KeyError:
|
except KeyError:
|
||||||
irc.error('Sorry, I can\'t find any mores for %s' % nick)
|
irc.error(_('Sorry, I can\'t find any mores for %s') % nick)
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
L = irc._mores[userHostmask]
|
L = irc._mores[userHostmask]
|
||||||
@ -253,11 +262,11 @@ class Misc(callbacks.Plugin):
|
|||||||
chunk += format(' \x02(%n)\x0F', (len(L), 'more', 'message'))
|
chunk += format(' \x02(%n)\x0F', (len(L), 'more', 'message'))
|
||||||
irc.reply(chunk, True)
|
irc.reply(chunk, True)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
irc.error('You haven\'t asked me a command; perhaps you want '
|
irc.error(_('You haven\'t asked me a command; perhaps you want '
|
||||||
'to see someone else\'s more. To do so, call this '
|
'to see someone else\'s more. To do so, call this '
|
||||||
'command with that person\'s nick.')
|
'command with that person\'s nick.'))
|
||||||
except IndexError:
|
except IndexError:
|
||||||
irc.error('That\'s all, there is no more.')
|
irc.error(_('That\'s all, there is no more.'))
|
||||||
more = wrap(more, [additional('seenNick')])
|
more = wrap(more, [additional('seenNick')])
|
||||||
|
|
||||||
def _validLastMsg(self, msg):
|
def _validLastMsg(self, msg):
|
||||||
@ -265,6 +274,7 @@ class Misc(callbacks.Plugin):
|
|||||||
msg.command == 'PRIVMSG' and \
|
msg.command == 'PRIVMSG' and \
|
||||||
ircutils.isChannel(msg.args[0])
|
ircutils.isChannel(msg.args[0])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def last(self, irc, msg, args, optlist):
|
def last(self, irc, msg, args, optlist):
|
||||||
"""[--{from,in,on,with,without,regexp} <value>] [--nolimit]
|
"""[--{from,in,on,with,without,regexp} <value>] [--nolimit]
|
||||||
|
|
||||||
@ -360,8 +370,8 @@ class Misc(callbacks.Plugin):
|
|||||||
showNick=showNick))
|
showNick=showNick))
|
||||||
return
|
return
|
||||||
if not resp:
|
if not resp:
|
||||||
irc.error('I couldn\'t find a message matching that criteria in '
|
irc.error(_('I couldn\'t find a message matching that criteria in '
|
||||||
'my history of %s messages.' % len(irc.state.history))
|
'my history of %s messages.') % len(irc.state.history))
|
||||||
else:
|
else:
|
||||||
irc.reply(format('%L', resp))
|
irc.reply(format('%L', resp))
|
||||||
last = wrap(last, [getopts({'nolimit': '',
|
last = wrap(last, [getopts({'nolimit': '',
|
||||||
@ -373,6 +383,7 @@ class Misc(callbacks.Plugin):
|
|||||||
'regexp': 'regexpMatcher',})])
|
'regexp': 'regexpMatcher',})])
|
||||||
|
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def tell(self, irc, msg, args, target, text):
|
def tell(self, irc, msg, args, target, text):
|
||||||
"""<nick> <text>
|
"""<nick> <text>
|
||||||
|
|
||||||
@ -382,30 +393,32 @@ class Misc(callbacks.Plugin):
|
|||||||
if target.lower() == 'me':
|
if target.lower() == 'me':
|
||||||
target = msg.nick
|
target = msg.nick
|
||||||
if ircutils.isChannel(target):
|
if ircutils.isChannel(target):
|
||||||
irc.error('Dude, just give the command. No need for the tell.')
|
irc.error(_('Dude, just give the command. No need for the tell.'))
|
||||||
return
|
return
|
||||||
if not ircutils.isNick(target):
|
if not ircutils.isNick(target):
|
||||||
irc.errorInvalid('nick', target)
|
irc.errorInvalid('nick', target)
|
||||||
if ircutils.nickEqual(target, irc.nick):
|
if ircutils.nickEqual(target, irc.nick):
|
||||||
irc.error('You just told me, why should I tell myself?',Raise=True)
|
irc.error(_('You just told me, why should I tell myself?'),
|
||||||
|
Raise=True)
|
||||||
if target not in irc.state.nicksToHostmasks and \
|
if target not in irc.state.nicksToHostmasks and \
|
||||||
not ircdb.checkCapability(msg.prefix, 'owner'):
|
not ircdb.checkCapability(msg.prefix, 'owner'):
|
||||||
# We'll let owners do this.
|
# We'll let owners do this.
|
||||||
s = 'I haven\'t seen %s, I\'ll let you do the telling.' % target
|
s = _('I haven\'t seen %s, I\'ll let you do the telling.') % target
|
||||||
irc.error(s, Raise=True)
|
irc.error(s, Raise=True)
|
||||||
if irc.action:
|
if irc.action:
|
||||||
irc.action = False
|
irc.action = False
|
||||||
text = '* %s %s' % (irc.nick, text)
|
text = '* %s %s' % (irc.nick, text)
|
||||||
s = '%s wants me to tell you: %s' % (msg.nick, text)
|
s = _('%s wants me to tell you: %s') % (msg.nick, text)
|
||||||
irc.reply(s, to=target, private=True)
|
irc.reply(s, to=target, private=True)
|
||||||
tell = wrap(tell, ['something', 'text'])
|
tell = wrap(tell, ['something', 'text'])
|
||||||
|
|
||||||
|
@internationalizeDocstring
|
||||||
def ping(self, irc, msg, args):
|
def ping(self, irc, msg, args):
|
||||||
"""takes no arguments
|
"""takes no arguments
|
||||||
|
|
||||||
Checks to see if the bot is alive.
|
Checks to see if the bot is alive.
|
||||||
"""
|
"""
|
||||||
irc.reply('pong', prefixNick=False)
|
irc.reply(_('pong'), prefixNick=False)
|
||||||
|
|
||||||
Class = Misc
|
Class = Misc
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user