Merge branch 'master' into pyproject

This commit is contained in:
Valentin Lorentz 2025-05-03 07:36:44 +02:00
commit e9f8fb3da9
296 changed files with 10141 additions and 7744 deletions

View File

@ -15,8 +15,12 @@ jobs:
strategy: strategy:
matrix: matrix:
include: include:
- python-version: "3.13.0-alpha.6" - python-version: "3.14.0-alpha.1"
with-opt-deps: false # https://github.com/pyca/cryptography/issues/10806 with-opt-deps: true
runs-on: ubuntu-22.04
- python-version: "3.13.0"
with-opt-deps: true
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
- python-version: "3.12.0" - python-version: "3.12.0"
@ -33,6 +37,9 @@ jobs:
- python-version: "3.10" - python-version: "3.10"
with-opt-deps: false with-opt-deps: false
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
- python-version: "pypy-3.10"
with-opt-deps: false
runs-on: ubuntu-22.04
- python-version: "3.9" - python-version: "3.9"
with-opt-deps: true with-opt-deps: true
@ -41,27 +48,6 @@ jobs:
with-opt-deps: true with-opt-deps: true
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
- python-version: "3.8"
with-opt-deps: true
runs-on: ubuntu-22.04
- python-version: "3.7"
with-opt-deps: true
runs-on: ubuntu-22.04
- python-version: "3.7"
with-opt-deps: false
runs-on: ubuntu-22.04
- python-version: "pypy-3.7"
with-opt-deps: false
runs-on: ubuntu-22.04
- python-version: "3.6"
with-opt-deps: false
runs-on: ubuntu-20.04
- python-version: "pypy-3.6"
with-opt-deps: false
runs-on: ubuntu-20.04
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
@ -81,7 +67,7 @@ jobs:
- name: Install - name: Install
run: | run: |
LIMNORIA_WARN_OLD_PYTHON=0 python3 setup.py install LIMNORIA_WARN_OLD_PYTHON=0 pip install .
- name: Test with unittest - name: Test with unittest
run: | run: |

2022
ChangeLog

File diff suppressed because it is too large Load Diff

435
RELNOTES
View File

@ -1,435 +0,0 @@
Version 0.83.5
The minimum supported Python version has been bumped to 2.6.
utils.str.perlVariableSubstitute is deprecated in favor of using Python's
string.Template directly. perlVariableSubstitute will be removed in a future
release.
Factoids' config variable supybot.plugins.Factoids.factoidPrefix has been
replaced by supybot.plugins.Factoids.format, which allows the user to
determine exactly how replies to Factoid queries are formatted.
supybot-botchk no longer runs supybot inside an instance of /bin/sh.
Version 0.83.4.1
Simple bug-fix release for a couple changes that were introduced last minute
before the previous release.
No incompatibilities.
Version 0.83.4
This release contains fixes for Python2.6 compability as well as a re-written
Google plugin which uses the AJAX API. The re-written plugin gained a
translate command and no longer needs an API key.
ChannelLogger has a new config variable, supybot.plugins.ChannelLogger.enable,
which can be used on a per-channel basis to determine whether that channel is
logged.
The RSS announce command has been restructured into the commands "announce
list", "announce remove", and "announce add" in order to simplify the
command's use.
The supybot.directories.plugins config variable now determines its global
directory dynamically instead of adding the directory to the value. This
means values like '/usr/lib/python2.5/site-packages/supybot/plugins' can be
removed from the variable. This should help ease transitioning a Supybot
config from one Python release to another.
Incompatibilities:
supybot.plugins.Google.safeSearch has been renamed to
supybot.plugins.Google.searchFilter
supybot.plugins.Channel.banmask has been removed in favor of a new
supybot.protocols.irc.banmask config variable. This general config variable
is used by the various commands which would need to know what style of banmask
to use.
Version 0.83.3
Overdue bug fix and Python2.5-compatible release. No significant changes to
worry about from the user perspective.
Version 0.83.2
Mainly bug fix release. The most noticeable change being a value of
'default' for supybot.drivers.module will use Socket instead of Twisted.
Version 0.83.1
No incompatibilities, just fixing an important bug with plugin loading.
Version 0.83.0
This far overdue release contains mostly bug-fixes.
Incompatibilities:
Changed the prefixName keyword argument (which appears in various places
in callbacks.py and the reply-related irc methods) to prefixNick.
Version 0.83.0rc3
This release candidate contains mostly bug-fixes.
Incompatibilities:
utils.changeFunctionName was moved to utils.python.changeFunctionName
Version 0.83.0rc2
This release candidate contains a few bug-fixes and some plugins we
forgot in the last RC. Otherwise, everything is compatible.
Version 0.83.0rc1
There have been some fairly significant changes since our last release.
This means that you should uninstall your previous version before
installing this version.
First, plugins are now a directory of files rather than a single file.
This makes it much easier for an individual plugin to supply any
3rd-party modules it may depend on and resolves some bugs we had with
reloading plugins. supybot-plugin-create (nee supybot-newplugin) has
been updated to reflect this. A side effect of using a directory-based
plugin is that @load/@reload are now case-sensitive. "@load foo" is not
the same as "@load Foo".
As part of the conversion to the new plugin format, some plugins were
broken up into more focused plugins. Also, not all of the plugins that
we used to ship are part of this release. Some we moved to the
supybot-plugins package and some others (which would be candidates for
supybot-plugins) have yet to be converted to the new format.
Second, we've updated the scripts that ship with Supybot. As noted in
the previous section, supybot-newplugin is now named
supybot-plugin-create. We've also added the following scripts:
supybot-botchk - Handy script for starting the bot and keeping it
running. Ideal for having cron automatically start the
bot.
supybot-plugin-doc - Generates documentation for the specified
plugin(s). Currently, the documentation is
generated using Structured TeXt so that it can
easily be uploaded to our website.
supybot-plugin-package - The beginning of a script to make a plugin
package which can be uploaded to our website
for general consumption.
supybot-test - Runs a plugin's test suite.
Third, we've broken supybot.utils into focused sub-modules. There's no
longer a supybot.fix module and we now have the following modules:
supybot.utils.file - utilities for dealing with files (e.g. the old
supybot.utils.transactionalFile is now
supybot.utils.file.AtomicFile)
supybot.utils.iter - utilities for dealing with iterables (all, any,
partition, groupBy, choice, etc)
supybot.utils.gen - general purpose utilities which are imported into
the supybot.utils namespace
supybot.utils.net - utilities for dealing with the network
supybot.utils.python - utilities for dealing with Python
supybot.utils.seq - utilities for dealing with sequences
supybot.utils.str - utilities for dealing with strings (including our
new format() function)
supybot.utils.structures - general purpose structures used in Supybot
supybot.utils.web - utilities for dealing with the web (used to be
supybot.webutils)
Fourth, we've added source-nested plugins (using the class
callbacks.Commands). This allows you to group similar commands
together. Some examples are:
Channel.{ban add,ban list,ban remove}
User.{hostmask add,hostmask list,hostmask remove}
Fifth, we've removed the privmsgs module. All of the functionality
that was offered in that module is now available by using commands.wrap.
Use of this is documented at:
http://supybot.com/documentation/help/tutorial/wrap
Sixth, we've renamed some plugin-related API changes. Some classes had
their names changed. The old names are still available for
backwards-compatibility.
callbacks.Privmsg -> callbacks.Plugin
callbacks.PrivmsgCommandAndRegexp -> callbacks.PluginRegexp
callbacks.IrcObjectProxy -> callbacks.NestedCommandsIrcProxy
callbacks.PrivmsgRegexp was removed since its functionality is covered
by setting using PluginRegexp.
Also, the prototype for a plugin's __init__ method changed:
def __init__(self): -> def __init__(self, irc):
Remember to pass the irc object on when you call the parent class's
__init__ method.
Version 0.80.0
We *finally* hit 0.80.0! This release is completely compatible with
the last release candidate.
An update to Babelfish may cause an error message to be displayed in
the console when the bot is first run. The error message should be
gone when the bot is restarted.
We also have a new community website at http://www.supybot.com/ where
our users can submit their own plugins, view/download other people's
plugins and discuss all things Supybot-related.
Version 0.80.0rc3
Another bugfix release. This one was pretty important as it actually
makes supybot.database.plugins.channelSpecific work properly.
Version 0.80.0rc2
supybot.databases.plugins.channelSpecific.channel was renamed to
supybot.databases.plugins.channelSpecific.link.
supybot.databases.plugins.channelSpecific.link.allow was added, which
determines whether a channel will allow other channels to link to its
database.
Infobot is no longer deprecated and the following changes were made to
its config variables:
supybot.plugins.Infobot.answerUnaddressedQuestions was renamed to
supybot.plugins.Infobot.unaddressed.answerQuestions.
supybot.plugins.Infobot.snarfUnaddressedDefinitions was renamed to
supybot.plugins.Infobot.unaddressed.snarfDefinitions.
supybot.plugins.Infobot.unaddressed.replyExistingFactoid was added to
determine whether the bot will reply when someone attempts to create a
duplicate factoid.
Version 0.80.0pre6
Another bugfix release. No incompatibilities known. The only
registry change is that supybot.databases.users.hash has been
removed.
Version 0.80.0pre5
Completely bugfix release. No incompatibilies known.
Version 0.80.0pre4
Mainly a bug fix release. This will likely be the last release before
0.80.0final, but we're gonna let it stew for a couple weeks to attempt
to catch any lingering bugs.
ansycoreDrivers is now deprecated in favor of socketDrivers or
twistedDrivers.
supybot.databases.plugins.channelSpecific.channel is now a channelValue
so that you can link specific channels together (instead of all channels
being linked together).
For those of you that use eval and/or exec, they have been removed from
the Owner plugin and are now in sandbox/Debug.py (which you'll have to
grab from CVS).
Version 0.80.0pre3
The database format for the Note plugin has changed to a flatfile
format; use tools/noteConvert.py to convert it to the new format.
Ditto that for the URL database.
FunDB is deprecated and will be removed at the next major release;
use tools/fundbConvert.py to convert your old FunDB databases to Lart
and Praise databases.
If you had turned off supybot.databases.plugins.channelSpecific, your
non-channel-specific database files had gone directly into your data/
directory. We had some problems with poor interactions between that
configuration variable and channel capabilities, though, so we
changed the implementation so that non-channel-specific databases are
considered databases of a single (configurable) channel (defaulting
to "#"). This will also help others who are converting from
channel-specific to non-channel-specific databases, but for you
who've already made the switch, you'll need to move your database
files again, from data/ to data/# (or whatever channel you might
change that variable to).
supybot.channels doesn't exist anymore; now the only list of channels
to join is per-network, in supybot.networks.<network>.channels.
We weren't serializing supybot.replies.* properly in older versions.
Now we are, but the old, improperly serialized versions won't work
properly. Remove from your configuration file all variables
beginning with "supybot.replies" before you start the bot.
The URL database has been changed again, but it will use a different
filename so you shouldn't run into conflicts, just a newly-empty
database.
We upgraded the SOAP stuff in others; you may do well to do a
setup.py install --clean this time around.
Version 0.80.0pre2
Many more bugs have been fixed. A few more plugins have been updated
to use our new-style database abstraction. If it seems like your
databases are suddenly empty, look for a new database file named
Plugin.dbtype.db. We've also added a few more configuration variables.
Version 0.80.0pre1
Tons of bugs fixed, many features and plugins added. Everything
should be entirely compatible; many more configuration variables have
been added.
Version 0.79.9999
Some more bugs fixed, added a few features and a couple configuration
variabless. This should hopefully be the last release before 0.80.0,
which will finally bring us to pure Beta status.
Version 0.79.999
Some bugs fixed, but the ones that were fixed were pretty big. This
is, of course, completely compatible with the last release.
Version 0.79.99
Many bugs fixed, thanks to the users who reported them. We're
getting asymptotically closer to 0.80.0 -- maybe this'll be the last
one, maybe we'll have to release an 0.79.999 -- either way, we're
getting close :) Check out the ChangeLog for the fixes and a few new
features.
Version 0.79.9
We've changed so much stuff in this release that we've given up on
users upgrading their configuration files for the new release. So
do a clean install (python2.3 setup.py install --clean), run the
wizard again, and kick some butt.
(It's rumored that you can save most of your old configuration by
appending your new configuration at the end of your old configuration
and running supybot with that new configuration file. This, of
course, comes with no warranty or guarantee of utility -- try it if
you want, but backup your original configuration file!)
Version 0.77.2
This is a drop-in replacement for 0.77.1, with two exceptions. The
configuration variable formerly known as
"supybot.plugins.Services.password" is now known as
"supybot.plugins.Services.NickServ.password", due to the fact that
there might be different passwords for NickServ and ChanServ (and
ChanServ passwords are per-channel, whereas NickServ passwords are
global). If you're using the Services plugin, you'll need to make
this change in order to continue identifying with services. The
configuration variable formerly known as
"supybot.plugins.Babelfish.disabledLanguages" is now known as
"supybot.plugins.Babelfish.languages". The configuration variable now
accepts the languages that *will* be translated as opposed to ones
that are *not* translated.
Tests and the developer sandbox are not longer delivered with our
release tarballs. If you're a developer and you want these, you
should either check out CVS or download one of our weekly CVS
snapshots, available at http://supybot.sourceforge.net/snapshots/ .
Version 0.77.1
This is a drop-in replacement for 0.77.0 -- no incompatibilities, to
out knowledge. Simply install over your old installation and restart
your bot :)
Version 0.77.0
Setup.py will automatically remove your old installations for you, no
need to worry about that yourself.
Configuration has been *entirely* redone. Read the new
GETTING_STARTED document to see how to work with configuration
variables now. Your old botscripts from earlier versions *will not*
work with the new configuration method. We'd appreciate it if you'd
rerun the wizard in order for us to find any bugs that remain in it
before we officially declare ourselves Beta. Note also that because
of the new configuration method, the interface for plugins' configure
function has changed: there are no longer any onStart or afterConnect
arguments, so all configuration should be performed via the registry.
Channel capabilities have been changed; rather than being
#channel.capability, they're now #channel,capability. It's a bit
uglier, we know, but dots can be valid in channel names, and we
needed the dot for handling plugin.command capabilities.
tools/ircdbConvert.py should update this for you.
The on-disk format of the user/channel databases has changed to be far
more readable. A conversion utility is included, as mentioned before:
tools/ircdbConvert.py. Run this with no arguments to see the
directions for using it.
Uh, we were just kidding about the upgrade script in 0.76.0 :) It'll
be a little while longer. We do have several little upgrade scripts,
though.
Version 0.76.1
Almost entirely bugfixes, just some minor (and some less minor) bugs
that need to get in before we really start hacking on the next
version. Should be *entirely* compatible with 0.76.0.
Version 0.76.0
Major bugfix release. A great number of bugs fixed. This is the last
release without an upgrade script.
The only hiccup in the upgrade from 0.75.0 should be that you'll need
to update your botscript to reflect the removal of the debug module.
We'd rather you use supybot-wizard to generate a new botscript, of
course, but if you insist on modifying your existing botscript, take a
look at
<http://cvs.sourceforge.net/viewcvs.py/supybot/supybot/src/template.py?r1=1.20&r2=1.21>
to see what you need to do.
Version 0.75.0
Don't forget to reinstall (i.e., run "python setup.py install" as
root). Sometimes it even does good to remove the old installation;
$PYTHON/site-packages/supybot can be removed with no problems
whatsoever.
You will need to re-run supybot-wizard and generate a new botscript.
The Infobot plugin has been removed from this release; it's not ready
for prime time. If you're interested in getting it running (i.e., you
want full Infobot compatibility and aren't satisfied with either
MoobotFactoids or Factoids) then swing over to #supybot and we can
discuss the tests. We simply don't know enough about Infobot to make
sure our Infobot plugin is an exact replica, and need someone's help
with making the changes necessary for that.

View File

@ -23,52 +23,52 @@ Commands
.. _command-admin-acmd: .. _command-admin-acmd:
acmd <command> [<arg> ...] ``acmd <command> [<arg> ...]``
Perform <command> (with associated <arg>s on all channels on current network. Perform <command> (with associated <arg>s on all channels on current network.
.. _command-admin-capability.add: .. _command-admin-capability.add:
capability add <name|hostmask> <capability> ``capability add <name|hostmask> <capability>``
Gives the user specified by <name> (or the user to whom <hostmask> currently maps) the specified capability <capability> Gives the user specified by <name> (or the user to whom <hostmask> currently maps) the specified capability <capability>
.. _command-admin-capability.remove: .. _command-admin-capability.remove:
capability remove <name|hostmask> <capability> ``capability remove <name|hostmask> <capability>``
Takes from the user specified by <name> (or the user to whom <hostmask> currently maps) the specified capability <capability> Takes from the user specified by <name> (or the user to whom <hostmask> currently maps) the specified capability <capability>
.. _command-admin-channels: .. _command-admin-channels:
channels takes no arguments ``channels takes no arguments``
Returns the channels the bot is on. Returns the channels the bot is on.
.. _command-admin-clearq: .. _command-admin-clearq:
clearq takes no arguments ``clearq takes no arguments``
Clears the current send queue for this network. Clears the current send queue for this network.
.. _command-admin-ignore.add: .. _command-admin-ignore.add:
ignore add <hostmask|nick> [<expires>] ``ignore add <hostmask|nick> [<expires>]``
This will set a persistent ignore on <hostmask> or the hostmask currently associated with <nick>. <expires> is an optional argument specifying when (in "seconds from now") the ignore will expire; if it isn't given, the ignore will never automatically expire. This will set a persistent ignore on <hostmask> or the hostmask currently associated with <nick>. <expires> is an optional argument specifying when (in "seconds from now") the ignore will expire; if it isn't given, the ignore will never automatically expire.
.. _command-admin-ignore.list: .. _command-admin-ignore.list:
ignore list takes no arguments ``ignore list takes no arguments``
Lists the hostmasks that the bot is ignoring. Lists the hostmasks that the bot is ignoring.
.. _command-admin-ignore.remove: .. _command-admin-ignore.remove:
ignore remove <hostmask|nick> ``ignore remove <hostmask|nick>``
This will remove the persistent ignore on <hostmask> or the hostmask currently associated with <nick>. This will remove the persistent ignore on <hostmask> or the hostmask currently associated with <nick>.
.. _command-admin-join: .. _command-admin-join:
join <channel> [<key>] ``join <channel> [<key>]``
Tell the bot to join the given channel. If <key> is given, it is used when attempting to join the channel. Tell the bot to join the given channel. If <key> is given, it is used when attempting to join the channel.
.. _command-admin-nick: .. _command-admin-nick:
nick [<nick>] [<network>] ``nick [<nick>] [<network>]``
Changes the bot's nick to <nick>. If no nick is given, returns the bot's current nick. Changes the bot's nick to <nick>. If no nick is given, returns the bot's current nick.
.. _conf-Admin: .. _conf-Admin:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -77,47 +77,47 @@ Commands
.. _command-aka-add: .. _command-aka-add:
add [--channel <#channel>] <name> <command> ``add [--channel <#channel>] <name> <command>``
Defines an alias <name> that executes <command>. The <command> should be in the standard "command argument [nestedcommand argument]" arguments to the alias; they'll be filled with the first, second, etc. arguments. $1, $2, etc. can be used for required arguments. @1, @2, etc. can be used for optional arguments. $* simply means "all arguments that have not replaced $1, $2, etc.", ie. it will also include optional arguments. Defines an alias <name> that executes <command>. The <command> should be in the standard "command argument [nestedcommand argument]" arguments to the alias; they'll be filled with the first, second, etc. arguments. $1, $2, etc. can be used for required arguments. @1, @2, etc. can be used for optional arguments. $* simply means "all arguments that have not replaced $1, $2, etc.", ie. it will also include optional arguments.
.. _command-aka-remove: .. _command-aka-remove:
remove [--channel <#channel>] <name> ``remove [--channel <#channel>] <name>``
Removes the given alias, if unlocked. Removes the given alias, if unlocked.
.. _command-aka-lock: .. _command-aka-lock:
lock [--channel <#channel>] <alias> ``lock [--channel <#channel>] <alias>``
Locks an alias so that no one else can change it. Locks an alias so that no one else can change it.
.. _command-aka-unlock: .. _command-aka-unlock:
unlock [--channel <#channel>] <alias> ``unlock [--channel <#channel>] <alias>``
Unlocks an alias so that people can define new aliases over it. Unlocks an alias so that people can define new aliases over it.
.. _command-aka-importaliasdatabase: .. _command-aka-importaliasdatabase:
importaliasdatabase takes no arguments ``importaliasdatabase takes no arguments``
Imports the Alias database into Aka's, and clean the former. Imports the Alias database into Aka's, and clean the former.
.. _command-aka-show: .. _command-aka-show:
show [--channel <#channel>] <alias> ``show [--channel <#channel>] <alias>``
This command shows the content of an Aka. This command shows the content of an Aka.
.. _command-aka-list: .. _command-aka-list:
list [--channel <#channel>] [--keys] [--unlocked|--locked] ``list [--channel <#channel>] [--keys] [--unlocked|--locked]``
Lists all Akas defined for <channel>. If <channel> is not specified, lists all global Akas. If --keys is given, lists only the Aka names and not their commands. Lists all Akas defined for <channel>. If <channel> is not specified, lists all global Akas. If --keys is given, lists only the Aka names and not their commands.
.. _command-aka-set: .. _command-aka-set:
set [--channel <#channel>] <name> <command> ``set [--channel <#channel>] <name> <command>``
Overwrites an existing alias <name> to execute <command> instead. The <command> should be in the standard "command argument [nestedcommand argument]" arguments to the alias; they'll be filled with the first, second, etc. arguments. $1, $2, etc. can be used for required arguments. @1, @2, etc. can be used for optional arguments. $* simply means "all arguments that have not replaced $1, $2, etc.", ie. it will also include optional arguments. Overwrites an existing alias <name> to execute <command> instead. The <command> should be in the standard "command argument [nestedcommand argument]" arguments to the alias; they'll be filled with the first, second, etc. arguments. $1, $2, etc. can be used for required arguments. @1, @2, etc. can be used for optional arguments. $* simply means "all arguments that have not replaced $1, $2, etc.", ie. it will also include optional arguments.
.. _command-aka-search: .. _command-aka-search:
search [--channel <#channel>] <query> ``search [--channel <#channel>] <query>``
Searches Akas defined for <channel>. If <channel> is not specified, searches all global Akas. Searches Akas defined for <channel>. If <channel> is not specified, searches all global Akas.
.. _conf-Aka: .. _conf-Aka:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Aka plugin for Limnoria\n" "Project-Id-Version: Aka plugin for Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2014-12-20 13:57+0200\n" "PO-Revision-Date: 2014-12-20 13:57+0200\n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n" "Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -32,12 +32,12 @@ msgid ""
" browsable through the HTTP server." " browsable through the HTTP server."
msgstr "" msgstr ""
#: plugin.py:141 plugin.py:274 plugin.py:732 #: plugin.py:141 plugin.py:274 plugin.py:728
msgid "This Aka already exists." msgid "This Aka already exists."
msgstr "Tämä Aka on jo olemassa." msgstr "Tämä Aka on jo olemassa."
#: plugin.py:170 plugin.py:182 plugin.py:196 plugin.py:301 plugin.py:318 #: plugin.py:170 plugin.py:182 plugin.py:196 plugin.py:301 plugin.py:318
#: plugin.py:335 plugin.py:912 #: plugin.py:335 plugin.py:908
msgid "This Aka does not exist." msgid "This Aka does not exist."
msgstr "Tätä Akaa ei ole olemassa." msgstr "Tätä Akaa ei ole olemassa."
@ -90,10 +90,10 @@ msgid ""
" Trout\n" " Trout\n"
" ^^^^^\n" " ^^^^^\n"
"\n" "\n"
" Add an aka, trout, which expects a word as an argument::\n" " Add an aka, ``trout``, which expects a word as an argument::\n"
"\n" "\n"
" <jamessan> @aka add trout \"reply action slaps $1 with a large trout" " <jamessan> @aka add trout \"reply action slaps $1 with a large "
"\"\n" "trout\"\n"
" <bot> jamessan: The operation succeeded.\n" " <bot> jamessan: The operation succeeded.\n"
" <jamessan> @trout me\n" " <jamessan> @trout me\n"
" * bot slaps me with a large trout\n" " * bot slaps me with a large trout\n"
@ -101,46 +101,38 @@ msgid ""
" This ``trout`` aka requires the plugin ``Reply`` to be loaded since it\n" " This ``trout`` aka requires the plugin ``Reply`` to be loaded since it\n"
" provides the ``action`` command.\n" " provides the ``action`` command.\n"
"\n" "\n"
" LastFM\n" " Random percentage\n"
" ^^^^^^\n" " ^^^^^^^^^^^^^^^^^\n"
"\n" "\n"
" Add an aka, ``lastfm``, which expects a last.fm username and replies " " Add an aka, ``randpercent``, which returns a random percentage value::\n"
"with\n"
" their most recently played item::\n"
"\n" "\n"
" @aka add lastfm \"rss [format concat http://ws.audioscrobbler." " @aka add randpercent \"squish [dice 1d100]%\"\n"
"com/1.0/user/ [format concat [web urlquote $1] /recenttracks.rss]]\"\n"
"\n" "\n"
" This ``lastfm`` aka requires the following plugins to be loaded: " " This requires the ``Filter`` and ``Games`` plugins to be loaded.\n"
"``RSS``,\n"
" ``Format`` and ``Web``.\n"
"\n" "\n"
" ``RSS`` provides ``rss``, ``Format`` provides ``concat`` and ``Web`` " " Note that nested commands in an alias should be quoted, or they will "
"provides\n" "only\n"
" ``urlquote``.\n" " run once when you create the alias, and not each time the alias is\n"
"\n" " called. (In this case, not quoting the nested command would mean that\n"
" Note that if the nested commands being aliased hadn't been quoted, then\n" " ``@randpercent`` always responds with the same value!)\n"
" those commands would have been run immediately, and ``@lastfm`` would "
"always\n"
" reply with the same information, the result of those commands.\n"
" " " "
msgstr "" msgstr ""
#: plugin.py:699 #: plugin.py:695
msgid "You've attempted more nesting than is currently allowed on this bot." msgid "You've attempted more nesting than is currently allowed on this bot."
msgstr "" msgstr ""
"Olet yrittänyt sisällyttää enemmän komentoja, kuin tässä botti sallii juuri " "Olet yrittänyt sisällyttää enemmän komentoja, kuin tässä botti sallii juuri "
"nyt." "nyt."
#: plugin.py:703 #: plugin.py:699
msgid " at least" msgid " at least"
msgstr "ainakin" msgstr "ainakin"
#: plugin.py:712 #: plugin.py:708
msgid "Locked by %s at %s" msgid "Locked by %s at %s"
msgstr "Lukinnut %s aikaan %s" msgstr "Lukinnut %s aikaan %s"
#: plugin.py:717 #: plugin.py:713
#, fuzzy #, fuzzy
msgid "" msgid ""
"<a global alias,%s %n>\n" "<a global alias,%s %n>\n"
@ -151,11 +143,11 @@ msgstr ""
"\n" "\n"
"Alias komennolle %q.%s" "Alias komennolle %q.%s"
#: plugin.py:718 plugin.py:722 #: plugin.py:714 plugin.py:718
msgid "argument" msgid "argument"
msgstr "parametri" msgstr "parametri"
#: plugin.py:721 #: plugin.py:717
#, fuzzy #, fuzzy
msgid "" msgid ""
"<an alias on %s,%s %n>\n" "<an alias on %s,%s %n>\n"
@ -166,24 +158,24 @@ msgstr ""
"\n" "\n"
"Alias komennolle %q.%s" "Alias komennolle %q.%s"
#: plugin.py:729 #: plugin.py:725
msgid "You can't overwrite commands in this plugin." msgid "You can't overwrite commands in this plugin."
msgstr "Et voi ylikirjoittaa tämän lisä-osan komentoja." msgstr "Et voi ylikirjoittaa tämän lisä-osan komentoja."
#: plugin.py:734 #: plugin.py:730
msgid "This Aka has too many spaces in its name." msgid "This Aka has too many spaces in its name."
msgstr "Tämän Akan nimessä on liian monta välilyöntiä." msgstr "Tämän Akan nimessä on liian monta välilyöntiä."
#: plugin.py:739 #: plugin.py:735
msgid "Can't mix $* and optional args (@1, etc.)" msgid "Can't mix $* and optional args (@1, etc.)"
msgstr "" msgstr ""
"$*:ä ja vapaaehtoisia parametrejä (@1, jne.) ei voida sekoittaa keskenään" "$*:ä ja vapaaehtoisia parametrejä (@1, jne.) ei voida sekoittaa keskenään"
#: plugin.py:746 #: plugin.py:742
msgid "This Aka is locked." msgid "This Aka is locked."
msgstr "Tämä Aka on lukittu." msgstr "Tämä Aka on lukittu."
#: plugin.py:750 #: plugin.py:746
#, fuzzy #, fuzzy
msgid "" msgid ""
"[--channel <#channel>] <name> <command>\n" "[--channel <#channel>] <name> <command>\n"
@ -214,12 +206,12 @@ msgstr ""
"parametrit.\n" "parametrit.\n"
" " " "
#: plugin.py:764 plugin.py:796 plugin.py:827 plugin.py:859 plugin.py:882 #: plugin.py:760 plugin.py:792 plugin.py:823 plugin.py:855 plugin.py:878
#: plugin.py:905 plugin.py:951 plugin.py:994 #: plugin.py:901 plugin.py:947 plugin.py:990
msgid "%r is not a valid channel." msgid "%r is not a valid channel."
msgstr "%r ei ole kelvollinen kanava." msgstr "%r ei ole kelvollinen kanava."
#: plugin.py:782 #: plugin.py:778
#, fuzzy #, fuzzy
msgid "" msgid ""
"[--channel <#channel>] <name> <command>\n" "[--channel <#channel>] <name> <command>\n"
@ -249,7 +241,7 @@ msgstr ""
"$2 jne.\", esimerkiksi. se sisällyttää\n" "$2 jne.\", esimerkiksi. se sisällyttää\n"
" myös kaikki vapaaehtoiset parametrit." " myös kaikki vapaaehtoiset parametrit."
#: plugin.py:819 #: plugin.py:815
msgid "" msgid ""
"[--channel <#channel>] <name>\n" "[--channel <#channel>] <name>\n"
"\n" "\n"
@ -261,7 +253,7 @@ msgstr ""
" Poistaa annetun aliaksen, ellei se ole lukittu.\n" " Poistaa annetun aliaksen, ellei se ole lukittu.\n"
" " " "
#: plugin.py:841 #: plugin.py:837
msgid "" msgid ""
"Check if the user has any of the required capabilities to manage\n" "Check if the user has any of the required capabilities to manage\n"
" the regexp database." " the regexp database."
@ -269,7 +261,7 @@ msgstr ""
"Tarkistaa onko käyttäjällä vaadittu valtuus säännöllisten lausekkeiden\n" "Tarkistaa onko käyttäjällä vaadittu valtuus säännöllisten lausekkeiden\n"
" tietokannan hallintaan." " tietokannan hallintaan."
#: plugin.py:851 #: plugin.py:847
msgid "" msgid ""
"[--channel <#channel>] <alias>\n" "[--channel <#channel>] <alias>\n"
"\n" "\n"
@ -281,7 +273,7 @@ msgstr ""
" Lukitsee aliaksen estäen muita muokkaamasta sitä.\n" " Lukitsee aliaksen estäen muita muokkaamasta sitä.\n"
" " " "
#: plugin.py:874 #: plugin.py:870
msgid "" msgid ""
"[--channel <#channel>] <alias>\n" "[--channel <#channel>] <alias>\n"
"\n" "\n"
@ -293,7 +285,7 @@ msgstr ""
" Avaa aliaksen, jotta kaikki voivat määrittää uusia aliaksia sen päälle.\n" " Avaa aliaksen, jotta kaikki voivat määrittää uusia aliaksia sen päälle.\n"
" " " "
#: plugin.py:897 #: plugin.py:893
msgid "" msgid ""
"[--channel <#channel>] <alias>\n" "[--channel <#channel>] <alias>\n"
"\n" "\n"
@ -304,7 +296,7 @@ msgstr ""
"\n" "\n"
" Tämä komento näyttää Akan sisällön." " Tämä komento näyttää Akan sisällön."
#: plugin.py:917 #: plugin.py:913
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -314,15 +306,15 @@ msgstr ""
"\n" "\n"
" Tuo Aliaksen tietokannan Akaan ja tyhjentää aiemman." " Tuo Aliaksen tietokannan Akaan ja tyhjentää aiemman."
#: plugin.py:922 #: plugin.py:918
msgid "Alias plugin is not loaded." msgid "Alias plugin is not loaded."
msgstr "Alias lisä-osa ei ole ladattu." msgstr "Alias lisä-osa ei ole ladattu."
#: plugin.py:933 #: plugin.py:929
msgid "Error occured when importing the %n: %L" msgid "Error occured when importing the %n: %L"
msgstr "Virhe komennon %n tuomisessa: %L" msgstr "Virhe komennon %n tuomisessa: %L"
#: plugin.py:941 #: plugin.py:937
msgid "" msgid ""
"[--channel <#channel>] [--keys] [--unlocked|--locked]\n" "[--channel <#channel>] [--keys] [--unlocked|--locked]\n"
"\n" "\n"
@ -332,15 +324,15 @@ msgid ""
" and not their commands." " and not their commands."
msgstr "" msgstr ""
#: plugin.py:960 #: plugin.py:956
msgid "--locked and --unlocked are incompatible options." msgid "--locked and --unlocked are incompatible options."
msgstr "" msgstr ""
#: plugin.py:980 #: plugin.py:976
msgid "No Akas found." msgid "No Akas found."
msgstr "" msgstr ""
#: plugin.py:985 #: plugin.py:981
msgid "" msgid ""
"[--channel <#channel>] <query>\n" "[--channel <#channel>] <query>\n"
"\n" "\n"
@ -348,7 +340,7 @@ msgid ""
" searches all global Akas." " searches all global Akas."
msgstr "" msgstr ""
#: plugin.py:1004 #: plugin.py:1000
msgid "No matching Akas were found." msgid "No matching Akas were found."
msgstr "" msgstr ""

404
plugins/Aka/locales/ru.po Normal file
View File

@ -0,0 +1,404 @@
# Aka plugin for Limnoria
# Copyright (C) 2024 Limnoria
# ssdaniel24 <bo7oaonteg2m__at__mailDOTru>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2024-06-12 21:50+0300\n"
"Last-Translator: ssdaniel24 <bo7oaonteg2m__at__mailDOTru>\n"
"Language-Team: \n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
"X-Generator: Poedit 3.4.2\n"
#: config.py:55
msgid ""
"The maximum number of words allowed in a\n"
" command name. Setting this to an high value may slow down your bot\n"
" on long commands."
msgstr ""
"Максимальное количество слов, которые могут быть в имени команды.\n"
"Выставление большого значения может замедлить работу вашего бота на длинных "
"командах."
#: config.py:61
msgid ""
"Determines whether the Akas will be\n"
" browsable through the HTTP server."
msgstr "Определяет, где псевдонимы могут быть просмотрены через HTTP-сервер."
#: plugin.py:141 plugin.py:274 plugin.py:728
msgid "This Aka already exists."
msgstr "Этот псевдоним уже существует."
#: plugin.py:170 plugin.py:182 plugin.py:196 plugin.py:301 plugin.py:318
#: plugin.py:335 plugin.py:908
msgid "This Aka does not exist."
msgstr "Этот псевдоним не существует."
#: plugin.py:303
msgid "This Aka is already locked."
msgstr "Этот псевдоним уже заблокирован."
#: plugin.py:320
msgid "This Aka is already unlocked."
msgstr "Этот псевдоним уже разблокирован."
#: plugin.py:465
msgid "By %s at %s"
msgstr "%s %s"
#: plugin.py:501
#, fuzzy
msgid ""
"\n"
" This plugin allows users to define aliases to commands and combinations\n"
" of commands (via nesting).\n"
"\n"
" Importing from Alias\n"
" ^^^^^^^^^^^^^^^^^^^^\n"
"\n"
" Add an aka, Alias, which eases the transitioning to Aka from Alias.\n"
"\n"
" First we will load Alias and Aka::\n"
"\n"
" <jamessan> @load Alias\n"
" <bot> jamessan: The operation succeeded.\n"
" <jamessan> @load Aka\n"
" <bot> jamessan: The operation succeeded.\n"
"\n"
" Then we import the Alias database to Aka in case it exists and unload\n"
" Alias::\n"
"\n"
" <jamessan> @importaliasdatabase\n"
" <bot> jamessan: The operation succeeded.\n"
" <jamessan> @unload Alias\n"
" <bot> jamessan: The operation succeeded.\n"
"\n"
" And now we will finally add the Aka ``alias`` itself::\n"
"\n"
" <jamessan> @aka add \"alias\" \"aka $1 $*\"\n"
" <bot> jamessan: The operation succeeded.\n"
"\n"
" Now you can use Aka as you used Alias before.\n"
"\n"
" Trout\n"
" ^^^^^\n"
"\n"
" Add an aka, ``trout``, which expects a word as an argument::\n"
"\n"
" <jamessan> @aka add trout \"reply action slaps $1 with a large "
"trout\"\n"
" <bot> jamessan: The operation succeeded.\n"
" <jamessan> @trout me\n"
" * bot slaps me with a large trout\n"
"\n"
" This ``trout`` aka requires the plugin ``Reply`` to be loaded since it\n"
" provides the ``action`` command.\n"
"\n"
" Random percentage\n"
" ^^^^^^^^^^^^^^^^^\n"
"\n"
" Add an aka, ``randpercent``, which returns a random percentage value::\n"
"\n"
" @aka add randpercent \"squish [dice 1d100]%\"\n"
"\n"
" This requires the ``Filter`` and ``Games`` plugins to be loaded.\n"
"\n"
" Note that nested commands in an alias should be quoted, or they will "
"only\n"
" run once when you create the alias, and not each time the alias is\n"
" called. (In this case, not quoting the nested command would mean that\n"
" ``@randpercent`` always responds with the same value!)\n"
" "
msgstr ""
"\n"
"Этот плагин позволяет пользователям создавать собственные псевдонимы к "
"командам и комбинациями команд (вложенные команды).\n"
"\n"
"Импорт из Alias\n"
"^^^^^^^^^^^^^^^\n"
"\n"
"Переходим к использованию плагина Aka от плагина Alias.\n"
"\n"
"Во-первых, загрузим Alias и Aka:\n"
"\n"
" <jamessan> @load Alias\n"
" <bot> jamessan: The operation succeeded.\n"
" <jamessan> @load Aka\n"
" <bot> jamessan: The operation succeeded.\n"
"\n"
"После этого импортируем базу данных плагина Alias в Aka, если та существует, "
"и отключим плагин Alias::\n"
"\n"
"<jamessan> @importaliasdatabase\n"
"<bot> jamessan: The operation succeeded.\n"
"<jamessan> @unload Alias\n"
"<bot> jamessan: The operation succeeded.\n"
"\n"
"И наконец добавим псевдоним команды из плагина Alias, чтобы оставить "
"обратную совместимость:\n"
"\n"
"<jamessan> @aka add \"alias\" \"aka $1 $*\"\n"
"<bot> jamessan: The operation succeeded.\n"
"\n"
"Теперь вы можете использовать плагин Aka как вы использовали до этого плагин "
"Alias.\n"
"\n"
"Дать леща\n"
"^^^^^^^^^\n"
"\n"
"Добавляем псевдоним (чтобы дать кому-то леща), который принимает одно слово "
"как аргумент::\n"
"\n"
"<jamessan> @aka add trout \"reply action с размаху даёт леща $1\"\n"
"<bot> jamessan: The operation succeeded.\n"
"<jamessan> @trout мне\n"
"* bot с размаху даёт леща мне\n"
"\n"
"LastFM\n"
"^^^^^^\n"
"\n"
"Добавляем псевдоним - ``lastfm``, принимает аргументом имя пользователя и "
"отвечает с последней песней, которая у него играла.\n"
"\n"
"@aka add lastfm \"rss [format concat http://ws.audioscrobbler.com/1.0/user/ "
"[format concat [web urlquote $1] /recenttracks.rss]]\"\n"
"\n"
"Этот псевдоним ``lastfm`` требует для работы следующие плагины: ``RSS``, "
"``Format`` и ``Web``.\n"
"\n"
"``RSS`` предоставляет ``rss``, ``Format`` предоставляет ``concat`` и ``Web`` "
"предоставляет ``urlquote``.\n"
"\n"
"Обратите внимание, что если бы вложенные команды не были бы обозначены "
"кавычками, то они были бы запущены немедленно, и псевдоним ``@lastfm`` "
"показывал бы всегда одну и ту же информацию - результат выполнения этих "
"команд."
#: plugin.py:695
msgid "You've attempted more nesting than is currently allowed on this bot."
msgstr "Вы попробовали больше вложений, чем сейчас это разрешено в боте."
#: plugin.py:699
msgid " at least"
msgstr " хотя бы"
#: plugin.py:708
msgid "Locked by %s at %s"
msgstr "Заблокировано %s %s"
#: plugin.py:713
msgid ""
"<a global alias,%s %n>\n"
"\n"
"Alias for %q.%s"
msgstr ""
"<глобальный псевдоним, %s %n>\n"
"\n"
"Псевдоним для %q.%s"
#: plugin.py:714 plugin.py:718
msgid "argument"
msgstr "аргумент"
#: plugin.py:717
msgid ""
"<an alias on %s,%s %n>\n"
"\n"
"Alias for %q.%s"
msgstr ""
"<псевдоним %s,%s %n>\n"
"\n"
"Псевдоним для %q.%s"
#: plugin.py:725
msgid "You can't overwrite commands in this plugin."
msgstr "Вы не можете перезаписывать команды в этом плагине."
#: plugin.py:730
msgid "This Aka has too many spaces in its name."
msgstr "Этот псевдоним содержит слишком много пробелов в имени."
#: plugin.py:735
msgid "Can't mix $* and optional args (@1, etc.)"
msgstr "Нельзя перемешивать $* и необязательные аргументы (@1 и др.)"
#: plugin.py:742
msgid "This Aka is locked."
msgstr "Этот псевдоним заблокирован."
#: plugin.py:746
msgid ""
"[--channel <#channel>] <name> <command>\n"
"\n"
" Defines an alias <name> that executes <command>. The <command>\n"
" should be in the standard \"command argument [nestedcommand "
"argument]\"\n"
" arguments to the alias; they'll be filled with the first, second, "
"etc.\n"
" arguments. $1, $2, etc. can be used for required arguments. @1, "
"@2,\n"
" etc. can be used for optional arguments. $* simply means \"all\n"
" arguments that have not replaced $1, $2, etc.\", ie. it will also\n"
" include optional arguments.\n"
" "
msgstr ""
"[--channel <#канал>] <название> <команда>\n"
"\n"
"Определяет псевдоним c <названием>, который запускает <команду>. <команда> "
"должна быть вида: \"<команда> <аргумент> [<вложенная команда> <аргумент>] "
"<аргументы к псевдониму>\". Аргументы к псевдониму по порядку: $1, $2 и тд. "
"используются для обязательных аргументов; @1, @2 и т.д. используются для "
"необязательных аргументов; $* означает \"все аргументы, которые не были "
"заменены с помощью $1, $2 и т.д.\", это включает в себя и необязательные "
"аргументы тоже."
#: plugin.py:760 plugin.py:792 plugin.py:823 plugin.py:855 plugin.py:878
#: plugin.py:901 plugin.py:947 plugin.py:990
msgid "%r is not a valid channel."
msgstr "%r не является допустимым каналом."
#: plugin.py:778
msgid ""
"[--channel <#channel>] <name> <command>\n"
"\n"
" Overwrites an existing alias <name> to execute <command> instead. "
"The\n"
" <command> should be in the standard \"command argument "
"[nestedcommand\n"
" argument]\" arguments to the alias; they'll be filled with the "
"first,\n"
" second, etc. arguments. $1, $2, etc. can be used for required\n"
" arguments. @1, @2, etc. can be used for optional arguments. $* "
"simply\n"
" means \"all arguments that have not replaced $1, $2, etc.\", ie. it "
"will\n"
" also include optional arguments.\n"
" "
msgstr ""
"[--channel <#канал>] <название> <команда>\n"
"\n"
"Перезаписывает существующий псевдоним с <названием>, чтобы он запускал "
"вместо предыдущей данную <команду>. <команда> должна быть вида: \"<команда> "
"<аргумент> [<вложенная команда> <аргумент>] <аргументы к псевдониму>\". "
"Аргументы к псевдониму по порядку: $1, $2 и тд. используются для "
"обязательных аргументов; @1, @2 и т.д. используются для необязательных "
"аргументов; $* означает \"все аргументы, которые не были заменены с помощью "
"$1, $2 и т.д.\", это включает в себя и необязательные аргументы тоже."
#: plugin.py:815
msgid ""
"[--channel <#channel>] <name>\n"
"\n"
" Removes the given alias, if unlocked.\n"
" "
msgstr ""
"[--channel <#канал>] <название>\n"
"\n"
"Удаляет данный псевдоним, если тот не заблокирован."
#: plugin.py:837
msgid ""
"Check if the user has any of the required capabilities to manage\n"
" the regexp database."
msgstr ""
"Проверяет, есть ли у пользователя необходимые привилегии для управления "
"базой данных регулярных выражений."
#: plugin.py:847
msgid ""
"[--channel <#channel>] <alias>\n"
"\n"
" Locks an alias so that no one else can change it.\n"
" "
msgstr ""
"[--channel <#канал>] <псевдоним>\n"
"\n"
"Блокирует данный псевдоним, чтобы никто не мог его изменить."
#: plugin.py:870
msgid ""
"[--channel <#channel>] <alias>\n"
"\n"
" Unlocks an alias so that people can define new aliases over it.\n"
" "
msgstr ""
"[--channel <#канал>] <псевдоним>\n"
"\n"
"Разблокирует данный псевдоним, чтобы люди могли определять новые псевдонимы "
"поверх этого."
#: plugin.py:893
msgid ""
"[--channel <#channel>] <alias>\n"
"\n"
" This command shows the content of an Aka.\n"
" "
msgstr ""
"[--channel <#канал>] <псевдоним>\n"
"\n"
"Эта команда показывает содержание данного псевдонима."
#: plugin.py:913
msgid ""
"takes no arguments\n"
"\n"
" Imports the Alias database into Aka's, and clean the former."
msgstr ""
"не принимает аргументов\n"
"\n"
"Импортирует базу данных Alias в Aka, и очищает первую."
#: plugin.py:918
msgid "Alias plugin is not loaded."
msgstr "Плагин Alias не загружен."
#: plugin.py:929
msgid "Error occured when importing the %n: %L"
msgstr "Произошла ошибка при импорте %n: %L"
#: plugin.py:937
msgid ""
"[--channel <#channel>] [--keys] [--unlocked|--locked]\n"
"\n"
" Lists all Akas defined for <channel>. If <channel> is not "
"specified,\n"
" lists all global Akas. If --keys is given, lists only the Aka names\n"
" and not their commands."
msgstr ""
"[--channel <#канал>] [--keys] [--unlocked|--locked]\n"
"\n"
"Показывает все псевдонимы, определённые для данного <канала>. Если <канал> "
"не дан в аргументах, то показывает все глобальные псевдонимы. Если дан --"
"keys, то показывает только названия псевдонимов без соответствующих им "
"команд."
#: plugin.py:956
msgid "--locked and --unlocked are incompatible options."
msgstr "--locked и --unlocked несовместимые параметры."
#: plugin.py:976
msgid "No Akas found."
msgstr "Не найдено ни одного псевдонима."
#: plugin.py:981
msgid ""
"[--channel <#channel>] <query>\n"
"\n"
" Searches Akas defined for <channel>. If <channel> is not specified,\n"
" searches all global Akas."
msgstr ""
"[--channel <#канал>] <запрос>\n"
"\n"
"Производит поиск среди псевдонимов, определённых в данном <канале>, по "
"данному <запросу>. Если <канал> не дан в аргументах, то поиск производится "
"по всем глобальным псевдонимам."
#: plugin.py:1000
msgid "No matching Akas were found."
msgstr "Не найдено ни одного совпадающего псевдонима."

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -28,12 +28,12 @@ msgid ""
" browsable through the HTTP server." " browsable through the HTTP server."
msgstr "" msgstr ""
#: plugin.py:141 plugin.py:274 plugin.py:732 #: plugin.py:141 plugin.py:274 plugin.py:728
msgid "This Aka already exists." msgid "This Aka already exists."
msgstr "" msgstr ""
#: plugin.py:170 plugin.py:182 plugin.py:196 plugin.py:301 plugin.py:318 #: plugin.py:170 plugin.py:182 plugin.py:196 plugin.py:301 plugin.py:318
#: plugin.py:335 plugin.py:912 #: plugin.py:335 plugin.py:908
msgid "This Aka does not exist." msgid "This Aka does not exist."
msgstr "" msgstr ""
@ -86,7 +86,7 @@ msgid ""
" Trout\n" " Trout\n"
" ^^^^^\n" " ^^^^^\n"
"\n" "\n"
" Add an aka, trout, which expects a word as an argument::\n" " Add an aka, ``trout``, which expects a word as an argument::\n"
"\n" "\n"
" <jamessan> @aka add trout \"reply action slaps $1 with a large trout\"\n" " <jamessan> @aka add trout \"reply action slaps $1 with a large trout\"\n"
" <bot> jamessan: The operation succeeded.\n" " <bot> jamessan: The operation succeeded.\n"
@ -96,73 +96,69 @@ msgid ""
" This ``trout`` aka requires the plugin ``Reply`` to be loaded since it\n" " This ``trout`` aka requires the plugin ``Reply`` to be loaded since it\n"
" provides the ``action`` command.\n" " provides the ``action`` command.\n"
"\n" "\n"
" LastFM\n" " Random percentage\n"
" ^^^^^^\n" " ^^^^^^^^^^^^^^^^^\n"
"\n" "\n"
" Add an aka, ``lastfm``, which expects a last.fm username and replies with\n" " Add an aka, ``randpercent``, which returns a random percentage value::\n"
" their most recently played item::\n"
"\n" "\n"
" @aka add lastfm \"rss [format concat http://ws.audioscrobbler.com/1.0/user/ [format concat [web urlquote $1] /recenttracks.rss]]\"\n" " @aka add randpercent \"squish [dice 1d100]%\"\n"
"\n" "\n"
" This ``lastfm`` aka requires the following plugins to be loaded: ``RSS``,\n" " This requires the ``Filter`` and ``Games`` plugins to be loaded.\n"
" ``Format`` and ``Web``.\n"
"\n" "\n"
" ``RSS`` provides ``rss``, ``Format`` provides ``concat`` and ``Web`` provides\n" " Note that nested commands in an alias should be quoted, or they will only\n"
" ``urlquote``.\n" " run once when you create the alias, and not each time the alias is\n"
"\n" " called. (In this case, not quoting the nested command would mean that\n"
" Note that if the nested commands being aliased hadn't been quoted, then\n" " ``@randpercent`` always responds with the same value!)\n"
" those commands would have been run immediately, and ``@lastfm`` would always\n"
" reply with the same information, the result of those commands.\n"
" " " "
msgstr "" msgstr ""
#: plugin.py:699 #: plugin.py:695
msgid "You've attempted more nesting than is currently allowed on this bot." msgid "You've attempted more nesting than is currently allowed on this bot."
msgstr "" msgstr ""
#: plugin.py:703 #: plugin.py:699
msgid " at least" msgid " at least"
msgstr "" msgstr ""
#: plugin.py:712 #: plugin.py:708
msgid "Locked by %s at %s" msgid "Locked by %s at %s"
msgstr "" msgstr ""
#: plugin.py:717 #: plugin.py:713
msgid "" msgid ""
"<a global alias,%s %n>\n" "<a global alias,%s %n>\n"
"\n" "\n"
"Alias for %q.%s" "Alias for %q.%s"
msgstr "" msgstr ""
#: plugin.py:718 plugin.py:722 #: plugin.py:714 plugin.py:718
msgid "argument" msgid "argument"
msgstr "" msgstr ""
#: plugin.py:721 #: plugin.py:717
msgid "" msgid ""
"<an alias on %s,%s %n>\n" "<an alias on %s,%s %n>\n"
"\n" "\n"
"Alias for %q.%s" "Alias for %q.%s"
msgstr "" msgstr ""
#: plugin.py:729 #: plugin.py:725
msgid "You can't overwrite commands in this plugin." msgid "You can't overwrite commands in this plugin."
msgstr "" msgstr ""
#: plugin.py:734 #: plugin.py:730
msgid "This Aka has too many spaces in its name." msgid "This Aka has too many spaces in its name."
msgstr "" msgstr ""
#: plugin.py:739 #: plugin.py:735
msgid "Can't mix $* and optional args (@1, etc.)" msgid "Can't mix $* and optional args (@1, etc.)"
msgstr "" msgstr ""
#: plugin.py:746 #: plugin.py:742
msgid "This Aka is locked." msgid "This Aka is locked."
msgstr "" msgstr ""
#: plugin.py:750 #: plugin.py:746
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <name> <command>\n" "[--channel <#channel>] <name> <command>\n"
@ -177,12 +173,12 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:764 plugin.py:796 plugin.py:827 plugin.py:859 plugin.py:882 #: plugin.py:760 plugin.py:792 plugin.py:823 plugin.py:855 plugin.py:878
#: plugin.py:905 plugin.py:951 plugin.py:994 #: plugin.py:901 plugin.py:947 plugin.py:990
msgid "%r is not a valid channel." msgid "%r is not a valid channel."
msgstr "" msgstr ""
#: plugin.py:782 #: plugin.py:778
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <name> <command>\n" "[--channel <#channel>] <name> <command>\n"
@ -197,7 +193,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:819 #: plugin.py:815
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <name>\n" "[--channel <#channel>] <name>\n"
@ -206,14 +202,14 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:841 #: plugin.py:837
#, docstring #, docstring
msgid "" msgid ""
"Check if the user has any of the required capabilities to manage\n" "Check if the user has any of the required capabilities to manage\n"
" the regexp database." " the regexp database."
msgstr "" msgstr ""
#: plugin.py:851 #: plugin.py:847
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <alias>\n" "[--channel <#channel>] <alias>\n"
@ -222,7 +218,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:874 #: plugin.py:870
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <alias>\n" "[--channel <#channel>] <alias>\n"
@ -231,7 +227,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:897 #: plugin.py:893
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <alias>\n" "[--channel <#channel>] <alias>\n"
@ -240,7 +236,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:917 #: plugin.py:913
#, docstring #, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
@ -248,15 +244,15 @@ msgid ""
" Imports the Alias database into Aka's, and clean the former." " Imports the Alias database into Aka's, and clean the former."
msgstr "" msgstr ""
#: plugin.py:922 #: plugin.py:918
msgid "Alias plugin is not loaded." msgid "Alias plugin is not loaded."
msgstr "" msgstr ""
#: plugin.py:933 #: plugin.py:929
msgid "Error occured when importing the %n: %L" msgid "Error occured when importing the %n: %L"
msgstr "" msgstr ""
#: plugin.py:941 #: plugin.py:937
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] [--keys] [--unlocked|--locked]\n" "[--channel <#channel>] [--keys] [--unlocked|--locked]\n"
@ -266,15 +262,15 @@ msgid ""
" and not their commands." " and not their commands."
msgstr "" msgstr ""
#: plugin.py:960 #: plugin.py:956
msgid "--locked and --unlocked are incompatible options." msgid "--locked and --unlocked are incompatible options."
msgstr "" msgstr ""
#: plugin.py:980 #: plugin.py:976
msgid "No Akas found." msgid "No Akas found."
msgstr "" msgstr ""
#: plugin.py:985 #: plugin.py:981
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <query>\n" "[--channel <#channel>] <query>\n"
@ -283,7 +279,7 @@ msgid ""
" searches all global Akas." " searches all global Akas."
msgstr "" msgstr ""
#: plugin.py:1004 #: plugin.py:1000
msgid "No matching Akas were found." msgid "No matching Akas were found."
msgstr "" msgstr ""

View File

@ -43,27 +43,27 @@ Commands
.. _command-alias-add: .. _command-alias-add:
add <name> <command> ``add <name> <command>``
Defines an alias <name> that executes <command>. The <command> should be in the standard "command argument [nestedcommand argument]" arguments to the alias; they'll be filled with the first, second, etc. arguments. $1, $2, etc. can be used for required arguments. @1, @2, etc. can be used for optional arguments. $* simply means "all remaining arguments," and cannot be combined with optional arguments. Defines an alias <name> that executes <command>. The <command> should be in the standard "command argument [nestedcommand argument]" arguments to the alias; they'll be filled with the first, second, etc. arguments. $1, $2, etc. can be used for required arguments. @1, @2, etc. can be used for optional arguments. $* simply means "all remaining arguments," and cannot be combined with optional arguments.
.. _command-alias-list: .. _command-alias-list:
list [--locked|--unlocked] ``list [--locked|--unlocked]``
Lists alias names of a particular type, defaults to all aliases if no --locked or --unlocked option is given. Lists alias names of a particular type, defaults to all aliases if no --locked or --unlocked option is given.
.. _command-alias-lock: .. _command-alias-lock:
lock <alias> ``lock <alias>``
Locks an alias so that no one else can change it. Locks an alias so that no one else can change it.
.. _command-alias-remove: .. _command-alias-remove:
remove <name> ``remove <name>``
Removes the given alias, if unlocked. Removes the given alias, if unlocked.
.. _command-alias-unlock: .. _command-alias-unlock:
unlock <alias> ``unlock <alias>``
Unlocks an alias so that people can define new aliases over it. Unlocks an alias so that people can define new aliases over it.
.. _conf-Alias: .. _conf-Alias:

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Supybot\n" "Project-Id-Version: Supybot\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2012-04-27 15:36+0200\n" "PO-Revision-Date: 2012-04-27 15:36+0200\n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n" "Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: German <fbesser@gmail.com>\n" "Language-Team: German <fbesser@gmail.com>\n"
@ -66,28 +66,29 @@ msgid ""
"using\n" "using\n"
" the 'importaliasdatabase' command.\n" " the 'importaliasdatabase' command.\n"
"\n" "\n"
" To add an alias, `trout`, which expects a word as an argument::\n" " To add an alias, ``trout``, which expects a word as an argument::\n"
"\n" "\n"
" <jamessan> @alias add trout \"action slaps $1 with a large trout\"\n" " <jamessan> @alias add trout \"action slaps $1 with a large trout\"\n"
" <bot> jamessan: The operation succeeded.\n" " <bot> jamessan: The operation succeeded.\n"
" <jamessan> @trout me\n" " <jamessan> @trout me\n"
" * bot slaps me with a large trout\n" " * bot slaps me with a large trout\n"
"\n" "\n"
" To add an alias, `lastfm`, which expects a last.fm user and replies " " Add an alias, ``randpercent``, which returns a random percentage "
"with\n" "value::\n"
" their recently played items::\n"
"\n" "\n"
" @alias add lastfm \"rss [format concat http://ws.audioscrobbler." " @alias add randpercent \"squish [dice 1d100]%\"\n"
"com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]\"\n"
"\n" "\n"
" Note that if the nested commands being aliased hadn't been quoted, then\n" " This requires the ``Filter`` and ``Games`` plugins to be loaded.\n"
" those commands would have been run immediately, and `@lastfm` would " "\n"
"always\n" " Note that nested commands in an alias should be quoted, or they will "
" reply with the same information, the result of those commands.\n" "only\n"
" run once when you create the alias, and not each time the alias is\n"
" called. (In this case, not quoting the nested command would mean that\n"
" ``@randpercent`` always responds with the same value!)\n"
" " " "
msgstr "" msgstr ""
#: plugin.py:357 #: plugin.py:359
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -98,11 +99,11 @@ msgstr ""
"\n" "\n"
"Versperrt ein Alias, sodass er nicht verändert werden kann." "Versperrt ein Alias, sodass er nicht verändert werden kann."
#: plugin.py:365 plugin.py:378 #: plugin.py:367 plugin.py:380
msgid "There is no such alias." msgid "There is no such alias."
msgstr "Es gibt keinen Alias mit diesem Namen." msgstr "Es gibt keinen Alias mit diesem Namen."
#: plugin.py:370 #: plugin.py:372
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -113,11 +114,11 @@ msgstr ""
"\n" "\n"
"Entsperrt den Alias, sodass andere Personen ihn verändern können." "Entsperrt den Alias, sodass andere Personen ihn verändern können."
#: plugin.py:386 #: plugin.py:388
msgid "That name isn't valid. Try %q instead." msgid "That name isn't valid. Try %q instead."
msgstr "Dieser Name ist nicht zulässig. Probiere anstatt %q." msgstr "Dieser Name ist nicht zulässig. Probiere anstatt %q."
#: plugin.py:426 #: plugin.py:428
#, fuzzy #, fuzzy
msgid "" msgid ""
"<name> <command>\n" "<name> <command>\n"
@ -140,7 +141,7 @@ msgstr ""
"Standardform \"Befehl Argument [verschachtelter Befehl Argument\" angegeben " "Standardform \"Befehl Argument [verschachtelter Befehl Argument\" angegeben "
"werden." "werden."
#: plugin.py:449 #: plugin.py:451
msgid "" msgid ""
"<name>\n" "<name>\n"
"\n" "\n"
@ -151,7 +152,7 @@ msgstr ""
"\n" "\n"
"Entfernt den gegeben Alias, falls er nicht gesperrt ist." "Entfernt den gegeben Alias, falls er nicht gesperrt ist."
#: plugin.py:463 #: plugin.py:465
msgid "" msgid ""
"[--locked|--unlocked]\n" "[--locked|--unlocked]\n"
"\n" "\n"
@ -161,15 +162,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:470 #: plugin.py:472
msgid "Cannot specify --locked and --unlocked simultaneously" msgid "Cannot specify --locked and --unlocked simultaneously"
msgstr "" msgstr ""
#: plugin.py:486 #: plugin.py:488
msgid "There are no aliases of that type." msgid "There are no aliases of that type."
msgstr "" msgstr ""
#: plugin.py:488 #: plugin.py:490
#, fuzzy #, fuzzy
msgid "There are no aliases." msgid "There are no aliases."
msgstr "Es gibt keinen Alias mit diesem Namen." msgstr "Es gibt keinen Alias mit diesem Namen."

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Supybot Alias plugin\n" "Project-Id-Version: Supybot Alias plugin\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2014-12-20 13:47+0200\n" "PO-Revision-Date: 2014-12-20 13:47+0200\n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n" "Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: suomi <>\n" "Language-Team: suomi <>\n"
@ -73,28 +73,29 @@ msgid ""
"using\n" "using\n"
" the 'importaliasdatabase' command.\n" " the 'importaliasdatabase' command.\n"
"\n" "\n"
" To add an alias, `trout`, which expects a word as an argument::\n" " To add an alias, ``trout``, which expects a word as an argument::\n"
"\n" "\n"
" <jamessan> @alias add trout \"action slaps $1 with a large trout\"\n" " <jamessan> @alias add trout \"action slaps $1 with a large trout\"\n"
" <bot> jamessan: The operation succeeded.\n" " <bot> jamessan: The operation succeeded.\n"
" <jamessan> @trout me\n" " <jamessan> @trout me\n"
" * bot slaps me with a large trout\n" " * bot slaps me with a large trout\n"
"\n" "\n"
" To add an alias, `lastfm`, which expects a last.fm user and replies " " Add an alias, ``randpercent``, which returns a random percentage "
"with\n" "value::\n"
" their recently played items::\n"
"\n" "\n"
" @alias add lastfm \"rss [format concat http://ws.audioscrobbler." " @alias add randpercent \"squish [dice 1d100]%\"\n"
"com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]\"\n"
"\n" "\n"
" Note that if the nested commands being aliased hadn't been quoted, then\n" " This requires the ``Filter`` and ``Games`` plugins to be loaded.\n"
" those commands would have been run immediately, and `@lastfm` would " "\n"
"always\n" " Note that nested commands in an alias should be quoted, or they will "
" reply with the same information, the result of those commands.\n" "only\n"
" run once when you create the alias, and not each time the alias is\n"
" called. (In this case, not quoting the nested command would mean that\n"
" ``@randpercent`` always responds with the same value!)\n"
" " " "
msgstr "" msgstr ""
#: plugin.py:357 #: plugin.py:359
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -106,11 +107,11 @@ msgstr ""
" Lukitsee aliaksen, niin ettei kukaan muu voi muuttaa sitä.\n" " Lukitsee aliaksen, niin ettei kukaan muu voi muuttaa sitä.\n"
" " " "
#: plugin.py:365 plugin.py:378 #: plugin.py:367 plugin.py:380
msgid "There is no such alias." msgid "There is no such alias."
msgstr "Tuollaista aliasta ei ole." msgstr "Tuollaista aliasta ei ole."
#: plugin.py:370 #: plugin.py:372
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -123,11 +124,11 @@ msgstr ""
"aliaksia sen päälle.\n" "aliaksia sen päälle.\n"
" " " "
#: plugin.py:386 #: plugin.py:388
msgid "That name isn't valid. Try %q instead." msgid "That name isn't valid. Try %q instead."
msgstr "Tuo nimi ei ole kelvollinen. Yritä sen sijaan %q:ta." msgstr "Tuo nimi ei ole kelvollinen. Yritä sen sijaan %q:ta."
#: plugin.py:426 #: plugin.py:428
msgid "" msgid ""
"<name> <command>\n" "<name> <command>\n"
"\n" "\n"
@ -156,7 +157,7 @@ msgstr ""
"parametrejä.\n" "parametrejä.\n"
" " " "
#: plugin.py:449 #: plugin.py:451
msgid "" msgid ""
"<name>\n" "<name>\n"
"\n" "\n"
@ -168,7 +169,7 @@ msgstr ""
" Poistaa annetun aliaksen jos se ei ole lukittu.\n" " Poistaa annetun aliaksen jos se ei ole lukittu.\n"
" " " "
#: plugin.py:463 #: plugin.py:465
msgid "" msgid ""
"[--locked|--unlocked]\n" "[--locked|--unlocked]\n"
"\n" "\n"
@ -178,15 +179,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:470 #: plugin.py:472
msgid "Cannot specify --locked and --unlocked simultaneously" msgid "Cannot specify --locked and --unlocked simultaneously"
msgstr "" msgstr ""
#: plugin.py:486 #: plugin.py:488
msgid "There are no aliases of that type." msgid "There are no aliases of that type."
msgstr "" msgstr ""
#: plugin.py:488 #: plugin.py:490
#, fuzzy #, fuzzy
msgid "There are no aliases." msgid "There are no aliases."
msgstr "Tuollaista aliasta ei ole." msgstr "Tuollaista aliasta ei ole."

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: \n" "PO-Revision-Date: \n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Limnoria <progval@gmail.com>\n" "Language-Team: Limnoria <progval@gmail.com>\n"
@ -65,28 +65,29 @@ msgid ""
"using\n" "using\n"
" the 'importaliasdatabase' command.\n" " the 'importaliasdatabase' command.\n"
"\n" "\n"
" To add an alias, `trout`, which expects a word as an argument::\n" " To add an alias, ``trout``, which expects a word as an argument::\n"
"\n" "\n"
" <jamessan> @alias add trout \"action slaps $1 with a large trout\"\n" " <jamessan> @alias add trout \"action slaps $1 with a large trout\"\n"
" <bot> jamessan: The operation succeeded.\n" " <bot> jamessan: The operation succeeded.\n"
" <jamessan> @trout me\n" " <jamessan> @trout me\n"
" * bot slaps me with a large trout\n" " * bot slaps me with a large trout\n"
"\n" "\n"
" To add an alias, `lastfm`, which expects a last.fm user and replies " " Add an alias, ``randpercent``, which returns a random percentage "
"with\n" "value::\n"
" their recently played items::\n"
"\n" "\n"
" @alias add lastfm \"rss [format concat http://ws.audioscrobbler." " @alias add randpercent \"squish [dice 1d100]%\"\n"
"com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]\"\n"
"\n" "\n"
" Note that if the nested commands being aliased hadn't been quoted, then\n" " This requires the ``Filter`` and ``Games`` plugins to be loaded.\n"
" those commands would have been run immediately, and `@lastfm` would " "\n"
"always\n" " Note that nested commands in an alias should be quoted, or they will "
" reply with the same information, the result of those commands.\n" "only\n"
" run once when you create the alias, and not each time the alias is\n"
" called. (In this case, not quoting the nested command would mean that\n"
" ``@randpercent`` always responds with the same value!)\n"
" " " "
msgstr "" msgstr ""
#: plugin.py:357 #: plugin.py:359
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -97,11 +98,11 @@ msgstr ""
"\n" "\n"
"Vérouille un alias pour que personne d'autre ne puisse le changer." "Vérouille un alias pour que personne d'autre ne puisse le changer."
#: plugin.py:365 plugin.py:378 #: plugin.py:367 plugin.py:380
msgid "There is no such alias." msgid "There is no such alias."
msgstr "Cet alias n'existe pas." msgstr "Cet alias n'existe pas."
#: plugin.py:370 #: plugin.py:372
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -112,11 +113,11 @@ msgstr ""
"\n" "\n"
"Déverrouille un alias de façon à ce que des gens puissent le redéfinir." "Déverrouille un alias de façon à ce que des gens puissent le redéfinir."
#: plugin.py:386 #: plugin.py:388
msgid "That name isn't valid. Try %q instead." msgid "That name isn't valid. Try %q instead."
msgstr "Ce nom n'est pas valide. Essayez plutôt %q." msgstr "Ce nom n'est pas valide. Essayez plutôt %q."
#: plugin.py:426 #: plugin.py:428
msgid "" msgid ""
"<name> <command>\n" "<name> <command>\n"
"\n" "\n"
@ -142,7 +143,7 @@ msgstr ""
"simplement *tous* les arguments restants, et ne peut être combiné avec des " "simplement *tous* les arguments restants, et ne peut être combiné avec des "
"arguments optionnels." "arguments optionnels."
#: plugin.py:449 #: plugin.py:451
msgid "" msgid ""
"<name>\n" "<name>\n"
"\n" "\n"
@ -153,7 +154,7 @@ msgstr ""
"\n" "\n"
"Supprime l'alias donné, si il n'est pas verrouillé." "Supprime l'alias donné, si il n'est pas verrouillé."
#: plugin.py:463 #: plugin.py:465
msgid "" msgid ""
"[--locked|--unlocked]\n" "[--locked|--unlocked]\n"
"\n" "\n"
@ -163,15 +164,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:470 #: plugin.py:472
msgid "Cannot specify --locked and --unlocked simultaneously" msgid "Cannot specify --locked and --unlocked simultaneously"
msgstr "" msgstr ""
#: plugin.py:486 #: plugin.py:488
msgid "There are no aliases of that type." msgid "There are no aliases of that type."
msgstr "" msgstr ""
#: plugin.py:488 #: plugin.py:490
#, fuzzy #, fuzzy
msgid "There are no aliases." msgid "There are no aliases."
msgstr "Cet alias n'existe pas." msgstr "Cet alias n'existe pas."

View File

@ -6,7 +6,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria Alias\n" "Project-Id-Version: Limnoria Alias\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2012-04-27 15:12+0200\n" "PO-Revision-Date: 2012-04-27 15:12+0200\n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n" "Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -70,28 +70,29 @@ msgid ""
"using\n" "using\n"
" the 'importaliasdatabase' command.\n" " the 'importaliasdatabase' command.\n"
"\n" "\n"
" To add an alias, `trout`, which expects a word as an argument::\n" " To add an alias, ``trout``, which expects a word as an argument::\n"
"\n" "\n"
" <jamessan> @alias add trout \"action slaps $1 with a large trout\"\n" " <jamessan> @alias add trout \"action slaps $1 with a large trout\"\n"
" <bot> jamessan: The operation succeeded.\n" " <bot> jamessan: The operation succeeded.\n"
" <jamessan> @trout me\n" " <jamessan> @trout me\n"
" * bot slaps me with a large trout\n" " * bot slaps me with a large trout\n"
"\n" "\n"
" To add an alias, `lastfm`, which expects a last.fm user and replies " " Add an alias, ``randpercent``, which returns a random percentage "
"with\n" "value::\n"
" their recently played items::\n"
"\n" "\n"
" @alias add lastfm \"rss [format concat http://ws.audioscrobbler." " @alias add randpercent \"squish [dice 1d100]%\"\n"
"com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]\"\n"
"\n" "\n"
" Note that if the nested commands being aliased hadn't been quoted, then\n" " This requires the ``Filter`` and ``Games`` plugins to be loaded.\n"
" those commands would have been run immediately, and `@lastfm` would " "\n"
"always\n" " Note that nested commands in an alias should be quoted, or they will "
" reply with the same information, the result of those commands.\n" "only\n"
" run once when you create the alias, and not each time the alias is\n"
" called. (In this case, not quoting the nested command would mean that\n"
" ``@randpercent`` always responds with the same value!)\n"
" " " "
msgstr "" msgstr ""
#: plugin.py:357 #: plugin.py:359
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -102,11 +103,11 @@ msgstr ""
"\n" "\n"
"Lezár egy álnevet, hogy senki más ne változtathassa meg." "Lezár egy álnevet, hogy senki más ne változtathassa meg."
#: plugin.py:365 plugin.py:378 #: plugin.py:367 plugin.py:380
msgid "There is no such alias." msgid "There is no such alias."
msgstr "Nincs ilyen álnév." msgstr "Nincs ilyen álnév."
#: plugin.py:370 #: plugin.py:372
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -117,11 +118,11 @@ msgstr ""
"\n" "\n"
"Feloldja egy álnév lezárását, hogy az emberek új álnevekkel írhassák felül." "Feloldja egy álnév lezárását, hogy az emberek új álnevekkel írhassák felül."
#: plugin.py:386 #: plugin.py:388
msgid "That name isn't valid. Try %q instead." msgid "That name isn't valid. Try %q instead."
msgstr "Az a név nem érvényes. Próbáld meg %q-t inkább." msgstr "Az a név nem érvényes. Próbáld meg %q-t inkább."
#: plugin.py:426 #: plugin.py:428
msgid "" msgid ""
"<name> <command>\n" "<name> <command>\n"
"\n" "\n"
@ -147,7 +148,7 @@ msgstr ""
"jelenti, \"az összes hátralévő paraméter,\" és nem kombinálható választható " "jelenti, \"az összes hátralévő paraméter,\" és nem kombinálható választható "
"paraméterekkel." "paraméterekkel."
#: plugin.py:449 #: plugin.py:451
msgid "" msgid ""
"<name>\n" "<name>\n"
"\n" "\n"
@ -158,7 +159,7 @@ msgstr ""
"\n" "\n"
"Eltávolítja a megadott álnevet, ha nincs lezárva." "Eltávolítja a megadott álnevet, ha nincs lezárva."
#: plugin.py:463 #: plugin.py:465
msgid "" msgid ""
"[--locked|--unlocked]\n" "[--locked|--unlocked]\n"
"\n" "\n"
@ -168,15 +169,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:470 #: plugin.py:472
msgid "Cannot specify --locked and --unlocked simultaneously" msgid "Cannot specify --locked and --unlocked simultaneously"
msgstr "" msgstr ""
#: plugin.py:486 #: plugin.py:488
msgid "There are no aliases of that type." msgid "There are no aliases of that type."
msgstr "" msgstr ""
#: plugin.py:488 #: plugin.py:490
#, fuzzy #, fuzzy
msgid "There are no aliases." msgid "There are no aliases."
msgstr "Nincs ilyen álnév." msgstr "Nincs ilyen álnév."

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2011-06-07 08:23+0200\n" "PO-Revision-Date: 2011-06-07 08:23+0200\n"
"Last-Translator: skizzhg <skizzhg@gmx.com>\n" "Last-Translator: skizzhg <skizzhg@gmx.com>\n"
"Language-Team: Italian <skizzhg@gmx.com>\n" "Language-Team: Italian <skizzhg@gmx.com>\n"
@ -65,28 +65,29 @@ msgid ""
"using\n" "using\n"
" the 'importaliasdatabase' command.\n" " the 'importaliasdatabase' command.\n"
"\n" "\n"
" To add an alias, `trout`, which expects a word as an argument::\n" " To add an alias, ``trout``, which expects a word as an argument::\n"
"\n" "\n"
" <jamessan> @alias add trout \"action slaps $1 with a large trout\"\n" " <jamessan> @alias add trout \"action slaps $1 with a large trout\"\n"
" <bot> jamessan: The operation succeeded.\n" " <bot> jamessan: The operation succeeded.\n"
" <jamessan> @trout me\n" " <jamessan> @trout me\n"
" * bot slaps me with a large trout\n" " * bot slaps me with a large trout\n"
"\n" "\n"
" To add an alias, `lastfm`, which expects a last.fm user and replies " " Add an alias, ``randpercent``, which returns a random percentage "
"with\n" "value::\n"
" their recently played items::\n"
"\n" "\n"
" @alias add lastfm \"rss [format concat http://ws.audioscrobbler." " @alias add randpercent \"squish [dice 1d100]%\"\n"
"com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]\"\n"
"\n" "\n"
" Note that if the nested commands being aliased hadn't been quoted, then\n" " This requires the ``Filter`` and ``Games`` plugins to be loaded.\n"
" those commands would have been run immediately, and `@lastfm` would " "\n"
"always\n" " Note that nested commands in an alias should be quoted, or they will "
" reply with the same information, the result of those commands.\n" "only\n"
" run once when you create the alias, and not each time the alias is\n"
" called. (In this case, not quoting the nested command would mean that\n"
" ``@randpercent`` always responds with the same value!)\n"
" " " "
msgstr "" msgstr ""
#: plugin.py:357 #: plugin.py:359
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -98,11 +99,11 @@ msgstr ""
" Blocca un alias affinché nessun altro possa modificarlo.\n" " Blocca un alias affinché nessun altro possa modificarlo.\n"
" " " "
#: plugin.py:365 plugin.py:378 #: plugin.py:367 plugin.py:380
msgid "There is no such alias." msgid "There is no such alias."
msgstr "Non c'è nessun alias." msgstr "Non c'è nessun alias."
#: plugin.py:370 #: plugin.py:372
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -114,11 +115,11 @@ msgstr ""
" Sblocca un alias affinché chiunque possa ridefinirne di nuovi.\n" " Sblocca un alias affinché chiunque possa ridefinirne di nuovi.\n"
" " " "
#: plugin.py:386 #: plugin.py:388
msgid "That name isn't valid. Try %q instead." msgid "That name isn't valid. Try %q instead."
msgstr "Nome non valido. Prova %q invece." msgstr "Nome non valido. Prova %q invece."
#: plugin.py:426 #: plugin.py:428
msgid "" msgid ""
"<name> <command>\n" "<name> <command>\n"
"\n" "\n"
@ -147,7 +148,7 @@ msgstr ""
" rimanenti\" e non può essere combinato con quelli opzionali.\n" " rimanenti\" e non può essere combinato con quelli opzionali.\n"
" " " "
#: plugin.py:449 #: plugin.py:451
msgid "" msgid ""
"<name>\n" "<name>\n"
"\n" "\n"
@ -159,7 +160,7 @@ msgstr ""
" Rimuove l'alias specificato, se questo non è bloccato.\n" " Rimuove l'alias specificato, se questo non è bloccato.\n"
" " " "
#: plugin.py:463 #: plugin.py:465
msgid "" msgid ""
"[--locked|--unlocked]\n" "[--locked|--unlocked]\n"
"\n" "\n"
@ -169,15 +170,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:470 #: plugin.py:472
msgid "Cannot specify --locked and --unlocked simultaneously" msgid "Cannot specify --locked and --unlocked simultaneously"
msgstr "" msgstr ""
#: plugin.py:486 #: plugin.py:488
msgid "There are no aliases of that type." msgid "There are no aliases of that type."
msgstr "" msgstr ""
#: plugin.py:488 #: plugin.py:490
#, fuzzy #, fuzzy
msgid "There are no aliases." msgid "There are no aliases."
msgstr "Non c'è nessun alias." msgstr "Non c'è nessun alias."

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -61,25 +61,27 @@ msgid ""
" built-in Aka plugin instead (you can migrate your existing aliases using\n" " built-in Aka plugin instead (you can migrate your existing aliases using\n"
" the 'importaliasdatabase' command.\n" " the 'importaliasdatabase' command.\n"
"\n" "\n"
" To add an alias, `trout`, which expects a word as an argument::\n" " To add an alias, ``trout``, which expects a word as an argument::\n"
"\n" "\n"
" <jamessan> @alias add trout \"action slaps $1 with a large trout\"\n" " <jamessan> @alias add trout \"action slaps $1 with a large trout\"\n"
" <bot> jamessan: The operation succeeded.\n" " <bot> jamessan: The operation succeeded.\n"
" <jamessan> @trout me\n" " <jamessan> @trout me\n"
" * bot slaps me with a large trout\n" " * bot slaps me with a large trout\n"
"\n" "\n"
" To add an alias, `lastfm`, which expects a last.fm user and replies with\n" " Add an alias, ``randpercent``, which returns a random percentage value::\n"
" their recently played items::\n"
"\n" "\n"
" @alias add lastfm \"rss [format concat http://ws.audioscrobbler.com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]\"\n" " @alias add randpercent \"squish [dice 1d100]%\"\n"
"\n" "\n"
" Note that if the nested commands being aliased hadn't been quoted, then\n" " This requires the ``Filter`` and ``Games`` plugins to be loaded.\n"
" those commands would have been run immediately, and `@lastfm` would always\n" "\n"
" reply with the same information, the result of those commands.\n" " Note that nested commands in an alias should be quoted, or they will only\n"
" run once when you create the alias, and not each time the alias is\n"
" called. (In this case, not quoting the nested command would mean that\n"
" ``@randpercent`` always responds with the same value!)\n"
" " " "
msgstr "" msgstr ""
#: plugin.py:357 #: plugin.py:359
#, docstring #, docstring
msgid "" msgid ""
"<alias>\n" "<alias>\n"
@ -88,11 +90,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:365 plugin.py:378 #: plugin.py:367 plugin.py:380
msgid "There is no such alias." msgid "There is no such alias."
msgstr "" msgstr ""
#: plugin.py:370 #: plugin.py:372
#, docstring #, docstring
msgid "" msgid ""
"<alias>\n" "<alias>\n"
@ -101,11 +103,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:386 #: plugin.py:388
msgid "That name isn't valid. Try %q instead." msgid "That name isn't valid. Try %q instead."
msgstr "" msgstr ""
#: plugin.py:426 #: plugin.py:428
#, docstring #, docstring
msgid "" msgid ""
"<name> <command>\n" "<name> <command>\n"
@ -119,7 +121,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:449 #: plugin.py:451
#, docstring #, docstring
msgid "" msgid ""
"<name>\n" "<name>\n"
@ -128,7 +130,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:463 #: plugin.py:465
#, docstring #, docstring
msgid "" msgid ""
"[--locked|--unlocked]\n" "[--locked|--unlocked]\n"
@ -138,15 +140,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:470 #: plugin.py:472
msgid "Cannot specify --locked and --unlocked simultaneously" msgid "Cannot specify --locked and --unlocked simultaneously"
msgstr "" msgstr ""
#: plugin.py:486 #: plugin.py:488
msgid "There are no aliases of that type." msgid "There are no aliases of that type."
msgstr "" msgstr ""
#: plugin.py:488 #: plugin.py:490
msgid "There are no aliases." msgid "There are no aliases."
msgstr "" msgstr ""

View File

@ -53,22 +53,22 @@ Commands
.. _command-anonymous-do: .. _command-anonymous-do:
do <channel> <action> ``do <channel> <action>``
Performs <action> in <channel>. Performs <action> in <channel>.
.. _command-anonymous-react: .. _command-anonymous-react:
react <channel> <reaction> <nick> ``react <channel> <reaction> <nick>``
Sends the <reaction> to <nick>'s last message. <reaction> is typically a smiley or an emoji. This may not be supported on the current network, as this command depends on IRCv3 features. This is also not supported if supybot.protocols.irc.experimentalExtensions disabled (don't enable it unless you know what you are doing). Sends the <reaction> to <nick>'s last message. <reaction> is typically a smiley or an emoji. This may not be supported on the current network, as this command depends on IRCv3 features. This is also not supported if supybot.protocols.irc.experimentalExtensions disabled (don't enable it unless you know what you are doing).
.. _command-anonymous-say: .. _command-anonymous-say:
say <channel> <text> ``say <channel> <text>``
Sends <text> to <channel>. Sends <text> to <channel>.
.. _command-anonymous-tell: .. _command-anonymous-tell:
tell <nick> <text> ``tell <nick> <text>``
Sends <text> to <nick>. Can only be used if supybot.plugins.Anonymous.allowPrivateTarget is True. Sends <text> to <nick>. Can only be used if supybot.plugins.Anonymous.allowPrivateTarget is True.
.. _conf-Anonymous: .. _conf-Anonymous:

View File

@ -0,0 +1,250 @@
# Anonymous plugin for Limnoria
# Copyright (C) 2024 Limnoria
# ssdaniel24 <bo7oaonteg2m__at__mailDOTru>, 2024.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: 2024-06-12 22:04+0300\n"
"Last-Translator: ssdaniel24 <bo7oaonteg2m__at__mailDOTru>\n"
"Language-Team: \n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
"X-Generator: Poedit 3.4.2\n"
#: config.py:50
msgid ""
"Determines whether\n"
" the bot should require people trying to use this plugin to be in the\n"
" channel they wish to anonymously send to."
msgstr ""
"Определяет, должен ли бот требовать, чтобы люди, использующие этот плагин, "
"находились в канале, куда они хотят написать анонимно."
#: config.py:54
msgid ""
"Determines whether the bot should require\n"
" people trying to use this plugin to be registered."
msgstr ""
"Определяет, должен ли бот требовать регистрации у людей, которые "
"используют этот плагин."
#: config.py:57
msgid ""
"Determines what capability (if any) the bot should\n"
" require people trying to use this plugin to have."
msgstr ""
"Определяет какие привилегии (если таковые имеются) должен проверять бот у "
"людей, которые используют этот плагин."
#: config.py:60
msgid ""
"Determines whether the bot will allow the\n"
" \"tell\" command to be used. If true, the bot will allow the \"tell\"\n"
" command to send private messages to other users."
msgstr ""
"Определяет разрешение на использование команды \"tell\". Если значение "
"установлено в true, то бот позволит использовать команду \"tell\" для "
"отправки личных сообщений другим пользователям."
#: plugin.py:45
msgid ""
"\n"
" This plugin allows users to act through the bot anonymously. The "
"'do'\n"
" command has the bot perform an anonymous action in a given channel, "
"and\n"
" the 'say' command allows other people to speak through the bot. "
"Since\n"
" this can be fairly well abused, you might want to set\n"
" supybot.plugins.Anonymous.requireCapability so only users with that\n"
" capability can use this plugin. For extra security, you can require "
"that\n"
" the user be *in* the channel they are trying to address anonymously "
"with\n"
" supybot.plugins.Anonymous.requirePresenceInChannel, or you can "
"require\n"
" that the user be registered by setting\n"
" supybot.plugins.Anonymous.requireRegistration.\n"
"\n"
" Example: Proving that you are the owner\n"
" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"
"\n"
" When you ask for cloak/vhost for your bot, the network operators will\n"
" often ask you to prove that you own the bot. You can do this for "
"example\n"
" with the following method::\n"
"\n"
" @load Anonymous\n"
" @config plugins.anonymous.requirecapability owner\n"
" @config plugins.anonymous.allowprivatetarget True\n"
" @anonymous say <operator nick> Hi, my owner is <your nick> :)\n"
"\n"
" This\n"
" * Loads the plugin.\n"
" * Makes the plugin require that you are the owner\n"
"\n"
" * If anyone could send private messages as the bot, they could also\n"
" access network services.\n"
"\n"
" * Allows sending private messages\n"
" * Sends message ``Hi, my owner is <your nick> :)`` to ``operator "
"nick``.\n"
"\n"
" * Note that you won't see the messages that are sent to the bot.\n"
"\n"
" "
msgstr ""
"\n"
"Этот плагин позволяет пользователям анонимно взаимодействовать через бота. "
"Команда 'do' позволяет выполнить некоторое анонимное действие через бота в "
"данном канале, и команда 'say' позволяет другим пользователям общаться "
"через бота. Этим плагином можно легко злоупотреблять, поэтому возможно вы "
"захотите настройку supybot.plugins.Anonymous.requireCapability, чтобы "
"только пользователи с данной привилегией могли могли использовать этот "
"плагин. Для повышенной безопасности, вы можете требовать, чтобы "
"пользователь был в канале, где они хотят взаимодействовать через бота "
"анонимно, с помощью настроки supybot.plugins.Anonymous."
"requirePresenceInChannel. Или вы можете требовать, чтобы пользователь был "
"зарегистрирован с помощью настройки supybot.plugins.Anonymous."
"requireRegistration.\n"
"\n"
"Пример: доказательство того, что вы являетесь владельцем\n"
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"
"\n"
"Когда вы просите cloak или vhost для своего бота, операторы сети часто "
"могут просить вас доказать, что являетесь владельцем бота. Для примера вы "
"можете сделать это так:\n"
"\n"
"@load Anonymous\n"
"@config plugins.anonymous.requirecapability owner\n"
"@config plugins.anonymous.allowprivatetarget True\n"
"@anonymous say <ник оператора>: Привет, мой хозяин это <ваш ник> :)\n"
"\n"
"Комбинация команд выше\n"
"* Загружает плагин.\n"
"* Выставляет в настройках плагина, чтобы бот требовал привилегии "
"владельца.\n"
"\n"
" * Если кто-нибудь может посылать сообщения от имени бота, то они в том "
"числе могут запрашивать сервисы сети.\n"
"\n"
"* Разрешает отправку личных сообщений.\n"
"* Отправляет сообщение ``Привет, мой хозяин это <ваш ник> :)`` в адрес "
"``<ника оператора>``.\n"
"\n"
" Примечание: вы не сможете получать сообщения, которые отправлены боту."
#: plugin.py:98
msgid "You must be in %s to %q in there."
msgstr "Вы должны быть в %s, чтобы %q там."
#: plugin.py:102
msgid "I'm lobotomized in %s."
msgstr "Мне сделали лоботомию в %s."
#: plugin.py:105
msgid ""
"That channel has set its capabilities so as to disallow the use of this "
"plugin."
msgstr "Этот канал настроен на запрет использования этого плагина."
#: plugin.py:108
msgid ""
"This command is disabled (supybot.plugins.Anonymous.allowPrivateTarget is "
"False)."
msgstr ""
"Эта команда отключена (настройка supybot.plugins.Anonymous."
"allowPrivateTarget установлена в False)."
#: plugin.py:112
msgid ""
"<channel> <text>\n"
"\n"
" Sends <text> to <channel>.\n"
" "
msgstr ""
"<канал> <текст>\n"
"\n"
"Отправляет <текст> в <канал>."
#: plugin.py:124
msgid ""
"<nick> <text>\n"
"\n"
" Sends <text> to <nick>. Can only be used if\n"
" supybot.plugins.Anonymous.allowPrivateTarget is True.\n"
" "
msgstr ""
"<ник> <текст>\n"
"\n"
"Отправляет <текст> в адрес <ника>. Команда может быть использована, только "
"если настройка supybot.plugins.Anonymous.allowPrivateTarget установлена в "
"True."
#: plugin.py:137
msgid ""
"<channel> <action>\n"
"\n"
" Performs <action> in <channel>.\n"
" "
msgstr ""
"<канал> <действие>\n"
"\n"
"Выполняет <действие> в <канале>."
#: plugin.py:148
msgid ""
"<channel> <reaction> <nick>\n"
"\n"
" Sends the <reaction> to <nick>'s last message.\n"
" <reaction> is typically a smiley or an emoji.\n"
"\n"
" This may not be supported on the current network, as this\n"
" command depends on IRCv3 features.\n"
" This is also not supported if\n"
" supybot.protocols.irc.experimentalExtensions disabled\n"
" (don't enable it unless you know what you are doing).\n"
" "
msgstr ""
"<канал> <реакция> <ник>\n"
"\n"
"Отправляет <реакцию> в ответ на последнее сообщение <ника>. <реакция> это "
"обычно смайлик или эмодзи.\n"
"\n"
"Текущая сеть может не поддерживать эту команду, так как команда зависит от "
"возможностей IRCv3. Она также не поддерживается, если в плагине отключена "
"настройка supybot.protocols.irc.experimentalExtensions (не переключайте, "
"если вы не знаете, что вы делаете)."
#: plugin.py:162
msgid ""
"Unable to react, supybot.protocols.irc.experimentalExtensions is disabled."
msgstr ""
"Не удаётся отправить реакцию, настройка supybot.protocols.irc."
"experimentalExtensions отключена."
#: plugin.py:167
msgid "Unable to react, the network does not support message-tags."
msgstr ""
"Не удаётся отправить реакцию, данная сеть не поддерживает message-tags."
#: plugin.py:172
msgid ""
"Unable to react, the network does not allow draft/reply and/or draft/react."
msgstr ""
"Не удаётся отправить реакцию, данная сеть не позволяет использовать"
"draft/reply или draft/react."
#: plugin.py:181
msgid "I couldn't find a message from %s in my history of %s messages."
msgstr "Не могу найти сообщение от %s в моей истории сообщений (%s)."
#: plugin.py:189
msgid "Unable to react, %s's last message does not have a message id."
msgstr ""
"Не удаётся отправить реакцию, последнее сообщение %s не имеет id сообщения."

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -163,8 +163,9 @@ class AutoMode(callbacks.Plugin):
# We're not in the channel anymore. # We're not in the channel anymore.
pass pass
schedule.addEvent(unban, time.time()+period) schedule.addEvent(unban, time.time()+period)
banmask =conf.supybot.protocols.irc.banmask.makeBanmask(msg.prefix) banmasks = conf.supybot.protocols.irc.banmask.makeExtBanmasks(
irc.queueMsg(ircmsgs.ban(channel, banmask)) msg.prefix, channel=channel, network=irc.network)
irc.queueMsg(ircmsgs.bans(channel, banmasks))
irc.queueMsg(ircmsgs.kick(channel, msg.nick)) irc.queueMsg(ircmsgs.kick(channel, msg.nick))
try: try:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -25,17 +25,17 @@ Commands
.. _command-badwords-add: .. _command-badwords-add:
add <word> [<word> ...] ``add <word> [<word> ...]``
Adds all <word>s to the list of words being censored. Adds all <word>s to the list of words being censored.
.. _command-badwords-list: .. _command-badwords-list:
list takes no arguments ``list takes no arguments``
Returns the list of words being censored. Returns the list of words being censored.
.. _command-badwords-remove: .. _command-badwords-remove:
remove <word> [<word> ...] ``remove <word> [<word> ...]``
Removes <word>s from the list of words being censored. Removes <word>s from the list of words being censored.
.. _conf-BadWords: .. _conf-BadWords:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Supybot BadWords\n" "Project-Id-Version: Supybot BadWords\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: \n" "PO-Revision-Date: \n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n" "Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -122,6 +122,15 @@ msgstr ""
" tekstin värittämistä tai korostamista tekevien lisäosien kanssa." " tekstin värittämistä tai korostamista tekevien lisäosien kanssa."
#: config.py:117 #: config.py:117
#, fuzzy
msgid ""
"Determines whether the bot will filter its own\n"
" messages."
msgstr ""
"Määrittää potkiiko botti ihmiset\n"
" varoituksella jos he käyttävät pahoja sanoja."
#: config.py:120
msgid "" msgid ""
"Determines whether the bot will kick people with\n" "Determines whether the bot will kick people with\n"
" a warning when they use bad words." " a warning when they use bad words."
@ -129,7 +138,7 @@ msgstr ""
"Määrittää potkiiko botti ihmiset\n" "Määrittää potkiiko botti ihmiset\n"
" varoituksella jos he käyttävät pahoja sanoja." " varoituksella jos he käyttävät pahoja sanoja."
#: config.py:120 #: config.py:123
msgid "" msgid ""
"You have been kicked for using a word\n" "You have been kicked for using a word\n"
" prohibited in the presence of this bot. Please use more appropriate\n" " prohibited in the presence of this bot. Please use more appropriate\n"
@ -139,7 +148,7 @@ msgstr ""
" käytöstä tämän botin läsnäollessa. Ole hyvä ja käytä asianmukaisempaa\n" " käytöstä tämän botin läsnäollessa. Ole hyvä ja käytä asianmukaisempaa\n"
" kieltä tulevaisuudessa." " kieltä tulevaisuudessa."
#: config.py:122 #: config.py:125
msgid "" msgid ""
"Determines the kick message used by the\n" "Determines the kick message used by the\n"
" bot when kicking users for saying bad words." " bot when kicking users for saying bad words."
@ -158,7 +167,7 @@ msgstr ""
"botilla\n" "botilla\n"
" on opit." " on opit."
#: plugin.py:127 #: plugin.py:128
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -170,11 +179,11 @@ msgstr ""
" Palauttaa listan sanoista, joita sensuroidaan.\n" " Palauttaa listan sanoista, joita sensuroidaan.\n"
" " " "
#: plugin.py:137 #: plugin.py:138
msgid "I'm not currently censoring any bad words." msgid "I'm not currently censoring any bad words."
msgstr "En ole sensuroimassa yhtään pahaa sanaa juuri nyt." msgstr "En ole sensuroimassa yhtään pahaa sanaa juuri nyt."
#: plugin.py:142 #: plugin.py:143
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
"\n" "\n"
@ -186,7 +195,7 @@ msgstr ""
" Lisää kaikki <sana>(t) sensuroitaviin sanoihin.\n" " Lisää kaikki <sana>(t) sensuroitaviin sanoihin.\n"
" " " "
#: plugin.py:162 #: plugin.py:163
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
"\n" "\n"

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: \n" "PO-Revision-Date: \n"
"Last-Translator: Valentin Lorentz <progval@gmail.com>\n" "Last-Translator: Valentin Lorentz <progval@gmail.com>\n"
"Language-Team: Limnoria <progval@gmail.com>\n" "Language-Team: Limnoria <progval@gmail.com>\n"
@ -108,6 +108,15 @@ msgstr ""
"toute couleur ou formattage des autres plugins" "toute couleur ou formattage des autres plugins"
#: config.py:117 #: config.py:117
#, fuzzy
msgid ""
"Determines whether the bot will filter its own\n"
" messages."
msgstr ""
"Détermine si le bot kickera les gens avec un avertissement lorsqu'ils "
"utilisent des gros mots."
#: config.py:120
msgid "" msgid ""
"Determines whether the bot will kick people with\n" "Determines whether the bot will kick people with\n"
" a warning when they use bad words." " a warning when they use bad words."
@ -115,7 +124,7 @@ msgstr ""
"Détermine si le bot kickera les gens avec un avertissement lorsqu'ils " "Détermine si le bot kickera les gens avec un avertissement lorsqu'ils "
"utilisent des gros mots." "utilisent des gros mots."
#: config.py:120 #: config.py:123
msgid "" msgid ""
"You have been kicked for using a word\n" "You have been kicked for using a word\n"
" prohibited in the presence of this bot. Please use more appropriate\n" " prohibited in the presence of this bot. Please use more appropriate\n"
@ -124,7 +133,7 @@ msgstr ""
"Vous avez été kické(e) parce que vous avez utilisé un mot interdit en la " "Vous avez été kické(e) parce que vous avez utilisé un mot interdit en la "
"présence de ce bot. Veuillez utiliser un langage plus approprié par le futur." "présence de ce bot. Veuillez utiliser un langage plus approprié par le futur."
#: config.py:122 #: config.py:125
msgid "" msgid ""
"Determines the kick message used by the\n" "Determines the kick message used by the\n"
" bot when kicking users for saying bad words." " bot when kicking users for saying bad words."
@ -139,7 +148,7 @@ msgid ""
" has op." " has op."
msgstr "" msgstr ""
#: plugin.py:127 #: plugin.py:128
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -150,11 +159,11 @@ msgstr ""
"\n" "\n"
"Retourne une liste de mots qui sont censurés." "Retourne une liste de mots qui sont censurés."
#: plugin.py:137 #: plugin.py:138
msgid "I'm not currently censoring any bad words." msgid "I'm not currently censoring any bad words."
msgstr "Je ne censure actuellement aucun mot." msgstr "Je ne censure actuellement aucun mot."
#: plugin.py:142 #: plugin.py:143
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
"\n" "\n"
@ -165,7 +174,7 @@ msgstr ""
"\n" "\n"
"Ajoute tous les mots à la liste des mots que le bot ne doit pas dire." "Ajoute tous les mots à la liste des mots que le bot ne doit pas dire."
#: plugin.py:162 #: plugin.py:163
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
"\n" "\n"

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2011-06-28 23:29+0200\n" "PO-Revision-Date: 2011-06-28 23:29+0200\n"
"Last-Translator: skizzhg <skizzhg@gmx.com>\n" "Last-Translator: skizzhg <skizzhg@gmx.com>\n"
"Language-Team: Italian <skizzhg@gmx.com>\n" "Language-Team: Italian <skizzhg@gmx.com>\n"
@ -79,8 +79,8 @@ msgid ""
" length of the bad word); this string is configurable via\n" " length of the bad word); this string is configurable via\n"
" supybot.plugins.BadWords.simpleReplacement." " supybot.plugins.BadWords.simpleReplacement."
msgstr "" msgstr ""
"Determina come verranno sostituite le parole volgari. \"nastyCharacters" "Determina come verranno sostituite le parole volgari. "
"\" (predefinito)\n" "\"nastyCharacters\" (predefinito)\n"
" rimpiazzerà la parola con lo stesso numero di \"brutti caratteri\" (come " " rimpiazzerà la parola con lo stesso numero di \"brutti caratteri\" (come "
"quelli usati\n" "quelli usati\n"
" nei fumetti; configurabile da supybot.plugins.BadWords.nastyChars). " " nei fumetti; configurabile da supybot.plugins.BadWords.nastyChars). "
@ -117,6 +117,15 @@ msgstr ""
" con altri plugin che colorano o rendono il testo grassetto." " con altri plugin che colorano o rendono il testo grassetto."
#: config.py:117 #: config.py:117
#, fuzzy
msgid ""
"Determines whether the bot will filter its own\n"
" messages."
msgstr ""
"Determina se il bot caccerà (kick) gli utenti con un avvertimento quando "
"usano volgarità."
#: config.py:120
msgid "" msgid ""
"Determines whether the bot will kick people with\n" "Determines whether the bot will kick people with\n"
" a warning when they use bad words." " a warning when they use bad words."
@ -124,7 +133,7 @@ msgstr ""
"Determina se il bot caccerà (kick) gli utenti con un avvertimento quando " "Determina se il bot caccerà (kick) gli utenti con un avvertimento quando "
"usano volgarità." "usano volgarità."
#: config.py:120 #: config.py:123
msgid "" msgid ""
"You have been kicked for using a word\n" "You have been kicked for using a word\n"
" prohibited in the presence of this bot. Please use more appropriate\n" " prohibited in the presence of this bot. Please use more appropriate\n"
@ -133,7 +142,7 @@ msgstr ""
"Sei stato/a cacciato/a per aver usato parole proibite in presenza del bot.\n" "Sei stato/a cacciato/a per aver usato parole proibite in presenza del bot.\n"
" In futuro utilizza un linguaggio più appropriato." " In futuro utilizza un linguaggio più appropriato."
#: config.py:122 #: config.py:125
msgid "" msgid ""
"Determines the kick message used by the\n" "Determines the kick message used by the\n"
" bot when kicking users for saying bad words." " bot when kicking users for saying bad words."
@ -151,7 +160,7 @@ msgstr ""
" Se il bot ha lo stato di operatore, può essere anche utilizzato\n" " Se il bot ha lo stato di operatore, può essere anche utilizzato\n"
" per cacciare (kick) utenti che scrivono queste parole." " per cacciare (kick) utenti che scrivono queste parole."
#: plugin.py:127 #: plugin.py:128
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -163,11 +172,11 @@ msgstr ""
" Riporta l'elenco delle parole censurate.\n" " Riporta l'elenco delle parole censurate.\n"
" " " "
#: plugin.py:137 #: plugin.py:138
msgid "I'm not currently censoring any bad words." msgid "I'm not currently censoring any bad words."
msgstr "Al momento non ho alcuna parola censurata." msgstr "Al momento non ho alcuna parola censurata."
#: plugin.py:142 #: plugin.py:143
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
"\n" "\n"
@ -179,7 +188,7 @@ msgstr ""
" Aggiunge <parola> all'elenco di quelle da censurare.\n" " Aggiunge <parola> all'elenco di quelle da censurare.\n"
" " " "
#: plugin.py:162 #: plugin.py:163
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
"\n" "\n"

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -112,7 +112,7 @@ msgid ""
" has op." " has op."
msgstr "" msgstr ""
#: plugin.py:127 #: plugin.py:128
#, docstring #, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
@ -121,11 +121,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:137 #: plugin.py:138
msgid "I'm not currently censoring any bad words." msgid "I'm not currently censoring any bad words."
msgstr "" msgstr ""
#: plugin.py:142 #: plugin.py:143
#, docstring #, docstring
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
@ -134,7 +134,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:162 #: plugin.py:163
#, docstring #, docstring
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"

View File

@ -23,197 +23,197 @@ Commands
.. _command-channel-alert: .. _command-channel-alert:
alert [<channel>] <text> ``alert [<channel>] <text>``
Sends <text> to all the users in <channel> who have the <channel>,op capability. Sends <text> to all the users in <channel> who have the <channel>,op capability.
.. _command-channel-ban.add: .. _command-channel-ban.add:
ban add [<channel>] <nick|hostmask> [<expires>] ``ban add [<channel>] <nick|hostmask> [<expires>]``
If you have the #channel,op capability, this will effect a persistent ban from interacting with the bot on the given <hostmask> (or the current hostmask associated with <nick>). Other plugins may enforce this ban by actually banning users with matching hostmasks when they join. <expires> is an optional argument specifying when (in "seconds from now") the ban should expire; if none is given, the ban will never automatically expire. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will effect a persistent ban from interacting with the bot on the given <hostmask> (or the current hostmask associated with <nick>). Other plugins may enforce this ban by actually banning users with matching hostmasks when they join. <expires> is an optional argument specifying when (in "seconds from now") the ban should expire; if none is given, the ban will never automatically expire. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-ban.hostmask: .. _command-channel-ban.hostmask:
ban hostmask [<channel>] <banmask> ``ban hostmask [<channel>] <banmask>``
Bans the <banmask> from the <channel>. Bans the <banmask> from the <channel>.
.. _command-channel-ban.list: .. _command-channel-ban.list:
ban list [<channel>] [<mask>] ``ban list [<channel>] [<mask>]``
If you have the #channel,op capability, this will show you the current persistent bans on the <channel> that match the given mask, if any (returns all of them otherwise). Note that you can use * as a wildcard on masks and \* to match actual * in masks If you have the #channel,op capability, this will show you the current persistent bans on the <channel> that match the given mask, if any (returns all of them otherwise). Note that you can use * as a wildcard on masks and \* to match actual * in masks
.. _command-channel-ban.remove: .. _command-channel-ban.remove:
ban remove [<channel>] <hostmask> ``ban remove [<channel>] <hostmask>``
If you have the #channel,op capability, this will remove the persistent ban on <hostmask>. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will remove the persistent ban on <hostmask>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-capability.add: .. _command-channel-capability.add:
capability add [<channel>] <nick|username> <capability> [<capability> ...] ``capability add [<channel>] <nick|username> <capability> [<capability> ...]``
If you have the #channel,op capability, this will give the <username> (or the user to whom <nick> maps) the capability <capability> in the channel. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will give the <username> (or the user to whom <nick> maps) the capability <capability> in the channel. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-capability.list: .. _command-channel-capability.list:
capability list [<channel>] ``capability list [<channel>]``
Returns the capabilities present on the <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Returns the capabilities present on the <channel>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-capability.remove: .. _command-channel-capability.remove:
capability remove [<channel>] <name|hostmask> <capability> [<capability> ...] ``capability remove [<channel>] <name|hostmask> <capability> [<capability> ...]``
If you have the #channel,op capability, this will take from the user currently identified as <name> (or the user to whom <hostmask> maps) the capability <capability> in the channel. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will take from the user currently identified as <name> (or the user to whom <hostmask> maps) the capability <capability> in the channel. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-capability.set: .. _command-channel-capability.set:
capability set [<channel>] <capability> [<capability> ...] ``capability set [<channel>] <capability> [<capability> ...]``
If you have the #channel,op capability, this will add the channel capability <capability> for all users in the channel. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will add the channel capability <capability> for all users in the channel. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-capability.setdefault: .. _command-channel-capability.setdefault:
capability setdefault [<channel>] {True|False} ``capability setdefault [<channel>] {True|False}``
If you have the #channel,op capability, this will set the default response to non-power-related (that is, not {op, halfop, voice}) capabilities to be the value you give. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will set the default response to non-power-related (that is, not {op, halfop, voice}) capabilities to be the value you give. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-capability.unset: .. _command-channel-capability.unset:
capability unset [<channel>] <capability> [<capability> ...] ``capability unset [<channel>] <capability> [<capability> ...]``
If you have the #channel,op capability, this will unset the channel capability <capability> so each user's specific capability or the channel default capability will take precedence. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will unset the channel capability <capability> so each user's specific capability or the channel default capability will take precedence. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-cycle: .. _command-channel-cycle:
cycle [<channel>] [<reason>] ``cycle [<channel>] [<reason>]``
If you have the #channel,op capability, this will cause the bot to "cycle", or PART and then JOIN the channel. <channel> is only necessary if the message isn't sent in the channel itself. If <reason> is not specified, the default part message specified in supybot.plugins.Channel.partMsg will be used. No part message will be used if neither a cycle reason nor a default part message is given. If you have the #channel,op capability, this will cause the bot to "cycle", or PART and then JOIN the channel. <channel> is only necessary if the message isn't sent in the channel itself. If <reason> is not specified, the default part message specified in supybot.plugins.Channel.partMsg will be used. No part message will be used if neither a cycle reason nor a default part message is given.
.. _command-channel-dehalfop: .. _command-channel-dehalfop:
dehalfop [<channel>] [<nick> ...] ``dehalfop [<channel>] [<nick> ...]``
If you have the #channel,op capability, this will remove half-operator privileges from all the nicks given. If no nicks are given, removes half-operator privileges from the person sending the message. If you have the #channel,op capability, this will remove half-operator privileges from all the nicks given. If no nicks are given, removes half-operator privileges from the person sending the message.
.. _command-channel-deop: .. _command-channel-deop:
deop [<channel>] [<nick> ...] ``deop [<channel>] [<nick> ...]``
If you have the #channel,op capability, this will remove operator privileges from all the nicks given. If no nicks are given, removes operator privileges from the person sending the message. If you have the #channel,op capability, this will remove operator privileges from all the nicks given. If no nicks are given, removes operator privileges from the person sending the message.
.. _command-channel-devoice: .. _command-channel-devoice:
devoice [<channel>] [<nick> ...] ``devoice [<channel>] [<nick> ...]``
If you have the #channel,op capability, this will remove voice from all the nicks given. If no nicks are given, removes voice from the person sending the message. If you have the #channel,op capability, this will remove voice from all the nicks given. If no nicks are given, removes voice from the person sending the message.
.. _command-channel-disable: .. _command-channel-disable:
disable [<channel>] [<plugin>] [<command>] ``disable [<channel>] [<plugin>] [<command>]``
If you have the #channel,op capability, this will disable the <command> in <channel>. If <plugin> is provided, <command> will be disabled only for that plugin. If only <plugin> is provided, all commands in the given plugin will be disabled. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will disable the <command> in <channel>. If <plugin> is provided, <command> will be disabled only for that plugin. If only <plugin> is provided, all commands in the given plugin will be disabled. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-enable: .. _command-channel-enable:
enable [<channel>] [<plugin>] [<command>] ``enable [<channel>] [<plugin>] [<command>]``
If you have the #channel,op capability, this will enable the <command> in <channel> if it has been disabled. If <plugin> is provided, <command> will be enabled only for that plugin. If only <plugin> is provided, all commands in the given plugin will be enabled. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will enable the <command> in <channel> if it has been disabled. If <plugin> is provided, <command> will be enabled only for that plugin. If only <plugin> is provided, all commands in the given plugin will be enabled. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-halfop: .. _command-channel-halfop:
halfop [<channel>] [<nick> ...] ``halfop [<channel>] [<nick> ...]``
If you have the #channel,halfop capability, this will give all the <nick>s you provide halfops. If you don't provide any <nick>s, this will give you halfops. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,halfop capability, this will give all the <nick>s you provide halfops. If you don't provide any <nick>s, this will give you halfops. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-iban: .. _command-channel-iban:
iban [<channel>] [--{exact,nick,user,host}] <nick> [<seconds>] ``iban [<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]``
If you have the #channel,op capability, this will ban <nick> for as many seconds as you specify, otherwise (if you specify 0 seconds or don't specify a number of seconds) it will ban the person indefinitely. --exact can be used to specify an exact hostmask. You can combine the --nick, --user, and --host options as you choose. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will ban <nick> for as many seconds as you specify, otherwise (if you specify 0 seconds or don't specify a number of seconds) it will ban the person indefinitely. --exact can be used to specify an exact hostmask. You can combine the --nick, --user, and --host options as you choose. If --account is provided and the user is logged in and the network supports account bans, this will ban the user's account instead. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-ignore.add: .. _command-channel-ignore.add:
ignore add [<channel>] <nick|hostmask> [<expires>] ``ignore add [<channel>] <nick|hostmask> [<expires>]``
If you have the #channel,op capability, this will set a persistent ignore on <hostmask> or the hostmask currently associated with <nick>. <expires> is an optional argument specifying when (in "seconds from now") the ignore will expire; if it isn't given, the ignore will never automatically expire. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will set a persistent ignore on <hostmask> or the hostmask currently associated with <nick>. <expires> is an optional argument specifying when (in "seconds from now") the ignore will expire; if it isn't given, the ignore will never automatically expire. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-ignore.list: .. _command-channel-ignore.list:
ignore list [<channel>] ``ignore list [<channel>]``
Lists the hostmasks that the bot is ignoring on the given channel. <channel> is only necessary if the message isn't sent in the channel itself. Lists the hostmasks that the bot is ignoring on the given channel. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-ignore.remove: .. _command-channel-ignore.remove:
ignore remove [<channel>] <nick|hostmask> ``ignore remove [<channel>] <nick|hostmask>``
If you have the #channel,op capability, this will remove the persistent ignore on <hostmask> in the channel. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will remove the persistent ignore on <hostmask> in the channel. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-invite: .. _command-channel-invite:
invite [<channel>] <nick> ``invite [<channel>] <nick>``
If you have the #channel,op capability, this will invite <nick> to join <channel>. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will invite <nick> to join <channel>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-kban: .. _command-channel-kban:
kban [<channel>] [--{exact,nick,user,host,account}] <nick> [<seconds>] [<reason>] ``kban [<channel>] [--{exact,nick,user,host,account}] <nick> [<seconds>] [<reason>]``
If you have the #channel,op capability, this will kickban <nick> for as many seconds as you specify, or else (if you specify 0 seconds or don't specify a number of seconds) it will ban the person indefinitely. --exact bans only the exact hostmask; --nick bans just the nick; --user bans just the user, and --host bans just the host You can combine the --nick, --user, and --host options as you choose. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will kickban <nick> for as many seconds as you specify, or else (if you specify 0 seconds or don't specify a number of seconds) it will ban the person indefinitely. --exact bans only the exact hostmask; --nick bans just the nick; --user bans just the user, and --host bans just the host You can combine the --nick, --user, and --host options as you choose. If --account is provided and the user is logged in and the network supports account bans, this will ban the user's account instead. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-key: .. _command-channel-key:
key [<channel>] [<key>] ``key [<channel>] [<key>]``
Sets the keyword in <channel> to <key>. If <key> is not given, removes the keyword requirement to join <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Sets the keyword in <channel> to <key>. If <key> is not given, removes the keyword requirement to join <channel>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-kick: .. _command-channel-kick:
kick [<channel>] <nick>[, <nick>, ...] [<reason>] ``kick [<channel>] <nick>[, <nick>, ...] [<reason>]``
Kicks <nick>(s) from <channel> for <reason>. If <reason> isn't given, uses the nick of the person making the command as the reason. <channel> is only necessary if the message isn't sent in the channel itself. Kicks <nick>(s) from <channel> for <reason>. If <reason> isn't given, uses the nick of the person making the command as the reason. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-limit: .. _command-channel-limit:
limit [<channel>] [<limit>] ``limit [<channel>] [<limit>]``
Sets the channel limit to <limit>. If <limit> is 0, or isn't given, removes the channel limit. <channel> is only necessary if the message isn't sent in the channel itself. Sets the channel limit to <limit>. If <limit> is 0, or isn't given, removes the channel limit. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-listbans: .. _command-channel-listbans:
listbans [<channel>] ``listbans [<channel>]``
List all bans on the channel. If <channel> is not given, it defaults to the current channel. List all bans on the channel. If <channel> is not given, it defaults to the current channel.
.. _command-channel-lobotomy.add: .. _command-channel-lobotomy.add:
lobotomy add [<channel>] ``lobotomy add [<channel>]``
If you have the #channel,op capability, this will "lobotomize" the bot, making it silent and unanswering to all requests made in the channel. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will "lobotomize" the bot, making it silent and unanswering to all requests made in the channel. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-lobotomy.list: .. _command-channel-lobotomy.list:
lobotomy list takes no arguments ``lobotomy list takes no arguments``
Returns the channels in which this bot is lobotomized. Returns the channels in which this bot is lobotomized.
.. _command-channel-lobotomy.remove: .. _command-channel-lobotomy.remove:
lobotomy remove [<channel>] ``lobotomy remove [<channel>]``
If you have the #channel,op capability, this will unlobotomize the bot, making it respond to requests made in the channel again. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will unlobotomize the bot, making it respond to requests made in the channel again. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-mode: .. _command-channel-mode:
mode [<channel>] <mode> [<arg> ...] ``mode [<channel>] <mode> [<arg> ...]``
Sets the mode in <channel> to <mode>, sending the arguments given. <channel> is only necessary if the message isn't sent in the channel itself. Sets the mode in <channel> to <mode>, sending the arguments given. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-moderate: .. _command-channel-moderate:
moderate [<channel>] ``moderate [<channel>]``
Sets +m on <channel>, making it so only ops and voiced users can send messages to the channel. <channel> is only necessary if the message isn't sent in the channel itself. Sets +m on <channel>, making it so only ops and voiced users can send messages to the channel. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-nicks: .. _command-channel-nicks:
nicks [<channel>] [--count] ``nicks [<channel>] [--count]``
Returns the nicks in <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Returns only the number of nicks if --count option is provided. Returns the nicks in <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Returns only the number of nicks if --count option is provided.
.. _command-channel-op: .. _command-channel-op:
op [<channel>] [<nick> ...] ``op [<channel>] [<nick> ...]``
If you have the #channel,op capability, this will give all the <nick>s you provide ops. If you don't provide any <nick>s, this will op you. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,op capability, this will give all the <nick>s you provide ops. If you don't provide any <nick>s, this will op you. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-part: .. _command-channel-part:
part [<channel>] [<reason>] ``part [<channel>] [<reason>]``
Tells the bot to part the list of channels you give it. <channel> is only necessary if you want the bot to part a channel other than the current channel. If <reason> is specified, use it as the part message. Otherwise, the default part message specified in supybot.plugins.Channel.partMsg will be used. No part message will be used if no default is configured. Tells the bot to part the list of channels you give it. <channel> is only necessary if you want the bot to part a channel other than the current channel. If <reason> is specified, use it as the part message. Otherwise, the default part message specified in supybot.plugins.Channel.partMsg will be used. No part message will be used if no default is configured.
.. _command-channel-unban: .. _command-channel-unban:
unban [<channel>] [<hostmask|--all>] ``unban [<channel>] [<hostmask|--all>]``
Unbans <hostmask> on <channel>. If <hostmask> is not given, unbans any hostmask currently banned on <channel> that matches your current hostmask. Especially useful for unbanning yourself when you get unexpectedly (or accidentally) banned from the channel. <channel> is only necessary if the message isn't sent in the channel itself. Unbans <hostmask> on <channel>. If <hostmask> is not given, unbans any hostmask currently banned on <channel> that matches your current hostmask. Especially useful for unbanning yourself when you get unexpectedly (or accidentally) banned from the channel. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-unmoderate: .. _command-channel-unmoderate:
unmoderate [<channel>] ``unmoderate [<channel>]``
Sets -m on <channel>, making it so everyone can send messages to the channel. <channel> is only necessary if the message isn't sent in the channel itself. Sets -m on <channel>, making it so everyone can send messages to the channel. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-voice: .. _command-channel-voice:
voice [<channel>] [<nick> ...] ``voice [<channel>] [<nick> ...]``
If you have the #channel,voice capability, this will voice all the <nick>s you provide. If you don't provide any <nick>s, this will voice you. <channel> is only necessary if the message isn't sent in the channel itself. If you have the #channel,voice capability, this will voice all the <nick>s you provide. If you don't provide any <nick>s, this will voice you. <channel> is only necessary if the message isn't sent in the channel itself.
.. _conf-Channel: .. _conf-Channel:

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: sdf\n" "Project-Id-Version: sdf\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2012-04-27 15:33+0200\n" "PO-Revision-Date: 2012-04-27 15:33+0200\n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n" "Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -352,8 +352,10 @@ msgid "kick someone"
msgstr "jemanden kicken" msgstr "jemanden kicken"
#: plugin.py:316 #: plugin.py:316
#, fuzzy
msgid "" msgid ""
"[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>] [<reason>]\n" "[<channel>] [--{exact,nick,user,host,account}] <nick> [<seconds>] "
"[<reason>]\n"
"\n" "\n"
" If you have the #channel,op capability, this will kickban <nick> " " If you have the #channel,op capability, this will kickban <nick> "
"for\n" "for\n"
@ -362,12 +364,12 @@ msgid ""
" don't specify a number of seconds) it will ban the person " " don't specify a number of seconds) it will ban the person "
"indefinitely.\n" "indefinitely.\n"
" --exact bans only the exact hostmask; --nick bans just the nick;\n" " --exact bans only the exact hostmask; --nick bans just the nick;\n"
" --user bans just the user, and --host bans just the host. You can\n" " --user bans just the user, and --host bans just the host\n"
" combine these options as you choose. <reason> is a reason to give " " You can combine the --nick, --user, and --host options as you "
"for\n" "choose.\n"
" the kick.\n" " If --account is provided and the user is logged in and the network\n"
" <channel> is only necessary if the message isn't sent in the " " supports account bans, this will ban the user's account instead.\n"
"channel\n" " <channel> is only necessary if the message isn't sent in the channel "
"itself.\n" "itself.\n"
" " " "
msgstr "" msgstr ""
@ -382,11 +384,11 @@ msgstr ""
"den Kick. <Kanal> ist nur notwendig, wenn die Nachricht nicht im Kanal " "den Kick. <Kanal> ist nur notwendig, wenn die Nachricht nicht im Kanal "
"selbst gesendet wurde." "selbst gesendet wurde."
#: plugin.py:333 #: plugin.py:334
msgid "kick or ban someone" msgid "kick or ban someone"
msgstr "jemanden kicken oder bannen" msgstr "jemanden kicken oder bannen"
#: plugin.py:341 #: plugin.py:342
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]\n" "[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]\n"
@ -396,11 +398,13 @@ msgid ""
"or\n" "or\n"
" don't specify a number of seconds) it will ban the person " " don't specify a number of seconds) it will ban the person "
"indefinitely.\n" "indefinitely.\n"
" --exact can be used to specify an exact hostmask. You can combine " " --exact can be used to specify an exact hostmask.\n"
"the\n" " You can combine the --nick, --user, and --host options as you "
" exact, nick, user, and host options as you choose. <channel> is " "choose.\n"
"only\n" " If --account is provided and the user is logged in and the network\n"
" necessary if the message isn't sent in the channel itself.\n" " supports account bans, this will ban the user's account instead.\n"
" <channel> is only necessary if the message isn't sent in the channel "
"itself.\n"
" " " "
msgstr "" msgstr ""
"[<Kanal>] [--{exact,nick,user,host}] <Nick> [<Sekunden>] [<Begründung>]\n" "[<Kanal>] [--{exact,nick,user,host}] <Nick> [<Sekunden>] [<Begründung>]\n"
@ -414,28 +418,28 @@ msgstr ""
"den Kick. <Kanal> ist nur notwendig, wenn die Nachricht nicht im Kanal " "den Kick. <Kanal> ist nur notwendig, wenn die Nachricht nicht im Kanal "
"selbst gesendet wurde." "selbst gesendet wurde."
#: plugin.py:355 plugin.py:581 #: plugin.py:359 plugin.py:610
#, fuzzy #, fuzzy
msgid "ban someone" msgid "ban someone"
msgstr "jemanden entbannen" msgstr "jemanden entbannen"
#: plugin.py:375 #: plugin.py:382
msgid "I haven't seen %s." msgid "I haven't seen %s."
msgstr "Ich habe % nicht gesehen." msgstr "Ich habe % nicht gesehen."
#: plugin.py:385 #: plugin.py:394
msgid "I cowardly refuse to kickban myself." msgid "I cowardly refuse to kickban myself."
msgstr "Ich bin zu feige um mich selbst zu kicken und zu bannen." msgstr "Ich bin zu feige um mich selbst zu kicken und zu bannen."
#: plugin.py:394 #: plugin.py:397 plugin.py:409 plugin.py:418
msgid "I cowardly refuse to ban myself." msgid "I cowardly refuse to ban myself."
msgstr "Ich bin zu feige um mich selbst zu bannen." msgstr "Ich bin zu feige um mich selbst zu bannen."
#: plugin.py:422 #: plugin.py:451
msgid "%s has %s too, you can't ban them." msgid "%s has %s too, you can't ban them."
msgstr "%s hat auch %s, du kannst ihn/sie/es nicht bannen." msgstr "%s hat auch %s, du kannst ihn/sie/es nicht bannen."
#: plugin.py:433 #: plugin.py:462
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [<hostmask|--all>]\n" "[<channel>] [<hostmask|--all>]\n"
@ -457,19 +461,19 @@ msgstr ""
"entbannen, falls du versehentlich im Kanal gebannt wurdest. <Kanal> ist nur " "entbannen, falls du versehentlich im Kanal gebannt wurdest. <Kanal> ist nur "
"notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." "notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde."
#: plugin.py:453 #: plugin.py:482
msgid "All bans on %s matching %s have been removed." msgid "All bans on %s matching %s have been removed."
msgstr "Alle Bans von %s die auf %s zutreffen wurden entfernt." msgstr "Alle Bans von %s die auf %s zutreffen wurden entfernt."
#: plugin.py:457 #: plugin.py:486
msgid "No bans matching %s were found on %s." msgid "No bans matching %s were found on %s."
msgstr "Keine passenden Bans %s wurden in %s gefunden." msgstr "Keine passenden Bans %s wurden in %s gefunden."
#: plugin.py:460 #: plugin.py:489
msgid "unban someone" msgid "unban someone"
msgstr "jemanden entbannen" msgstr "jemanden entbannen"
#: plugin.py:467 #: plugin.py:496
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -477,11 +481,11 @@ msgid ""
" If <channel> is not given, it defaults to the current channel." " If <channel> is not given, it defaults to the current channel."
msgstr "" msgstr ""
#: plugin.py:471 #: plugin.py:500
msgid "No bans." msgid "No bans."
msgstr "" msgstr ""
#: plugin.py:476 #: plugin.py:505
msgid "" msgid ""
"[<channel>] <nick>\n" "[<channel>] <nick>\n"
"\n" "\n"
@ -496,19 +500,19 @@ msgstr ""
"<Kanal> zu betreten. <Kanal> ist nur notwendig, wenn die Nachricht nicht im " "<Kanal> zu betreten. <Kanal> ist nur notwendig, wenn die Nachricht nicht im "
"Kanal selbst gesendet wurde." "Kanal selbst gesendet wurde."
#: plugin.py:485 #: plugin.py:514
msgid "invite someone" msgid "invite someone"
msgstr "jemanden einladen" msgstr "jemanden einladen"
#: plugin.py:504 #: plugin.py:533
msgid "%s is already in %s." msgid "%s is already in %s."
msgstr "%s ist schon in %s." msgstr "%s ist schon in %s."
#: plugin.py:511 #: plugin.py:540
msgid "There is no %s on this network." msgid "There is no %s on this network."
msgstr "%s nicht auf diesem Netzwerk." msgstr "%s nicht auf diesem Netzwerk."
#: plugin.py:523 #: plugin.py:552
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -528,7 +532,7 @@ msgstr ""
"im Kanal getätigt werden. <Kanal> ist nur notwendig, wenn die Nachricht " "im Kanal getätigt werden. <Kanal> ist nur notwendig, wenn die Nachricht "
"nicht im Kanal selbst gesendet wurde." "nicht im Kanal selbst gesendet wurde."
#: plugin.py:538 #: plugin.py:567
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -547,7 +551,7 @@ msgstr ""
"Kanal. <Kanal> ist nur notwendig, wenn die Nachricht nicht im Kanal selbst " "Kanal. <Kanal> ist nur notwendig, wenn die Nachricht nicht im Kanal selbst "
"gesendet wurde." "gesendet wurde."
#: plugin.py:553 #: plugin.py:582
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -558,16 +562,16 @@ msgstr ""
"\n" "\n"
"Gibt die Kanäle aus in denen der Bot hirnamputiert ist." "Gibt die Kanäle aus in denen der Bot hirnamputiert ist."
#: plugin.py:568 #: plugin.py:597
msgid "I'm currently lobotomized in %L." msgid "I'm currently lobotomized in %L."
msgstr "Ich bin momentan hirnamputiert in %L." msgstr "Ich bin momentan hirnamputiert in %L."
#: plugin.py:571 #: plugin.py:600
msgid "I'm not currently lobotomized in any channels that you're in." msgid "I'm not currently lobotomized in any channels that you're in."
msgstr "" msgstr ""
"Momentan bin ich nicht hirnamputiert in allen Kanälen in denen du bist." "Momentan bin ich nicht hirnamputiert in allen Kanälen in denen du bist."
#: plugin.py:585 #: plugin.py:614
msgid "" msgid ""
"[<channel>] <nick|hostmask> [<expires>]\n" "[<channel>] <nick|hostmask> [<expires>]\n"
"\n" "\n"
@ -595,7 +599,7 @@ msgstr ""
"falls nicht angegeben wird der Ban niemals automatisch ablaufen. <Kanal> ist " "falls nicht angegeben wird der Ban niemals automatisch ablaufen. <Kanal> ist "
"nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." "nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde."
#: plugin.py:605 #: plugin.py:639
msgid "" msgid ""
"[<channel>] <hostmask>\n" "[<channel>] <hostmask>\n"
"\n" "\n"
@ -611,11 +615,11 @@ msgstr ""
"<Hostmaske> aufgehoben. <Kanal> ist nur notwendig, wenn die Nachricht nicht " "<Hostmaske> aufgehoben. <Kanal> ist nur notwendig, wenn die Nachricht nicht "
"im Kanal selbst gesendet wurde." "im Kanal selbst gesendet wurde."
#: plugin.py:617 #: plugin.py:651
msgid "There are no persistent bans for that hostmask." msgid "There are no persistent bans for that hostmask."
msgstr "Es gibt keine beständigen Bans für diese Hostmaske." msgstr "Es gibt keine beständigen Bans für diese Hostmaske."
#: plugin.py:622 #: plugin.py:656
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [<mask>]\n" "[<channel>] [<mask>]\n"
@ -633,19 +637,19 @@ msgstr ""
"<Hostmaske> aufgehoben. <Kanal> ist nur notwendig, wenn die Nachricht nicht " "<Hostmaske> aufgehoben. <Kanal> ist nur notwendig, wenn die Nachricht nicht "
"im Kanal selbst gesendet wurde." "im Kanal selbst gesendet wurde."
#: plugin.py:640 #: plugin.py:674
msgid "%q (expires %t)" msgid "%q (expires %t)"
msgstr "%q (läuft ab:%t)" msgstr "%q (läuft ab:%t)"
#: plugin.py:643 #: plugin.py:677
msgid "%q (never expires)" msgid "%q (never expires)"
msgstr "%q(läuft niemals ab)" msgstr "%q(läuft niemals ab)"
#: plugin.py:647 #: plugin.py:681
msgid "There are no persistent bans on %s." msgid "There are no persistent bans on %s."
msgstr "Es gibt keine beständigen Bans für %s." msgstr "Es gibt keine beständigen Bans für %s."
#: plugin.py:654 #: plugin.py:688
msgid "" msgid ""
"[<channel>] <nick|hostmask> [<expires>]\n" "[<channel>] <nick|hostmask> [<expires>]\n"
"\n" "\n"
@ -669,7 +673,7 @@ msgstr ""
"Ignorierung niemals automatisch ablaufen. <Kanal> ist nur notwendig, wenn " "Ignorierung niemals automatisch ablaufen. <Kanal> ist nur notwendig, wenn "
"die Nachricht nicht im Kanal selbst gesendet wurde." "die Nachricht nicht im Kanal selbst gesendet wurde."
#: plugin.py:672 #: plugin.py:706
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] <nick|hostmask>\n" "[<channel>] <nick|hostmask>\n"
@ -686,11 +690,11 @@ msgstr ""
"von <Hostmaske> im Kanal entfernen. <Kanal> ist nur notwendig, wenn die " "von <Hostmaske> im Kanal entfernen. <Kanal> ist nur notwendig, wenn die "
"Nachricht nicht im Kanal selbst gesendet wurde." "Nachricht nicht im Kanal selbst gesendet wurde."
#: plugin.py:684 #: plugin.py:718
msgid "There are no ignores for that hostmask." msgid "There are no ignores for that hostmask."
msgstr "Es gibt keine Ignorierungen für diese Hostmaske." msgstr "Es gibt keine Ignorierungen für diese Hostmaske."
#: plugin.py:689 #: plugin.py:723
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -705,11 +709,11 @@ msgstr ""
"Listet die Hostmasken auf, die der Bot im gegeben Kanal ignoriert. <Kanal> " "Listet die Hostmasken auf, die der Bot im gegeben Kanal ignoriert. <Kanal> "
"ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." "ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde."
#: plugin.py:698 #: plugin.py:732
msgid "I'm not currently ignoring any hostmasks in %q" msgid "I'm not currently ignoring any hostmasks in %q"
msgstr "Momentan ignoriere ich keine Hostmasken in %s." msgstr "Momentan ignoriere ich keine Hostmasken in %s."
#: plugin.py:709 #: plugin.py:743
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] <nick|username> <capability> [<capability> ...]\n" "[<channel>] <nick|username> <capability> [<capability> ...]\n"
@ -727,7 +731,7 @@ msgstr ""
"<Kanal> ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet " "<Kanal> ist nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet "
"wurde." "wurde."
#: plugin.py:725 #: plugin.py:759
msgid "" msgid ""
"[<channel>] <name|hostmask> <capability> [<capability> ...]\n" "[<channel>] <name|hostmask> <capability> [<capability> ...]\n"
"\n" "\n"
@ -746,11 +750,11 @@ msgstr ""
"auf des Benutzers auf den die <Hostmaske> zutrifft). <Kanal> ist nur " "auf des Benutzers auf den die <Hostmaske> zutrifft). <Kanal> ist nur "
"notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." "notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde."
#: plugin.py:744 #: plugin.py:778
msgid "That user didn't have the %L %s." msgid "That user didn't have the %L %s."
msgstr "Der Nutzer hatte nicht %L %s." msgstr "Der Nutzer hatte nicht %L %s."
#: plugin.py:753 #: plugin.py:787
msgid "" msgid ""
"[<channel>] {True|False}\n" "[<channel>] {True|False}\n"
"\n" "\n"
@ -770,7 +774,7 @@ msgstr ""
"angegeben Antwort setzen. <Kanal> ist nur notwendig, wenn die Nachricht " "angegeben Antwort setzen. <Kanal> ist nur notwendig, wenn die Nachricht "
"nicht im Kanal selbst gesendet wurde." "nicht im Kanal selbst gesendet wurde."
#: plugin.py:771 #: plugin.py:805
msgid "" msgid ""
"[<channel>] <capability> [<capability> ...]\n" "[<channel>] <capability> [<capability> ...]\n"
"\n" "\n"
@ -787,7 +791,7 @@ msgstr ""
"<Fähigkeit> für alle Benutzer hinzugefügt. <Kanal> ist nur notwendig, wenn " "<Fähigkeit> für alle Benutzer hinzugefügt. <Kanal> ist nur notwendig, wenn "
"die Nachricht nicht im Kanal selbst gesendet wurde." "die Nachricht nicht im Kanal selbst gesendet wurde."
#: plugin.py:786 #: plugin.py:820
msgid "" msgid ""
"[<channel>] <capability> [<capability> ...]\n" "[<channel>] <capability> [<capability> ...]\n"
"\n" "\n"
@ -807,15 +811,15 @@ msgstr ""
"vorrang haben. <Kanal> ist nur notwendig, wenn die Nachricht nicht im Kanal " "vorrang haben. <Kanal> ist nur notwendig, wenn die Nachricht nicht im Kanal "
"selbst gesendet wurde." "selbst gesendet wurde."
#: plugin.py:802 #: plugin.py:836
msgid "capability" msgid "capability"
msgstr "Fähigkeit" msgstr "Fähigkeit"
#: plugin.py:805 #: plugin.py:839
msgid "I do not know about the %L %s." msgid "I do not know about the %L %s."
msgstr "Ich weiß nichts von %L %s." msgstr "Ich weiß nichts von %L %s."
#: plugin.py:812 #: plugin.py:846
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -828,7 +832,7 @@ msgstr ""
"Gibt die Fähigkeiten zurück, die es im <Kanal> gibt. <Kanal> ist nur " "Gibt die Fähigkeiten zurück, die es im <Kanal> gibt. <Kanal> ist nur "
"notwendig, falls die Nachricht nicht im Kanal selbt gegeben wurde." "notwendig, falls die Nachricht nicht im Kanal selbt gegeben wurde."
#: plugin.py:824 #: plugin.py:858
msgid "" msgid ""
"[<channel>] [<plugin>] [<command>]\n" "[<channel>] [<plugin>] [<command>]\n"
"\n" "\n"
@ -849,15 +853,15 @@ msgstr ""
"angegeben wurde, werden alle Befehle des Plugins deaktiviert. <Kanal> ist " "angegeben wurde, werden alle Befehle des Plugins deaktiviert. <Kanal> ist "
"nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde." "nur notwendig, wenn die Nachricht nicht im Kanal selbst gesendet wurde."
#: plugin.py:840 plugin.py:879 #: plugin.py:874 plugin.py:913
msgid "The %s plugin does not have a command called %s." msgid "The %s plugin does not have a command called %s."
msgstr "%s Plugin hat keinen Befehl %s." msgstr "%s Plugin hat keinen Befehl %s."
#: plugin.py:847 plugin.py:886 #: plugin.py:881 plugin.py:920
msgid "No plugin or command named %s could be found." msgid "No plugin or command named %s could be found."
msgstr "Kein Plugin oder Befehl mit dem Namen %s konnte gefunden werden." msgstr "Kein Plugin oder Befehl mit dem Namen %s konnte gefunden werden."
#: plugin.py:863 #: plugin.py:897
msgid "" msgid ""
"[<channel>] [<plugin>] [<command>]\n" "[<channel>] [<plugin>] [<command>]\n"
"\n" "\n"
@ -879,11 +883,11 @@ msgstr ""
"wurde, werden alle Befehle des Plugins aktiviert. <Kanal> ist nur notwendig, " "wurde, werden alle Befehle des Plugins aktiviert. <Kanal> ist nur notwendig, "
"wenn die Nachricht nicht im Kanal selbst gesendet wurde." "wenn die Nachricht nicht im Kanal selbst gesendet wurde."
#: plugin.py:900 #: plugin.py:934
msgid "%s was not disabled." msgid "%s was not disabled."
msgstr "%s wurde nicht abgeschaltet." msgstr "%s wurde nicht abgeschaltet."
#: plugin.py:909 #: plugin.py:943
msgid "" msgid ""
"[<channel>] [--count]\n" "[<channel>] [--count]\n"
"\n" "\n"
@ -899,11 +903,11 @@ msgstr ""
"Nachricht nicht im Kanal selbst gesendet wurde. Gibt nur die Anzahl der " "Nachricht nicht im Kanal selbst gesendet wurde. Gibt nur die Anzahl der "
"Nicks an, falls die --count Option angegeben wurde." "Nicks an, falls die --count Option angegeben wurde."
#: plugin.py:931 #: plugin.py:965
msgid "You don't have access to that information." msgid "You don't have access to that information."
msgstr "Ich habe keinen Zugriff auf diese Informationen." msgstr "Ich habe keinen Zugriff auf diese Informationen."
#: plugin.py:946 #: plugin.py:980
msgid "" msgid ""
"Internal message for notifying all the #channel,ops in a channel of\n" "Internal message for notifying all the #channel,ops in a channel of\n"
" a given situation." " a given situation."
@ -911,15 +915,15 @@ msgstr ""
"Interne Nachricht die alle #channel,ops eines Kanals über eine Situation " "Interne Nachricht die alle #channel,ops eines Kanals über eine Situation "
"informiert." "informiert."
#: plugin.py:949 #: plugin.py:983
msgid "Alert to all %s ops: %s" msgid "Alert to all %s ops: %s"
msgstr "Alarm an alle %s Operatoren: %s" msgstr "Alarm an alle %s Operatoren: %s"
#: plugin.py:951 #: plugin.py:985
msgid " (from %s)" msgid " (from %s)"
msgstr "(von %s)" msgstr "(von %s)"
#: plugin.py:963 #: plugin.py:997
msgid "" msgid ""
"[<channel>] <text>\n" "[<channel>] <text>\n"
"\n" "\n"
@ -932,7 +936,7 @@ msgstr ""
"\n" "\n"
"Sendet <Text an alle Nutzer im <Kanal>, die die <Kanal>,op Fähigkeit haben." "Sendet <Text an alle Nutzer im <Kanal>, die die <Kanal>,op Fähigkeit haben."
#: plugin.py:973 #: plugin.py:1007
msgid "" msgid ""
"[<channel>] [<reason>]\n" "[<channel>] [<reason>]\n"
"\n" "\n"
@ -947,11 +951,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:994 #: plugin.py:1028
#, fuzzy #, fuzzy
msgid "I'm not in %s." msgid "I'm not in %s."
msgstr "Ich habe % nicht gesehen." msgstr "Ich habe % nicht gesehen."
#: plugin.py:1032
msgid "%s removed from configured join list."
msgstr ""
#~ msgid "" #~ msgid ""
#~ "I cowardly refuse to devoice myself. If you really want me devoiced, " #~ "I cowardly refuse to devoice myself. If you really want me devoiced, "
#~ "tell me to op you and then devoice me yourself." #~ "tell me to op you and then devoice me yourself."

View File

@ -4,7 +4,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Supybot Channel\n" "Project-Id-Version: Supybot Channel\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2014-12-20 12:14+0200\n" "PO-Revision-Date: 2014-12-20 12:14+0200\n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n" "Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: suomi <>\n" "Language-Team: suomi <>\n"
@ -384,8 +384,10 @@ msgid "kick someone"
msgstr "potki joku" msgstr "potki joku"
#: plugin.py:316 #: plugin.py:316
#, fuzzy
msgid "" msgid ""
"[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>] [<reason>]\n" "[<channel>] [--{exact,nick,user,host,account}] <nick> [<seconds>] "
"[<reason>]\n"
"\n" "\n"
" If you have the #channel,op capability, this will kickban <nick> " " If you have the #channel,op capability, this will kickban <nick> "
"for\n" "for\n"
@ -394,12 +396,12 @@ msgid ""
" don't specify a number of seconds) it will ban the person " " don't specify a number of seconds) it will ban the person "
"indefinitely.\n" "indefinitely.\n"
" --exact bans only the exact hostmask; --nick bans just the nick;\n" " --exact bans only the exact hostmask; --nick bans just the nick;\n"
" --user bans just the user, and --host bans just the host. You can\n" " --user bans just the user, and --host bans just the host\n"
" combine these options as you choose. <reason> is a reason to give " " You can combine the --nick, --user, and --host options as you "
"for\n" "choose.\n"
" the kick.\n" " If --account is provided and the user is logged in and the network\n"
" <channel> is only necessary if the message isn't sent in the " " supports account bans, this will ban the user's account instead.\n"
"channel\n" " <channel> is only necessary if the message isn't sent in the channel "
"itself.\n" "itself.\n"
" " " "
msgstr "" msgstr ""
@ -422,11 +424,12 @@ msgstr ""
" itsellään.\n" " itsellään.\n"
" " " "
#: plugin.py:333 #: plugin.py:334
msgid "kick or ban someone" msgid "kick or ban someone"
msgstr "potki tai anna jollekulle porttikielto" msgstr "potki tai anna jollekulle porttikielto"
#: plugin.py:341 #: plugin.py:342
#, fuzzy
msgid "" msgid ""
"[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]\n" "[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]\n"
"\n" "\n"
@ -435,11 +438,13 @@ msgid ""
"or\n" "or\n"
" don't specify a number of seconds) it will ban the person " " don't specify a number of seconds) it will ban the person "
"indefinitely.\n" "indefinitely.\n"
" --exact can be used to specify an exact hostmask. You can combine " " --exact can be used to specify an exact hostmask.\n"
"the\n" " You can combine the --nick, --user, and --host options as you "
" exact, nick, user, and host options as you choose. <channel> is " "choose.\n"
"only\n" " If --account is provided and the user is logged in and the network\n"
" necessary if the message isn't sent in the channel itself.\n" " supports account bans, this will ban the user's account instead.\n"
" <channel> is only necessary if the message isn't sent in the channel "
"itself.\n"
" " " "
msgstr "" msgstr ""
"[<kanava>] [--{exact,nick,user,host}] <nimimerkki> [<sekuntit>]\n" "[<kanava>] [--{exact,nick,user,host}] <nimimerkki> [<sekuntit>]\n"
@ -457,30 +462,30 @@ msgstr ""
"lähetetä \n" "lähetetä \n"
" kanavalla itsellään." " kanavalla itsellään."
#: plugin.py:355 plugin.py:581 #: plugin.py:359 plugin.py:610
msgid "ban someone" msgid "ban someone"
msgstr "anna jollekulle porttikielto" msgstr "anna jollekulle porttikielto"
#: plugin.py:375 #: plugin.py:382
msgid "I haven't seen %s." msgid "I haven't seen %s."
msgstr "Minä en ole nähnyt käyttäjää %s." msgstr "Minä en ole nähnyt käyttäjää %s."
#: plugin.py:385 #: plugin.py:394
msgid "I cowardly refuse to kickban myself." msgid "I cowardly refuse to kickban myself."
msgstr "" msgstr ""
"Minä pelkurimaisesti kieltäydyn potkimasta itseäni ja antamasta itselleni " "Minä pelkurimaisesti kieltäydyn potkimasta itseäni ja antamasta itselleni "
"porttikieltoa." "porttikieltoa."
#: plugin.py:394 #: plugin.py:397 plugin.py:409 plugin.py:418
msgid "I cowardly refuse to ban myself." msgid "I cowardly refuse to ban myself."
msgstr "Minä pelkurimaisesti kieltäydyn antamasta itselleni porttikieltoa." msgstr "Minä pelkurimaisesti kieltäydyn antamasta itselleni porttikieltoa."
#: plugin.py:422 #: plugin.py:451
msgid "%s has %s too, you can't ban them." msgid "%s has %s too, you can't ban them."
msgstr "" msgstr ""
"Käyttäjälltä %s on myös valtuus %s, et voi antaa hänelle/sille porttikieltoa." "Käyttäjälltä %s on myös valtuus %s, et voi antaa hänelle/sille porttikieltoa."
#: plugin.py:433 #: plugin.py:462
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [<hostmask|--all>]\n" "[<channel>] [<hostmask|--all>]\n"
@ -506,21 +511,21 @@ msgstr ""
" vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" " vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:453 #: plugin.py:482
msgid "All bans on %s matching %s have been removed." msgid "All bans on %s matching %s have been removed."
msgstr "" msgstr ""
"Kaikki porttikiellot, jotka täsmäävät kanavalla %s käyttäjään %s on " "Kaikki porttikiellot, jotka täsmäävät kanavalla %s käyttäjään %s on "
"poistettu." "poistettu."
#: plugin.py:457 #: plugin.py:486
msgid "No bans matching %s were found on %s." msgid "No bans matching %s were found on %s."
msgstr "Banneja, jotka täsmäävät käyttäjään %s ei löydetty kanavalla %s." msgstr "Banneja, jotka täsmäävät käyttäjään %s ei löydetty kanavalla %s."
#: plugin.py:460 #: plugin.py:489
msgid "unban someone" msgid "unban someone"
msgstr "poista joltakulta porttikielto" msgstr "poista joltakulta porttikielto"
#: plugin.py:467 #: plugin.py:496
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -532,11 +537,11 @@ msgstr ""
" Luettelee kaikki kanavan porttikiellot.\n" " Luettelee kaikki kanavan porttikiellot.\n"
" Jos <kanavaa> ei ole annettu, se on oletuksena nykyinen kanava." " Jos <kanavaa> ei ole annettu, se on oletuksena nykyinen kanava."
#: plugin.py:471 #: plugin.py:500
msgid "No bans." msgid "No bans."
msgstr "Ei porttikieltoja." msgstr "Ei porttikieltoja."
#: plugin.py:476 #: plugin.py:505
msgid "" msgid ""
"[<channel>] <nick>\n" "[<channel>] <nick>\n"
"\n" "\n"
@ -552,19 +557,19 @@ msgstr ""
" ei lähetetä kanavalla itsessään.\n" " ei lähetetä kanavalla itsessään.\n"
" " " "
#: plugin.py:485 #: plugin.py:514
msgid "invite someone" msgid "invite someone"
msgstr "kutsu joku" msgstr "kutsu joku"
#: plugin.py:504 #: plugin.py:533
msgid "%s is already in %s." msgid "%s is already in %s."
msgstr "%s on jo kanavalla %s" msgstr "%s on jo kanavalla %s"
#: plugin.py:511 #: plugin.py:540
msgid "There is no %s on this network." msgid "There is no %s on this network."
msgstr "Käyttäjä %s ei ole tässä verkossa." msgstr "Käyttäjä %s ei ole tässä verkossa."
#: plugin.py:523 #: plugin.py:552
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -587,7 +592,7 @@ msgstr ""
" kanavalla itsellään.\n" " kanavalla itsellään.\n"
" " " "
#: plugin.py:538 #: plugin.py:567
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -608,7 +613,7 @@ msgstr ""
"itsellään.\n" "itsellään.\n"
" " " "
#: plugin.py:553 #: plugin.py:582
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -620,15 +625,15 @@ msgstr ""
" Palauttaa kanavat, joilla botti on lobotomoitu.\n" " Palauttaa kanavat, joilla botti on lobotomoitu.\n"
" " " "
#: plugin.py:568 #: plugin.py:597
msgid "I'm currently lobotomized in %L." msgid "I'm currently lobotomized in %L."
msgstr "Minut on tällä hetkellä lobotomoity seuraavilla kanavilla: %L." msgstr "Minut on tällä hetkellä lobotomoity seuraavilla kanavilla: %L."
#: plugin.py:571 #: plugin.py:600
msgid "I'm not currently lobotomized in any channels that you're in." msgid "I'm not currently lobotomized in any channels that you're in."
msgstr "En tällä hetkellä ole lobotomoitu millään kanavalla, jolla sinä olet." msgstr "En tällä hetkellä ole lobotomoitu millään kanavalla, jolla sinä olet."
#: plugin.py:585 #: plugin.py:614
msgid "" msgid ""
"[<channel>] <nick|hostmask> [<expires>]\n" "[<channel>] <nick|hostmask> [<expires>]\n"
"\n" "\n"
@ -665,7 +670,7 @@ msgstr ""
" kanavalla itsellään.\n" " kanavalla itsellään.\n"
" " " "
#: plugin.py:605 #: plugin.py:639
msgid "" msgid ""
"[<channel>] <hostmask>\n" "[<channel>] <hostmask>\n"
"\n" "\n"
@ -683,11 +688,11 @@ msgstr ""
" viestiä ei lähetetä kanavalla itsellään.\n" " viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:617 #: plugin.py:651
msgid "There are no persistent bans for that hostmask." msgid "There are no persistent bans for that hostmask."
msgstr "Tuolla hostmaskilla ei ole pysyvää porttikieltoa." msgstr "Tuolla hostmaskilla ei ole pysyvää porttikieltoa."
#: plugin.py:622 #: plugin.py:656
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [<mask>]\n" "[<channel>] [<mask>]\n"
@ -707,19 +712,19 @@ msgstr ""
" viestiä ei lähetetä kanavalla itsellään.\n" " viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:640 #: plugin.py:674
msgid "%q (expires %t)" msgid "%q (expires %t)"
msgstr "%q (venhentuu %t)" msgstr "%q (venhentuu %t)"
#: plugin.py:643 #: plugin.py:677
msgid "%q (never expires)" msgid "%q (never expires)"
msgstr "%q (ei vanhene ikinä)" msgstr "%q (ei vanhene ikinä)"
#: plugin.py:647 #: plugin.py:681
msgid "There are no persistent bans on %s." msgid "There are no persistent bans on %s."
msgstr "Kanavalla %s ei ole pysyviä porttikieltoja." msgstr "Kanavalla %s ei ole pysyviä porttikieltoja."
#: plugin.py:654 #: plugin.py:688
msgid "" msgid ""
"[<channel>] <nick|hostmask> [<expires>]\n" "[<channel>] <nick|hostmask> [<expires>]\n"
"\n" "\n"
@ -748,7 +753,7 @@ msgstr ""
" kanavalla itsellään.\n" " kanavalla itsellään.\n"
" " " "
#: plugin.py:672 #: plugin.py:706
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] <nick|hostmask>\n" "[<channel>] <nick|hostmask>\n"
@ -767,11 +772,11 @@ msgstr ""
" viestiä ei lähetetä kanavalla itsellään.\n" " viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:684 #: plugin.py:718
msgid "There are no ignores for that hostmask." msgid "There are no ignores for that hostmask."
msgstr "Tuolla hostmaskilla ei ole pysyviä huomiotta jättämisiä." msgstr "Tuolla hostmaskilla ei ole pysyviä huomiotta jättämisiä."
#: plugin.py:689 #: plugin.py:723
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -789,11 +794,11 @@ msgstr ""
" kanavalla itsellään.\n" " kanavalla itsellään.\n"
" " " "
#: plugin.py:698 #: plugin.py:732
msgid "I'm not currently ignoring any hostmasks in %q" msgid "I'm not currently ignoring any hostmasks in %q"
msgstr "En tällä hetkellä jätä mitään hostmaskia huomiotta kanavalla %q." msgstr "En tällä hetkellä jätä mitään hostmaskia huomiotta kanavalla %q."
#: plugin.py:709 #: plugin.py:743
msgid "" msgid ""
"[<channel>] <nick|username> <capability> [<capability> ...]\n" "[<channel>] <nick|username> <capability> [<capability> ...]\n"
"\n" "\n"
@ -812,7 +817,7 @@ msgstr ""
" vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" " vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:725 #: plugin.py:759
msgid "" msgid ""
"[<channel>] <name|hostmask> <capability> [<capability> ...]\n" "[<channel>] <name|hostmask> <capability> [<capability> ...]\n"
"\n" "\n"
@ -833,11 +838,11 @@ msgstr ""
" vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" " vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:744 #: plugin.py:778
msgid "That user didn't have the %L %s." msgid "That user didn't have the %L %s."
msgstr "Tuolla käyttäjällä ei ollut valtuutta %L kanavalla %s." msgstr "Tuolla käyttäjällä ei ollut valtuutta %L kanavalla %s."
#: plugin.py:753 #: plugin.py:787
msgid "" msgid ""
"[<channel>] {True|False}\n" "[<channel>] {True|False}\n"
"\n" "\n"
@ -858,7 +863,7 @@ msgstr ""
" jos viestiä ei lähetetä kanavalla itsellään.\n" " jos viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:771 #: plugin.py:805
msgid "" msgid ""
"[<channel>] <capability> [<capability> ...]\n" "[<channel>] <capability> [<capability> ...]\n"
"\n" "\n"
@ -876,7 +881,7 @@ msgstr ""
" vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" " vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:786 #: plugin.py:820
msgid "" msgid ""
"[<channel>] <capability> [<capability> ...]\n" "[<channel>] <capability> [<capability> ...]\n"
"\n" "\n"
@ -897,15 +902,15 @@ msgstr ""
" vain jos viestiä ei lähetetä kanavalla itsellään.\n" " vain jos viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:802 #: plugin.py:836
msgid "capability" msgid "capability"
msgstr "valtuus" msgstr "valtuus"
#: plugin.py:805 #: plugin.py:839
msgid "I do not know about the %L %s." msgid "I do not know about the %L %s."
msgstr "En tiedä valtuudesta %L kanavalla %s." msgstr "En tiedä valtuudesta %L kanavalla %s."
#: plugin.py:812 #: plugin.py:846
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -920,7 +925,7 @@ msgstr ""
" vaadittu vain, jos viestiä ei lähetetä kanavalla itsellään.\n" " vaadittu vain, jos viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:824 #: plugin.py:858
msgid "" msgid ""
"[<channel>] [<plugin>] [<command>]\n" "[<channel>] [<plugin>] [<command>]\n"
"\n" "\n"
@ -945,15 +950,15 @@ msgstr ""
" viestiä ei lähetetä kanavalla itsellään.\n" " viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:840 plugin.py:879 #: plugin.py:874 plugin.py:913
msgid "The %s plugin does not have a command called %s." msgid "The %s plugin does not have a command called %s."
msgstr "%s lisäosassa ei ole komentoa %s." msgstr "%s lisäosassa ei ole komentoa %s."
#: plugin.py:847 plugin.py:886 #: plugin.py:881 plugin.py:920
msgid "No plugin or command named %s could be found." msgid "No plugin or command named %s could be found."
msgstr "Lisäosaa tai komentoa nimeltä %s ei löytynyt." msgstr "Lisäosaa tai komentoa nimeltä %s ei löytynyt."
#: plugin.py:863 #: plugin.py:897
msgid "" msgid ""
"[<channel>] [<plugin>] [<command>]\n" "[<channel>] [<plugin>] [<command>]\n"
"\n" "\n"
@ -979,11 +984,11 @@ msgstr ""
" on vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n" " on vaadittu vain jos viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:900 #: plugin.py:934
msgid "%s was not disabled." msgid "%s was not disabled."
msgstr "%s ei ollut poistettu käytöstä." msgstr "%s ei ollut poistettu käytöstä."
#: plugin.py:909 #: plugin.py:943
msgid "" msgid ""
"[<channel>] [--count]\n" "[<channel>] [--count]\n"
"\n" "\n"
@ -1000,11 +1005,11 @@ msgstr ""
" viestiä ei lähetetä kanavalla itsellään.\n" " viestiä ei lähetetä kanavalla itsellään.\n"
" " " "
#: plugin.py:931 #: plugin.py:965
msgid "You don't have access to that information." msgid "You don't have access to that information."
msgstr "Sinulla ei ole pääsyoikeutta tuohon tietoon." msgstr "Sinulla ei ole pääsyoikeutta tuohon tietoon."
#: plugin.py:946 #: plugin.py:980
msgid "" msgid ""
"Internal message for notifying all the #channel,ops in a channel of\n" "Internal message for notifying all the #channel,ops in a channel of\n"
" a given situation." " a given situation."
@ -1013,15 +1018,15 @@ msgstr ""
"valtuus kanavalla,\n" "valtuus kanavalla,\n"
" annetusta tilanteesta." " annetusta tilanteesta."
#: plugin.py:949 #: plugin.py:983
msgid "Alert to all %s ops: %s" msgid "Alert to all %s ops: %s"
msgstr "Hälytys kaikille kanavan %s operaattoreille: %s" msgstr "Hälytys kaikille kanavan %s operaattoreille: %s"
#: plugin.py:951 #: plugin.py:985
msgid " (from %s)" msgid " (from %s)"
msgstr "(lähettänyt %s)" msgstr "(lähettänyt %s)"
#: plugin.py:963 #: plugin.py:997
msgid "" msgid ""
"[<channel>] <text>\n" "[<channel>] <text>\n"
"\n" "\n"
@ -1037,7 +1042,7 @@ msgstr ""
" valtuus.\n" " valtuus.\n"
" " " "
#: plugin.py:973 #: plugin.py:1007
msgid "" msgid ""
"[<channel>] [<reason>]\n" "[<channel>] [<reason>]\n"
"\n" "\n"
@ -1052,11 +1057,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:994 #: plugin.py:1028
#, fuzzy #, fuzzy
msgid "I'm not in %s." msgid "I'm not in %s."
msgstr "Minä en ole nähnyt käyttäjää %s." msgstr "Minä en ole nähnyt käyttäjää %s."
#: plugin.py:1032
msgid "%s removed from configured join list."
msgstr ""
#~ msgid "" #~ msgid ""
#~ "I cowardly refuse to devoice myself. If you really want me devoiced, " #~ "I cowardly refuse to devoice myself. If you really want me devoiced, "
#~ "tell me to op you and then devoice me yourself." #~ "tell me to op you and then devoice me yourself."

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: \n" "PO-Revision-Date: \n"
"Last-Translator: Valentin Lorentz <progval@gmail.com>\n" "Last-Translator: Valentin Lorentz <progval@gmail.com>\n"
"Language-Team: Limnoria <progval@gmail.com>\n" "Language-Team: Limnoria <progval@gmail.com>\n"
@ -348,8 +348,10 @@ msgid "kick someone"
msgstr "kicker quelqu'un" msgstr "kicker quelqu'un"
#: plugin.py:316 #: plugin.py:316
#, fuzzy
msgid "" msgid ""
"[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>] [<reason>]\n" "[<channel>] [--{exact,nick,user,host,account}] <nick> [<seconds>] "
"[<reason>]\n"
"\n" "\n"
" If you have the #channel,op capability, this will kickban <nick> " " If you have the #channel,op capability, this will kickban <nick> "
"for\n" "for\n"
@ -358,12 +360,12 @@ msgid ""
" don't specify a number of seconds) it will ban the person " " don't specify a number of seconds) it will ban the person "
"indefinitely.\n" "indefinitely.\n"
" --exact bans only the exact hostmask; --nick bans just the nick;\n" " --exact bans only the exact hostmask; --nick bans just the nick;\n"
" --user bans just the user, and --host bans just the host. You can\n" " --user bans just the user, and --host bans just the host\n"
" combine these options as you choose. <reason> is a reason to give " " You can combine the --nick, --user, and --host options as you "
"for\n" "choose.\n"
" the kick.\n" " If --account is provided and the user is logged in and the network\n"
" <channel> is only necessary if the message isn't sent in the " " supports account bans, this will ban the user's account instead.\n"
"channel\n" " <channel> is only necessary if the message isn't sent in the channel "
"itself.\n" "itself.\n"
" " " "
msgstr "" msgstr ""
@ -377,11 +379,11 @@ msgstr ""
"<raison> est une raison que vous donnez pour le kick. <canal> n'est " "<raison> est une raison que vous donnez pour le kick. <canal> n'est "
"nécessaire que si le message n'est pas envoyé sur le canal lui-même." "nécessaire que si le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:333 #: plugin.py:334
msgid "kick or ban someone" msgid "kick or ban someone"
msgstr "kicker ou bannir quelqu'un" msgstr "kicker ou bannir quelqu'un"
#: plugin.py:341 #: plugin.py:342
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]\n" "[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]\n"
@ -391,11 +393,13 @@ msgid ""
"or\n" "or\n"
" don't specify a number of seconds) it will ban the person " " don't specify a number of seconds) it will ban the person "
"indefinitely.\n" "indefinitely.\n"
" --exact can be used to specify an exact hostmask. You can combine " " --exact can be used to specify an exact hostmask.\n"
"the\n" " You can combine the --nick, --user, and --host options as you "
" exact, nick, user, and host options as you choose. <channel> is " "choose.\n"
"only\n" " If --account is provided and the user is logged in and the network\n"
" necessary if the message isn't sent in the channel itself.\n" " supports account bans, this will ban the user's account instead.\n"
" <channel> is only necessary if the message isn't sent in the channel "
"itself.\n"
" " " "
msgstr "" msgstr ""
"[<canal>] [--{exact,nick,user,host}] <nick> [<secondes>]\n" "[<canal>] [--{exact,nick,user,host}] <nick> [<secondes>]\n"
@ -408,27 +412,27 @@ msgstr ""
"raison que vous donnez pour le kick. <canal> n'est nécessaire que si le " "raison que vous donnez pour le kick. <canal> n'est nécessaire que si le "
"message n'est pas envoyé sur le canal lui-même." "message n'est pas envoyé sur le canal lui-même."
#: plugin.py:355 plugin.py:581 #: plugin.py:359 plugin.py:610
msgid "ban someone" msgid "ban someone"
msgstr "bannir quelqu'un" msgstr "bannir quelqu'un"
#: plugin.py:375 #: plugin.py:382
msgid "I haven't seen %s." msgid "I haven't seen %s."
msgstr "Je n'ai jamais vu %s." msgstr "Je n'ai jamais vu %s."
#: plugin.py:385 #: plugin.py:394
msgid "I cowardly refuse to kickban myself." msgid "I cowardly refuse to kickban myself."
msgstr "Je suis trop couard pour me kickbannir moi-même." msgstr "Je suis trop couard pour me kickbannir moi-même."
#: plugin.py:394 #: plugin.py:397 plugin.py:409 plugin.py:418
msgid "I cowardly refuse to ban myself." msgid "I cowardly refuse to ban myself."
msgstr "Je suis trop couard pour me bannir moi-même." msgstr "Je suis trop couard pour me bannir moi-même."
#: plugin.py:422 #: plugin.py:451
msgid "%s has %s too, you can't ban them." msgid "%s has %s too, you can't ban them."
msgstr "%s est aussi %s, je ne peux le/la bannir." msgstr "%s est aussi %s, je ne peux le/la bannir."
#: plugin.py:433 #: plugin.py:462
msgid "" msgid ""
"[<channel>] [<hostmask|--all>]\n" "[<channel>] [<hostmask|--all>]\n"
"\n" "\n"
@ -449,19 +453,19 @@ msgstr ""
"manière inatendue ou accidentelle d'un canal. <canal> n'est nécessaire que " "manière inatendue ou accidentelle d'un canal. <canal> n'est nécessaire que "
"si le message n'est pas envoyé sur le canal lui-même." "si le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:453 #: plugin.py:482
msgid "All bans on %s matching %s have been removed." msgid "All bans on %s matching %s have been removed."
msgstr "Tous les bannissements sur %s correspondant à %s ont été supprimés." msgstr "Tous les bannissements sur %s correspondant à %s ont été supprimés."
#: plugin.py:457 #: plugin.py:486
msgid "No bans matching %s were found on %s." msgid "No bans matching %s were found on %s."
msgstr "Aucun bannissement correspondant à %s n'a été trouvé sur %s." msgstr "Aucun bannissement correspondant à %s n'a été trouvé sur %s."
#: plugin.py:460 #: plugin.py:489
msgid "unban someone" msgid "unban someone"
msgstr "débannir quelqu'un" msgstr "débannir quelqu'un"
#: plugin.py:467 #: plugin.py:496
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -471,11 +475,11 @@ msgstr ""
"[<canal>]Liste tous les bannissements du salon. Si <canal> n'est pas donné, " "[<canal>]Liste tous les bannissements du salon. Si <canal> n'est pas donné, "
"il correspond au canal actuel." "il correspond au canal actuel."
#: plugin.py:471 #: plugin.py:500
msgid "No bans." msgid "No bans."
msgstr "Pas de bannissement." msgstr "Pas de bannissement."
#: plugin.py:476 #: plugin.py:505
msgid "" msgid ""
"[<channel>] <nick>\n" "[<channel>] <nick>\n"
"\n" "\n"
@ -490,19 +494,19 @@ msgstr ""
"<canal>. <canal> n'est nécessaire que si le message n'est pas envoyé sur le " "<canal>. <canal> n'est nécessaire que si le message n'est pas envoyé sur le "
"canal lui-même." "canal lui-même."
#: plugin.py:485 #: plugin.py:514
msgid "invite someone" msgid "invite someone"
msgstr "inviter quelqu'un" msgstr "inviter quelqu'un"
#: plugin.py:504 #: plugin.py:533
msgid "%s is already in %s." msgid "%s is already in %s."
msgstr "%s est déjà sur %s." msgstr "%s est déjà sur %s."
#: plugin.py:511 #: plugin.py:540
msgid "There is no %s on this network." msgid "There is no %s on this network."
msgstr "Il n'y a aucun %s sur ce réseau." msgstr "Il n'y a aucun %s sur ce réseau."
#: plugin.py:523 #: plugin.py:552
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -522,7 +526,7 @@ msgstr ""
"canal. <canal> n'est nécessaire que si le message n'est pas envoyé sur le " "canal. <canal> n'est nécessaire que si le message n'est pas envoyé sur le "
"canal lui-même." "canal lui-même."
#: plugin.py:538 #: plugin.py:567
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -541,7 +545,7 @@ msgstr ""
"sur le canal. <canal> n'est nécessaire que si le message n'est pas envoyé " "sur le canal. <canal> n'est nécessaire que si le message n'est pas envoyé "
"sur le canal lui-même." "sur le canal lui-même."
#: plugin.py:553 #: plugin.py:582
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -552,15 +556,15 @@ msgstr ""
"\n" "\n"
"Retourne les canaux sur lesquels le bot est lobotomisé." "Retourne les canaux sur lesquels le bot est lobotomisé."
#: plugin.py:568 #: plugin.py:597
msgid "I'm currently lobotomized in %L." msgid "I'm currently lobotomized in %L."
msgstr "Je suis actuellement lobotomisé sur %L." msgstr "Je suis actuellement lobotomisé sur %L."
#: plugin.py:571 #: plugin.py:600
msgid "I'm not currently lobotomized in any channels that you're in." msgid "I'm not currently lobotomized in any channels that you're in."
msgstr "Je ne suis actuellement lobotomisé sur aucun canal où vous êtes." msgstr "Je ne suis actuellement lobotomisé sur aucun canal où vous êtes."
#: plugin.py:585 #: plugin.py:614
msgid "" msgid ""
"[<channel>] <nick|hostmask> [<expires>]\n" "[<channel>] <nick|hostmask> [<expires>]\n"
"\n" "\n"
@ -586,7 +590,7 @@ msgstr ""
"masque d'hôte lorsqu'ils entrent. <expiration> est un argument option, " "masque d'hôte lorsqu'ils entrent. <expiration> est un argument option, "
"correspondant à la durée, en secondes, que doit avoir le bannissement." "correspondant à la durée, en secondes, que doit avoir le bannissement."
#: plugin.py:605 #: plugin.py:639
msgid "" msgid ""
"[<channel>] <hostmask>\n" "[<channel>] <hostmask>\n"
"\n" "\n"
@ -602,11 +606,11 @@ msgstr ""
"persistant sur le <masque d'hôte>. <canal> n'est nécessaire que si le " "persistant sur le <masque d'hôte>. <canal> n'est nécessaire que si le "
"message n'est pas envoyé sur le canal lui-même." "message n'est pas envoyé sur le canal lui-même."
#: plugin.py:617 #: plugin.py:651
msgid "There are no persistent bans for that hostmask." msgid "There are no persistent bans for that hostmask."
msgstr "Il n'y a pas de bannissement persistant pour ce masque d'hôte." msgstr "Il n'y a pas de bannissement persistant pour ce masque d'hôte."
#: plugin.py:622 #: plugin.py:656
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [<mask>]\n" "[<channel>] [<mask>]\n"
@ -624,19 +628,19 @@ msgstr ""
"persistant sur le <masque d'hôte>. <canal> n'est nécessaire que si le " "persistant sur le <masque d'hôte>. <canal> n'est nécessaire que si le "
"message n'est pas envoyé sur le canal lui-même." "message n'est pas envoyé sur le canal lui-même."
#: plugin.py:640 #: plugin.py:674
msgid "%q (expires %t)" msgid "%q (expires %t)"
msgstr "%q (expire dans %t)" msgstr "%q (expire dans %t)"
#: plugin.py:643 #: plugin.py:677
msgid "%q (never expires)" msgid "%q (never expires)"
msgstr "%q (n'expire jamais)" msgstr "%q (n'expire jamais)"
#: plugin.py:647 #: plugin.py:681
msgid "There are no persistent bans on %s." msgid "There are no persistent bans on %s."
msgstr "Il n'y a pas de bannissement persistant sur %s." msgstr "Il n'y a pas de bannissement persistant sur %s."
#: plugin.py:654 #: plugin.py:688
msgid "" msgid ""
"[<channel>] <nick|hostmask> [<expires>]\n" "[<channel>] <nick|hostmask> [<expires>]\n"
"\n" "\n"
@ -660,7 +664,7 @@ msgstr ""
"n'expirera jamais. <canal> n'est nécessaire que si le message n'est pas " "n'expirera jamais. <canal> n'est nécessaire que si le message n'est pas "
"envoyé sur le canal lui-même." "envoyé sur le canal lui-même."
#: plugin.py:672 #: plugin.py:706
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] <nick|hostmask>\n" "[<channel>] <nick|hostmask>\n"
@ -677,11 +681,11 @@ msgstr ""
"persistant du <masque d'hôte> sur le canal. <canal> n'est nécessaire que si " "persistant du <masque d'hôte> sur le canal. <canal> n'est nécessaire que si "
"le message n'est pas envoyé sur le canal lui-même." "le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:684 #: plugin.py:718
msgid "There are no ignores for that hostmask." msgid "There are no ignores for that hostmask."
msgstr "Il n'y a pas d'ignorance pour ce masque d'hôte." msgstr "Il n'y a pas d'ignorance pour ce masque d'hôte."
#: plugin.py:689 #: plugin.py:723
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -696,11 +700,11 @@ msgstr ""
"Liste les masques d'hôte que le bot ignore sur le canal donné. <canal> n'est " "Liste les masques d'hôte que le bot ignore sur le canal donné. <canal> n'est "
"nécessaire que si le message n'est pas envoyé sur le canal lui-même." "nécessaire que si le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:698 #: plugin.py:732
msgid "I'm not currently ignoring any hostmasks in %q" msgid "I'm not currently ignoring any hostmasks in %q"
msgstr "Je n'ignore actuellement aucun masque d'hôte sur %q." msgstr "Je n'ignore actuellement aucun masque d'hôte sur %q."
#: plugin.py:709 #: plugin.py:743
msgid "" msgid ""
"[<channel>] <nick|username> <capability> [<capability> ...]\n" "[<channel>] <nick|username> <capability> [<capability> ...]\n"
"\n" "\n"
@ -716,7 +720,7 @@ msgstr ""
"ayant actuellement le <nick>) la <capacité> sur le canal. <canal> n'est " "ayant actuellement le <nick>) la <capacité> sur le canal. <canal> n'est "
"nécessaire que si le message n'est pas envoyé sur le canal lui-même." "nécessaire que si le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:725 #: plugin.py:759
msgid "" msgid ""
"[<channel>] <name|hostmask> <capability> [<capability> ...]\n" "[<channel>] <name|hostmask> <capability> [<capability> ...]\n"
"\n" "\n"
@ -735,11 +739,11 @@ msgstr ""
"op. <canal> n'est nécessaire que si le message n'est pas envoyé sur le canal " "op. <canal> n'est nécessaire que si le message n'est pas envoyé sur le canal "
"lui-même." "lui-même."
#: plugin.py:744 #: plugin.py:778
msgid "That user didn't have the %L %s." msgid "That user didn't have the %L %s."
msgstr "Cet utilisateur n'a pas les %L %s." msgstr "Cet utilisateur n'a pas les %L %s."
#: plugin.py:753 #: plugin.py:787
msgid "" msgid ""
"[<channel>] {True|False}\n" "[<channel>] {True|False}\n"
"\n" "\n"
@ -759,7 +763,7 @@ msgstr ""
"<canal> n'est nécessaire que si le message n'est pas envoyé sur " "<canal> n'est nécessaire que si le message n'est pas envoyé sur "
"le canal lui-même." "le canal lui-même."
#: plugin.py:771 #: plugin.py:805
msgid "" msgid ""
"[<channel>] <capability> [<capability> ...]\n" "[<channel>] <capability> [<capability> ...]\n"
"\n" "\n"
@ -776,7 +780,7 @@ msgstr ""
"tous les utilisateurs du canal. <canal> n'est nécessaire que si le message " "tous les utilisateurs du canal. <canal> n'est nécessaire que si le message "
"n'est pas envoyé sur le canal lui-même." "n'est pas envoyé sur le canal lui-même."
#: plugin.py:786 #: plugin.py:820
msgid "" msgid ""
"[<channel>] <capability> [<capability> ...]\n" "[<channel>] <capability> [<capability> ...]\n"
"\n" "\n"
@ -795,15 +799,15 @@ msgstr ""
"utilisateurs du canal aient la <capacité> de canal. <canal> n'est nécessaire " "utilisateurs du canal aient la <capacité> de canal. <canal> n'est nécessaire "
"que si le message n'est pas envoyé sur le canal lui-même." "que si le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:802 #: plugin.py:836
msgid "capability" msgid "capability"
msgstr "capacité" msgstr "capacité"
#: plugin.py:805 #: plugin.py:839
msgid "I do not know about the %L %s." msgid "I do not know about the %L %s."
msgstr "Je ne sais rien à propos des %L %s." msgstr "Je ne sais rien à propos des %L %s."
#: plugin.py:812 #: plugin.py:846
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -816,7 +820,7 @@ msgstr ""
"Retourne les capacité présentes sur le <canal>. <canal> n'est nécessaire que " "Retourne les capacité présentes sur le <canal>. <canal> n'est nécessaire que "
"si le message n'est pas envoyé sur le canal lui-même." "si le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:824 #: plugin.py:858
msgid "" msgid ""
"[<channel>] [<plugin>] [<command>]\n" "[<channel>] [<plugin>] [<command>]\n"
"\n" "\n"
@ -836,15 +840,15 @@ msgstr ""
"désactivées. <canal> n'est nécessaire que si le message n'est pas envoyé sur " "désactivées. <canal> n'est nécessaire que si le message n'est pas envoyé sur "
"le canal lui-même." "le canal lui-même."
#: plugin.py:840 plugin.py:879 #: plugin.py:874 plugin.py:913
msgid "The %s plugin does not have a command called %s." msgid "The %s plugin does not have a command called %s."
msgstr "Le plugin %s n'a pas de commande appelée %s." msgstr "Le plugin %s n'a pas de commande appelée %s."
#: plugin.py:847 plugin.py:886 #: plugin.py:881 plugin.py:920
msgid "No plugin or command named %s could be found." msgid "No plugin or command named %s could be found."
msgstr "Aucun plugin ou commande appelé %s n'a pû être trouvé." msgstr "Aucun plugin ou commande appelé %s n'a pû être trouvé."
#: plugin.py:863 #: plugin.py:897
msgid "" msgid ""
"[<channel>] [<plugin>] [<command>]\n" "[<channel>] [<plugin>] [<command>]\n"
"\n" "\n"
@ -865,11 +869,11 @@ msgstr ""
"la commande de ce plugin sera activée. <canal> n'est nécessaire " "la commande de ce plugin sera activée. <canal> n'est nécessaire "
"n'est pas envoyé sur le canal lui-même." "n'est pas envoyé sur le canal lui-même."
#: plugin.py:900 #: plugin.py:934
msgid "%s was not disabled." msgid "%s was not disabled."
msgstr "%s n'était pas désactivé." msgstr "%s n'était pas désactivé."
#: plugin.py:909 #: plugin.py:943
msgid "" msgid ""
"[<channel>] [--count]\n" "[<channel>] [--count]\n"
"\n" "\n"
@ -885,11 +889,11 @@ msgstr ""
"n'est pas envoyé sur le canal lui-même. Ne retourne que le nombre de nicks " "n'est pas envoyé sur le canal lui-même. Ne retourne que le nombre de nicks "
"si --count est donné." "si --count est donné."
#: plugin.py:931 #: plugin.py:965
msgid "You don't have access to that information." msgid "You don't have access to that information."
msgstr "Vous n'avez pas accès à cette information" msgstr "Vous n'avez pas accès à cette information"
#: plugin.py:946 #: plugin.py:980
msgid "" msgid ""
"Internal message for notifying all the #channel,ops in a channel of\n" "Internal message for notifying all the #channel,ops in a channel of\n"
" a given situation." " a given situation."
@ -897,15 +901,15 @@ msgstr ""
"Message interne pour notifier tous les #canal,ops sur un canal d'une " "Message interne pour notifier tous les #canal,ops sur un canal d'une "
"situation donnée." "situation donnée."
#: plugin.py:949 #: plugin.py:983
msgid "Alert to all %s ops: %s" msgid "Alert to all %s ops: %s"
msgstr "Alerte à tous les ops de %s : %s" msgstr "Alerte à tous les ops de %s : %s"
#: plugin.py:951 #: plugin.py:985
msgid " (from %s)" msgid " (from %s)"
msgstr "(de %s)" msgstr "(de %s)"
#: plugin.py:963 #: plugin.py:997
msgid "" msgid ""
"[<channel>] <text>\n" "[<channel>] <text>\n"
"\n" "\n"
@ -919,7 +923,7 @@ msgstr ""
"Envoie le <texte> à tous les utilisateurs sur <canal> qui ont la capacité " "Envoie le <texte> à tous les utilisateurs sur <canal> qui ont la capacité "
"#canal,op." "#canal,op."
#: plugin.py:973 #: plugin.py:1007
msgid "" msgid ""
"[<channel>] [<reason>]\n" "[<channel>] [<reason>]\n"
"\n" "\n"
@ -934,11 +938,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:994 #: plugin.py:1028
#, fuzzy #, fuzzy
msgid "I'm not in %s." msgid "I'm not in %s."
msgstr "Je n'ai jamais vu %s." msgstr "Je n'ai jamais vu %s."
#: plugin.py:1032
msgid "%s removed from configured join list."
msgstr ""
#~ msgid "" #~ msgid ""
#~ "I cowardly refuse to devoice myself. If you really want me devoiced, " #~ "I cowardly refuse to devoice myself. If you really want me devoiced, "
#~ "tell me to op you and then devoice me yourself." #~ "tell me to op you and then devoice me yourself."

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria Channel\n" "Project-Id-Version: Limnoria Channel\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2012-04-27 14:49+0200\n" "PO-Revision-Date: 2012-04-27 14:49+0200\n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n" "Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -354,8 +354,10 @@ msgid "kick someone"
msgstr "kirúgni valakit" msgstr "kirúgni valakit"
#: plugin.py:316 #: plugin.py:316
#, fuzzy
msgid "" msgid ""
"[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>] [<reason>]\n" "[<channel>] [--{exact,nick,user,host,account}] <nick> [<seconds>] "
"[<reason>]\n"
"\n" "\n"
" If you have the #channel,op capability, this will kickban <nick> " " If you have the #channel,op capability, this will kickban <nick> "
"for\n" "for\n"
@ -364,12 +366,12 @@ msgid ""
" don't specify a number of seconds) it will ban the person " " don't specify a number of seconds) it will ban the person "
"indefinitely.\n" "indefinitely.\n"
" --exact bans only the exact hostmask; --nick bans just the nick;\n" " --exact bans only the exact hostmask; --nick bans just the nick;\n"
" --user bans just the user, and --host bans just the host. You can\n" " --user bans just the user, and --host bans just the host\n"
" combine these options as you choose. <reason> is a reason to give " " You can combine the --nick, --user, and --host options as you "
"for\n" "choose.\n"
" the kick.\n" " If --account is provided and the user is logged in and the network\n"
" <channel> is only necessary if the message isn't sent in the " " supports account bans, this will ban the user's account instead.\n"
"channel\n" " <channel> is only necessary if the message isn't sent in the channel "
"itself.\n" "itself.\n"
" " " "
msgstr "" msgstr ""
@ -382,11 +384,11 @@ msgstr ""
"tiltja ki, és --host csak a hosztot tiltja ki. Kombinálhatod az opciókat " "tiltja ki, és --host csak a hosztot tiltja ki. Kombinálhatod az opciókat "
"ahogy szeretnéd. <ok> egy ok a kirúgáshoz." "ahogy szeretnéd. <ok> egy ok a kirúgáshoz."
#: plugin.py:333 #: plugin.py:334
msgid "kick or ban someone" msgid "kick or ban someone"
msgstr "kirúgni vagy kitiltani valakit" msgstr "kirúgni vagy kitiltani valakit"
#: plugin.py:341 #: plugin.py:342
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]\n" "[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]\n"
@ -396,11 +398,13 @@ msgid ""
"or\n" "or\n"
" don't specify a number of seconds) it will ban the person " " don't specify a number of seconds) it will ban the person "
"indefinitely.\n" "indefinitely.\n"
" --exact can be used to specify an exact hostmask. You can combine " " --exact can be used to specify an exact hostmask.\n"
"the\n" " You can combine the --nick, --user, and --host options as you "
" exact, nick, user, and host options as you choose. <channel> is " "choose.\n"
"only\n" " If --account is provided and the user is logged in and the network\n"
" necessary if the message isn't sent in the channel itself.\n" " supports account bans, this will ban the user's account instead.\n"
" <channel> is only necessary if the message isn't sent in the channel "
"itself.\n"
" " " "
msgstr "" msgstr ""
"[<csatorna>] [--{exact,nick,user,host}] <név> [<másodpercek>] [<ok>]\n" "[<csatorna>] [--{exact,nick,user,host}] <név> [<másodpercek>] [<ok>]\n"
@ -412,28 +416,28 @@ msgstr ""
"tiltja ki, és --host csak a hosztot tiltja ki. Kombinálhatod az opciókat " "tiltja ki, és --host csak a hosztot tiltja ki. Kombinálhatod az opciókat "
"ahogy szeretnéd. <ok> egy ok a kirúgáshoz." "ahogy szeretnéd. <ok> egy ok a kirúgáshoz."
#: plugin.py:355 plugin.py:581 #: plugin.py:359 plugin.py:610
#, fuzzy #, fuzzy
msgid "ban someone" msgid "ban someone"
msgstr "eltávolítani a tiltást valakiről" msgstr "eltávolítani a tiltást valakiről"
#: plugin.py:375 #: plugin.py:382
msgid "I haven't seen %s." msgid "I haven't seen %s."
msgstr "Nem láttam %s-t." msgstr "Nem láttam %s-t."
#: plugin.py:385 #: plugin.py:394
msgid "I cowardly refuse to kickban myself." msgid "I cowardly refuse to kickban myself."
msgstr "Gyáván megtagadom, hogy kirúgjam és kitiltsam magam." msgstr "Gyáván megtagadom, hogy kirúgjam és kitiltsam magam."
#: plugin.py:394 #: plugin.py:397 plugin.py:409 plugin.py:418
msgid "I cowardly refuse to ban myself." msgid "I cowardly refuse to ban myself."
msgstr "Gyáván megtagadom, hogy kitiltsam magam." msgstr "Gyáván megtagadom, hogy kitiltsam magam."
#: plugin.py:422 #: plugin.py:451
msgid "%s has %s too, you can't ban them." msgid "%s has %s too, you can't ban them."
msgstr "%s-nek is van %s, nem tilthatod ki őt." msgstr "%s-nek is van %s, nem tilthatod ki őt."
#: plugin.py:433 #: plugin.py:462
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [<hostmask|--all>]\n" "[<channel>] [<hostmask|--all>]\n"
@ -455,19 +459,19 @@ msgstr ""
"véletlenül) ki lettél tiltva a csatornáról. <csatorna> csak akkor szükséges, " "véletlenül) ki lettél tiltva a csatornáról. <csatorna> csak akkor szükséges, "
"ha az üzenet nem a csatornában van elküldve." "ha az üzenet nem a csatornában van elküldve."
#: plugin.py:453 #: plugin.py:482
msgid "All bans on %s matching %s have been removed." msgid "All bans on %s matching %s have been removed."
msgstr "Minden tiltás %s-ban, ami illeszkedik %s-ra el lett távolítva." msgstr "Minden tiltás %s-ban, ami illeszkedik %s-ra el lett távolítva."
#: plugin.py:457 #: plugin.py:486
msgid "No bans matching %s were found on %s." msgid "No bans matching %s were found on %s."
msgstr "Nem található %s-ra illeszkedő tiltás %s-ban." msgstr "Nem található %s-ra illeszkedő tiltás %s-ban."
#: plugin.py:460 #: plugin.py:489
msgid "unban someone" msgid "unban someone"
msgstr "eltávolítani a tiltást valakiről" msgstr "eltávolítani a tiltást valakiről"
#: plugin.py:467 #: plugin.py:496
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -475,11 +479,11 @@ msgid ""
" If <channel> is not given, it defaults to the current channel." " If <channel> is not given, it defaults to the current channel."
msgstr "" msgstr ""
#: plugin.py:471 #: plugin.py:500
msgid "No bans." msgid "No bans."
msgstr "" msgstr ""
#: plugin.py:476 #: plugin.py:505
msgid "" msgid ""
"[<channel>] <nick>\n" "[<channel>] <nick>\n"
"\n" "\n"
@ -493,19 +497,19 @@ msgstr ""
"Ha rendelkezel a #csatorna,op képességgel, meghívja <név>-et <csatorna>-ra. " "Ha rendelkezel a #csatorna,op képességgel, meghívja <név>-et <csatorna>-ra. "
"<csatorna> csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." "<csatorna> csak akkor szükséges, ha az üzenet nem a csatornában van elküldve."
#: plugin.py:485 #: plugin.py:514
msgid "invite someone" msgid "invite someone"
msgstr "meghívni valakit" msgstr "meghívni valakit"
#: plugin.py:504 #: plugin.py:533
msgid "%s is already in %s." msgid "%s is already in %s."
msgstr "%s már %s-ban van." msgstr "%s már %s-ban van."
#: plugin.py:511 #: plugin.py:540
msgid "There is no %s on this network." msgid "There is no %s on this network."
msgstr "Nincs %s ezen a hálózaton." msgstr "Nincs %s ezen a hálózaton."
#: plugin.py:523 #: plugin.py:552
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -524,7 +528,7 @@ msgstr ""
"némáva teszi azt és nem fog válaszolni a csatornában végrehajtott kérésekre. " "némáva teszi azt és nem fog válaszolni a csatornában végrehajtott kérésekre. "
"<csatorna> csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." "<csatorna> csak akkor szükséges, ha az üzenet nem a csatornában van elküldve."
#: plugin.py:538 #: plugin.py:567
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -542,7 +546,7 @@ msgstr ""
"így az újra válaszol a csatornában vérgehajtott kérésekre. <csatorna> csak " "így az újra válaszol a csatornában vérgehajtott kérésekre. <csatorna> csak "
"akkor szükséges, ha az üzenet nem a csatornában van elküldve." "akkor szükséges, ha az üzenet nem a csatornában van elküldve."
#: plugin.py:553 #: plugin.py:582
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -553,15 +557,15 @@ msgstr ""
"\n" "\n"
"Kiírja a csatornákat, ahol a bot némítva van." "Kiírja a csatornákat, ahol a bot némítva van."
#: plugin.py:568 #: plugin.py:597
msgid "I'm currently lobotomized in %L." msgid "I'm currently lobotomized in %L."
msgstr "Jelenleg némítva vagyok %L-ban." msgstr "Jelenleg némítva vagyok %L-ban."
#: plugin.py:571 #: plugin.py:600
msgid "I'm not currently lobotomized in any channels that you're in." msgid "I'm not currently lobotomized in any channels that you're in."
msgstr "Jelenleg nem vagyok némítva egy csatornában sem, ahol vagy." msgstr "Jelenleg nem vagyok némítva egy csatornában sem, ahol vagy."
#: plugin.py:585 #: plugin.py:614
msgid "" msgid ""
"[<channel>] <nick|hostmask> [<expires>]\n" "[<channel>] <nick|hostmask> [<expires>]\n"
"\n" "\n"
@ -590,7 +594,7 @@ msgstr ""
"lejárni. <csatorna> csak akkor szükséges, ha az üzenet nem a csaotnában van " "lejárni. <csatorna> csak akkor szükséges, ha az üzenet nem a csaotnában van "
"elküldve." "elküldve."
#: plugin.py:605 #: plugin.py:639
msgid "" msgid ""
"[<channel>] <hostmask>\n" "[<channel>] <hostmask>\n"
"\n" "\n"
@ -606,11 +610,11 @@ msgstr ""
"ról. <csatorna> csak akkor szükséges, ha az üzenet nem a csatornában van " "ról. <csatorna> csak akkor szükséges, ha az üzenet nem a csatornában van "
"elküldve." "elküldve."
#: plugin.py:617 #: plugin.py:651
msgid "There are no persistent bans for that hostmask." msgid "There are no persistent bans for that hostmask."
msgstr "Nincsenek tiltások erre a hosztra." msgstr "Nincsenek tiltások erre a hosztra."
#: plugin.py:622 #: plugin.py:656
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [<mask>]\n" "[<channel>] [<mask>]\n"
@ -628,19 +632,19 @@ msgstr ""
"ról. <csatorna> csak akkor szükséges, ha az üzenet nem a csatornában van " "ról. <csatorna> csak akkor szükséges, ha az üzenet nem a csatornában van "
"elküldve." "elküldve."
#: plugin.py:640 #: plugin.py:674
msgid "%q (expires %t)" msgid "%q (expires %t)"
msgstr "%q (lejár %t)" msgstr "%q (lejár %t)"
#: plugin.py:643 #: plugin.py:677
msgid "%q (never expires)" msgid "%q (never expires)"
msgstr "%q (soha nem jár le)" msgstr "%q (soha nem jár le)"
#: plugin.py:647 #: plugin.py:681
msgid "There are no persistent bans on %s." msgid "There are no persistent bans on %s."
msgstr "Nincsenek tiltások %s-on." msgstr "Nincsenek tiltások %s-on."
#: plugin.py:654 #: plugin.py:688
msgid "" msgid ""
"[<channel>] <nick|hostmask> [<expires>]\n" "[<channel>] <nick|hostmask> [<expires>]\n"
"\n" "\n"
@ -663,7 +667,7 @@ msgstr ""
"mellőzés soha nem fog automatikusan lejárni. <csatorna> csak akkor " "mellőzés soha nem fog automatikusan lejárni. <csatorna> csak akkor "
"szükséges, ha az üzenet nem a csatornában van elküldve." "szükséges, ha az üzenet nem a csatornában van elküldve."
#: plugin.py:672 #: plugin.py:706
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] <nick|hostmask>\n" "[<channel>] <nick|hostmask>\n"
@ -680,11 +684,11 @@ msgstr ""
"<hoszt>-ról a csatornában. <csatorna> csak akkor szükséges, ha az üzenet nem " "<hoszt>-ról a csatornában. <csatorna> csak akkor szükséges, ha az üzenet nem "
"a csatornában van elküldve." "a csatornában van elküldve."
#: plugin.py:684 #: plugin.py:718
msgid "There are no ignores for that hostmask." msgid "There are no ignores for that hostmask."
msgstr "Nincsenek mellőzések erre a hosztra." msgstr "Nincsenek mellőzések erre a hosztra."
#: plugin.py:689 #: plugin.py:723
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -699,11 +703,11 @@ msgstr ""
"Kiírja a hosztokat, amelyeket a bot mellőz a megadott csatornában. " "Kiírja a hosztokat, amelyeket a bot mellőz a megadott csatornában. "
"<csatorna> csak akkor szükséges, ha az üzenet nem a csatornában van elküldve." "<csatorna> csak akkor szükséges, ha az üzenet nem a csatornában van elküldve."
#: plugin.py:698 #: plugin.py:732
msgid "I'm not currently ignoring any hostmasks in %q" msgid "I'm not currently ignoring any hostmasks in %q"
msgstr "Nem mellőzők egy hosztot sem %q-ban." msgstr "Nem mellőzők egy hosztot sem %q-ban."
#: plugin.py:709 #: plugin.py:743
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] <nick|username> <capability> [<capability> ...]\n" "[<channel>] <nick|username> <capability> [<capability> ...]\n"
@ -721,7 +725,7 @@ msgstr ""
"csatornában. <csatorna> csak akkor szükséges, ha az üzenet nem a csatornában " "csatornában. <csatorna> csak akkor szükséges, ha az üzenet nem a csatornában "
"van elküldve." "van elküldve."
#: plugin.py:725 #: plugin.py:759
msgid "" msgid ""
"[<channel>] <name|hostmask> <capability> [<capability> ...]\n" "[<channel>] <name|hostmask> <capability> [<capability> ...]\n"
"\n" "\n"
@ -740,11 +744,11 @@ msgstr ""
"illeszkedik) a <képesség> képességet a csatornában. <csatorna> csak akkor " "illeszkedik) a <képesség> képességet a csatornában. <csatorna> csak akkor "
"szükséges, ha az üzenet nem a csatornában van elküldve." "szükséges, ha az üzenet nem a csatornában van elküldve."
#: plugin.py:744 #: plugin.py:778
msgid "That user didn't have the %L %s." msgid "That user didn't have the %L %s."
msgstr "A felhasználónak nem volt a(z) %L %s." msgstr "A felhasználónak nem volt a(z) %L %s."
#: plugin.py:753 #: plugin.py:787
msgid "" msgid ""
"[<channel>] {True|False}\n" "[<channel>] {True|False}\n"
"\n" "\n"
@ -764,7 +768,7 @@ msgstr ""
"megadott értékre állítja. <csatorna> csak akkor szükséges, ha az üzenet nem " "megadott értékre állítja. <csatorna> csak akkor szükséges, ha az üzenet nem "
"a csatornában van elküldve." "a csatornában van elküldve."
#: plugin.py:771 #: plugin.py:805
msgid "" msgid ""
"[<channel>] <capability> [<capability> ...]\n" "[<channel>] <capability> [<capability> ...]\n"
"\n" "\n"
@ -781,7 +785,7 @@ msgstr ""
"csatorna képességeihez. <csatorna> csak akkor szükséges, ha az üzenet nem, a " "csatorna képességeihez. <csatorna> csak akkor szükséges, ha az üzenet nem, a "
"csatornában van elküldve." "csatornában van elküldve."
#: plugin.py:786 #: plugin.py:820
msgid "" msgid ""
"[<channel>] <capability> [<capability> ...]\n" "[<channel>] <capability> [<capability> ...]\n"
"\n" "\n"
@ -801,15 +805,15 @@ msgstr ""
"alapértelmezett képességei lesznek előnyben. <csatorna> csak akkor " "alapértelmezett képességei lesznek előnyben. <csatorna> csak akkor "
"szükséges, ha az üzenet nem a csatornában van elküldve." "szükséges, ha az üzenet nem a csatornában van elküldve."
#: plugin.py:802 #: plugin.py:836
msgid "capability" msgid "capability"
msgstr "képesség" msgstr "képesség"
#: plugin.py:805 #: plugin.py:839
msgid "I do not know about the %L %s." msgid "I do not know about the %L %s."
msgstr "Nem tudok a %L %s-ról." msgstr "Nem tudok a %L %s-ról."
#: plugin.py:812 #: plugin.py:846
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -822,7 +826,7 @@ msgstr ""
"Kiírja <csatorna> képességeit. <csatorna> csak akkor szükséges, ha az üzenet " "Kiírja <csatorna> képességeit. <csatorna> csak akkor szükséges, ha az üzenet "
"nem a csatornában van elküldve." "nem a csatornában van elküldve."
#: plugin.py:824 #: plugin.py:858
msgid "" msgid ""
"[<channel>] [<plugin>] [<command>]\n" "[<channel>] [<plugin>] [<command>]\n"
"\n" "\n"
@ -843,15 +847,15 @@ msgstr ""
"le lesz tiltva a megadott bővítményben. <csatorna> csak akkor szükséges, ha " "le lesz tiltva a megadott bővítményben. <csatorna> csak akkor szükséges, ha "
"az üzenet nem a csatornában van elküldve." "az üzenet nem a csatornában van elküldve."
#: plugin.py:840 plugin.py:879 #: plugin.py:874 plugin.py:913
msgid "The %s plugin does not have a command called %s." msgid "The %s plugin does not have a command called %s."
msgstr "A %s bővítménynek nincs %s nevű parancsa." msgstr "A %s bővítménynek nincs %s nevű parancsa."
#: plugin.py:847 plugin.py:886 #: plugin.py:881 plugin.py:920
msgid "No plugin or command named %s could be found." msgid "No plugin or command named %s could be found."
msgstr "Nem található bővítmény vagy parancs %s néven." msgstr "Nem található bővítmény vagy parancs %s néven."
#: plugin.py:863 #: plugin.py:897
msgid "" msgid ""
"[<channel>] [<plugin>] [<command>]\n" "[<channel>] [<plugin>] [<command>]\n"
"\n" "\n"
@ -871,11 +875,11 @@ msgstr ""
"<csatorna>-ban ha le lett tiltva. Ha <bővítmény> meg van adva, <parancs> " "<csatorna>-ban ha le lett tiltva. Ha <bővítmény> meg van adva, <parancs> "
"csak a megadott bővítményben lesz engedélyezve." "csak a megadott bővítményben lesz engedélyezve."
#: plugin.py:900 #: plugin.py:934
msgid "%s was not disabled." msgid "%s was not disabled."
msgstr "%s nem volt letiltva." msgstr "%s nem volt letiltva."
#: plugin.py:909 #: plugin.py:943
msgid "" msgid ""
"[<channel>] [--count]\n" "[<channel>] [--count]\n"
"\n" "\n"
@ -891,25 +895,25 @@ msgstr ""
"üzenet nem a csatornában van elküldve. Ha a --count opció meg van adva, csak " "üzenet nem a csatornában van elküldve. Ha a --count opció meg van adva, csak "
"a nevek számát írja ki." "a nevek számát írja ki."
#: plugin.py:931 #: plugin.py:965
msgid "You don't have access to that information." msgid "You don't have access to that information."
msgstr "Nincs hozzáférésed ehhez az információhoz." msgstr "Nincs hozzáférésed ehhez az információhoz."
#: plugin.py:946 #: plugin.py:980
msgid "" msgid ""
"Internal message for notifying all the #channel,ops in a channel of\n" "Internal message for notifying all the #channel,ops in a channel of\n"
" a given situation." " a given situation."
msgstr "Belső üzenet #csatorna,op-ok értesítésére egy adott szituációban." msgstr "Belső üzenet #csatorna,op-ok értesítésére egy adott szituációban."
#: plugin.py:949 #: plugin.py:983
msgid "Alert to all %s ops: %s" msgid "Alert to all %s ops: %s"
msgstr "Riasztás minden %s operátornak: %s" msgstr "Riasztás minden %s operátornak: %s"
#: plugin.py:951 #: plugin.py:985
msgid " (from %s)" msgid " (from %s)"
msgstr "(%s-tól)" msgstr "(%s-tól)"
#: plugin.py:963 #: plugin.py:997
msgid "" msgid ""
"[<channel>] <text>\n" "[<channel>] <text>\n"
"\n" "\n"
@ -925,7 +929,7 @@ msgstr ""
"operátor státuszt. <csatorna> csak akkor szükséges, ha az üzenet nem a " "operátor státuszt. <csatorna> csak akkor szükséges, ha az üzenet nem a "
"csatornában van elküldve." "csatornában van elküldve."
#: plugin.py:973 #: plugin.py:1007
msgid "" msgid ""
"[<channel>] [<reason>]\n" "[<channel>] [<reason>]\n"
"\n" "\n"
@ -940,11 +944,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:994 #: plugin.py:1028
#, fuzzy #, fuzzy
msgid "I'm not in %s." msgid "I'm not in %s."
msgstr "Nem láttam %s-t." msgstr "Nem láttam %s-t."
#: plugin.py:1032
msgid "%s removed from configured join list."
msgstr ""
#~ msgid "" #~ msgid ""
#~ "I cowardly refuse to devoice myself. If you really want me devoiced, " #~ "I cowardly refuse to devoice myself. If you really want me devoiced, "
#~ "tell me to op you and then devoice me yourself." #~ "tell me to op you and then devoice me yourself."

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2012-06-09 09:33+0200\n" "PO-Revision-Date: 2012-06-09 09:33+0200\n"
"Last-Translator: skizzhg <skizzhg@gmx.com>\n" "Last-Translator: skizzhg <skizzhg@gmx.com>\n"
"Language-Team: Italian <skizzhg@gmx.com>\n" "Language-Team: Italian <skizzhg@gmx.com>\n"
@ -377,8 +377,10 @@ msgid "kick someone"
msgstr "cacciare (kick) qualcuno" msgstr "cacciare (kick) qualcuno"
#: plugin.py:316 #: plugin.py:316
#, fuzzy
msgid "" msgid ""
"[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>] [<reason>]\n" "[<channel>] [--{exact,nick,user,host,account}] <nick> [<seconds>] "
"[<reason>]\n"
"\n" "\n"
" If you have the #channel,op capability, this will kickban <nick> " " If you have the #channel,op capability, this will kickban <nick> "
"for\n" "for\n"
@ -387,12 +389,12 @@ msgid ""
" don't specify a number of seconds) it will ban the person " " don't specify a number of seconds) it will ban the person "
"indefinitely.\n" "indefinitely.\n"
" --exact bans only the exact hostmask; --nick bans just the nick;\n" " --exact bans only the exact hostmask; --nick bans just the nick;\n"
" --user bans just the user, and --host bans just the host. You can\n" " --user bans just the user, and --host bans just the host\n"
" combine these options as you choose. <reason> is a reason to give " " You can combine the --nick, --user, and --host options as you "
"for\n" "choose.\n"
" the kick.\n" " If --account is provided and the user is logged in and the network\n"
" <channel> is only necessary if the message isn't sent in the " " supports account bans, this will ban the user's account instead.\n"
"channel\n" " <channel> is only necessary if the message isn't sent in the channel "
"itself.\n" "itself.\n"
" " " "
msgstr "" msgstr ""
@ -411,11 +413,11 @@ msgstr ""
" se il messaggio non viene inviato nel canale stesso.\n" " se il messaggio non viene inviato nel canale stesso.\n"
" " " "
#: plugin.py:333 #: plugin.py:334
msgid "kick or ban someone" msgid "kick or ban someone"
msgstr "cacciare (kick) o bannare qualcuno" msgstr "cacciare (kick) o bannare qualcuno"
#: plugin.py:341 #: plugin.py:342
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]\n" "[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]\n"
@ -425,11 +427,13 @@ msgid ""
"or\n" "or\n"
" don't specify a number of seconds) it will ban the person " " don't specify a number of seconds) it will ban the person "
"indefinitely.\n" "indefinitely.\n"
" --exact can be used to specify an exact hostmask. You can combine " " --exact can be used to specify an exact hostmask.\n"
"the\n" " You can combine the --nick, --user, and --host options as you "
" exact, nick, user, and host options as you choose. <channel> is " "choose.\n"
"only\n" " If --account is provided and the user is logged in and the network\n"
" necessary if the message isn't sent in the channel itself.\n" " supports account bans, this will ban the user's account instead.\n"
" <channel> is only necessary if the message isn't sent in the channel "
"itself.\n"
" " " "
msgstr "" msgstr ""
"[<canale>] [--{exact,nick,user,host}] <nick> [<secondi>] [<motivo>]\n" "[<canale>] [--{exact,nick,user,host}] <nick> [<secondi>] [<motivo>]\n"
@ -447,28 +451,28 @@ msgstr ""
" se il messaggio non viene inviato nel canale stesso.\n" " se il messaggio non viene inviato nel canale stesso.\n"
" " " "
#: plugin.py:355 plugin.py:581 #: plugin.py:359 plugin.py:610
#, fuzzy #, fuzzy
msgid "ban someone" msgid "ban someone"
msgstr "rimuovere il ban a qualcuno" msgstr "rimuovere il ban a qualcuno"
#: plugin.py:375 #: plugin.py:382
msgid "I haven't seen %s." msgid "I haven't seen %s."
msgstr "Non ho mai visto %s." msgstr "Non ho mai visto %s."
#: plugin.py:385 #: plugin.py:394
msgid "I cowardly refuse to kickban myself." msgid "I cowardly refuse to kickban myself."
msgstr "Codardamente mi rifiuto di espellere (kickban) me stesso." msgstr "Codardamente mi rifiuto di espellere (kickban) me stesso."
#: plugin.py:394 #: plugin.py:397 plugin.py:409 plugin.py:418
msgid "I cowardly refuse to ban myself." msgid "I cowardly refuse to ban myself."
msgstr "Codardamente mi rifiuto di bannare stesso." msgstr "Codardamente mi rifiuto di bannare stesso."
#: plugin.py:422 #: plugin.py:451
msgid "%s has %s too, you can't ban them." msgid "%s has %s too, you can't ban them."
msgstr "anche %s ha %s, non puoi bannarlo/a." msgstr "anche %s ha %s, non puoi bannarlo/a."
#: plugin.py:433 #: plugin.py:462
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [<hostmask|--all>]\n" "[<channel>] [<hostmask|--all>]\n"
@ -495,19 +499,19 @@ msgstr ""
" messaggio non viene inviato nel canale stesso.\n" " messaggio non viene inviato nel canale stesso.\n"
" " " "
#: plugin.py:453 #: plugin.py:482
msgid "All bans on %s matching %s have been removed." msgid "All bans on %s matching %s have been removed."
msgstr "Tutti i ban su %s che corrisopndono a %s sono stati rimossi." msgstr "Tutti i ban su %s che corrisopndono a %s sono stati rimossi."
#: plugin.py:457 #: plugin.py:486
msgid "No bans matching %s were found on %s." msgid "No bans matching %s were found on %s."
msgstr "Non è stato trovato alcun ban corrispondente a %s su %s." msgstr "Non è stato trovato alcun ban corrispondente a %s su %s."
#: plugin.py:460 #: plugin.py:489
msgid "unban someone" msgid "unban someone"
msgstr "rimuovere il ban a qualcuno" msgstr "rimuovere il ban a qualcuno"
#: plugin.py:467 #: plugin.py:496
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -515,11 +519,11 @@ msgid ""
" If <channel> is not given, it defaults to the current channel." " If <channel> is not given, it defaults to the current channel."
msgstr "" msgstr ""
#: plugin.py:471 #: plugin.py:500
msgid "No bans." msgid "No bans."
msgstr "" msgstr ""
#: plugin.py:476 #: plugin.py:505
msgid "" msgid ""
"[<channel>] <nick>\n" "[<channel>] <nick>\n"
"\n" "\n"
@ -536,19 +540,19 @@ msgstr ""
"canale stesso.\n" "canale stesso.\n"
" " " "
#: plugin.py:485 #: plugin.py:514
msgid "invite someone" msgid "invite someone"
msgstr "invitare qualcuno" msgstr "invitare qualcuno"
#: plugin.py:504 #: plugin.py:533
msgid "%s is already in %s." msgid "%s is already in %s."
msgstr "%s è già in %s." msgstr "%s è già in %s."
#: plugin.py:511 #: plugin.py:540
msgid "There is no %s on this network." msgid "There is no %s on this network."
msgstr "Non c'è nessun %s su questa rete." msgstr "Non c'è nessun %s su questa rete."
#: plugin.py:523 #: plugin.py:552
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -571,7 +575,7 @@ msgstr ""
"canale stesso.\n" "canale stesso.\n"
" " " "
#: plugin.py:538 #: plugin.py:567
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -593,7 +597,7 @@ msgstr ""
"canale stesso.\n" "canale stesso.\n"
" " " "
#: plugin.py:553 #: plugin.py:582
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -605,15 +609,15 @@ msgstr ""
" Riporta l'elenco dei canali nei quali il bot è lobotomizzato.\n" " Riporta l'elenco dei canali nei quali il bot è lobotomizzato.\n"
" " " "
#: plugin.py:568 #: plugin.py:597
msgid "I'm currently lobotomized in %L." msgid "I'm currently lobotomized in %L."
msgstr "Sono attualmente lobotomizzato in %L." msgstr "Sono attualmente lobotomizzato in %L."
#: plugin.py:571 #: plugin.py:600
msgid "I'm not currently lobotomized in any channels that you're in." msgid "I'm not currently lobotomized in any channels that you're in."
msgstr "Al momento non sono lobotomizzato in nessun canale in cui sei." msgstr "Al momento non sono lobotomizzato in nessun canale in cui sei."
#: plugin.py:585 #: plugin.py:614
msgid "" msgid ""
"[<channel>] <nick|hostmask> [<expires>]\n" "[<channel>] <nick|hostmask> [<expires>]\n"
"\n" "\n"
@ -647,7 +651,7 @@ msgstr ""
"canale stesso.\n" "canale stesso.\n"
" " " "
#: plugin.py:605 #: plugin.py:639
msgid "" msgid ""
"[<channel>] <hostmask>\n" "[<channel>] <hostmask>\n"
"\n" "\n"
@ -665,11 +669,11 @@ msgstr ""
"canale stesso.\n" "canale stesso.\n"
" " " "
#: plugin.py:617 #: plugin.py:651
msgid "There are no persistent bans for that hostmask." msgid "There are no persistent bans for that hostmask."
msgstr "Non ci sono ban permanenti per questa hostmask." msgstr "Non ci sono ban permanenti per questa hostmask."
#: plugin.py:622 #: plugin.py:656
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] [<mask>]\n" "[<channel>] [<mask>]\n"
@ -689,19 +693,19 @@ msgstr ""
"canale stesso.\n" "canale stesso.\n"
" " " "
#: plugin.py:640 #: plugin.py:674
msgid "%q (expires %t)" msgid "%q (expires %t)"
msgstr "%q (scade il %t)" msgstr "%q (scade il %t)"
#: plugin.py:643 #: plugin.py:677
msgid "%q (never expires)" msgid "%q (never expires)"
msgstr "%q (non scade)" msgstr "%q (non scade)"
#: plugin.py:647 #: plugin.py:681
msgid "There are no persistent bans on %s." msgid "There are no persistent bans on %s."
msgstr "Non ci sono ban permanenti su %s." msgstr "Non ci sono ban permanenti su %s."
#: plugin.py:654 #: plugin.py:688
msgid "" msgid ""
"[<channel>] <nick|hostmask> [<expires>]\n" "[<channel>] <nick|hostmask> [<expires>]\n"
"\n" "\n"
@ -729,7 +733,7 @@ msgstr ""
" se il messaggio non viene inviato nel canale stesso.\n" " se il messaggio non viene inviato nel canale stesso.\n"
" " " "
#: plugin.py:672 #: plugin.py:706
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<channel>] <nick|hostmask>\n" "[<channel>] <nick|hostmask>\n"
@ -748,11 +752,11 @@ msgstr ""
"canale stesso.\n" "canale stesso.\n"
" " " "
#: plugin.py:684 #: plugin.py:718
msgid "There are no ignores for that hostmask." msgid "There are no ignores for that hostmask."
msgstr "Non ci sono ignore per questa hostmask." msgstr "Non ci sono ignore per questa hostmask."
#: plugin.py:689 #: plugin.py:723
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -769,11 +773,11 @@ msgstr ""
"stesso.\n" "stesso.\n"
" " " "
#: plugin.py:698 #: plugin.py:732
msgid "I'm not currently ignoring any hostmasks in %q" msgid "I'm not currently ignoring any hostmasks in %q"
msgstr "Al momento non sto ignorando nessuna hostmasks in %q" msgstr "Al momento non sto ignorando nessuna hostmasks in %q"
#: plugin.py:709 #: plugin.py:743
msgid "" msgid ""
"[<channel>] <nick|username> <capability> [<capability> ...]\n" "[<channel>] <nick|username> <capability> [<capability> ...]\n"
"\n" "\n"
@ -792,7 +796,7 @@ msgstr ""
"stesso.\n" "stesso.\n"
" " " "
#: plugin.py:725 #: plugin.py:759
msgid "" msgid ""
"[<channel>] <name|hostmask> <capability> [<capability> ...]\n" "[<channel>] <name|hostmask> <capability> [<capability> ...]\n"
"\n" "\n"
@ -814,11 +818,11 @@ msgstr ""
"canale stesso.\n" "canale stesso.\n"
" " " "
#: plugin.py:744 #: plugin.py:778
msgid "That user didn't have the %L %s." msgid "That user didn't have the %L %s."
msgstr "Questo utente non ha la %L %s." msgstr "Questo utente non ha la %L %s."
#: plugin.py:753 #: plugin.py:787
msgid "" msgid ""
"[<channel>] {True|False}\n" "[<channel>] {True|False}\n"
"\n" "\n"
@ -841,7 +845,7 @@ msgstr ""
"stesso.\n" "stesso.\n"
" " " "
#: plugin.py:771 #: plugin.py:805
msgid "" msgid ""
"[<channel>] <capability> [<capability> ...]\n" "[<channel>] <capability> [<capability> ...]\n"
"\n" "\n"
@ -861,7 +865,7 @@ msgstr ""
" solo se il messaggio non viene inviato nel canale stesso.\n" " solo se il messaggio non viene inviato nel canale stesso.\n"
" " " "
#: plugin.py:786 #: plugin.py:820
msgid "" msgid ""
"[<channel>] <capability> [<capability> ...]\n" "[<channel>] <capability> [<capability> ...]\n"
"\n" "\n"
@ -885,15 +889,15 @@ msgstr ""
" solo se il messaggio non viene inviato nel canale stesso.\n" " solo se il messaggio non viene inviato nel canale stesso.\n"
" " " "
#: plugin.py:802 #: plugin.py:836
msgid "capability" msgid "capability"
msgstr "capacità" msgstr "capacità"
#: plugin.py:805 #: plugin.py:839
msgid "I do not know about the %L %s." msgid "I do not know about the %L %s."
msgstr "Non so nulla a proposito di %L %s." msgstr "Non so nulla a proposito di %L %s."
#: plugin.py:812 #: plugin.py:846
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
"\n" "\n"
@ -907,7 +911,7 @@ msgstr ""
" solo se il messaggio non viene inviato nel canale stesso.\n" " solo se il messaggio non viene inviato nel canale stesso.\n"
" " " "
#: plugin.py:824 #: plugin.py:858
msgid "" msgid ""
"[<channel>] [<plugin>] [<command>]\n" "[<channel>] [<plugin>] [<command>]\n"
"\n" "\n"
@ -932,15 +936,15 @@ msgstr ""
"canale stesso.\n" "canale stesso.\n"
" " " "
#: plugin.py:840 plugin.py:879 #: plugin.py:874 plugin.py:913
msgid "The %s plugin does not have a command called %s." msgid "The %s plugin does not have a command called %s."
msgstr "Il plugin %s non ha un comando chiamato %s." msgstr "Il plugin %s non ha un comando chiamato %s."
#: plugin.py:847 plugin.py:886 #: plugin.py:881 plugin.py:920
msgid "No plugin or command named %s could be found." msgid "No plugin or command named %s could be found."
msgstr "Non è stato trovato nessun plugin o comando chiamato %s." msgstr "Non è stato trovato nessun plugin o comando chiamato %s."
#: plugin.py:863 #: plugin.py:897
msgid "" msgid ""
"[<channel>] [<plugin>] [<command>]\n" "[<channel>] [<plugin>] [<command>]\n"
"\n" "\n"
@ -967,11 +971,11 @@ msgstr ""
" inviato nel canale stesso.\n" " inviato nel canale stesso.\n"
" " " "
#: plugin.py:900 #: plugin.py:934
msgid "%s was not disabled." msgid "%s was not disabled."
msgstr "%s non è stato disabilitato." msgstr "%s non è stato disabilitato."
#: plugin.py:909 #: plugin.py:943
msgid "" msgid ""
"[<channel>] [--count]\n" "[<channel>] [--count]\n"
"\n" "\n"
@ -989,11 +993,11 @@ msgstr ""
" l'opzione --count, mostra solo il numero dei nick.\n" " l'opzione --count, mostra solo il numero dei nick.\n"
" " " "
#: plugin.py:931 #: plugin.py:965
msgid "You don't have access to that information." msgid "You don't have access to that information."
msgstr "Non hai accesso a questa informazione." msgstr "Non hai accesso a questa informazione."
#: plugin.py:946 #: plugin.py:980
msgid "" msgid ""
"Internal message for notifying all the #channel,ops in a channel of\n" "Internal message for notifying all the #channel,ops in a channel of\n"
" a given situation." " a given situation."
@ -1001,15 +1005,15 @@ msgstr ""
"Messaggio interno per notificare una data situazione a tutti gli operatori " "Messaggio interno per notificare una data situazione a tutti gli operatori "
"(#canale,op) in un canale." "(#canale,op) in un canale."
#: plugin.py:949 #: plugin.py:983
msgid "Alert to all %s ops: %s" msgid "Alert to all %s ops: %s"
msgstr "Avviso a tutti gli op di %s: %s" msgstr "Avviso a tutti gli op di %s: %s"
#: plugin.py:951 #: plugin.py:985
msgid " (from %s)" msgid " (from %s)"
msgstr " (da %s)" msgstr " (da %s)"
#: plugin.py:963 #: plugin.py:997
msgid "" msgid ""
"[<channel>] <text>\n" "[<channel>] <text>\n"
"\n" "\n"
@ -1024,7 +1028,7 @@ msgstr ""
"<canale>,op.\n" "<canale>,op.\n"
" " " "
#: plugin.py:973 #: plugin.py:1007
msgid "" msgid ""
"[<channel>] [<reason>]\n" "[<channel>] [<reason>]\n"
"\n" "\n"
@ -1039,11 +1043,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:994 #: plugin.py:1028
#, fuzzy #, fuzzy
msgid "I'm not in %s." msgid "I'm not in %s."
msgstr "Non ho mai visto %s." msgstr "Non ho mai visto %s."
#: plugin.py:1032
msgid "%s removed from configured join list."
msgstr ""
#~ msgid "" #~ msgid ""
#~ "I cowardly refuse to devoice myself. If you really want me devoiced, " #~ "I cowardly refuse to devoice myself. If you really want me devoiced, "
#~ "tell me to op you and then devoice me yourself." #~ "tell me to op you and then devoice me yourself."

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -265,25 +265,25 @@ msgstr ""
#: plugin.py:316 #: plugin.py:316
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>] [<reason>]\n" "[<channel>] [--{exact,nick,user,host,account}] <nick> [<seconds>] [<reason>]\n"
"\n" "\n"
" If you have the #channel,op capability, this will kickban <nick> for\n" " If you have the #channel,op capability, this will kickban <nick> for\n"
" as many seconds as you specify, or else (if you specify 0 seconds or\n" " as many seconds as you specify, or else (if you specify 0 seconds or\n"
" don't specify a number of seconds) it will ban the person indefinitely.\n" " don't specify a number of seconds) it will ban the person indefinitely.\n"
" --exact bans only the exact hostmask; --nick bans just the nick;\n" " --exact bans only the exact hostmask; --nick bans just the nick;\n"
" --user bans just the user, and --host bans just the host. You can\n" " --user bans just the user, and --host bans just the host\n"
" combine these options as you choose. <reason> is a reason to give for\n" " You can combine the --nick, --user, and --host options as you choose.\n"
" the kick.\n" " If --account is provided and the user is logged in and the network\n"
" <channel> is only necessary if the message isn't sent in the channel\n" " supports account bans, this will ban the user's account instead.\n"
" itself.\n" " <channel> is only necessary if the message isn't sent in the channel itself.\n"
" " " "
msgstr "" msgstr ""
#: plugin.py:333 #: plugin.py:334
msgid "kick or ban someone" msgid "kick or ban someone"
msgstr "" msgstr ""
#: plugin.py:341 #: plugin.py:342
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]\n" "[<channel>] [--{exact,nick,user,host}] <nick> [<seconds>]\n"
@ -291,33 +291,35 @@ msgid ""
" If you have the #channel,op capability, this will ban <nick> for\n" " If you have the #channel,op capability, this will ban <nick> for\n"
" as many seconds as you specify, otherwise (if you specify 0 seconds or\n" " as many seconds as you specify, otherwise (if you specify 0 seconds or\n"
" don't specify a number of seconds) it will ban the person indefinitely.\n" " don't specify a number of seconds) it will ban the person indefinitely.\n"
" --exact can be used to specify an exact hostmask. You can combine the\n" " --exact can be used to specify an exact hostmask.\n"
" exact, nick, user, and host options as you choose. <channel> is only\n" " You can combine the --nick, --user, and --host options as you choose.\n"
" necessary if the message isn't sent in the channel itself.\n" " If --account is provided and the user is logged in and the network\n"
" supports account bans, this will ban the user's account instead.\n"
" <channel> is only necessary if the message isn't sent in the channel itself.\n"
" " " "
msgstr "" msgstr ""
#: plugin.py:355 plugin.py:581 #: plugin.py:359 plugin.py:610
msgid "ban someone" msgid "ban someone"
msgstr "" msgstr ""
#: plugin.py:375 #: plugin.py:382
msgid "I haven't seen %s." msgid "I haven't seen %s."
msgstr "" msgstr ""
#: plugin.py:385 #: plugin.py:394
msgid "I cowardly refuse to kickban myself." msgid "I cowardly refuse to kickban myself."
msgstr "" msgstr ""
#: plugin.py:394 #: plugin.py:397 plugin.py:409 plugin.py:418
msgid "I cowardly refuse to ban myself." msgid "I cowardly refuse to ban myself."
msgstr "" msgstr ""
#: plugin.py:422 #: plugin.py:451
msgid "%s has %s too, you can't ban them." msgid "%s has %s too, you can't ban them."
msgstr "" msgstr ""
#: plugin.py:433 #: plugin.py:462
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] [<hostmask|--all>]\n" "[<channel>] [<hostmask|--all>]\n"
@ -330,19 +332,19 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:453 #: plugin.py:482
msgid "All bans on %s matching %s have been removed." msgid "All bans on %s matching %s have been removed."
msgstr "" msgstr ""
#: plugin.py:457 #: plugin.py:486
msgid "No bans matching %s were found on %s." msgid "No bans matching %s were found on %s."
msgstr "" msgstr ""
#: plugin.py:460 #: plugin.py:489
msgid "unban someone" msgid "unban someone"
msgstr "" msgstr ""
#: plugin.py:467 #: plugin.py:496
#, docstring #, docstring
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
@ -351,11 +353,11 @@ msgid ""
" If <channel> is not given, it defaults to the current channel." " If <channel> is not given, it defaults to the current channel."
msgstr "" msgstr ""
#: plugin.py:471 #: plugin.py:500
msgid "No bans." msgid "No bans."
msgstr "" msgstr ""
#: plugin.py:476 #: plugin.py:505
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <nick>\n" "[<channel>] <nick>\n"
@ -366,19 +368,19 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:485 #: plugin.py:514
msgid "invite someone" msgid "invite someone"
msgstr "" msgstr ""
#: plugin.py:504 #: plugin.py:533
msgid "%s is already in %s." msgid "%s is already in %s."
msgstr "" msgstr ""
#: plugin.py:511 #: plugin.py:540
msgid "There is no %s on this network." msgid "There is no %s on this network."
msgstr "" msgstr ""
#: plugin.py:523 #: plugin.py:552
#, docstring #, docstring
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
@ -390,7 +392,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:538 #: plugin.py:567
#, docstring #, docstring
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
@ -402,7 +404,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:553 #: plugin.py:582
#, docstring #, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
@ -411,15 +413,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:568 #: plugin.py:597
msgid "I'm currently lobotomized in %L." msgid "I'm currently lobotomized in %L."
msgstr "" msgstr ""
#: plugin.py:571 #: plugin.py:600
msgid "I'm not currently lobotomized in any channels that you're in." msgid "I'm not currently lobotomized in any channels that you're in."
msgstr "" msgstr ""
#: plugin.py:585 #: plugin.py:614
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <nick|hostmask> [<expires>]\n" "[<channel>] <nick|hostmask> [<expires>]\n"
@ -436,7 +438,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:605 #: plugin.py:639
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <hostmask>\n" "[<channel>] <hostmask>\n"
@ -447,11 +449,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:617 #: plugin.py:651
msgid "There are no persistent bans for that hostmask." msgid "There are no persistent bans for that hostmask."
msgstr "" msgstr ""
#: plugin.py:622 #: plugin.py:656
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] [<mask>]\n" "[<channel>] [<mask>]\n"
@ -464,19 +466,19 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:640 #: plugin.py:674
msgid "%q (expires %t)" msgid "%q (expires %t)"
msgstr "" msgstr ""
#: plugin.py:643 #: plugin.py:677
msgid "%q (never expires)" msgid "%q (never expires)"
msgstr "" msgstr ""
#: plugin.py:647 #: plugin.py:681
msgid "There are no persistent bans on %s." msgid "There are no persistent bans on %s."
msgstr "" msgstr ""
#: plugin.py:654 #: plugin.py:688
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <nick|hostmask> [<expires>]\n" "[<channel>] <nick|hostmask> [<expires>]\n"
@ -491,7 +493,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:672 #: plugin.py:706
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <nick|hostmask>\n" "[<channel>] <nick|hostmask>\n"
@ -502,11 +504,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:684 #: plugin.py:718
msgid "There are no ignores for that hostmask." msgid "There are no ignores for that hostmask."
msgstr "" msgstr ""
#: plugin.py:689 #: plugin.py:723
#, docstring #, docstring
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
@ -517,11 +519,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:698 #: plugin.py:732
msgid "I'm not currently ignoring any hostmasks in %q" msgid "I'm not currently ignoring any hostmasks in %q"
msgstr "" msgstr ""
#: plugin.py:709 #: plugin.py:743
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <nick|username> <capability> [<capability> ...]\n" "[<channel>] <nick|username> <capability> [<capability> ...]\n"
@ -533,7 +535,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:725 #: plugin.py:759
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <name|hostmask> <capability> [<capability> ...]\n" "[<channel>] <name|hostmask> <capability> [<capability> ...]\n"
@ -545,11 +547,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:744 #: plugin.py:778
msgid "That user didn't have the %L %s." msgid "That user didn't have the %L %s."
msgstr "" msgstr ""
#: plugin.py:753 #: plugin.py:787
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] {True|False}\n" "[<channel>] {True|False}\n"
@ -561,7 +563,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:771 #: plugin.py:805
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <capability> [<capability> ...]\n" "[<channel>] <capability> [<capability> ...]\n"
@ -572,7 +574,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:786 #: plugin.py:820
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <capability> [<capability> ...]\n" "[<channel>] <capability> [<capability> ...]\n"
@ -584,15 +586,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:802 #: plugin.py:836
msgid "capability" msgid "capability"
msgstr "" msgstr ""
#: plugin.py:805 #: plugin.py:839
msgid "I do not know about the %L %s." msgid "I do not know about the %L %s."
msgstr "" msgstr ""
#: plugin.py:812 #: plugin.py:846
#, docstring #, docstring
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
@ -602,7 +604,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:824 #: plugin.py:858
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] [<plugin>] [<command>]\n" "[<channel>] [<plugin>] [<command>]\n"
@ -615,15 +617,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:840 plugin.py:879 #: plugin.py:874 plugin.py:913
msgid "The %s plugin does not have a command called %s." msgid "The %s plugin does not have a command called %s."
msgstr "" msgstr ""
#: plugin.py:847 plugin.py:886 #: plugin.py:881 plugin.py:920
msgid "No plugin or command named %s could be found." msgid "No plugin or command named %s could be found."
msgstr "" msgstr ""
#: plugin.py:863 #: plugin.py:897
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] [<plugin>] [<command>]\n" "[<channel>] [<plugin>] [<command>]\n"
@ -636,11 +638,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:900 #: plugin.py:934
msgid "%s was not disabled." msgid "%s was not disabled."
msgstr "" msgstr ""
#: plugin.py:909 #: plugin.py:943
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] [--count]\n" "[<channel>] [--count]\n"
@ -651,26 +653,26 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:931 #: plugin.py:965
msgid "You don't have access to that information." msgid "You don't have access to that information."
msgstr "" msgstr ""
#: plugin.py:946 #: plugin.py:980
#, docstring #, docstring
msgid "" msgid ""
"Internal message for notifying all the #channel,ops in a channel of\n" "Internal message for notifying all the #channel,ops in a channel of\n"
" a given situation." " a given situation."
msgstr "" msgstr ""
#: plugin.py:949 #: plugin.py:983
msgid "Alert to all %s ops: %s" msgid "Alert to all %s ops: %s"
msgstr "" msgstr ""
#: plugin.py:951 #: plugin.py:985
msgid " (from %s)" msgid " (from %s)"
msgstr "" msgstr ""
#: plugin.py:963 #: plugin.py:997
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] <text>\n" "[<channel>] <text>\n"
@ -680,7 +682,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:973 #: plugin.py:1007
#, docstring #, docstring
msgid "" msgid ""
"[<channel>] [<reason>]\n" "[<channel>] [<reason>]\n"
@ -694,7 +696,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:994 #: plugin.py:1028
msgid "I'm not in %s." msgid "I'm not in %s."
msgstr "" msgstr ""
#: plugin.py:1032
msgid "%s removed from configured join list."
msgstr ""

View File

@ -321,13 +321,16 @@ class Channel(callbacks.Plugin):
--exact bans only the exact hostmask; --nick bans just the nick; --exact bans only the exact hostmask; --nick bans just the nick;
--user bans just the user, and --host bans just the host --user bans just the user, and --host bans just the host
You can combine the --nick, --user, and --host options as you choose. You can combine the --nick, --user, and --host options as you choose.
If --account is provided and the user is logged in and the network
supports account bans, this will ban the user's account instead.
<channel> is only necessary if the message isn't sent in the channel itself. <channel> is only necessary if the message isn't sent in the channel itself.
""" """
self._ban(irc, msg, args, self._ban(irc, msg, args,
channel, optlist, bannedNick, expiry, reason, True) channel, optlist, bannedNick, expiry, reason, True)
kban = wrap(kban, kban = wrap(kban,
['op', ['op',
getopts({'exact':'', 'nick':'', 'user':'', 'host':''}), getopts({'exact':'', 'nick':'', 'user':'', 'host':'',
'account': ''}),
('haveHalfop+', _('kick or ban someone')), ('haveHalfop+', _('kick or ban someone')),
'nickInChannel', 'nickInChannel',
optional('expiry', 0), optional('expiry', 0),
@ -343,13 +346,16 @@ class Channel(callbacks.Plugin):
don't specify a number of seconds) it will ban the person indefinitely. don't specify a number of seconds) it will ban the person indefinitely.
--exact can be used to specify an exact hostmask. --exact can be used to specify an exact hostmask.
You can combine the --nick, --user, and --host options as you choose. You can combine the --nick, --user, and --host options as you choose.
If --account is provided and the user is logged in and the network
supports account bans, this will ban the user's account instead.
<channel> is only necessary if the message isn't sent in the channel itself. <channel> is only necessary if the message isn't sent in the channel itself.
""" """
self._ban(irc, msg, args, self._ban(irc, msg, args,
channel, optlist, bannedNick, expiry, None, False) channel, optlist, bannedNick, expiry, None, False)
iban = wrap(iban, iban = wrap(iban,
['op', ['op',
getopts({'exact':'', 'nick':'', 'user':'', 'host':''}), getopts({'exact':'', 'nick':'', 'user':'', 'host':'',
'account': ''}),
('haveHalfop+', _('ban someone')), ('haveHalfop+', _('ban someone')),
first('nick', 'hostmask'), first('nick', 'hostmask'),
optional('expiry', 0)]) optional('expiry', 0)])
@ -362,18 +368,22 @@ class Channel(callbacks.Plugin):
try: try:
bannedHostmask = irc.state.nickToHostmask(target) bannedHostmask = irc.state.nickToHostmask(target)
banmaskstyle = conf.supybot.protocols.irc.banmask banmaskstyle = conf.supybot.protocols.irc.banmask
banmask = banmaskstyle.makeBanmask(bannedHostmask, [o[0] for o in optlist]) banmasks = banmaskstyle.makeExtBanmasks(
bannedHostmask, [o[0] for o in optlist],
channel=channel, network=irc.network)
except KeyError: except KeyError:
if not conf.supybot.protocols.irc.strictRfc() and \ if not conf.supybot.protocols.irc.strictRfc() and \
target.startswith('$'): target.startswith('$'):
# Select the last part, or the whole target: # Select the last part, or the whole target:
bannedNick = target.split(':')[-1] bannedNick = target.split(':')[-1]
banmask = bannedHostmask = target bannedHostmask = target
banmasks = [bannedHostmask]
else: else:
irc.error(format(_('I haven\'t seen %s.'), bannedNick), Raise=True) irc.error(format(_('I haven\'t seen %s.'), bannedNick), Raise=True)
else: else:
bannedNick = ircutils.nickFromHostmask(target) bannedNick = ircutils.nickFromHostmask(target)
banmask = bannedHostmask = target bannedHostmask = target
banmasks = [bannedHostmask]
if not irc.isNick(bannedNick): if not irc.isNick(bannedNick):
self.log.warning('%q tried to kban a non nick: %q', self.log.warning('%q tried to kban a non nick: %q',
msg.prefix, bannedNick) msg.prefix, bannedNick)
@ -389,7 +399,10 @@ class Channel(callbacks.Plugin):
if not reason: if not reason:
reason = msg.nick reason = msg.nick
capability = ircdb.makeChannelCapability(channel, 'op') capability = ircdb.makeChannelCapability(channel, 'op')
# Check (again) that they're not trying to make us kickban ourself. # Check (again) that they're not trying to make us kickban ourself.
self_account_extban = ircutils.accountExtban(irc, irc.nick)
for banmask in banmasks:
if ircutils.hostmaskPatternEqual(banmask, irc.prefix): if ircutils.hostmaskPatternEqual(banmask, irc.prefix):
if ircutils.hostmaskPatternEqual(bannedHostmask, irc.prefix): if ircutils.hostmaskPatternEqual(bannedHostmask, irc.prefix):
self.log.warning('%q tried to make me kban myself.',msg.prefix) self.log.warning('%q tried to make me kban myself.',msg.prefix)
@ -398,21 +411,35 @@ class Channel(callbacks.Plugin):
else: else:
self.log.warning('Using exact hostmask since banmask would ' self.log.warning('Using exact hostmask since banmask would '
'ban myself.') 'ban myself.')
banmask = bannedHostmask banmasks = [bannedHostmask]
elif self_account_extban is not None \
and banmask.lower() == self_account_extban.lower():
self.log.warning('%q tried to make me kban myself.',msg.prefix)
irc.error(_('I cowardly refuse to ban myself.'))
return
# Now, let's actually get to it. Check to make sure they have # Now, let's actually get to it. Check to make sure they have
# #channel,op and the bannee doesn't have #channel,op; or that the # #channel,op and the bannee doesn't have #channel,op; or that the
# bannee and the banner are both the same person. # bannee and the banner are both the same person.
def doBan(): def doBan():
if irc.state.channels[channel].isOp(bannedNick): if irc.state.channels[channel].isOp(bannedNick):
irc.queueMsg(ircmsgs.deop(channel, bannedNick)) irc.queueMsg(ircmsgs.deop(channel, bannedNick))
irc.queueMsg(ircmsgs.ban(channel, banmask)) irc.queueMsg(ircmsgs.bans(channel, banmasks))
if kick: if kick:
irc.queueMsg(ircmsgs.kick(channel, bannedNick, reason)) irc.queueMsg(ircmsgs.kick(channel, bannedNick, reason))
if expiry > 0: if expiry > 0:
def f(): def f():
if channel in irc.state.channels and \ if channel not in irc.state.channels:
banmask in irc.state.channels[channel].bans: return
irc.queueMsg(ircmsgs.unban(channel, banmask)) remaining_banmasks = [
banmask
for banmask in banmasks
if banmask in irc.state.channels[channel].bans
]
if remaining_banmasks:
irc.queueMsg(ircmsgs.unbans(
channel, remaining_banmasks))
schedule.addEvent(f, expiry) schedule.addEvent(f, expiry)
if bannedNick == msg.nick: if bannedNick == msg.nick:
doBan() doBan()
@ -583,7 +610,7 @@ class Channel(callbacks.Plugin):
hostmask = wrap(hostmask, ['op', ('haveHalfop+', _('ban someone')), 'text']) hostmask = wrap(hostmask, ['op', ('haveHalfop+', _('ban someone')), 'text'])
@internationalizeDocstring @internationalizeDocstring
def add(self, irc, msg, args, channel, banmask, expires): def add(self, irc, msg, args, channel, banmasks, expires):
"""[<channel>] <nick|hostmask> [<expires>] """[<channel>] <nick|hostmask> [<expires>]
If you have the #channel,op capability, this will effect a If you have the #channel,op capability, this will effect a
@ -597,10 +624,15 @@ class Channel(callbacks.Plugin):
channel itself. channel itself.
""" """
c = ircdb.channels.getChannel(channel) c = ircdb.channels.getChannel(channel)
if isinstance(banmasks, str):
banmasks = [banmasks]
for banmask in banmasks:
c.addBan(banmask, expires) c.addBan(banmask, expires)
ircdb.channels.setChannel(channel, c) ircdb.channels.setChannel(channel, c)
irc.replySuccess() irc.replySuccess()
add = wrap(add, ['op', first('hostmask', 'banmask'), additional('expiry', 0)]) add = wrap(add, ['op',
first('hostmask', 'extbanmasks'),
additional('expiry', 0)])
@internationalizeDocstring @internationalizeDocstring
def remove(self, irc, msg, args, channel, banmask): def remove(self, irc, msg, args, channel, banmask):

View File

@ -161,9 +161,13 @@ class ChannelTestCase(ChannelPluginTestCase):
self.assertTrue(m.command == 'MODE' and self.assertTrue(m.command == 'MODE' and
m.args == (self.channel, '+v', 'bar')) m.args == (self.channel, '+v', 'bar'))
def assertKban(self, query, hostmask, **kwargs): def assertKban(self, query, *hostmasks, **kwargs):
m = self.getMsg(query, **kwargs) m = self.getMsg(query, **kwargs)
self.assertEqual(m, ircmsgs.ban(self.channel, hostmask)) self.assertEqual(m.command, "MODE", m)
self.assertEqual(m.args[0], self.channel, m)
self.assertEqual(m.args[1], "+" + "b" * len(hostmasks), m)
self.assertCountEqual(m.args[2:], hostmasks, m)
m = self.getMsg(' ') m = self.getMsg(' ')
self.assertEqual(m.command, 'KICK') self.assertEqual(m.command, 'KICK')
def assertBan(self, query, hostmask, **kwargs): def assertBan(self, query, hostmask, **kwargs):
@ -185,6 +189,30 @@ class ChannelTestCase(ChannelPluginTestCase):
self.assertBan('iban $a:nyuszika7h', '$a:nyuszika7h') self.assertBan('iban $a:nyuszika7h', '$a:nyuszika7h')
self.assertNotError('unban $a:nyuszika7h') self.assertNotError('unban $a:nyuszika7h')
def testWontIbanItself(self):
self.irc.state.supported['ACCOUNTEXTBAN'] = 'a,account'
self.irc.state.supported['EXTBAN'] = '~,abc'
self.irc.feedMsg(ircmsgs.join(self.channel,
prefix='foobar!user@host.domain.tld'))
self.irc.feedMsg(ircmsgs.op(self.channel, self.irc.nick))
# not authenticated, falls back to hostname and notices the match
self.assertError('iban --account ' + self.nick)
self.irc.feedMsg(ircmsgs.IrcMsg(prefix=self.prefix, command='ACCOUNT',
args=['botaccount']))
# notices the matching account
self.assertError('iban --account ' + self.nick)
self.irc.feedMsg(ircmsgs.IrcMsg(prefix='othernick!otheruser@otherhost',
command='ACCOUNT',
args=['botaccount']))
# ditto
self.assertError('iban --account othernick')
def testKban(self): def testKban(self):
self.irc.prefix = 'something!else@somehwere.else' self.irc.prefix = 'something!else@somehwere.else'
self.irc.nick = 'something' self.irc.nick = 'something'
@ -219,11 +247,108 @@ class ChannelTestCase(ChannelPluginTestCase):
self.assertRegexp('kban adlkfajsdlfkjsd', 'adlkfajsdlfkjsd is not in') self.assertRegexp('kban adlkfajsdlfkjsd', 'adlkfajsdlfkjsd is not in')
def testAccountKbanNoAccount(self):
self.irc.prefix = 'something!else@somehwere.else'
self.irc.nick = 'something'
self.irc.state.supported['ACCOUNTEXTBAN'] = 'a,account'
self.irc.state.supported['EXTBAN'] = '~,abc'
def join():
self.irc.feedMsg(ircmsgs.join(
self.channel, prefix='foobar!user@host.domain.tld'))
join()
self.irc.feedMsg(ircmsgs.op(self.channel, self.irc.nick))
self.assertKban('kban --account --exact foobar',
'foobar!user@host.domain.tld')
join()
self.assertKban('kban --account foobar',
'*!*@host.domain.tld')
join()
with conf.supybot.protocols.irc.banmask.context(['user', 'host']):
# falls back from --account to config
self.assertKban('kban --account foobar',
'*!user@host.domain.tld')
join()
with conf.supybot.protocols.irc.banmask.context(['account']):
# falls back from --account to config, then to only the host
self.assertKban('kban --account foobar',
'*!*@host.domain.tld')
join()
self.assertKban('kban --account --host foobar',
'*!*@host.domain.tld')
def testAccountKbanLoggedOut(self):
self.irc.prefix = 'something!else@somehwere.else'
self.irc.nick = 'something'
self.irc.state.supported['ACCOUNTEXTBAN'] = 'a,account'
self.irc.state.supported['EXTBAN'] = '~,abc'
self.irc.feedMsg(ircmsgs.IrcMsg(
prefix='foobar!user@host.domain.tld',
command='ACCOUNT', args=['*']))
def join():
self.irc.feedMsg(ircmsgs.join(
self.channel, prefix='foobar!user@host.domain.tld'))
join()
self.irc.feedMsg(ircmsgs.op(self.channel, self.irc.nick))
self.assertKban('kban --account --exact foobar',
'foobar!user@host.domain.tld')
join()
self.assertKban('kban --account foobar',
'*!*@host.domain.tld')
join()
with conf.supybot.protocols.irc.banmask.context(['user', 'host']):
# falls back from --account to config
self.assertKban('kban --account foobar',
'*!user@host.domain.tld')
join()
with conf.supybot.protocols.irc.banmask.context(['account']):
# falls back from --account to config, then to only the host
self.assertKban('kban --account foobar',
'*!*@host.domain.tld')
join()
self.assertKban('kban --account --host foobar',
'*!*@host.domain.tld')
def testAccountKbanLoggedIn(self):
self.irc.prefix = 'something!else@somehwere.else'
self.irc.nick = 'something'
self.irc.state.supported['ACCOUNTEXTBAN'] = 'a,account'
self.irc.state.supported['EXTBAN'] = '~,abc'
self.irc.feedMsg(ircmsgs.IrcMsg(
prefix='foobar!user@host.domain.tld',
command='ACCOUNT', args=['account1']))
def join():
self.irc.feedMsg(ircmsgs.join(
self.channel, prefix='foobar!user@host.domain.tld'))
join()
self.irc.feedMsg(ircmsgs.op(self.channel, self.irc.nick))
for style in (['exact'], ['account', 'exact']):
with conf.supybot.protocols.irc.banmask.context(style):
self.assertKban('kban --account --exact foobar',
'~a:account1', 'foobar!user@host.domain.tld')
join()
self.assertKban('kban --account foobar',
'~a:account1')
join()
self.assertKban('kban --account --host foobar',
'~a:account1', '*!*@host.domain.tld')
join()
with conf.supybot.protocols.irc.banmask.context(['account', 'exact']):
self.assertKban('kban foobar',
'~a:account1', 'foobar!user@host.domain.tld')
join()
with conf.supybot.protocols.irc.banmask.context(['account', 'host']):
self.assertKban('kban foobar',
'~a:account1', '*!*@host.domain.tld')
join()
def testBan(self): def testBan(self):
with conf.supybot.protocols.irc.banmask.context(['exact']): with conf.supybot.protocols.irc.banmask.context(['exact']):
self.assertNotError('ban add foo!bar@baz') self.assertNotError('ban add foo!bar@baz')
self.assertNotError('ban remove foo!bar@baz') self.assertNotError('ban remove foo!bar@baz')
orig = conf.supybot.protocols.irc.strictRfc()
with conf.supybot.protocols.irc.strictRfc.context(True): with conf.supybot.protocols.irc.strictRfc.context(True):
# something wonky is going on here. irc.error (src/Channel.py|449) # something wonky is going on here. irc.error (src/Channel.py|449)
# is being called but the assert is failing # is being called but the assert is failing
@ -249,7 +374,6 @@ class ChannelTestCase(ChannelPluginTestCase):
'"foobar!*@baz" (never expires)') '"foobar!*@baz" (never expires)')
def testIgnore(self): def testIgnore(self):
orig = conf.supybot.protocols.irc.banmask()
def ignore(given, expect=None): def ignore(given, expect=None):
if expect is None: if expect is None:
expect = given expect = given
@ -257,6 +381,7 @@ class ChannelTestCase(ChannelPluginTestCase):
self.assertResponse('channel ignore list', "'%s'" % expect) self.assertResponse('channel ignore list', "'%s'" % expect)
self.assertNotError('channel ignore remove %s' % expect) self.assertNotError('channel ignore remove %s' % expect)
self.assertRegexp('channel ignore list', 'not currently') self.assertRegexp('channel ignore list', 'not currently')
with conf.supybot.protocols.irc.banmask.context(['host']):
ignore('foo!bar@baz', '*!*@baz') ignore('foo!bar@baz', '*!*@baz')
ignore('foo!*@*') ignore('foo!*@*')
with conf.supybot.protocols.irc.banmask.context(['exact']): with conf.supybot.protocols.irc.banmask.context(['exact']):

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -23,17 +23,17 @@ Commands
.. _command-channelstats-channelstats: .. _command-channelstats-channelstats:
channelstats [<channel>] ``channelstats [<channel>]``
Returns the statistics for <channel>. <channel> is only necessary if the message isn't sent on the channel itself. Returns the statistics for <channel>. <channel> is only necessary if the message isn't sent on the channel itself.
.. _command-channelstats-rank: .. _command-channelstats-rank:
rank [<channel>] <stat expression> ``rank [<channel>] <stat expression>``
Returns the ranking of users according to the given stat expression. Valid variables in the stat expression include 'msgs', 'chars', 'words', 'smileys', 'frowns', 'actions', 'joins', 'parts', 'quits', 'kicks', 'kicked', 'topics', and 'modes'. Any simple mathematical expression involving those variables is permitted. Returns the ranking of users according to the given stat expression. Valid variables in the stat expression include 'msgs', 'chars', 'words', 'smileys', 'frowns', 'actions', 'joins', 'parts', 'quits', 'kicks', 'kicked', 'topics', and 'modes'. Any simple mathematical expression involving those variables is permitted.
.. _command-channelstats-stats: .. _command-channelstats-stats:
stats [<channel>] [<name>] ``stats [<channel>] [<name>]``
Returns the statistics for <name> on <channel>. <channel> is only necessary if the message isn't sent on the channel itself. If <name> isn't given, it defaults to the user sending the command. Returns the statistics for <name> on <channel>. <channel> is only necessary if the message isn't sent on the channel itself. If <name> isn't given, it defaults to the user sending the command.
.. _conf-ChannelStats: .. _conf-ChannelStats:

View File

@ -45,6 +45,10 @@ def configure(advanced):
conf.registerPlugin('ChannelStats', True) conf.registerPlugin('ChannelStats', True)
class Smileys(registry.Value): class Smileys(registry.Value):
def __init__(self, *args, **kwargs):
self.s = ''
super().__init__(*args, **kwargs)
def set(self, s): def set(self, s):
L = s.split() L = s.split()
self.setValue(L) self.setValue(L)

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -26,92 +26,92 @@ Commands
.. _command-conditional-cand: .. _command-conditional-cand:
cand <cond1> [<cond2> ... <condN>] ``cand <cond1> [<cond2> ... <condN>]``
Returns true if all conditions supplied evaluate to true. Returns true if all conditions supplied evaluate to true.
.. _command-conditional-ceq: .. _command-conditional-ceq:
ceq <item1> <item2> ``ceq <item1> <item2>``
Does a string comparison on <item1> and <item2>. Returns true if they are equal. Does a string comparison on <item1> and <item2>. Returns true if they are equal.
.. _command-conditional-cerror: .. _command-conditional-cerror:
cerror <testcommand> ``cerror <testcommand>``
Runs <testcommand> and returns true if it raises an error; false otherwise. Runs <testcommand> and returns true if it raises an error; false otherwise.
.. _command-conditional-cif: .. _command-conditional-cif:
cif <condition> <ifcommand> <elsecommand> ``cif <condition> <ifcommand> <elsecommand>``
Runs <ifcommand> if <condition> evaluates to true, runs <elsecommand> if it evaluates to false. Use other logical operators defined in this plugin and command nesting to your advantage here. Runs <ifcommand> if <condition> evaluates to true, runs <elsecommand> if it evaluates to false. Use other logical operators defined in this plugin and command nesting to your advantage here.
.. _command-conditional-cor: .. _command-conditional-cor:
cor <cond1> [<cond2> ... <condN>] ``cor <cond1> [<cond2> ... <condN>]``
Returns true if any one of conditions supplied evaluates to true. Returns true if any one of conditions supplied evaluates to true.
.. _command-conditional-cxor: .. _command-conditional-cxor:
cxor <cond1> [<cond2> ... <condN>] ``cxor <cond1> [<cond2> ... <condN>]``
Returns true if only one of conditions supplied evaluates to true. Returns true if only one of conditions supplied evaluates to true.
.. _command-conditional-ge: .. _command-conditional-ge:
ge <item1> <item2> ``ge <item1> <item2>``
Does a string comparison on <item1> and <item2>. Returns true if <item1> is greater than or equal to <item2>. Does a string comparison on <item1> and <item2>. Returns true if <item1> is greater than or equal to <item2>.
.. _command-conditional-gt: .. _command-conditional-gt:
gt <item1> <item2> ``gt <item1> <item2>``
Does a string comparison on <item1> and <item2>. Returns true if <item1> is greater than <item2>. Does a string comparison on <item1> and <item2>. Returns true if <item1> is greater than <item2>.
.. _command-conditional-le: .. _command-conditional-le:
le <item1> <item2> ``le <item1> <item2>``
Does a string comparison on <item1> and <item2>. Returns true if <item1> is less than or equal to <item2>. Does a string comparison on <item1> and <item2>. Returns true if <item1> is less than or equal to <item2>.
.. _command-conditional-lt: .. _command-conditional-lt:
lt <item1> <item2> ``lt <item1> <item2>``
Does a string comparison on <item1> and <item2>. Returns true if <item1> is less than <item2>. Does a string comparison on <item1> and <item2>. Returns true if <item1> is less than <item2>.
.. _command-conditional-match: .. _command-conditional-match:
match [--case-insensitive] <item1> <item2> ``match [--case-insensitive] <item1> <item2>``
Determines if <item1> is a substring of <item2>. Returns true if <item1> is contained in <item2>. Will only match case if --case-insensitive is not given. Determines if <item1> is a substring of <item2>. Returns true if <item1> is contained in <item2>. Will only match case if --case-insensitive is not given.
.. _command-conditional-nceq: .. _command-conditional-nceq:
nceq <item1> <item2> ``nceq <item1> <item2>``
Does a numeric comparison on <item1> and <item2>. Returns true if they are equal. Does a numeric comparison on <item1> and <item2>. Returns true if they are equal.
.. _command-conditional-ne: .. _command-conditional-ne:
ne <item1> <item2> ``ne <item1> <item2>``
Does a string comparison on <item1> and <item2>. Returns true if they are not equal. Does a string comparison on <item1> and <item2>. Returns true if they are not equal.
.. _command-conditional-nge: .. _command-conditional-nge:
nge <item1> <item2> ``nge <item1> <item2>``
Does a numeric comparison on <item1> and <item2>. Returns true if <item1> is greater than or equal to <item2>. Does a numeric comparison on <item1> and <item2>. Returns true if <item1> is greater than or equal to <item2>.
.. _command-conditional-ngt: .. _command-conditional-ngt:
ngt <item1> <item2> ``ngt <item1> <item2>``
Does a numeric comparison on <item1> and <item2>. Returns true if <item1> is greater than <item2>. Does a numeric comparison on <item1> and <item2>. Returns true if <item1> is greater than <item2>.
.. _command-conditional-nle: .. _command-conditional-nle:
nle <item1> <item2> ``nle <item1> <item2>``
Does a numeric comparison on <item1> and <item2>. Returns true if <item1> is less than or equal to <item2>. Does a numeric comparison on <item1> and <item2>. Returns true if <item1> is less than or equal to <item2>.
.. _command-conditional-nlt: .. _command-conditional-nlt:
nlt <item1> <item2> ``nlt <item1> <item2>``
Does a numeric comparison on <item1> and <item2>. Returns true if <item1> is less than <item2>. Does a numeric comparison on <item1> and <item2>. Returns true if <item1> is less than <item2>.
.. _command-conditional-nne: .. _command-conditional-nne:
nne <item1> <item2> ``nne <item1> <item2>``
Does a numeric comparison on <item1> and <item2>. Returns true if they are not equal. Does a numeric comparison on <item1> and <item2>. Returns true if they are not equal.
.. _conf-Conditional: .. _conf-Conditional:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -21,72 +21,72 @@ Commands
.. _command-config-channel: .. _command-config-channel:
channel [<network>] [<channel>] <name> [<value>] ``channel [<network>] [<channel>] <name> [<value>]``
If <value> is given, sets the channel configuration variable for <name> to <value> for <channel> on the <network>. Otherwise, returns the current channel configuration value of <name>. <channel> is only necessary if the message isn't sent in the channel itself. More than one channel may be given at once by separating them with commas. <network> defaults to the current network. If <value> is given, sets the channel configuration variable for <name> to <value> for <channel> on the <network>. Otherwise, returns the current channel configuration value of <name>. <channel> is only necessary if the message isn't sent in the channel itself. More than one channel may be given at once by separating them with commas. <network> defaults to the current network.
.. _command-config-config: .. _command-config-config:
config <name> [<value>] ``config <name> [<value>]``
If <value> is given, sets the value of <name> to <value>. Otherwise, returns the current value of <name>. You may omit the leading "supybot." in the name if you so choose. If <value> is given, sets the value of <name> to <value>. Otherwise, returns the current value of <name>. You may omit the leading "supybot." in the name if you so choose.
.. _command-config-default: .. _command-config-default:
default <name> ``default <name>``
Returns the default value of the configuration variable <name>. Returns the default value of the configuration variable <name>.
.. _command-config-export: .. _command-config-export:
export <filename> ``export <filename>``
Exports the public variables of your configuration to <filename>. If you want to show someone your configuration file, but you don't want that person to be able to see things like passwords, etc., this command will export a "sanitized" configuration file suitable for showing publicly. Exports the public variables of your configuration to <filename>. If you want to show someone your configuration file, but you don't want that person to be able to see things like passwords, etc., this command will export a "sanitized" configuration file suitable for showing publicly.
.. _command-config-help: .. _command-config-help:
help <name> ``help <name>``
Returns the description of the configuration variable <name>. Returns the description of the configuration variable <name>.
.. _command-config-list: .. _command-config-list:
list <group> ``list <group>``
Returns the configuration variables available under the given configuration <group>. If a variable has values under it, it is preceded by an '@' sign. If a variable is channel-specific, that is, it can be separately configured for each channel using the 'channel' command in this plugin, it is preceded by an '#' sign. And if a variable is a network-specific, it is preceded by a ':' sign. Returns the configuration variables available under the given configuration <group>. If a variable has values under it, it is preceded by an '@' sign. If a variable is channel-specific, that is, it can be separately configured for each channel using the 'channel' command in this plugin, it is preceded by an '#' sign. And if a variable is a network-specific, it is preceded by a ':' sign.
.. _command-config-network: .. _command-config-network:
network [<network>] <name> [<value>] ``network [<network>] <name> [<value>]``
If <value> is given, sets the network configuration variable for <name> to <value> for <network>. Otherwise, returns the current network configuration value of <name>. <network> defaults to the current network. If <value> is given, sets the network configuration variable for <name> to <value> for <network>. Otherwise, returns the current network configuration value of <name>. <network> defaults to the current network.
.. _command-config-reload: .. _command-config-reload:
reload takes no arguments ``reload takes no arguments``
Reloads the various configuration files (user database, channel database, registry, etc.). Reloads the various configuration files (user database, channel database, registry, etc.).
.. _command-config-reset.channel: .. _command-config-reset.channel:
reset channel [<network>] [<channel>] <name> ``reset channel [<network>] [<channel>] <name>``
Resets the channel-specific value of variable <name>, so that it will match the network-specific value (or the global one if the latter isn't set). <network> and <channel> default to the current network and channel. Resets the channel-specific value of variable <name>, so that it will match the network-specific value (or the global one if the latter isn't set). <network> and <channel> default to the current network and channel.
.. _command-config-reset.network: .. _command-config-reset.network:
reset network [<network>] [<channel>] <name> ``reset network [<network>] [<channel>] <name>``
Resets the network-specific value of variable <name>, so that it will match the global. <network> defaults to the current network and channel. Resets the network-specific value of variable <name>, so that it will match the global. <network> defaults to the current network and channel.
.. _command-config-search: .. _command-config-search:
search <word> ``search <word>``
Searches for <word> in the current configuration variables. Searches for <word> in the current configuration variables.
.. _command-config-searchhelp: .. _command-config-searchhelp:
searchhelp <phrase> ``searchhelp <phrase>``
Searches for <phrase> in the help of current configuration variables. Searches for <phrase> in the help of current configuration variables.
.. _command-config-searchvalues: .. _command-config-searchvalues:
searchvalues <word> ``searchvalues <word>``
Searches for <word> in the values of current configuration variables. Searches for <word> in the values of current configuration variables.
.. _command-config-setdefault: .. _command-config-setdefault:
setdefault <name> ``setdefault <name>``
Resets the configuration variable <name> to its default value. Use commands 'reset channel' and 'reset network' instead to make a channel- or network- specific value inherit from the global one. Resets the configuration variable <name> to its default value. Use commands 'reset channel' and 'reset network' instead to make a channel- or network- specific value inherit from the global one.
.. _conf-Config: .. _conf-Config:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -25,7 +25,7 @@ Commands
.. _command-ctcp-version: .. _command-ctcp-version:
version [<channel>] [--nicks] ``version [<channel>] [--nicks]``
Sends a CTCP VERSION to <channel>, returning the various version strings returned. It waits for 10 seconds before returning the versions received at that point. If --nicks is given, nicks are associated with the version strings; otherwise, only the version strings are given. Sends a CTCP VERSION to <channel>, returning the various version strings returned. It waits for 10 seconds before returning the versions received at that point. If --nicks is given, nicks are associated with the version strings; otherwise, only the version strings are given.
.. _conf-Ctcp: .. _conf-Ctcp:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -25,7 +25,7 @@ Commands
.. _command-ddg-search: .. _command-ddg-search:
search <text> ``search <text>``
Searches for <text> on DuckDuckGo's web search. Searches for <text> on DuckDuckGo's web search.
.. _conf-DDG: .. _conf-DDG:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -39,7 +39,7 @@ class DDGTestCase(PluginTestCase):
def testSearch(self): def testSearch(self):
self.assertRegexp( self.assertRegexp(
r'ddg search wikipedia', 'Wikipedia.*? - .*?https?\:\/\/') 'ddg search wikipedia', r'Wikipedia.*? - .*?https?\:\/\/')
self.assertRegexp( self.assertRegexp(
'ddg search en.wikipedia.org', 'ddg search en.wikipedia.org',
'Wikipedia, the free encyclopedia\x02 - ' 'Wikipedia, the free encyclopedia\x02 - '

View File

@ -23,52 +23,52 @@ Commands
.. _command-debug-channeldb: .. _command-debug-channeldb:
channeldb [<channel>] ``channeldb [<channel>]``
Returns the result of the channeldb converter. Returns the result of the channeldb converter.
.. _command-debug-collect: .. _command-debug-collect:
collect [<times>] ``collect [<times>]``
Does <times> gc collections, returning the number of objects collected each time. <times> defaults to 1. Does <times> gc collections, returning the number of objects collected each time. <times> defaults to 1.
.. _command-debug-environ: .. _command-debug-environ:
environ takes no arguments ``environ takes no arguments``
Returns the environment of the supybot process. Returns the environment of the supybot process.
.. _command-debug-eval: .. _command-debug-eval:
eval <expression> ``eval <expression>``
Evaluates <expression> (which should be a Python expression) and returns its value. If an exception is raised, reports the exception (and logs the traceback to the bot's logfile). Evaluates <expression> (which should be a Python expression) and returns its value. If an exception is raised, reports the exception (and logs the traceback to the bot's logfile).
.. _command-debug-exec: .. _command-debug-exec:
exec <statement> ``exec <statement>``
Execs <code>. Returns success if it didn't raise any exceptions. Execs <code>. Returns success if it didn't raise any exceptions.
.. _command-debug-exn: .. _command-debug-exn:
exn <exception name> ``exn <exception name>``
Raises the exception matching <exception name>. Raises the exception matching <exception name>.
.. _command-debug-sendquote: .. _command-debug-sendquote:
sendquote <raw IRC message> ``sendquote <raw IRC message>``
Sends (not queues) the raw IRC message given. Sends (not queues) the raw IRC message given.
.. _command-debug-settrace: .. _command-debug-settrace:
settrace [<filename>] ``settrace [<filename>]``
Starts tracing function calls to <filename>. If <filename> is not given, sys.stdout is used. This causes much output. Starts tracing function calls to <filename>. If <filename> is not given, sys.stdout is used. This causes much output.
.. _command-debug-simpleeval: .. _command-debug-simpleeval:
simpleeval <expression> ``simpleeval <expression>``
Evaluates the given expression. Evaluates the given expression.
.. _command-debug-unsettrace: .. _command-debug-unsettrace:
unsettrace takes no arguments ``unsettrace takes no arguments``
Stops tracing function calls on stdout. Stops tracing function calls on stdout.
.. _conf-Debug: .. _conf-Debug:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -15,19 +15,27 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
#: plugin.py:50 #: plugin.py:31
#, docstring
msgid ""
"\n"
"This is for debugging purposes only and you shouldn't load this it unless\n"
"a Supybot developer requests you to debug some issue.\n"
msgstr ""
#: plugin.py:48
#, docstring #, docstring
msgid "Pseudo-module" msgid "Pseudo-module"
msgstr "" msgstr ""
#: plugin.py:77 #: plugin.py:75
#, docstring #, docstring
msgid "" msgid ""
"This plugin provides debugging abilities for Supybot. It\n" "This plugin provides debugging abilities for Supybot. It\n"
" should not be loaded with a default installation." " should not be loaded with a default installation."
msgstr "" msgstr ""
#: plugin.py:98 #: plugin.py:96
#, docstring #, docstring
msgid "" msgid ""
"<expression>\n" "<expression>\n"
@ -38,7 +46,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:117 #: plugin.py:115
#, docstring #, docstring
msgid "" msgid ""
"<statement>\n" "<statement>\n"
@ -47,7 +55,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:127 #: plugin.py:125
#, docstring #, docstring
msgid "" msgid ""
"<expression>\n" "<expression>\n"
@ -56,7 +64,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:139 #: plugin.py:137
#, docstring #, docstring
msgid "" msgid ""
"<exception name>\n" "<exception name>\n"
@ -65,7 +73,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:152 #: plugin.py:150
#, docstring #, docstring
msgid "" msgid ""
"<raw IRC message>\n" "<raw IRC message>\n"
@ -74,7 +82,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:161 #: plugin.py:159
#, docstring #, docstring
msgid "" msgid ""
"[<filename>]\n" "[<filename>]\n"
@ -84,7 +92,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:176 #: plugin.py:174
#, docstring #, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
@ -93,7 +101,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:186 #: plugin.py:184
#, docstring #, docstring
msgid "" msgid ""
"[<channel>]\n" "[<channel>]\n"
@ -102,7 +110,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:194 #: plugin.py:192
#, docstring #, docstring
msgid "" msgid ""
"[<times>]\n" "[<times>]\n"
@ -112,7 +120,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:207 #: plugin.py:205
#, docstring #, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"

View File

@ -26,22 +26,22 @@ Commands
.. _command-dict-dict: .. _command-dict-dict:
dict [<dictionary>] <word> ``dict [<dictionary>] <word>``
Looks up the definition of <word> on the dictd server specified by the supybot.plugins.Dict.server config variable. Looks up the definition of <word> on the dictd server specified by the supybot.plugins.Dict.server config variable.
.. _command-dict-dictionaries: .. _command-dict-dictionaries:
dictionaries takes no arguments ``dictionaries takes no arguments``
Returns the dictionaries valid for the dict command. Returns the dictionaries valid for the dict command.
.. _command-dict-random: .. _command-dict-random:
random takes no arguments ``random takes no arguments``
Returns a random valid dictionary. Returns a random valid dictionary.
.. _command-dict-synonym: .. _command-dict-synonym:
synonym <word> [<word> ...] ``synonym <word> [<word> ...]``
Gets a random synonym from the Moby Thesaurus (moby-thesaurus) database. If given many words, gets a random synonym for each of them. Quote phrases to have them treated as one lookup word. Gets a random synonym from the Moby Thesaurus (moby-thesaurus) database. If given many words, gets a random synonym for each of them. Quote phrases to have them treated as one lookup word.
.. _conf-Dict: .. _conf-Dict:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -29,32 +29,32 @@ Commands
.. _command-dunno-add: .. _command-dunno-add:
add [<channel>] <text> ``add [<channel>] <text>``
Adds <text> to the dunno database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Adds <text> to the dunno database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-dunno-change: .. _command-dunno-change:
change [<channel>] <id> <regexp> ``change [<channel>] <id> <regexp>``
Changes the dunno with id <id> according to the regular expression <regexp>. <channel> is only necessary if the message isn't sent in the channel itself. Changes the dunno with id <id> according to the regular expression <regexp>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-dunno-get: .. _command-dunno-get:
get [<channel>] <id> ``get [<channel>] <id>``
Gets the dunno with id <id> from the dunno database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Gets the dunno with id <id> from the dunno database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-dunno-remove: .. _command-dunno-remove:
remove [<channel>] <id> ``remove [<channel>] <id>``
Removes the dunno with id <id> from the dunno database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Removes the dunno with id <id> from the dunno database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-dunno-search: .. _command-dunno-search:
search [<channel>] [--{regexp,by} <value>] [<glob>] ``search [<channel>] [--{regexp,by} <value>] [<glob>]``
Searches for dunnos matching the criteria given. Searches for dunnos matching the criteria given.
.. _command-dunno-stats: .. _command-dunno-stats:
stats [<channel>] ``stats [<channel>]``
Returns the number of dunnos in the database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Returns the number of dunnos in the database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _conf-Dunno: .. _conf-Dunno:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -21,57 +21,57 @@ Commands
.. _command-factoids-alias: .. _command-factoids-alias:
alias [<channel>] <oldkey> <newkey> [<number>] ``alias [<channel>] <oldkey> <newkey> [<number>]``
Adds a new key <newkey> for factoid associated with <oldkey>. <number> is only necessary if there's more than one factoid associated with <oldkey>. The same action can be accomplished by using the 'learn' function with a new key but an existing (verbatim) factoid content. Adds a new key <newkey> for factoid associated with <oldkey>. <number> is only necessary if there's more than one factoid associated with <oldkey>. The same action can be accomplished by using the 'learn' function with a new key but an existing (verbatim) factoid content.
.. _command-factoids-change: .. _command-factoids-change:
change [<channel>] <key> <number> <regexp> ``change [<channel>] <key> <number> <regexp>``
Changes the factoid #<number> associated with <key> according to <regexp>. Changes the factoid #<number> associated with <key> according to <regexp>.
.. _command-factoids-forget: .. _command-factoids-forget:
forget [<channel>] <key> [<number>|*] ``forget [<channel>] <key> [<number>|*]``
Removes a key-fact relationship for key <key> from the factoids database. If there is more than one such relationship for this key, a number is necessary to determine which one should be removed. A * can be used to remove all relationships for <key>. If as a result, the key (factoid) remains without any relationships to a factoid (key), it shall be removed from the database. <channel> is only necessary if the message isn't sent in the channel itself. Removes a key-fact relationship for key <key> from the factoids database. If there is more than one such relationship for this key, a number is necessary to determine which one should be removed. A * can be used to remove all relationships for <key>. If as a result, the key (factoid) remains without any relationships to a factoid (key), it shall be removed from the database. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-factoids-info: .. _command-factoids-info:
info [<channel>] <key> ``info [<channel>] <key>``
Gives information about the factoid(s) associated with <key>. <channel> is only necessary if the message isn't sent in the channel itself. Gives information about the factoid(s) associated with <key>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-factoids-learn: .. _command-factoids-learn:
learn [<channel>] <key> is <value> ``learn [<channel>] <key> is <value>``
Associates <key> with <value>. <channel> is only necessary if the message isn't sent on the channel itself. The word 'is' is necessary to separate the key from the value. It can be changed to another word via the learnSeparator registry value. Associates <key> with <value>. <channel> is only necessary if the message isn't sent on the channel itself. The word 'is' is necessary to separate the key from the value. It can be changed to another word via the learnSeparator registry value.
.. _command-factoids-lock: .. _command-factoids-lock:
lock [<channel>] <key> ``lock [<channel>] <key>``
Locks the factoid(s) associated with <key> so that they cannot be removed or added to. <channel> is only necessary if the message isn't sent in the channel itself. Locks the factoid(s) associated with <key> so that they cannot be removed or added to. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-factoids-random: .. _command-factoids-random:
random [<channel>] ``random [<channel>]``
Returns random factoids from the database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Returns random factoids from the database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-factoids-rank: .. _command-factoids-rank:
rank [<channel>] [--plain] [--alpha] [<number>] ``rank [<channel>] [--plain] [--alpha] [<number>]``
Returns a list of top-ranked factoid keys, sorted by usage count (rank). If <number> is not provided, the default number of factoid keys returned is set by the rankListLength registry value. If --plain option is given, rank numbers and usage counts are not included in output. If --alpha option is given in addition to --plain, keys are sorted alphabetically, instead of by rank. <channel> is only necessary if the message isn't sent in the channel itself. Returns a list of top-ranked factoid keys, sorted by usage count (rank). If <number> is not provided, the default number of factoid keys returned is set by the rankListLength registry value. If --plain option is given, rank numbers and usage counts are not included in output. If --alpha option is given in addition to --plain, keys are sorted alphabetically, instead of by rank. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-factoids-search: .. _command-factoids-search:
search [<channel>] [--values] [--regexp <value>] [--author <username>] [<glob> ...] ``search [<channel>] [--values] [--regexp <value>] [--author <username>] [<glob> ...]``
Searches the keyspace for keys matching <glob>. If --regexp is given, its associated value is taken as a regexp and matched against the keys. If --values is given, search the value space instead of the keyspace. Searches the keyspace for keys matching <glob>. If --regexp is given, its associated value is taken as a regexp and matched against the keys. If --values is given, search the value space instead of the keyspace.
.. _command-factoids-unlock: .. _command-factoids-unlock:
unlock [<channel>] <key> ``unlock [<channel>] <key>``
Unlocks the factoid(s) associated with <key> so that they can be removed or added to. <channel> is only necessary if the message isn't sent in the channel itself. Unlocks the factoid(s) associated with <key> so that they can be removed or added to. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-factoids-whatis: .. _command-factoids-whatis:
whatis [<channel>] [--raw] <key> [<number>] ``whatis [<channel>] [--raw] <key> [<number>]``
Looks up the value of <key> in the factoid database. If given a number, will return only that exact factoid. If '--raw' option is given, no variable substitution will take place on the factoid. <channel> is only necessary if the message isn't sent in the channel itself. Looks up the value of <key> in the factoid database. If given a number, will return only that exact factoid. If '--raw' option is given, no variable substitution will take place on the factoid. <channel> is only necessary if the message isn't sent in the channel itself.
.. _conf-Factoids: .. _conf-Factoids:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Factoids plugin for Limnoria\n" "Project-Id-Version: Factoids plugin for Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2014-12-20 14:33+0200\n" "PO-Revision-Date: 2014-12-20 14:33+0200\n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n" "Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: Finnish <>\n" "Language-Team: Finnish <>\n"
@ -448,11 +448,11 @@ msgstr ""
" sijaan.\n" " sijaan.\n"
" " " "
#: plugin.py:854 plugin.py:864 #: plugin.py:858 plugin.py:868
msgid "No keys matched that query." msgid "No keys matched that query."
msgstr "Yksikään avain ei täsmännyt hakuun." msgstr "Yksikään avain ei täsmännyt hakuun."
#: plugin.py:860 plugin.py:870 #: plugin.py:864 plugin.py:911
msgid "More than 100 keys matched that query; please narrow your query." msgid "More than 100 keys matched that query; please narrow your query."
msgstr "Yli 100 avainta täsmäsi tuohon hakuun; ole hyvä ja kavenna hakuasi." msgstr "Yli 100 avainta täsmäsi tuohon hakuun; ole hyvä ja kavenna hakuasi."

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: \n" "PO-Revision-Date: \n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Limnoria <progval@gmail.com>\n" "Language-Team: Limnoria <progval@gmail.com>\n"
@ -410,11 +410,11 @@ msgstr ""
"est donné, recherche parmi les valeurs, plutôt que parmi les clefs. <canal> " "est donné, recherche parmi les valeurs, plutôt que parmi les clefs. <canal> "
"n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même." "n'est nécessaire que si le message n'est pas envoyé sur le canal lui-même."
#: plugin.py:854 plugin.py:864 #: plugin.py:858 plugin.py:868
msgid "No keys matched that query." msgid "No keys matched that query."
msgstr "Aucune clef ne correspond à cette requête." msgstr "Aucune clef ne correspond à cette requête."
#: plugin.py:860 plugin.py:870 #: plugin.py:864 plugin.py:911
msgid "More than 100 keys matched that query; please narrow your query." msgid "More than 100 keys matched that query; please narrow your query."
msgstr "" msgstr ""
"Plus de 100 clefs correspondent à votre requête ; veuillez la préciser." "Plus de 100 clefs correspondent à votre requête ; veuillez la préciser."

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2011-07-18 13:05+0200\n" "PO-Revision-Date: 2011-07-18 13:05+0200\n"
"Last-Translator: skizzhg <skizzhg@gmx.com>\n" "Last-Translator: skizzhg <skizzhg@gmx.com>\n"
"Language-Team: Italian <skizzhg@gmx.com>\n" "Language-Team: Italian <skizzhg@gmx.com>\n"
@ -213,8 +213,8 @@ msgstr ""
" <numero> è necessario solo se c'è più di un factoid associato a " " <numero> è necessario solo se c'è più di un factoid associato a "
"<chiave vecchia>.\n" "<chiave vecchia>.\n"
"\n" "\n"
" La stessa cosa può essere ottenuta utilizzando la funzione \"learn" " La stessa cosa può essere ottenuta utilizzando la funzione "
"\"\n" "\"learn\"\n"
" con una nuova chiave su un factoid esistente.\n" " con una nuova chiave su un factoid esistente.\n"
" " " "
@ -446,11 +446,11 @@ msgstr ""
" specificato, cerca i valori piuttosto che le chiavi.\n" " specificato, cerca i valori piuttosto che le chiavi.\n"
" " " "
#: plugin.py:854 plugin.py:864 #: plugin.py:858 plugin.py:868
msgid "No keys matched that query." msgid "No keys matched that query."
msgstr "Nessuna chiave corrisponde a questa richiesta." msgstr "Nessuna chiave corrisponde a questa richiesta."
#: plugin.py:860 plugin.py:870 #: plugin.py:864 plugin.py:911
msgid "More than 100 keys matched that query; please narrow your query." msgid "More than 100 keys matched that query; please narrow your query."
msgstr "" msgstr ""
"A questa richiesta corrispondono più di 100 chiavi, restringi la ricerca." "A questa richiesta corrispondono più di 100 chiavi, restringi la ricerca."

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -307,11 +307,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:854 plugin.py:864 #: plugin.py:858 plugin.py:868
msgid "No keys matched that query." msgid "No keys matched that query."
msgstr "" msgstr ""
#: plugin.py:860 plugin.py:870 #: plugin.py:864 plugin.py:911
msgid "More than 100 keys matched that query; please narrow your query." msgid "More than 100 keys matched that query; please narrow your query."
msgstr "" msgstr ""

View File

@ -815,6 +815,7 @@ class Factoids(callbacks.Plugin, plugins.ChannelDBHandler):
join_factoids = False join_factoids = False
formats = [] formats = []
criteria = [] criteria = []
join_criteria = []
target = 'keys.key' target = 'keys.key'
predicateName = 'p' predicateName = 'p'
db = self.getDb(channel) db = self.getDb(channel)
@ -836,20 +837,23 @@ class Factoids(callbacks.Plugin, plugins.ChannelDBHandler):
criteria.append('TARGET LIKE ?') criteria.append('TARGET LIKE ?')
formats.append(self._sqlTrans(glob)) formats.append(self._sqlTrans(glob))
if join_factoids: def _join_factoids():
if 'factoids' not in tables: if 'factoids' not in tables:
tables.append('factoids') tables.append('factoids')
tables.append('relations') tables.append('relations')
criteria.append( join_criteria.append(
'factoids.id=relations.fact_id AND keys.id=relations.key_id' 'factoids.id=relations.fact_id AND keys.id=relations.key_id'
) )
if join_factoids:
_join_factoids()
cursor = db.cursor() cursor = db.cursor()
sql = """SELECT keys.key FROM %s WHERE %s""" % \ sql = """SELECT DISTINCT keys.key FROM %s WHERE %s""" % \
(', '.join(tables), ' AND '.join(criteria)) (', '.join(tables), ' AND '.join(criteria + join_criteria))
sql = sql + " ORDER BY keys.key" sql = sql + " ORDER BY keys.key"
sql = sql.replace('TARGET', target) sql = sql.replace('TARGET', target)
cursor.execute(sql, formats) cursor.execute(sql, formats)
if cursor.rowcount == 0: if cursor.rowcount == 0:
irc.reply(_('No keys matched that query.')) irc.reply(_('No keys matched that query.'))
elif cursor.rowcount == 1 and \ elif cursor.rowcount == 1 and \
@ -865,7 +869,44 @@ class Factoids(callbacks.Plugin, plugins.ChannelDBHandler):
elif len(results) == 1 and \ elif len(results) == 1 and \
self.registryValue('showFactoidIfOnlyOneMatch', self.registryValue('showFactoidIfOnlyOneMatch',
channel, irc.network): channel, irc.network):
self.whatis(irc, msg, [channel, results[0][0]]) ((key,),) = results
# add the knowledge we gained, so avoid a full search again
join_criteria.append('keys.key=?')
formats.append(key)
if not join_factoids:
# if they were not joined before, we need to join
# them now to get the values
_join_factoids()
sql = """
SELECT factoids.fact, (1 AND %s) FROM %s
WHERE %s
ORDER BY factoids.id
""" % \
(' AND '.join(criteria), ', '.join(tables),
' AND '.join(['keys.key=?', *join_criteria]))
sql = sql.replace('TARGET', target)
formats.append(key)
cursor.execute(sql, formats)
factoids = cursor.fetchall()
assert factoids # we had a result before, and still should now
if len(factoids) == 1:
((fact, included),) = factoids
assert included # matched before, should still match now
irc.reply('%s is %s' %
(key, ircutils.standardSubstitute(irc, msg, fact)))
else:
factoidsS = []
counter = 1
for (fact, included) in factoids:
if included:
factoidsS.append(format('(#%i) %s', counter,
ircutils.standardSubstitute(irc, msg, fact)))
counter += 1
irc.replies(factoidsS, prefixer=lambda s: '%s is %s' % (key, s),
joiner=', or ', onlyPrefixFirst=True)
elif len(results) > 100: elif len(results) > 100:
irc.reply(_('More than 100 keys matched that query; ' irc.reply(_('More than 100 keys matched that query; '
'please narrow your query.')) 'please narrow your query.'))

View File

@ -118,6 +118,18 @@ class FactoidsTestCase(ChannelPluginTestCase):
self.assertRegexp('factoids search --author blahblah j*', self.assertRegexp('factoids search --author blahblah j*',
'No keys matched that query.') 'No keys matched that query.')
def testSearchMultiFactoids(self):
self.assertNotError('learn water is wet')
self.assertResponse('factoids search --values we', 'water is wet')
self.assertNotError('learn water is H2O')
self.assertNotError('learn fire is hot')
self.assertResponse('factoids search --values we', 'water is (#1) wet')
self.assertResponse('factoids search --values H2', 'water is (#2) H2O')
self.assertNotError('learn water is very wet')
self.assertResponse('factoids search --values we',
'water is (#1) wet, or (#3) very wet')
def testWhatisOnNumbers(self): def testWhatisOnNumbers(self):
self.assertNotError('learn 911 is emergency number') self.assertNotError('learn 911 is emergency number')
self.assertRegexp('whatis 911', 'emergency number') self.assertRegexp('whatis 911', 'emergency number')

View File

@ -42,22 +42,22 @@ Commands
.. _command-fediverse-featured: .. _command-fediverse-featured:
featured <@user@instance> ``featured <@user@instance>``
Returnes the featured statuses of @user@instance (aka. pinned toots). Returnes the featured statuses of @user@instance (aka. pinned toots).
.. _command-fediverse-profile: .. _command-fediverse-profile:
profile <@user@instance> ``profile <@user@instance>``
Returns generic information on the account @user@instance. Returns generic information on the account @user@instance.
.. _command-fediverse-status: .. _command-fediverse-status:
status <url> ``status <url>``
Shows the content of the status at <url>. Shows the content of the status at <url>.
.. _command-fediverse-statuses: .. _command-fediverse-statuses:
statuses <@user@instance> ``statuses <@user@instance>``
Returned the last statuses of @user@instance. Returned the last statuses of @user@instance.
.. _conf-Fediverse: .. _conf-Fediverse:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -39,14 +39,14 @@ msgid ""
" when the status has a Content Warning." " when the status has a Content Warning."
msgstr "" msgstr ""
#: plugin.py:54 #: plugin.py:59
msgid "" msgid ""
"\n" "\n"
" You shouldn't be here, this subfolder is not for you. Go back to the\n" " You shouldn't be here, this subfolder is not for you. Go back to the\n"
" index and try out other plugins (if any)." " index and try out other plugins (if any)."
msgstr "" msgstr ""
#: plugin.py:119 #: plugin.py:124
#, docstring #, docstring
msgid "" msgid ""
"Fetches information from ActivityPub servers.\n" "Fetches information from ActivityPub servers.\n"
@ -75,23 +75,27 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:233 #: plugin.py:242
msgid "<error: %s>" msgid "<error: %s>"
msgstr "" msgstr ""
#: plugin.py:245 #: plugin.py:278
msgid "%s: \002[CW %s]\002 %s" msgid "%s: \002[CW %s]\002 %s"
msgstr "" msgstr ""
#: plugin.py:254 #: plugin.py:287
msgid "%s: CW %s" msgid "%s: CW %s"
msgstr "" msgstr ""
#: plugin.py:258 plugin.py:292 plugin.py:300 #: plugin.py:291 plugin.py:336 plugin.py:344
msgid "%s: %s" msgid "%s: %s"
msgstr "" msgstr ""
#: plugin.py:286 #: plugin.py:316
msgid "\002%s\002 (%T) by %s: %s"
msgstr ""
#: plugin.py:330
#, docstring #, docstring
msgid "" msgid ""
"<@user@instance>\n" "<@user@instance>\n"
@ -99,7 +103,7 @@ msgid ""
" Returns generic information on the account @user@instance." " Returns generic information on the account @user@instance."
msgstr "" msgstr ""
#: plugin.py:376 #: plugin.py:420
#, docstring #, docstring
msgid "" msgid ""
"<@user@instance>\n" "<@user@instance>\n"
@ -108,11 +112,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:382 plugin.py:388 #: plugin.py:426 plugin.py:432
msgid "No featured statuses." msgid "No featured statuses."
msgstr "" msgstr ""
#: plugin.py:399 #: plugin.py:443
#, docstring #, docstring
msgid "" msgid ""
"<@user@instance>\n" "<@user@instance>\n"
@ -121,11 +125,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:405 #: plugin.py:449
msgid "No status." msgid "No status."
msgstr "" msgstr ""
#: plugin.py:422 #: plugin.py:466
#, docstring #, docstring
msgid "" msgid ""
"<url>\n" "<url>\n"
@ -134,7 +138,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:429 #: plugin.py:473
msgid "Could not get status: %s" msgid "Could not get status: %s"
msgstr "" msgstr ""

View File

@ -31,147 +31,147 @@ Commands
.. _command-filter-aol: .. _command-filter-aol:
aol <text> ``aol <text>``
Returns <text> as if an AOL user had said it. Returns <text> as if an AOL user had said it.
.. _command-filter-binary: .. _command-filter-binary:
binary <text> ``binary <text>``
Returns the binary representation of <text>. Returns the binary representation of <text>.
.. _command-filter-caps: .. _command-filter-caps:
caps <text> ``caps <text>``
EVERYONE LOVES CAPS LOCK. EVERYONE LOVES CAPS LOCK.
.. _command-filter-capwords: .. _command-filter-capwords:
capwords <text> ``capwords <text>``
Capitalises the first letter of each word. Capitalises the first letter of each word.
.. _command-filter-colorize: .. _command-filter-colorize:
colorize <text> ``colorize <text>``
Returns <text> with each character randomly colorized. Returns <text> with each character randomly colorized.
.. _command-filter-gnu: .. _command-filter-gnu:
gnu <text> ``gnu <text>``
Returns <text> as GNU/RMS would say it. Returns <text> as GNU/RMS would say it.
.. _command-filter-hebrew: .. _command-filter-hebrew:
hebrew <text> ``hebrew <text>``
Removes all the vowels from <text>. (If you're curious why this is named 'hebrew' it's because I (jemfinch) thought of it in Hebrew class, and printed Hebrew often elides the vowels.) Removes all the vowels from <text>. (If you're curious why this is named 'hebrew' it's because I (jemfinch) thought of it in Hebrew class, and printed Hebrew often elides the vowels.)
.. _command-filter-hexlify: .. _command-filter-hexlify:
hexlify <text> ``hexlify <text>``
Returns a hexstring from the given string; a hexstring is a string composed of the hexadecimal value of each character in the string Returns a hexstring from the given string; a hexstring is a string composed of the hexadecimal value of each character in the string
.. _command-filter-jeffk: .. _command-filter-jeffk:
jeffk <text> ``jeffk <text>``
Returns <text> as if JeffK had said it himself. Returns <text> as if JeffK had said it himself.
.. _command-filter-leet: .. _command-filter-leet:
leet <text> ``leet <text>``
Returns the l33tspeak version of <text> Returns the l33tspeak version of <text>
.. _command-filter-morse: .. _command-filter-morse:
morse <text> ``morse <text>``
Gives the Morse code equivalent of a given string. Gives the Morse code equivalent of a given string.
.. _command-filter-outfilter: .. _command-filter-outfilter:
outfilter [<channel>] [<command>] ``outfilter [<channel>] [<command>]``
Sets the outFilter of this plugin to be <command>. If no command is given, unsets the outFilter. <channel> is only necessary if the message isn't sent in the channel itself. Sets the outFilter of this plugin to be <command>. If no command is given, unsets the outFilter. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-filter-rainbow: .. _command-filter-rainbow:
rainbow <text> ``rainbow <text>``
Returns <text> colorized like a rainbow. Returns <text> colorized like a rainbow.
.. _command-filter-reverse: .. _command-filter-reverse:
reverse <text> ``reverse <text>``
Reverses <text>. Reverses <text>.
.. _command-filter-rot13: .. _command-filter-rot13:
rot13 <text> ``rot13 <text>``
Rotates <text> 13 characters to the right in the alphabet. Rot13 is commonly used for text that simply needs to be hidden from inadvertent reading by roaming eyes, since it's easily reversible. Rotates <text> 13 characters to the right in the alphabet. Rot13 is commonly used for text that simply needs to be hidden from inadvertent reading by roaming eyes, since it's easily reversible.
.. _command-filter-scramble: .. _command-filter-scramble:
scramble <text> ``scramble <text>``
Replies with a string where each word is scrambled; i.e., each internal letter (that is, all letters but the first and last) are shuffled. Replies with a string where each word is scrambled; i.e., each internal letter (that is, all letters but the first and last) are shuffled.
.. _command-filter-shrink: .. _command-filter-shrink:
shrink <text> ``shrink <text>``
Returns <text> with each word longer than supybot.plugins.Filter.shrink.minimum being shrunken (i.e., like "internationalization" becomes "i18n"). Returns <text> with each word longer than supybot.plugins.Filter.shrink.minimum being shrunken (i.e., like "internationalization" becomes "i18n").
.. _command-filter-spellit: .. _command-filter-spellit:
spellit <text> ``spellit <text>``
Returns <text>, phonetically spelled out. Returns <text>, phonetically spelled out.
.. _command-filter-squish: .. _command-filter-squish:
squish <text> ``squish <text>``
Removes all the spaces from <text>. Removes all the spaces from <text>.
.. _command-filter-stripcolor: .. _command-filter-stripcolor:
stripcolor <text> ``stripcolor <text>``
Returns <text> stripped of all color codes. Returns <text> stripped of all color codes.
.. _command-filter-stripformatting: .. _command-filter-stripformatting:
stripformatting <text> ``stripformatting <text>``
Strips bold, underline, and colors from <text>. Strips bold, underline, and colors from <text>.
.. _command-filter-supa1337: .. _command-filter-supa1337:
supa1337 <text> ``supa1337 <text>``
Replies with an especially k-rad translation of <text>. Replies with an especially k-rad translation of <text>.
.. _command-filter-unbinary: .. _command-filter-unbinary:
unbinary <text> ``unbinary <text>``
Returns the character representation of binary <text>. Assumes ASCII, 8 digits per character. Returns the character representation of binary <text>. Assumes ASCII, 8 digits per character.
.. _command-filter-undup: .. _command-filter-undup:
undup <text> ``undup <text>``
Returns <text>, with all consecutive duplicated letters removed. Returns <text>, with all consecutive duplicated letters removed.
.. _command-filter-unhexlify: .. _command-filter-unhexlify:
unhexlify <hexstring> ``unhexlify <hexstring>``
Returns the string corresponding to <hexstring>. Obviously, <hexstring> must be a string of hexadecimal digits. Returns the string corresponding to <hexstring>. Obviously, <hexstring> must be a string of hexadecimal digits.
.. _command-filter-uniud: .. _command-filter-uniud:
uniud <text> ``uniud <text>``
Returns <text> rotated 180 degrees. Only really works for ASCII printable characters. Returns <text> rotated 180 degrees. Only really works for ASCII printable characters.
.. _command-filter-unmorse: .. _command-filter-unmorse:
unmorse <Morse code text> ``unmorse <Morse code text>``
Does the reverse of the morse command. Does the reverse of the morse command.
.. _command-filter-uwu: .. _command-filter-uwu:
uwu <text> ``uwu <text>``
Returns <text> in uwu-speak. Returns <text> in uwu-speak.
.. _command-filter-vowelrot: .. _command-filter-vowelrot:
vowelrot <text> ``vowelrot <text>``
Returns <text> with vowels rotated Returns <text> with vowels rotated
.. _conf-Filter: .. _conf-Filter:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -24,82 +24,82 @@ Commands
.. _command-format-bold: .. _command-format-bold:
bold <text> ``bold <text>``
Returns <text> bolded. Returns <text> bolded.
.. _command-format-capitalize: .. _command-format-capitalize:
capitalize <text> ``capitalize <text>``
Returns <text> capitalized. Returns <text> capitalized.
.. _command-format-color: .. _command-format-color:
color <foreground> [<background>] <text> ``color <foreground> [<background>] <text>``
Returns <text> with foreground color <foreground> and background color <background> (if given) Returns <text> with foreground color <foreground> and background color <background> (if given)
.. _command-format-concat: .. _command-format-concat:
concat <string 1> <string 2> ``concat <string 1> <string 2>``
Concatenates two strings. Do keep in mind that this is *not* the same thing as join "", since if <string 2> contains spaces, they won't be removed by concat. Concatenates two strings. Do keep in mind that this is *not* the same thing as join "", since if <string 2> contains spaces, they won't be removed by concat.
.. _command-format-cut: .. _command-format-cut:
cut <size> <text> ``cut <size> <text>``
Cuts <text> down to <size> by chopping off the rightmost characters in excess of <size>. If <size> is a negative number, it chops that many characters off the end of <text>. Cuts <text> down to <size> by chopping off the rightmost characters in excess of <size>. If <size> is a negative number, it chops that many characters off the end of <text>.
.. _command-format-field: .. _command-format-field:
field <number> <text> ``field <number> <text>``
Returns the <number>th space-separated field of <text>. I.e., if text is "foo bar baz" and <number> is 2, "bar" is returned. Returns the <number>th space-separated field of <text>. I.e., if text is "foo bar baz" and <number> is 2, "bar" is returned.
.. _command-format-format: .. _command-format-format:
format <format string> [<arg> ...] ``format <format string> [<arg> ...]``
Expands a Python-style format string using the remaining args. Just be sure always to use %s, not %d or %f or whatever, because all the args are strings. Expands a Python-style format string using the remaining args. Just be sure always to use %s, not %d or %f or whatever, because all the args are strings.
.. _command-format-join: .. _command-format-join:
join <separator> <string 1> [<string> ...] ``join <separator> <string 1> [<string> ...]``
Joins all the arguments together with <separator>. Joins all the arguments together with <separator>.
.. _command-format-lower: .. _command-format-lower:
lower <text> ``lower <text>``
Returns <text> lowercased. Returns <text> lowercased.
.. _command-format-replace: .. _command-format-replace:
replace <substring to translate> <substring to replace it with> <text> ``replace <substring to translate> <substring to replace it with> <text>``
Replaces all non-overlapping occurrences of <substring to translate> with <substring to replace it with> in <text>. Replaces all non-overlapping occurrences of <substring to translate> with <substring to replace it with> in <text>.
.. _command-format-repr: .. _command-format-repr:
repr <text> ``repr <text>``
Returns <text> surrounded by double quotes. Returns <text> surrounded by double quotes.
.. _command-format-reverse: .. _command-format-reverse:
reverse <text> ``reverse <text>``
Returns <text> in reverse-video. Returns <text> in reverse-video.
.. _command-format-title: .. _command-format-title:
title <text> ``title <text>``
Returns <text> titlecased. Returns <text> titlecased.
.. _command-format-translate: .. _command-format-translate:
translate <chars to translate> <chars to replace those with> <text> ``translate <chars to translate> <chars to replace those with> <text>``
Replaces <chars to translate> with <chars to replace those with> in <text>. The first and second arguments must necessarily be the same length. Replaces <chars to translate> with <chars to replace those with> in <text>. The first and second arguments must necessarily be the same length.
.. _command-format-underline: .. _command-format-underline:
underline <text> ``underline <text>``
Returns <text> underlined. Returns <text> underlined.
.. _command-format-upper: .. _command-format-upper:
upper <text> ``upper <text>``
Returns <text> uppercased. Returns <text> uppercased.
.. _conf-Format: .. _conf-Format:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -13,6 +13,36 @@ Usage
Provides authentication based on GPG keys. Provides authentication based on GPG keys.
First you must associate your GPG key with your Limnoria account. The gpg
add command takes two arguments, key id and key server.
My key is 0x0C207F07B2F32B67 and it's on keyserver pool.sks-keyservers.net
so and now I add it to my bot::
<Mikaela> +gpg add 0x0C207F07B2F32B67 pool.sks-keyservers.net
<Yvzabevn> 1 key imported, 0 unchanged, 0 not imported.
Now I can get token to sign so I can identify::
<Guest45020> +gpg gettoken
<Yvzabevn> Your token is: {03640620-97ea-4fdf-b0c3-ce8fb62f2dc5}. Please sign it with your GPG key, paste it somewhere, and call the 'auth' command with the URL to the (raw) file containing the signature.
Then I follow the instructions and sign my token in terminal::
echo "{03640620-97ea-4fdf-b0c3-ce8fb62f2dc5}"|gpg --clearsign|curl -F 'sprunge=<-' http://sprunge.us
Note that I sent the output to curl with flags to directly send the
clearsigned content to sprunge.us pastebin. Curl should be installed on
most of distributions and comes with msysgit. If you remove the curl part,
you get the output to terminal and can pastebin it to any pastebin of
your choice. Sprunge.us has only plain text and is easy so I used it in
this example.
And last I give the bot link to the plain text signature::
<Guest45020> +gpg auth http://sprunge.us/DUdd
<Yvzabevn> You are now authenticated as Mikaela.
.. _commands-GPG: .. _commands-GPG:
Commands Commands
@ -20,27 +50,27 @@ Commands
.. _command-gpg-key.add: .. _command-gpg-key.add:
key add <key id> <key server> ``key add <key id> <key server>``
Add a GPG key to your account. Add a GPG key to your account.
.. _command-gpg-key.list: .. _command-gpg-key.list:
key list takes no arguments ``key list takes no arguments``
List your GPG keys. List your GPG keys.
.. _command-gpg-key.remove: .. _command-gpg-key.remove:
key remove <fingerprint> ``key remove <fingerprint>``
Remove a GPG key from your account. Remove a GPG key from your account.
.. _command-gpg-signing.auth: .. _command-gpg-signing.auth:
signing auth <url> ``signing auth <url>``
Check the GPG signature at the <url> and authenticates you if the key used is associated to a user. Check the GPG signature at the <url> and authenticates you if the key used is associated to a user.
.. _command-gpg-signing.gettoken: .. _command-gpg-signing.gettoken:
signing gettoken takes no arguments ``signing gettoken takes no arguments``
Send you a token that you'll have to sign with your key. Send you a token that you'll have to sign with your key.
.. _conf-GPG: .. _conf-GPG:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -33,10 +33,42 @@ msgstr ""
#: plugin.py:92 #: plugin.py:92
#, docstring #, docstring
msgid "Provides authentication based on GPG keys." msgid ""
"Provides authentication based on GPG keys.\n"
"\n"
" First you must associate your GPG key with your Limnoria account. The gpg\n"
" add command takes two arguments, key id and key server.\n"
"\n"
" My key is 0x0C207F07B2F32B67 and it's on keyserver pool.sks-keyservers.net\n"
" so and now I add it to my bot::\n"
"\n"
" <Mikaela> +gpg add 0x0C207F07B2F32B67 pool.sks-keyservers.net\n"
" <Yvzabevn> 1 key imported, 0 unchanged, 0 not imported.\n"
"\n"
" Now I can get token to sign so I can identify::\n"
"\n"
" <Guest45020> +gpg gettoken\n"
" <Yvzabevn> Your token is: {03640620-97ea-4fdf-b0c3-ce8fb62f2dc5}. Please sign it with your GPG key, paste it somewhere, and call the 'auth' command with the URL to the (raw) file containing the signature.\n"
"\n"
" Then I follow the instructions and sign my token in terminal::\n"
"\n"
" echo \"{03640620-97ea-4fdf-b0c3-ce8fb62f2dc5}\"|gpg --clearsign|curl -F 'sprunge=<-' http://sprunge.us\n"
"\n"
" Note that I sent the output to curl with flags to directly send the\n"
" clearsigned content to sprunge.us pastebin. Curl should be installed on\n"
" most of distributions and comes with msysgit. If you remove the curl part,\n"
" you get the output to terminal and can pastebin it to any pastebin of\n"
" your choice. Sprunge.us has only plain text and is easy so I used it in\n"
" this example.\n"
"\n"
" And last I give the bot link to the plain text signature::\n"
"\n"
" <Guest45020> +gpg auth http://sprunge.us/DUdd\n"
" <Yvzabevn> You are now authenticated as Mikaela.\n"
" "
msgstr "" msgstr ""
#: plugin.py:96 #: plugin.py:127
#, docstring #, docstring
msgid "" msgid ""
"<key id> <key server>\n" "<key id> <key server>\n"
@ -44,27 +76,27 @@ msgid ""
" Add a GPG key to your account." " Add a GPG key to your account."
msgstr "" msgstr ""
#: plugin.py:100 #: plugin.py:131
msgid "This key is already associated with your account." msgid "This key is already associated with your account."
msgstr "" msgstr ""
#: plugin.py:104 #: plugin.py:135
msgid "%n imported, %i unchanged, %i not imported." msgid "%n imported, %i unchanged, %i not imported."
msgstr "" msgstr ""
#: plugin.py:105 #: plugin.py:136
msgid "key" msgid "key"
msgstr "" msgstr ""
#: plugin.py:116 #: plugin.py:147
msgid "You must give a valid key id" msgid "You must give a valid key id"
msgstr "" msgstr ""
#: plugin.py:118 #: plugin.py:149
msgid "You must give a valid key server" msgid "You must give a valid key server"
msgstr "" msgstr ""
#: plugin.py:122 #: plugin.py:153
#, docstring #, docstring
msgid "" msgid ""
"<fingerprint>\n" "<fingerprint>\n"
@ -72,11 +104,11 @@ msgid ""
" Remove a GPG key from your account." " Remove a GPG key from your account."
msgstr "" msgstr ""
#: plugin.py:138 #: plugin.py:169
msgid "GPG key not associated with your account." msgid "GPG key not associated with your account."
msgstr "" msgstr ""
#: plugin.py:143 #: plugin.py:174
#, docstring #, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
@ -84,11 +116,11 @@ msgid ""
" List your GPG keys." " List your GPG keys."
msgstr "" msgstr ""
#: plugin.py:148 #: plugin.py:179
msgid "No key is associated with your account." msgid "No key is associated with your account."
msgstr "" msgstr ""
#: plugin.py:165 #: plugin.py:196
#, docstring #, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
@ -96,11 +128,11 @@ msgid ""
" Send you a token that you'll have to sign with your key." " Send you a token that you'll have to sign with your key."
msgstr "" msgstr ""
#: plugin.py:172 #: plugin.py:203
msgid "Your token is: %s. Please sign it with your GPG key, paste it somewhere, and call the 'auth' command with the URL to the (raw) file containing the signature." msgid "Your token is: %s. Please sign it with your GPG key, paste it somewhere, and call the 'auth' command with the URL to the (raw) file containing the signature."
msgstr "" msgstr ""
#: plugin.py:187 #: plugin.py:218
#, docstring #, docstring
msgid "" msgid ""
"<url>\n" "<url>\n"
@ -109,31 +141,31 @@ msgid ""
" the key used is associated to a user." " the key used is associated to a user."
msgstr "" msgstr ""
#: plugin.py:197 #: plugin.py:228
msgid "Signature or token not found." msgid "Signature or token not found."
msgstr "" msgstr ""
#: plugin.py:201 #: plugin.py:232
msgid "Unknown token. It may have expired before you submit it." msgid "Unknown token. It may have expired before you submit it."
msgstr "" msgstr ""
#: plugin.py:204 #: plugin.py:235
msgid "Your hostname/nick changed in the process. Authentication aborted." msgid "Your hostname/nick changed in the process. Authentication aborted."
msgstr "" msgstr ""
#: plugin.py:216 #: plugin.py:247
msgid "Your secure flag is true and your hostmask doesn't match any of your known hostmasks." msgid "Your secure flag is true and your hostmask doesn't match any of your known hostmasks."
msgstr "" msgstr ""
#: plugin.py:220 #: plugin.py:251
msgid "You are now authenticated as %s." msgid "You are now authenticated as %s."
msgstr "" msgstr ""
#: plugin.py:223 #: plugin.py:254
msgid "Unknown GPG key." msgid "Unknown GPG key."
msgstr "" msgstr ""
#: plugin.py:225 #: plugin.py:256
msgid "Signature could not be verified. Make sure this is a valid GPG signature and the URL is valid." msgid "Signature could not be verified. Make sure this is a valid GPG signature and the URL is valid."
msgstr "" msgstr ""

View File

@ -89,7 +89,38 @@ else:
'too much time to answer the request.')) 'too much time to answer the request.'))
class GPG(callbacks.Plugin): class GPG(callbacks.Plugin):
"""Provides authentication based on GPG keys.""" """Provides authentication based on GPG keys.
First you must associate your GPG key with your Limnoria account. The gpg
add command takes two arguments, key id and key server.
My key is 0x0C207F07B2F32B67 and it's on keyserver pool.sks-keyservers.net
so and now I add it to my bot::
<Mikaela> +gpg add 0x0C207F07B2F32B67 pool.sks-keyservers.net
<Yvzabevn> 1 key imported, 0 unchanged, 0 not imported.
Now I can get token to sign so I can identify::
<Guest45020> +gpg gettoken
<Yvzabevn> Your token is: {03640620-97ea-4fdf-b0c3-ce8fb62f2dc5}. Please sign it with your GPG key, paste it somewhere, and call the 'auth' command with the URL to the (raw) file containing the signature.
Then I follow the instructions and sign my token in terminal::
echo "{03640620-97ea-4fdf-b0c3-ce8fb62f2dc5}"|gpg --clearsign|curl -F 'sprunge=<-' http://sprunge.us
Note that I sent the output to curl with flags to directly send the
clearsigned content to sprunge.us pastebin. Curl should be installed on
most of distributions and comes with msysgit. If you remove the curl part,
you get the output to terminal and can pastebin it to any pastebin of
your choice. Sprunge.us has only plain text and is easy so I used it in
this example.
And last I give the bot link to the plain text signature::
<Guest45020> +gpg auth http://sprunge.us/DUdd
<Yvzabevn> You are now authenticated as Mikaela.
"""
class key(callbacks.Commands): class key(callbacks.Commands):
@check_gpg_available @check_gpg_available
def add(self, irc, msg, args, user, keyid, keyserver): def add(self, irc, msg, args, user, keyid, keyserver):

View File

@ -23,27 +23,27 @@ Commands
.. _command-games-coin: .. _command-games-coin:
coin takes no arguments ``coin takes no arguments``
Flips a coin and returns the result. Flips a coin and returns the result.
.. _command-games-dice: .. _command-games-dice:
dice <dice>d<sides> ``dice <dice>d<sides>``
Rolls a die with <sides> number of sides <dice> times. For example, 2d6 will roll 2 six-sided dice; 10d10 will roll 10 ten-sided dice. Rolls a die with <sides> number of sides <dice> times. For example, 2d6 will roll 2 six-sided dice; 10d10 will roll 10 ten-sided dice.
.. _command-games-eightball: .. _command-games-eightball:
eightball [<question>] ``eightball [<question>]``
Ask a question and the answer shall be provided. Ask a question and the answer shall be provided.
.. _command-games-monologue: .. _command-games-monologue:
monologue [<channel>] ``monologue [<channel>]``
Returns the number of consecutive lines you've sent in <channel> without being interrupted by someone else (i.e. how long your current 'monologue' is). <channel> is only necessary if the message isn't sent in the channel itself. Returns the number of consecutive lines you've sent in <channel> without being interrupted by someone else (i.e. how long your current 'monologue' is). <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-games-roulette: .. _command-games-roulette:
roulette [spin] ``roulette [spin]``
Fires the revolver. If the bullet was in the chamber, you're dead. Tell me to spin the chambers and I will. Fires the revolver. If the bullet was in the chamber, you're dead. Tell me to spin the chambers and I will.
.. _conf-Games: .. _conf-Games:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -44,15 +44,15 @@ msgid ""
" This uses data from Wikidata and Nominatim." " This uses data from Wikidata and Nominatim."
msgstr "" msgstr ""
#: plugin.py:84 plugin.py:122 #: plugin.py:84 plugin.py:137
msgid "Could not find the location" msgid "Could not find the location"
msgstr "" msgstr ""
#: plugin.py:110 plugin.py:167 #: plugin.py:110 plugin.py:178
msgid "Could not find the timezone of this location." msgid "Could not find the timezone of this location."
msgstr "" msgstr ""
#: plugin.py:115 #: plugin.py:130
#, docstring #, docstring
msgid "" msgid ""
"<location name to search>\n" "<location name to search>\n"

View File

@ -45,17 +45,17 @@ Commands
.. _command-google-google: .. _command-google-google:
google <search> [--{filter,language} <value>] ``google <search> [--{filter,language} <value>]``
Searches google.com for the given string. As many results as can fit are included. --language accepts a language abbreviation; --filter accepts a filtering level ('active', 'moderate', 'off'). Searches google.com for the given string. As many results as can fit are included. --language accepts a language abbreviation; --filter accepts a filtering level ('active', 'moderate', 'off').
.. _command-google-lucky: .. _command-google-lucky:
lucky [--snippet] <search> ``lucky [--snippet] <search>``
Does a google search, but only returns the first result. If option --snippet is given, returns also the page text snippet. Does a google search, but only returns the first result. If option --snippet is given, returns also the page text snippet.
.. _command-google-translate: .. _command-google-translate:
translate <source language> [to] <target language> <text> ``translate <source language> [to] <target language> <text>``
Returns <text> translated from <source language> into <target language>. <source language> and <target language> take language codes (not language names), which are listed here: https://cloud.google.com/translate/docs/languages Returns <text> translated from <source language> into <target language>. <source language> and <target language> take language codes (not language names), which are listed here: https://cloud.google.com/translate/docs/languages
.. _conf-Google: .. _conf-Google:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Google plugin for Limnoria\n" "Project-Id-Version: Google plugin for Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2014-12-20 14:10+0200\n" "PO-Revision-Date: 2014-12-20 14:10+0200\n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n" "Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -215,44 +215,12 @@ msgstr ""
" hyväksyy suodatus tason ('active', 'moderate', 'off').\n" " hyväksyy suodatus tason ('active', 'moderate', 'off').\n"
" " " "
#: plugin.py:236 #: plugin.py:263
msgid ""
"<url>\n"
"\n"
" Returns a link to the cached version of <url> if it is available.\n"
" "
msgstr ""
"<url>\n"
"\n"
" Palauttaa linkin <url:in> välimuistissa olevaan versioon, jos se on "
"saatavilla.\n"
" "
#: plugin.py:247
msgid "Google seems to have no cache for that site."
msgstr "Googlella ei näytä olevan välimuistia tuolle sivulle."
#: plugin.py:253
msgid ""
"<search string> <search string> [<search string> ...]\n"
"\n"
" Returns the results of each search, in order, from greatest number\n"
" of results to least.\n"
" "
msgstr ""
"<hakumerkkijono> <hakumerkkijono> [<hakumerkkijono> ...]\n"
"\n"
" Palauttaa tulokset jokaiselle haulle järjestyksessä suurimmasta "
"numerosta\n"
" pienimpään.\n"
" "
#: plugin.py:309
#, fuzzy #, fuzzy
msgid "No translations found." msgid "No translations found."
msgstr "Osumia ei löytynyt." msgstr "Osumia ei löytynyt."
#: plugin.py:313 #: plugin.py:267
#, fuzzy #, fuzzy
msgid "" msgid ""
"<source language> [to] <target language> <text>\n" "<source language> [to] <target language> <text>\n"
@ -268,37 +236,65 @@ msgstr ""
" Kääntää <tekstin> <lähdekielestä> <kohdekieleksi>.\n" " Kääntää <tekstin> <lähdekielestä> <kohdekieleksi>.\n"
" " " "
#: plugin.py:325 #: plugin.py:279
msgid "^google\\s+(.*)$" msgid "^google\\s+(.*)$"
msgstr "^google\\s+(.*)$" msgstr "^google\\s+(.*)$"
#: plugin.py:347 #~ msgid ""
msgid "" #~ "<url>\n"
"<expression>\n" #~ "\n"
"\n" #~ " Returns a link to the cached version of <url> if it is "
" Uses Google's calculator to calculate the value of <expression>.\n" #~ "available.\n"
" " #~ " "
msgstr "" #~ msgstr ""
"<lauseke>\n" #~ "<url>\n"
"\n" #~ "\n"
" Käyttää Googlen laskinta laskeakseen <lausekkeen> arvon.\n" #~ " Palauttaa linkin <url:in> välimuistissa olevaan versioon, jos se "
" " #~ "on saatavilla.\n"
#~ " "
#: plugin.py:378 #~ msgid "Google seems to have no cache for that site."
msgid "" #~ msgstr "Googlella ei näytä olevan välimuistia tuolle sivulle."
"<phone number>\n"
"\n"
" Looks <phone number> up on Google.\n"
" "
msgstr ""
"<puhelinnumero>\n"
"\n"
" Etsii <puhelinnumeroa> Googlesta.\n"
" "
#: plugin.py:392 #~ msgid ""
msgid "Google's phonebook didn't come up with anything." #~ "<search string> <search string> [<search string> ...]\n"
msgstr "Googlen puhelinluettelo ei keksinyt mitään." #~ "\n"
#~ " Returns the results of each search, in order, from greatest "
#~ "number\n"
#~ " of results to least.\n"
#~ " "
#~ msgstr ""
#~ "<hakumerkkijono> <hakumerkkijono> [<hakumerkkijono> ...]\n"
#~ "\n"
#~ " Palauttaa tulokset jokaiselle haulle järjestyksessä suurimmasta "
#~ "numerosta\n"
#~ " pienimpään.\n"
#~ " "
#~ msgid ""
#~ "<expression>\n"
#~ "\n"
#~ " Uses Google's calculator to calculate the value of <expression>.\n"
#~ " "
#~ msgstr ""
#~ "<lauseke>\n"
#~ "\n"
#~ " Käyttää Googlen laskinta laskeakseen <lausekkeen> arvon.\n"
#~ " "
#~ msgid ""
#~ "<phone number>\n"
#~ "\n"
#~ " Looks <phone number> up on Google.\n"
#~ " "
#~ msgstr ""
#~ "<puhelinnumero>\n"
#~ "\n"
#~ " Etsii <puhelinnumeroa> Googlesta.\n"
#~ " "
#~ msgid "Google's phonebook didn't come up with anything."
#~ msgstr "Googlen puhelinluettelo ei keksinyt mitään."
#~ msgid "" #~ msgid ""
#~ "This is a simple plugin to provide access to the Google services we\n" #~ "This is a simple plugin to provide access to the Google services we\n"

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: \n" "PO-Revision-Date: \n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Limnoria <progval@gmail.com>\n" "Language-Team: Limnoria <progval@gmail.com>\n"
@ -201,40 +201,12 @@ msgstr ""
"sont donnés. --language accepte une abbréviation de langue ; --filter " "sont donnés. --language accepte une abbréviation de langue ; --filter "
"accepte un niveau de filtrage ('active', 'moderate', 'off')." "accepte un niveau de filtrage ('active', 'moderate', 'off')."
#: plugin.py:236 #: plugin.py:263
msgid ""
"<url>\n"
"\n"
" Returns a link to the cached version of <url> if it is available.\n"
" "
msgstr ""
"<url>\n"
"\n"
"Retourne un lien vers la version en cache de l'<url>, si elle est disponible."
#: plugin.py:247
msgid "Google seems to have no cache for that site."
msgstr "Google semble ne pas avoir de cache pour ce site."
#: plugin.py:253
msgid ""
"<search string> <search string> [<search string> ...]\n"
"\n"
" Returns the results of each search, in order, from greatest number\n"
" of results to least.\n"
" "
msgstr ""
"<chaîne 1> <chaîne 2> [<chaîne 3> ...]\n"
"\n"
"Retourne les résultats de chaque recherche, dans l'ordre, par ordre "
"croissant du nombre de résultats."
#: plugin.py:309
#, fuzzy #, fuzzy
msgid "No translations found." msgid "No translations found."
msgstr "Aucune correspondance." msgstr "Aucune correspondance."
#: plugin.py:313 #: plugin.py:267
#, fuzzy #, fuzzy
msgid "" msgid ""
"<source language> [to] <target language> <text>\n" "<source language> [to] <target language> <text>\n"
@ -250,35 +222,60 @@ msgstr ""
"Retourne le <texte>, traduire de la <langue de départ> vers la <langue " "Retourne le <texte>, traduire de la <langue de départ> vers la <langue "
"finale>." "finale>."
#: plugin.py:325 #: plugin.py:279
msgid "^google\\s+(.*)$" msgid "^google\\s+(.*)$"
msgstr "^google\\s+(.*)$" msgstr "^google\\s+(.*)$"
#: plugin.py:347 #~ msgid ""
msgid "" #~ "<url>\n"
"<expression>\n" #~ "\n"
"\n" #~ " Returns a link to the cached version of <url> if it is "
" Uses Google's calculator to calculate the value of <expression>.\n" #~ "available.\n"
" " #~ " "
msgstr "" #~ msgstr ""
"<expression>\n" #~ "<url>\n"
"\n" #~ "\n"
"Utilise la calculatrice Google pour calculer la valeur de l'<expression>." #~ "Retourne un lien vers la version en cache de l'<url>, si elle est "
#~ "disponible."
#: plugin.py:378 #~ msgid "Google seems to have no cache for that site."
msgid "" #~ msgstr "Google semble ne pas avoir de cache pour ce site."
"<phone number>\n"
"\n"
" Looks <phone number> up on Google.\n"
" "
msgstr ""
"<numéro de téléphone>\n"
"\n"
"Recherche le <numéro de téléphone> sur Google."
#: plugin.py:392 #~ msgid ""
msgid "Google's phonebook didn't come up with anything." #~ "<search string> <search string> [<search string> ...]\n"
msgstr "L'annuaire téléphonique de Google ne donne aucun résultat." #~ "\n"
#~ " Returns the results of each search, in order, from greatest "
#~ "number\n"
#~ " of results to least.\n"
#~ " "
#~ msgstr ""
#~ "<chaîne 1> <chaîne 2> [<chaîne 3> ...]\n"
#~ "\n"
#~ "Retourne les résultats de chaque recherche, dans l'ordre, par ordre "
#~ "croissant du nombre de résultats."
#~ msgid ""
#~ "<expression>\n"
#~ "\n"
#~ " Uses Google's calculator to calculate the value of <expression>.\n"
#~ " "
#~ msgstr ""
#~ "<expression>\n"
#~ "\n"
#~ "Utilise la calculatrice Google pour calculer la valeur de l'<expression>."
#~ msgid ""
#~ "<phone number>\n"
#~ "\n"
#~ " Looks <phone number> up on Google.\n"
#~ " "
#~ msgstr ""
#~ "<numéro de téléphone>\n"
#~ "\n"
#~ "Recherche le <numéro de téléphone> sur Google."
#~ msgid "Google's phonebook didn't come up with anything."
#~ msgstr "L'annuaire téléphonique de Google ne donne aucun résultat."
#~ msgid "We broke The Google!" #~ msgid "We broke The Google!"
#~ msgstr "Google est toukassay !" #~ msgstr "Google est toukassay !"

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2012-03-15 20:55+0100\n" "PO-Revision-Date: 2012-03-15 20:55+0100\n"
"Last-Translator: skizzhg <skizzhg@gmx.com>\n" "Last-Translator: skizzhg <skizzhg@gmx.com>\n"
"Language-Team: Italian <skizzhg@gmx.com>\n" "Language-Team: Italian <skizzhg@gmx.com>\n"
@ -105,8 +105,8 @@ msgid ""
" by default. 'active' - most filtering, 'moderate' - default filtering,\n" " by default. 'active' - most filtering, 'moderate' - default filtering,\n"
" 'off' - no filtering" " 'off' - no filtering"
msgstr "" msgstr ""
"Determina quale livello di filtraggio usare in modo predefinito. \"active" "Determina quale livello di filtraggio usare in modo predefinito. "
"\":\n" "\"active\":\n"
" filtra tutto; \"moderate\": filtro predefinito; \"off\": filtro " " filtra tutto; \"moderate\": filtro predefinito; \"off\": filtro "
"disattivato." "disattivato."
@ -207,43 +207,12 @@ msgstr ""
" ('active', 'moderate', 'off').\n" " ('active', 'moderate', 'off').\n"
" " " "
#: plugin.py:236 #: plugin.py:263
msgid ""
"<url>\n"
"\n"
" Returns a link to the cached version of <url> if it is available.\n"
" "
msgstr ""
"<url>\n"
"\n"
" Restituisce un link della versione in cache di <url>, se "
"disponibile.\n"
" "
#: plugin.py:247
msgid "Google seems to have no cache for that site."
msgstr "Google sembra non avere cache per questo sito."
#: plugin.py:253
msgid ""
"<search string> <search string> [<search string> ...]\n"
"\n"
" Returns the results of each search, in order, from greatest number\n"
" of results to least.\n"
" "
msgstr ""
"<stringa di ricerca> <stringa di ricerca> [<stringa di ricerca> ...]\n"
"\n"
" Restituisce i risultati di ogni ricerca in ordine decrescente in "
"base al numero di risultati.\n"
" "
#: plugin.py:309
#, fuzzy #, fuzzy
msgid "No translations found." msgid "No translations found."
msgstr "Nessun risultato trovato." msgstr "Nessun risultato trovato."
#: plugin.py:313 #: plugin.py:267
#, fuzzy #, fuzzy
msgid "" msgid ""
"<source language> [to] <target language> <text>\n" "<source language> [to] <target language> <text>\n"
@ -261,38 +230,65 @@ msgstr ""
" può produrre risultati molto strani.\n" " può produrre risultati molto strani.\n"
" " " "
#: plugin.py:325 #: plugin.py:279
msgid "^google\\s+(.*)$" msgid "^google\\s+(.*)$"
msgstr "^google\\s+(.*)$" msgstr "^google\\s+(.*)$"
#: plugin.py:347 #~ msgid ""
msgid "" #~ "<url>\n"
"<expression>\n" #~ "\n"
"\n" #~ " Returns a link to the cached version of <url> if it is "
" Uses Google's calculator to calculate the value of <expression>.\n" #~ "available.\n"
" " #~ " "
msgstr "" #~ msgstr ""
"<espressione>\n" #~ "<url>\n"
"\n" #~ "\n"
" Utilizza la calcolatrice di Google per calcolare il valore di " #~ " Restituisce un link della versione in cache di <url>, se "
"<espressione>.\n" #~ "disponibile.\n"
" " #~ " "
#: plugin.py:378 #~ msgid "Google seems to have no cache for that site."
msgid "" #~ msgstr "Google sembra non avere cache per questo sito."
"<phone number>\n"
"\n"
" Looks <phone number> up on Google.\n"
" "
msgstr ""
"<numero telefonico>\n"
"\n"
" Cerca <numero telefonico> su Google.\n"
" "
#: plugin.py:392 #~ msgid ""
msgid "Google's phonebook didn't come up with anything." #~ "<search string> <search string> [<search string> ...]\n"
msgstr "La rubrica di Google non ha fornito alcun risultato." #~ "\n"
#~ " Returns the results of each search, in order, from greatest "
#~ "number\n"
#~ " of results to least.\n"
#~ " "
#~ msgstr ""
#~ "<stringa di ricerca> <stringa di ricerca> [<stringa di ricerca> ...]\n"
#~ "\n"
#~ " Restituisce i risultati di ogni ricerca in ordine decrescente in "
#~ "base al numero di risultati.\n"
#~ " "
#~ msgid ""
#~ "<expression>\n"
#~ "\n"
#~ " Uses Google's calculator to calculate the value of <expression>.\n"
#~ " "
#~ msgstr ""
#~ "<espressione>\n"
#~ "\n"
#~ " Utilizza la calcolatrice di Google per calcolare il valore di "
#~ "<espressione>.\n"
#~ " "
#~ msgid ""
#~ "<phone number>\n"
#~ "\n"
#~ " Looks <phone number> up on Google.\n"
#~ " "
#~ msgstr ""
#~ "<numero telefonico>\n"
#~ "\n"
#~ " Cerca <numero telefonico> su Google.\n"
#~ " "
#~ msgid "Google's phonebook didn't come up with anything."
#~ msgstr "La rubrica di Google non ha fornito alcun risultato."
#~ msgid "We broke The Google!" #~ msgid "We broke The Google!"
#~ msgstr "Abbiamo rotto Google!" #~ msgstr "Abbiamo rotto Google!"

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -168,34 +168,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:236 #: plugin.py:263
#, docstring
msgid ""
"<url>\n"
"\n"
" Returns a link to the cached version of <url> if it is available.\n"
" "
msgstr ""
#: plugin.py:247
msgid "Google seems to have no cache for that site."
msgstr ""
#: plugin.py:253
#, docstring
msgid ""
"<search string> <search string> [<search string> ...]\n"
"\n"
" Returns the results of each search, in order, from greatest number\n"
" of results to least.\n"
" "
msgstr ""
#: plugin.py:309
msgid "No translations found." msgid "No translations found."
msgstr "" msgstr ""
#: plugin.py:313 #: plugin.py:267
#, docstring #, docstring
msgid "" msgid ""
"<source language> [to] <target language> <text>\n" "<source language> [to] <target language> <text>\n"
@ -207,30 +184,8 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:325 #: plugin.py:279
#, docstring #, docstring
msgid "^google\\s+(.*)$" msgid "^google\\s+(.*)$"
msgstr "" msgstr ""
#: plugin.py:347
#, docstring
msgid ""
"<expression>\n"
"\n"
" Uses Google's calculator to calculate the value of <expression>.\n"
" "
msgstr ""
#: plugin.py:378
#, docstring
msgid ""
"<phone number>\n"
"\n"
" Looks <phone number> up on Google.\n"
" "
msgstr ""
#: plugin.py:392
msgid "Google's phonebook didn't come up with anything."
msgstr ""

View File

@ -20,32 +20,32 @@ Commands
.. _command-hashes-algorithms: .. _command-hashes-algorithms:
algorithms <takes no arguments> ``algorithms <takes no arguments>``
Returns the list of available algorithms. Returns the list of available algorithms.
.. _command-hashes-md5: .. _command-hashes-md5:
md5 <text> ``md5 <text>``
Returns the md5 hash of a given string. Returns the md5 hash of a given string.
.. _command-hashes-mkhash: .. _command-hashes-mkhash:
mkhash <algorithm> <text> ``mkhash <algorithm> <text>``
Returns TEXT after it has been hashed with ALGORITHM. See the 'algorithms' command in this plugin to return the algorithms available on this system. Returns TEXT after it has been hashed with ALGORITHM. See the 'algorithms' command in this plugin to return the algorithms available on this system.
.. _command-hashes-sha: .. _command-hashes-sha:
sha <text> ``sha <text>``
Returns the SHA1 hash of a given string. Returns the SHA1 hash of a given string.
.. _command-hashes-sha256: .. _command-hashes-sha256:
sha256 <text> ``sha256 <text>``
Returns a SHA256 hash of the given string. Returns a SHA256 hash of the given string.
.. _command-hashes-sha512: .. _command-hashes-sha512:
sha512 <text> ``sha512 <text>``
Returns a SHA512 hash of the given string. Returns a SHA512 hash of the given string.
.. _conf-Hashes: .. _conf-Hashes:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -22,27 +22,27 @@ Commands
.. _command-herald-add: .. _command-herald-add:
add [<channel>] <user|nick> <msg> ``add [<channel>] <user|nick> <msg>``
Sets the herald message for <user> (or the user <nick|hostmask> is currently identified or recognized as) to <msg>. <channel> is only necessary if the message isn't sent in the channel itself. Sets the herald message for <user> (or the user <nick|hostmask> is currently identified or recognized as) to <msg>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-herald-change: .. _command-herald-change:
change [<channel>] [<user|nick>] <regexp> ``change [<channel>] [<user|nick>] <regexp>``
Changes the herald message for <user>, or the user <nick|hostmask> is currently identified or recognized as, according to <regexp>. If <user> is not given, defaults to the calling user. <channel> is only necessary if the message isn't sent in the channel itself. Changes the herald message for <user>, or the user <nick|hostmask> is currently identified or recognized as, according to <regexp>. If <user> is not given, defaults to the calling user. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-herald-default: .. _command-herald-default:
default [<channel>] [--remove|<msg>] ``default [<channel>] [--remove|<msg>]``
If <msg> is given, sets the default herald to <msg>. A <msg> of "" will remove the default herald. If <msg> is not given, returns the current default herald. <channel> is only necessary if the message isn't sent in the channel itself. If <msg> is given, sets the default herald to <msg>. A <msg> of "" will remove the default herald. If <msg> is not given, returns the current default herald. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-herald-get: .. _command-herald-get:
get [<channel>] [<user|nick>] ``get [<channel>] [<user|nick>]``
Returns the current herald message for <user> (or the user <nick|hostmask> is currently identified or recognized as). If <user> is not given, defaults to the user giving the command. <channel> is only necessary if the message isn't sent in the channel itself. Returns the current herald message for <user> (or the user <nick|hostmask> is currently identified or recognized as). If <user> is not given, defaults to the user giving the command. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-herald-remove: .. _command-herald-remove:
remove [<channel>] [<user|nick>] ``remove [<channel>] [<user|nick>]``
Removes the herald message set for <user>, or the user <nick|hostmask> is currently identified or recognized as. If <user> is not given, defaults to the user giving the command. <channel> is only necessary if the message isn't sent in the channel itself. Removes the herald message set for <user>, or the user <nick|hostmask> is currently identified or recognized as. If <user> is not given, defaults to the user giving the command. <channel> is only necessary if the message isn't sent in the channel itself.
.. _conf-Herald: .. _conf-Herald:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -22,17 +22,17 @@ Commands
.. _command-internet-dns: .. _command-internet-dns:
dns <host|ip> ``dns <host|ip>``
Returns the ip of <host> or the reverse DNS hostname of <ip>. Returns the ip of <host> or the reverse DNS hostname of <ip>.
.. _command-internet-hexip: .. _command-internet-hexip:
hexip <ip> ``hexip <ip>``
Returns the hexadecimal IP for that IP. Returns the hexadecimal IP for that IP.
.. _command-internet-whois: .. _command-internet-whois:
whois <domain> ``whois <domain>``
Returns WHOIS information on the registration of <domain>. Returns WHOIS information on the registration of <domain>.
.. _conf-Internet: .. _conf-Internet:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Internet plugin for Limnoria\n" "Project-Id-Version: Internet plugin for Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2014-12-20 13:25+0200\n" "PO-Revision-Date: 2014-12-20 13:25+0200\n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n" "Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -17,7 +17,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.6.10\n" "X-Generator: Poedit 1.6.10\n"
#: plugin.py:45 #: plugin.py:44
#, fuzzy #, fuzzy
msgid "" msgid ""
"Provides commands to query DNS, search WHOIS databases,\n" "Provides commands to query DNS, search WHOIS databases,\n"
@ -27,7 +27,7 @@ msgstr ""
"muuttamaan\n" "muuttamaan\n"
" IP-osoitteet hexoiksi." " IP-osoitteet hexoiksi."
#: plugin.py:50 #: plugin.py:49
msgid "" msgid ""
"<host|ip>\n" "<host|ip>\n"
"\n" "\n"
@ -39,11 +39,11 @@ msgstr ""
" Palauttaa <isännän> ip:een tai <ip:een> käänteisen isäntänimen.\n" " Palauttaa <isännän> ip:een tai <ip:een> käänteisen isäntänimen.\n"
" " " "
#: plugin.py:57 plugin.py:72 #: plugin.py:56 plugin.py:71
msgid "Host not found." msgid "Host not found."
msgstr "Isäntää ei löytynyt." msgstr "Isäntää ei löytynyt."
#: plugin.py:87 #: plugin.py:86
msgid "" msgid ""
"<domain>\n" "<domain>\n"
"\n" "\n"
@ -55,35 +55,35 @@ msgstr ""
" Palauttaa WHOIS tiedot <verkkotunnusten> rekisteröimisestä.\n" " Palauttaa WHOIS tiedot <verkkotunnusten> rekisteröimisestä.\n"
" " " "
#: plugin.py:149 #: plugin.py:148
msgid "updated %s" msgid "updated %s"
msgstr "päivitetty %s" msgstr "päivitetty %s"
#: plugin.py:152 #: plugin.py:151
msgid "registered %s" msgid "registered %s"
msgstr "rekisteröity %s" msgstr "rekisteröity %s"
#: plugin.py:155 #: plugin.py:154
msgid "expires %s" msgid "expires %s"
msgstr "vanhenee %s" msgstr "vanhenee %s"
#: plugin.py:175 #: plugin.py:174
msgid " <registered at %s>" msgid " <registered at %s>"
msgstr " <rekisteröity aikaan %s>" msgstr " <rekisteröity aikaan %s>"
#: plugin.py:177 #: plugin.py:176
msgid " <registered by %s>" msgid " <registered by %s>"
msgstr " <rekisteröinyt %s>" msgstr " <rekisteröinyt %s>"
#: plugin.py:184 #: plugin.py:183
msgid "%s%s is %L." msgid "%s%s is %L."
msgstr "%s%s on %L." msgstr "%s%s on %L."
#: plugin.py:187 #: plugin.py:186
msgid "I couldn't find such a domain." msgid "I couldn't find such a domain."
msgstr "En voi löytää sellaista verkkotunnusta." msgstr "En voi löytää sellaista verkkotunnusta."
#: plugin.py:192 #: plugin.py:191
msgid "" msgid ""
"<ip>\n" "<ip>\n"
"\n" "\n"

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: \n" "PO-Revision-Date: \n"
"Last-Translator: Valentin Lorentz <progval@gmail.com>\n" "Last-Translator: Valentin Lorentz <progval@gmail.com>\n"
"Language-Team: Limnoria <progval@gmail.com>\n" "Language-Team: Limnoria <progval@gmail.com>\n"
@ -13,13 +13,13 @@ msgstr ""
"X-Poedit-Country: France\n" "X-Poedit-Country: France\n"
"X-Poedit-SourceCharset: ASCII\n" "X-Poedit-SourceCharset: ASCII\n"
#: plugin.py:45 #: plugin.py:44
msgid "" msgid ""
"Provides commands to query DNS, search WHOIS databases,\n" "Provides commands to query DNS, search WHOIS databases,\n"
" and convert IPs to hex." " and convert IPs to hex."
msgstr "" msgstr ""
#: plugin.py:50 #: plugin.py:49
msgid "" msgid ""
"<host|ip>\n" "<host|ip>\n"
"\n" "\n"
@ -30,11 +30,11 @@ msgstr ""
"\n" "\n"
"Retourne l'ip de l'<hôte>, ou le reverse DNS de l'<ip>" "Retourne l'ip de l'<hôte>, ou le reverse DNS de l'<ip>"
#: plugin.py:57 plugin.py:72 #: plugin.py:56 plugin.py:71
msgid "Host not found." msgid "Host not found."
msgstr "Hôte non trouvé." msgstr "Hôte non trouvé."
#: plugin.py:87 #: plugin.py:86
msgid "" msgid ""
"<domain>\n" "<domain>\n"
"\n" "\n"
@ -45,35 +45,35 @@ msgstr ""
"\n" "\n"
"Retourne les informations du WHOIS sur le <domaine>." "Retourne les informations du WHOIS sur le <domaine>."
#: plugin.py:149 #: plugin.py:148
msgid "updated %s" msgid "updated %s"
msgstr "mis à jour le %s" msgstr "mis à jour le %s"
#: plugin.py:152 #: plugin.py:151
msgid "registered %s" msgid "registered %s"
msgstr "enregistré le %s" msgstr "enregistré le %s"
#: plugin.py:155 #: plugin.py:154
msgid "expires %s" msgid "expires %s"
msgstr "expire le %s" msgstr "expire le %s"
#: plugin.py:175 #: plugin.py:174
msgid " <registered at %s>" msgid " <registered at %s>"
msgstr " <enregistré le %s>" msgstr " <enregistré le %s>"
#: plugin.py:177 #: plugin.py:176
msgid " <registered by %s>" msgid " <registered by %s>"
msgstr " <enregistré par %s>" msgstr " <enregistré par %s>"
#: plugin.py:184 #: plugin.py:183
msgid "%s%s is %L." msgid "%s%s is %L."
msgstr "%s%s est %L" msgstr "%s%s est %L"
#: plugin.py:187 #: plugin.py:186
msgid "I couldn't find such a domain." msgid "I couldn't find such a domain."
msgstr "Je ne peux trouver ce domaine." msgstr "Je ne peux trouver ce domaine."
#: plugin.py:192 #: plugin.py:191
msgid "" msgid ""
"<ip>\n" "<ip>\n"
"\n" "\n"

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2011-06-12 14:14+0200\n" "PO-Revision-Date: 2011-06-12 14:14+0200\n"
"Last-Translator: skizzhg <skizzhg@gmx.com>\n" "Last-Translator: skizzhg <skizzhg@gmx.com>\n"
"Language-Team: Italian <skizzhg@gmx.com>\n" "Language-Team: Italian <skizzhg@gmx.com>\n"
@ -10,13 +10,13 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: plugin.py:45 #: plugin.py:44
msgid "" msgid ""
"Provides commands to query DNS, search WHOIS databases,\n" "Provides commands to query DNS, search WHOIS databases,\n"
" and convert IPs to hex." " and convert IPs to hex."
msgstr "" msgstr ""
#: plugin.py:50 #: plugin.py:49
msgid "" msgid ""
"<host|ip>\n" "<host|ip>\n"
"\n" "\n"
@ -28,11 +28,11 @@ msgstr ""
" Restituisce l'ip di <host> o il DNS inverso di <ip>.\n" " Restituisce l'ip di <host> o il DNS inverso di <ip>.\n"
" " " "
#: plugin.py:57 plugin.py:72 #: plugin.py:56 plugin.py:71
msgid "Host not found." msgid "Host not found."
msgstr "Host non trovato." msgstr "Host non trovato."
#: plugin.py:87 #: plugin.py:86
msgid "" msgid ""
"<domain>\n" "<domain>\n"
"\n" "\n"
@ -44,35 +44,35 @@ msgstr ""
" Restituisce le informazioni WHOIS sulla registrazione di <dominio>.\n" " Restituisce le informazioni WHOIS sulla registrazione di <dominio>.\n"
" " " "
#: plugin.py:149 #: plugin.py:148
msgid "updated %s" msgid "updated %s"
msgstr "aggiornato il %s" msgstr "aggiornato il %s"
#: plugin.py:152 #: plugin.py:151
msgid "registered %s" msgid "registered %s"
msgstr "registrato il %s" msgstr "registrato il %s"
#: plugin.py:155 #: plugin.py:154
msgid "expires %s" msgid "expires %s"
msgstr "scade il %s" msgstr "scade il %s"
#: plugin.py:175 #: plugin.py:174
msgid " <registered at %s>" msgid " <registered at %s>"
msgstr " <registrato il %s>" msgstr " <registrato il %s>"
#: plugin.py:177 #: plugin.py:176
msgid " <registered by %s>" msgid " <registered by %s>"
msgstr " <registrato da %s>" msgstr " <registrato da %s>"
#: plugin.py:184 #: plugin.py:183
msgid "%s%s is %L." msgid "%s%s is %L."
msgstr "%s%s è %L." msgstr "%s%s è %L."
#: plugin.py:187 #: plugin.py:186
msgid "I couldn't find such a domain." msgid "I couldn't find such a domain."
msgstr "Non riesco a trovare un dominio." msgstr "Non riesco a trovare un dominio."
#: plugin.py:192 #: plugin.py:191
msgid "" msgid ""
"<ip>\n" "<ip>\n"
"\n" "\n"

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -15,14 +15,14 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
#: plugin.py:45 #: plugin.py:44
#, docstring #, docstring
msgid "" msgid ""
"Provides commands to query DNS, search WHOIS databases,\n" "Provides commands to query DNS, search WHOIS databases,\n"
" and convert IPs to hex." " and convert IPs to hex."
msgstr "" msgstr ""
#: plugin.py:50 #: plugin.py:49
#, docstring #, docstring
msgid "" msgid ""
"<host|ip>\n" "<host|ip>\n"
@ -31,11 +31,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:57 plugin.py:72 #: plugin.py:56 plugin.py:71
msgid "Host not found." msgid "Host not found."
msgstr "" msgstr ""
#: plugin.py:87 #: plugin.py:86
#, docstring #, docstring
msgid "" msgid ""
"<domain>\n" "<domain>\n"
@ -44,35 +44,35 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:149 #: plugin.py:148
msgid "updated %s" msgid "updated %s"
msgstr "" msgstr ""
#: plugin.py:152 #: plugin.py:151
msgid "registered %s" msgid "registered %s"
msgstr "" msgstr ""
#: plugin.py:155 #: plugin.py:154
msgid "expires %s" msgid "expires %s"
msgstr "" msgstr ""
#: plugin.py:175 #: plugin.py:174
msgid " <registered at %s>" msgid " <registered at %s>"
msgstr "" msgstr ""
#: plugin.py:177 #: plugin.py:176
msgid " <registered by %s>" msgid " <registered by %s>"
msgstr "" msgstr ""
#: plugin.py:184 #: plugin.py:183
msgid "%s%s is %L." msgid "%s%s is %L."
msgstr "" msgstr ""
#: plugin.py:187 #: plugin.py:186
msgid "I couldn't find such a domain." msgid "I couldn't find such a domain."
msgstr "" msgstr ""
#: plugin.py:192 #: plugin.py:191
#, docstring #, docstring
msgid "" msgid ""
"<ip>\n" "<ip>\n"

View File

@ -33,27 +33,27 @@ Commands
.. _command-karma-clear: .. _command-karma-clear:
clear [<channel>] [<name>] ``clear [<channel>] [<name>]``
Resets the karma of <name> to 0. If <name> is not given, resets everything. Resets the karma of <name> to 0. If <name> is not given, resets everything.
.. _command-karma-dump: .. _command-karma-dump:
dump [<channel>] <filename> ``dump [<channel>] <filename>``
Dumps the Karma database for <channel> to <filename> in the bot's data directory. <channel> is only necessary if the message isn't sent in the channel itself. Dumps the Karma database for <channel> to <filename> in the bot's data directory. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-karma-karma: .. _command-karma-karma:
karma [<channel>] [<thing> ...] ``karma [<channel>] [<thing> ...]``
Returns the karma of <thing>. If <thing> is not given, returns the top N karmas, where N is determined by the config variable supybot.plugins.Karma.rankingDisplay. If one <thing> is given, returns the details of its karma; if more than one <thing> is given, returns the total karma of each of the things. <channel> is only necessary if the message isn't sent on the channel itself. Returns the karma of <thing>. If <thing> is not given, returns the top N karmas, where N is determined by the config variable supybot.plugins.Karma.rankingDisplay. If one <thing> is given, returns the details of its karma; if more than one <thing> is given, returns the total karma of each of the things. <channel> is only necessary if the message isn't sent on the channel itself.
.. _command-karma-load: .. _command-karma-load:
load [<channel>] <filename> ``load [<channel>] <filename>``
Loads the Karma database for <channel> from <filename> in the bot's data directory. <channel> is only necessary if the message isn't sent in the channel itself. Loads the Karma database for <channel> from <filename> in the bot's data directory. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-karma-most: .. _command-karma-most:
most [<channel>] {increased,decreased,active} ``most [<channel>] {increased,decreased,active}``
Returns the most increased, the most decreased, or the most active (the sum of increased and decreased) karma things. <channel> is only necessary if the message isn't sent in the channel itself. Returns the most increased, the most decreased, or the most active (the sum of increased and decreased) karma things. <channel> is only necessary if the message isn't sent in the channel itself.
.. _conf-Karma: .. _conf-Karma:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -272,7 +272,7 @@ class Karma(callbacks.Plugin):
karma = '' karma = ''
for s in inc: for s in inc:
if thing.endswith(s): if thing.endswith(s):
thing = thing[:-len(s)] thing = thing[:-len(s)].rstrip(",:\t ")
# Don't reply if the target isn't a nick # Don't reply if the target isn't a nick
if onlynicks and thing.lower() not in map(ircutils.toLower, if onlynicks and thing.lower() not in map(ircutils.toLower,
irc.state.channels[channel].users): irc.state.channels[channel].users):
@ -286,7 +286,7 @@ class Karma(callbacks.Plugin):
karma = self.db.get(channel, self._normalizeThing(thing)) karma = self.db.get(channel, self._normalizeThing(thing))
for s in dec: for s in dec:
if thing.endswith(s): if thing.endswith(s):
thing = thing[:-len(s)] thing = thing[:-len(s)].rstrip(",:\t ")
if onlynicks and thing.lower() not in map(ircutils.toLower, if onlynicks and thing.lower() not in map(ircutils.toLower,
irc.state.channels[channel].users): irc.state.channels[channel].users):
return return

View File

@ -60,6 +60,10 @@ class KarmaTestCase(ChannelPluginTestCase):
'Karma for [\'"]moo[\'"].*increased 1.*total.*1') 'Karma for [\'"]moo[\'"].*increased 1.*total.*1')
self.assertRegexp('karma MoO', self.assertRegexp('karma MoO',
'Karma for [\'"]MoO[\'"].*increased 1.*total.*1') 'Karma for [\'"]MoO[\'"].*increased 1.*total.*1')
# Test trailing characters and spaces
self.assertNoResponse('baz, ++', 2)
self.assertRegexp('karma baz',
'Karma for [\'"]baz[\'"].*increased 1.*total.*1')
def testKarmaRankingDisplayConfigurable(self): def testKarmaRankingDisplayConfigurable(self):
try: try:

View File

@ -28,37 +28,37 @@ Commands
.. _command-lart-add: .. _command-lart-add:
add [<channel>] <text> ``add [<channel>] <text>``
Adds <text> to the lart database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Adds <text> to the lart database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-lart-change: .. _command-lart-change:
change [<channel>] <id> <regexp> ``change [<channel>] <id> <regexp>``
Changes the lart with id <id> according to the regular expression <regexp>. <channel> is only necessary if the message isn't sent in the channel itself. Changes the lart with id <id> according to the regular expression <regexp>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-lart-get: .. _command-lart-get:
get [<channel>] <id> ``get [<channel>] <id>``
Gets the lart with id <id> from the lart database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Gets the lart with id <id> from the lart database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-lart-lart: .. _command-lart-lart:
lart [<channel>] [<id>] <who|what> [for <reason>] ``lart [<channel>] [<id>] <who|what> [for <reason>]``
Uses the Luser Attitude Readjustment Tool on <who|what> (for <reason>, if given). If <id> is given, uses that specific lart. <channel> is only necessary if the message isn't sent in the channel itself. Uses the Luser Attitude Readjustment Tool on <who|what> (for <reason>, if given). If <id> is given, uses that specific lart. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-lart-remove: .. _command-lart-remove:
remove [<channel>] <id> ``remove [<channel>] <id>``
Removes the lart with id <id> from the lart database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Removes the lart with id <id> from the lart database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-lart-search: .. _command-lart-search:
search [<channel>] [--{regexp,by} <value>] [<glob>] ``search [<channel>] [--{regexp,by} <value>] [<glob>]``
Searches for larts matching the criteria given. Searches for larts matching the criteria given.
.. _command-lart-stats: .. _command-lart-stats:
stats [<channel>] ``stats [<channel>]``
Returns the number of larts in the database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself. Returns the number of larts in the database for <channel>. <channel> is only necessary if the message isn't sent in the channel itself.
.. _conf-Lart: .. _conf-Lart:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -48,22 +48,22 @@ Commands
.. _command-later-notes: .. _command-later-notes:
notes [<nick>] ``notes [<nick>]``
If <nick> is given, replies with what notes are waiting on <nick>, otherwise, replies with the nicks that have notes waiting for them. If <nick> is given, replies with what notes are waiting on <nick>, otherwise, replies with the nicks that have notes waiting for them.
.. _command-later-remove: .. _command-later-remove:
remove <nick> ``remove <nick>``
Removes the notes waiting on <nick>. Removes the notes waiting on <nick>.
.. _command-later-tell: .. _command-later-tell:
tell <nick1[,nick2[,...]]> <text> ``tell <nick1[,nick2[,...]]> <text>``
Tells each <nickX> <text> the next time <nickX> is seen. <nickX> can contain wildcard characters, and the first matching nick will be given the note. Tells each <nickX> <text> the next time <nickX> is seen. <nickX> can contain wildcard characters, and the first matching nick will be given the note.
.. _command-later-undo: .. _command-later-undo:
undo <nick> ``undo <nick>``
Removes the latest note you sent to <nick>. Removes the latest note you sent to <nick>.
.. _conf-Later: .. _conf-Later:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -25,3 +25,10 @@ msgstr ""
msgid "Value must be a valid channel or a valid nick." msgid "Value must be a valid channel or a valid nick."
msgstr "" msgstr ""
#: plugin.py:33
#, docstring
msgid ""
"\n"
"Allows for sending the bot's logging output to channels or users.\n"
msgstr ""

View File

@ -22,32 +22,32 @@ Commands
.. _command-math-base: .. _command-math-base:
base <fromBase> [<toBase>] <number> ``base <fromBase> [<toBase>] <number>``
Converts <number> from base <fromBase> to base <toBase>. If <toBase> is left out, it converts to decimal. Converts <number> from base <fromBase> to base <toBase>. If <toBase> is left out, it converts to decimal.
.. _command-math-calc: .. _command-math-calc:
calc <math expression> ``calc <math expression>``
Returns the value of the evaluated <math expression>. The syntax is Python syntax; the type of arithmetic is floating point. Floating point arithmetic is used in order to prevent a user from being able to crash to the bot with something like '10**10**10**10'. One consequence is that large values such as '10**24' might not be exact. Returns the value of the evaluated <math expression>. The syntax is Python syntax; the type of arithmetic is floating point. Floating point arithmetic is used in order to prevent a user from being able to crash to the bot with something like '10**10**10**10'. One consequence is that large values such as '10**24' might not be exact.
.. _command-math-convert: .. _command-math-convert:
convert [<number>] <unit> to <other unit> ``convert [<number>] <unit> to <other unit>``
Converts from <unit> to <other unit>. If number isn't given, it defaults to 1. For unit information, see 'units' command. Converts from <unit> to <other unit>. If number isn't given, it defaults to 1. For unit information, see 'units' command.
.. _command-math-icalc: .. _command-math-icalc:
icalc <math expression> ``icalc <math expression>``
This is the same as the calc command except that it allows integer math, and can thus cause the bot to suck up CPU. Hence it requires the 'trusted' capability to use. This is the same as the calc command except that it allows integer math, and can thus cause the bot to suck up CPU. Hence it requires the 'trusted' capability to use.
.. _command-math-rpn: .. _command-math-rpn:
rpn <rpn math expression> ``rpn <rpn math expression>``
Returns the value of an RPN expression. Returns the value of an RPN expression.
.. _command-math-units: .. _command-math-units:
units [<type>] ``units [<type>]``
With no arguments, returns a list of measurement types, which can be passed as arguments. When called with a type as an argument, returns the units of that type. With no arguments, returns a list of measurement types, which can be passed as arguments. When called with a type as an argument, returns the units of that type.
.. _conf-Math: .. _conf-Math:

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Math plugin for Limnoria\n" "Project-Id-Version: Math plugin for Limnoria\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n" "POT-Creation-Date: 2024-12-06 11:00+0100\n"
"PO-Revision-Date: 2014-12-20 12:16+0200\n" "PO-Revision-Date: 2014-12-20 12:16+0200\n"
"Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n" "Last-Translator: Mikaela Suomalainen <mikaela.suomalainen@outlook.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -117,7 +117,7 @@ msgstr ""
" 'trusted' valtuuden.\n" " 'trusted' valtuuden.\n"
" " " "
#: plugin.py:187 #: plugin.py:198
#, fuzzy #, fuzzy
msgid "" msgid ""
"<rpn math expression>\n" "<rpn math expression>\n"
@ -130,19 +130,19 @@ msgstr ""
" Palauttaa RPN lausekkeen arvon.\n" " Palauttaa RPN lausekkeen arvon.\n"
" " " "
#: plugin.py:212 #: plugin.py:223
msgid "Not enough arguments for %s" msgid "Not enough arguments for %s"
msgstr "Ei tarpeeksi parametrejä %s:lle." msgstr "Ei tarpeeksi parametrejä %s:lle."
#: plugin.py:225 #: plugin.py:236
msgid "%q is not a defined function." msgid "%q is not a defined function."
msgstr "%q ei ole määritetty funktio." msgstr "%q ei ole määritetty funktio."
#: plugin.py:232 #: plugin.py:243
msgid "Stack: [%s]" msgid "Stack: [%s]"
msgstr "Pino: [%s]" msgstr "Pino: [%s]"
#: plugin.py:236 #: plugin.py:247
msgid "" msgid ""
"[<number>] <unit> to <other unit>\n" "[<number>] <unit> to <other unit>\n"
"\n" "\n"
@ -157,7 +157,7 @@ msgstr ""
" on oletuksena 1. Yksikkö tiedoille, katso 'units' komento.\n" " on oletuksena 1. Yksikkö tiedoille, katso 'units' komento.\n"
" " " "
#: plugin.py:266 #: plugin.py:277
msgid "" msgid ""
" [<type>]\n" " [<type>]\n"
"\n" "\n"

Some files were not shown because too many files have changed in this diff Show More