Compare commits

...

239 Commits

Author SHA1 Message Date
a46a0733af .editorconfig: only apply indent_size and line_length for *.py 2023-09-29 11:43:04 +02:00
ecd0c926ea .editorconfig: configure text editors for Limnoria style guide 2023-09-29 11:43:04 +02:00
7581525495 .gitattributes: enable EOL normalization 2023-09-29 11:43:04 +02:00
cf4c4ca5b8 requirements.txt: add ddate as an optional dependency for Time.ddate 2023-09-29 11:23:16 +02:00
Valentin Lorentz
119a93a744 PluginDownloader: Fix typo 2023-09-24 19:58:10 +02:00
Valentin Lorentz
b1657a8735 Skip irctest on Python 3.7
It's no longer supported
2023-09-24 19:55:57 +02:00
Matias Wilkman
fa01b019ed added a new repo for plugindownloader 2023-09-24 08:07:56 +02:00
Valentin Lorentz
850b4c3f69 MessageParser: Log and skip current regexp on error 2023-09-22 14:20:55 +02:00
famfo
91accc0458
SedRegex: Implement changing of sed response per channel (#1556)
Fixes #1433

Co-authored-by: Val Lorentz <progval+github@progval.net>
Co-authored-by: James Lu <hello@jlu5.com>
2023-09-19 08:56:36 -07:00
Valentin Lorentz
5ab7c8a749 Services: I still didn't test that code 2023-09-08 23:54:47 +02:00
Valentin Lorentz
f905036d7a Services: Add missing import
It's needed since acad80296a8a4f55557f23e0ef29fbc0533a6457
2023-09-08 22:47:54 +02:00
Eric Mertens
9e82e3f16c Add command to manually initiate SASL 2023-09-05 20:13:21 +02:00
Valentin Lorentz
c66b973db0 SaslTestCase: Change config instead of messing with irc.sasl_next_mechanisms
Changing the internal state will break in the next commit, which
reorganizes SASL state initialization
2023-09-05 08:54:26 +02:00
Valentin Lorentz
81a5133c14 SaslTestCase: Use tearDown() method instead of finally: blocks
It's much cleaner
2023-09-05 08:54:26 +02:00
Valentin Lorentz
f8dd8d7642 supybot-test: Add --clean-after option 2023-09-04 20:07:42 +02:00
Valentin Lorentz
6b778598bb --clean removes files before running tests, not after 2023-09-04 18:24:16 +02:00
Valentin Lorentz
8029e2b390 supybot-test: Ensure --clean doesn't leave 'backup' and 'test-logs' directories 2023-09-04 17:36:22 +02:00
Valentin Lorentz
acad80296a Services: Update 'identified' state using SASL status
Otherwise features like auto-opping are permanently unavailable when using
SASL instead of NickServ IDENTIFY
2023-08-29 22:49:18 +02:00
Valentin Lorentz
5357f50bed Geography: Replace Canada/Newfoundland with America/St_Johns in tests
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1040997
2023-08-10 08:02:50 +02:00
Valentin Lorentz
71ae97ef5e MessageParser: On syntax error, detail which action caused the error
This can help users debug it.
2023-08-02 20:39:00 +02:00
Valentin Lorentz
bb3d456fdf RSS: Add support for feed attributes in template string
See https://feedparser.readthedocs.io/en/latest/common-rss-elements.html#accessing-common-channel-elements
2023-07-26 14:21:34 +02:00
Valentin Lorentz
8168c52939 RSS: Fix traceback in tests with new feedparser versions 2023-07-26 14:20:45 +02:00
Valentin Lorentz
2b4c5eb78f Fix crash when calling .reply(..., action=True) on ReplyIrcProxy
instead of on NestedCommandIrcProxy.

ReplyIrcProxy._sendReply expects action=True to imply noLengthCheck=True, but only
NestedCommandIrcProxy.reply() enforces the latter, not ReplyIrcProxy.reply().

This crash was introduced in 3c1c4a69e9927bcc7265b1d77fd1ab49cb55090e by
moving NestedCommandIrcProxy's .reply() to ReplyIrcProxy.
2023-07-18 07:46:51 +02:00
Valentin Lorentz
054ee6e410 Disable generic error reply when supybot.replies.error is empty 2023-07-11 21:34:49 +02:00
Valentin Lorentz
eb002a31e9 wizard: Check language is supported
Otherwise it may raise InvalidRegistryValue on first start
2023-07-08 16:46:13 +02:00
Valentin Lorentz
8d1d4b84eb Fix error message on invalid 'supybot.language' value 2023-07-08 16:42:26 +02:00
James Lu
b374418c81 irclib: fix mismatched arguments when logging IRCv3 cap responses 2023-06-30 20:07:45 -07:00
James Lu
b4bf877e77 Network: accept empty args in 'command' and 'cmdall'
Closes GH-1541
2023-06-30 19:40:49 -07:00
Val Lorentz
2902a85dbd
Fix STS parsing and handling of unchecked-TLS connections (#1524)
* ircutils: Fix incorrect log message on invalid STS policy

* STS: fix confusion over what a secure connection is

irclib computed 'secure_connection' when TLS is enabled and TLS certs
are checked; but ircutils used the value to parse STS policies, which
should only care about being TLS or not.

This commit fixes the incorrect parsing on unchecked-TLS, and triggers
a reconnect when a STS policy is encountered in this case, to force
TLS certs to be checked before storing the policy.

* Accept STS policies when reconnecting after getting it over cleartext

ircutils.parseStsPolicy() was passed self.driver.ssl which is the configured
value, even though the connection was forced to be TLS temporarily

* ci: Lower timeout

* Fix typo in test name

Co-authored-by: James Lu <james@overdrivenetworks.com>

---------

Co-authored-by: James Lu <james@overdrivenetworks.com>
2023-06-10 08:28:08 +02:00
Valentin Lorentz
97d67777d6 RSS: Sort entries in @rss responses as in announces 2023-06-08 19:58:50 +02:00
Valentin Lorentz
ac84fa4d68 ircquote: Use labeled-response when possible to reply to the user 2023-06-08 19:55:47 +02:00
Tasos Sahanidis
6021f0e6d9
String: Display regex error on invalid group reference (#1537) 2023-06-04 12:51:27 -07:00
James Lu
416a05e326
Route commands from Network.command back to the original network (#1540)
Add a replyIrc parameter to ReplyIrcProxy to run a command on one network, but route the replies to another.
This fixes a long standing issue where replies for remote commands are often lost to the void, as the nick of the caller may not exist on the target network (or worse, it could belong to a completely unrelated person).

Closes GH-556.

Co-authored-by: Val Lorentz <progval+git@progval.net>
2023-06-04 12:39:56 -07:00
James Lu
654937ecfc botchk: move imports to top-level 2023-05-26 20:27:39 -07:00
Valentin Lorentz
21b7408ca8 ci: Bump Python 3.12 version 2023-05-21 19:01:40 +02:00
Valentin Lorentz
8859e1ce51 setup.py: Add Python 3.11 and 3.12 to classifiers. 2023-05-21 18:50:24 +02:00
James Lu
3be1804553 botchk: fix syntax error 2023-04-27 18:36:50 -07:00
Val Lorentz
1690839a26
Merge pull request #1532 from progval/entrypoints
Use setuptools 'entry_points' + add 'limnoria-*' CLIs in addition to 'supybot-*'
2023-04-27 20:52:17 +02:00
Valentin Lorentz
6f663e4140 Merge branch 'testing' into entrypoints 2023-04-26 18:04:21 +02:00
Valentin Lorentz
295798ac0e Stop testing pypy3.7 with optional dependencies
one of the dependencies stopped supporting it (probably 'cryptography'
as it's the only one not in pure-Python)
2023-03-24 20:49:14 +01:00
Valentin Lorentz
add9306d30 Socket: Clear buffers on reconnect 2023-03-24 20:23:32 +01:00
Valentin Lorentz
f518579c77 Request standard-replies capability
Arbitrary standard-replies are already supported, this signals to servers
that we do.
2023-02-21 19:10:11 +01:00
Valentin Lorentz
922b00c8c3 Fediverse: Use default headers
Some instances behind Cloudflare block requests without a User-Agent
header.
2023-01-28 13:00:16 +01:00
Valentin Lorentz
3f5a18e8d0 Remove unused import fallback on the 'mock' library 2023-01-21 18:51:17 +01:00
Valentin Lorentz
efed7d8081 Move the 'ignore=False' trick from callbacks to Scheduler
I fear putting it in callbacks would be overzealous and reset it
within the processing of the same message, eg. when using conditional
to set the 'ignore' tag before other nested commands run.
2023-01-19 10:31:13 +01:00
Valentin Lorentz
f409111872 callbacks: Fix interference between Scheduler.repeat, Anonymous, and nested commands
Specifically, the issue is with Anonymous using irc.noReply() in
the first call, preventing nested commands' result from being used.

Before this commit, the second and third responses in the test would be
only "1" and "2" instead of "1 ['foo']" and "2 ['foo']".
2023-01-19 10:19:01 +01:00
Valentin Lorentz
b42596a021 Regenerate READMEs 2023-01-12 22:24:16 +01:00
Valentin Lorentz
02a0204f80 Services: Improve doc of plugins.Services.nicks 2023-01-12 22:24:16 +01:00
Val Lorentz
f5d39b0be2
Skip irctest on pypy-3.9
For some reason, it takes a whole hour to run
2022-12-28 23:15:30 +01:00
Valentin Lorentz
ef960befa3 Add test for registry reloading 2022-12-28 17:06:02 +01:00
Valentin Lorentz
64b1469a23 ci: Bump Python versions 2022-12-28 15:12:54 +01:00
Valentin Lorentz
501770e544 Fediverse: Add support for missing host-meta document 2022-12-28 15:12:18 +01:00
James Lu
21a2ace7a1 Services: allow adjusting GHOST command
Anope 2.x has renamed this to /ns recover

Closes GH-1510
2022-12-24 08:53:26 +01:00
Valentin Lorentz
d372d55c05 ci: Make Ubuntu versions explicit
Github just migrated us to Ubuntu 22.04, but it can't run Python 3.6 on it
2022-12-23 22:33:59 +01:00
Valentin Lorentz
1a7c14f4b3 Web: Decode using the charset advertized in response headers
And fall back to the sniffing when not present
2022-11-26 09:06:47 +01:00
Valentin Lorentz
e6c4da0fff Channel: Fix and re-enable disabled tests 2022-11-23 19:25:22 +01:00
Valentin Lorentz
985ca23f71 Add tests for nicksToHostmasks 2022-11-23 19:25:12 +01:00
Valentin Lorentz
314fad36eb Modernize tests
Thanks to https://pypi.org/project/teyit/
2022-11-20 19:33:23 +01:00
Valentin Lorentz
fd248dc521 Channel: Fix documentation, --exact cannot be combined 2022-11-20 19:07:44 +01:00
Valentin Lorentz
d7d97d3b93 Google: Remove broken commands 2022-11-10 01:48:49 +01:00
James Lu
73a23e220f IrcState: fix typo in attribute docs
capabilities_acq -> capabilities_ack
2022-11-06 18:38:24 -08:00
Valentin Lorentz
4da1291876 URL: Lazily deserialize records from the end in @last
Before this commit, the plugin first fetched a list of all
(deserialized) records in a list, then reversed the list, and iterated
on the reverse list.
This proved to be slow, with most of the time being spent in
`dbi.DB._newRecord` (which essentially deserializes one list of CSV).

After this commit, the list is reversed first, then the plugin iterates
on its generator, which calls `_newRecord` on records as they are
requested.

This means that when there are many URLs in the database, `@last` does
not need to waste time deserializing most records, when the result is
near the end (and if the result is the first record, then it does
exactly as much work as before).
2022-10-30 20:46:35 +01:00
Valentin Lorentz
f4ac7f88fe RSS: Don't crash on invalid variable name
It's confusing not to have feedback on IRC when a variable name
is typoed.
2022-10-28 22:41:43 +02:00
Valentin Lorentz
77805ff36e irclib: Abort authentication when server fails SCRAM challenge
Will be tested by irctest:
https://github.com/progval/irctest/pull/179
2022-10-28 15:00:58 +02:00
Valentin Lorentz
e9a29e9159 irclib: Fix crashes on ecdsa/scram signature failures 2022-10-28 14:57:57 +02:00
Valentin Lorentz
b0525bcf42 Double default peekSize
We bumped it to 8kB in 2015, but it is starting to be an issue again.
2022-10-28 14:22:44 +02:00
Valentin Lorentz
2cfc821203 Web: Allow configuring higher peekSize on Youtube 2022-10-28 14:18:52 +02:00
Valentin Lorentz
009b900100 Make TimeoutQueue.iter() actually expire items
It is functionally fine not to, but causes objects to never be freed
if iter() is the only method called on the queue (ie. no
enqueue/dequeue, len(), ...)
2022-10-24 23:43:52 +02:00
Valentin Lorentz
2c5dc405fc test: Revert generic 'The Limnoria Contributors' in copyright notices
I forgot to include these in 63eb6672eac794a9c39dec87db3aa45147e06974

(This is fine because noone but me touched these files since the initial
change in db7ef3f02517f9f2a3c56829a22b9fad3c36e374).
2022-10-24 23:41:26 +02:00
Valentin Lorentz
47253e032e Add test for structures.TimeoutQueue.__iter__ 2022-10-24 23:21:11 +02:00
Valentin Lorentz
d0a484c11c Sort remaining nondeterministc sets of values
Closes GH-1516
2022-10-20 18:35:58 +02:00
Valentin Lorentz
dc94f8dc68 registry: Default to sorting sets of values
Not sorting them causes the config file to change when the bot writes
it, because order is nondeterministic.

This is usually fine, but can be annoying when configs are deployed
with Ansible.

Closes GH-1516
2022-10-14 23:15:11 +02:00
Valentin Lorentz
8c17505221 User: Sort output of @capabilities
It's more readable than a random order.
2022-10-13 21:46:50 +02:00
Valentin Lorentz
a6aa5530dd Ensure files written with AtomicFile are read in UTF8
With some locale configurations (not that uncommon on CentOS), open() may
default to non-UTF8 encodings (eg. ANSI_X3.4-1968).

This is usually not an issue, because we use open() both for writing and
reading. However, AtomicFile implicitly enforces UTF8; which needs to be
mirrored when reading.
2022-10-06 09:49:42 +02:00
James Lu
b1cfb87e71 String: allow multi-character inputs in "ord" and "unicodename"
This allows them to support emoji ZWJ sequences, which render like one character but are actually multiple.
2022-10-06 08:31:22 +02:00
Valentin Lorentz
35bf599856 utils/web: Add <br/> to the list of block elements
It should always be replaced with a space.
2022-09-20 07:51:46 +02:00
Valentin Lorentz
169824a9d2 Math: make @icalc fail early when result is too large
This avoids inconsistent errors between CPython 3.10.7 and older
versions; and the result would not be readable anyway.

Closes GH-1517.
2022-09-18 20:06:34 +02:00
Valentin Lorentz
acdae12bbd Bump CI version from 3.11.0-alpha.2 to 3.11.0-rc.2 2022-09-18 20:06:34 +02:00
Valentin Lorentz
bc3a441888 Poll: Make answers case-insensitive 2022-09-18 19:25:48 +02:00
Valentin Lorentz
200acdfa93 registry: Normalize values before checking they are valid
Otherwise, normalization is useless, and gives a surprising error message,
such as:

```
<user> config plugins.rss.sortfeeditems oldestfirst
<bot> Error: Valid values include 'asInFeed', 'oldestFirst', 'newestFirst', 'outdatedFirst', and 'updatedFirst', not 'oldestFirst'.
```
2022-09-07 12:31:22 +02:00
Valentin Lorentz
86b389618f MessageParser: Ignore chathistory batches
To be consistent with commands and PluginRegexp (snarfers)
2022-08-16 00:23:33 +02:00
Valentin Lorentz
fccb4f705b RSS: Log feed URL when feedparser.parse raises exceptions 2022-08-07 19:17:15 +02:00
Valentin Lorentz
4db32e24a5 Ctcp: Fix 'RuntimeError: dictionary changed size during iteration' 2022-08-06 15:09:10 +02:00
Valentin Lorentz
0780624450 Time: Fix typo 2022-08-06 15:08:51 +02:00
Valentin Lorentz
b8dce0d7db Time: Skip new assertions on Python 3.6 so testSeconds passes 2022-08-02 13:16:21 +02:00
Valentin Lorentz
8f837a676d Time: Add support for omitting space in @seconds 2022-08-02 13:01:08 +02:00
Valentin Lorentz
cd0f9f2628 Polls: Make nick matching case-insensitive
This prevents the same nick from voting twice by changing
the capitalization
2022-07-31 09:04:27 +02:00
Valentin Lorentz
28c52c2818 Poll: Add @poll list command 2022-07-30 21:25:47 +02:00
Valentin Lorentz
2afa3c49a1 Fediverse: run black 2022-07-30 21:23:10 +02:00
Valentin Lorentz
ef081746b1 commands: Silence noisy logging of command evaluation 2022-07-29 10:29:48 +02:00
Valentin Lorentz
ee60431396 Add debug logging when skipping SASL mechanisms
It is useful to figure out what you forgot to configure
2022-07-29 10:03:39 +02:00
Valentin Lorentz
f549ec12c6 Add debug logging of SASL mechanisms 2022-07-29 09:45:09 +02:00
Valentin Lorentz
796f717d09 requirements.txt: Classify and provide a rationale for each dependency 2022-07-20 18:31:24 +02:00
Valentin Lorentz
7b9a944603 Remove dependency on 'mock'
It is a backport of unittest.mock for Python versions before 3.3,
which we do not support anymore.
2022-07-20 18:25:27 +02:00
Valentin Lorentz
461c091b94 Fediverse: Hide channel actor on PeerTube 2022-07-20 18:15:51 +02:00
Valentin Lorentz
34f8842273 Fediverse: Add support for descriptions with line breaks 2022-07-20 18:10:14 +02:00
Valentin Lorentz
2df2bc28d0 Fediverse: Add support for videos 2022-07-20 17:57:29 +02:00
Valentin Lorentz
d67fb2a8b2 Autocomplete, Fediverse, Geography, Poll: Run Black 2022-07-20 17:53:09 +02:00
pratyushd
5d8f59bf80
add conditional to respond acc to kick being true or not (#1512)
Co-authored-by: Pratyush Desai <pratyush.desai@liberta.casa>
2022-07-13 21:02:28 +02:00
964acac058 for #1490 extend usage examples 2022-07-13 08:56:30 +02:00
James Lu
65d88440c2 supybot-plugin-doc: default to RST
None of the current maintainers are sure what stx is??
2022-07-09 14:24:13 -07:00
James Lu
95f6b1698e Aka, Alias: replace obsolete LastFM example 2022-07-09 14:15:57 -07:00
James Lu
988fe08945 .gitignore: add doc-* paths from supybot-plugin-doc 2022-07-09 14:15:33 -07:00
Valentin Lorentz
96b7f51e71 callbacks: Ignore chathistory batches in PluginRegexp
This is consistent with what we already do with commands; and generally
makes sense, as we don't want to re-send titles and others when cycling
on UnrealIRCd (which includes a chathistory batch when joining when
chmode +H is set, despite umode +B)
2022-07-06 22:07:37 +02:00
Valentin Lorentz
3ecb37de10 test_callbacks: Add PluginRegexpTestCase.testReply to check basic behavior 2022-07-06 22:05:30 +02:00
Valentin Lorentz
6a943b8342 test_callbacks: Fix PluginRegexpTestCase to actually check regexp callbacks 2022-07-06 22:04:33 +02:00
James Lu
d00113e92d PluginDownloader: replace automatic 2to3 step with a simple warning
The previous heuristic runs into false positives when imports are merged in __init__.py

More broadly though, it's unlikely automatic 2to3 is particularly useful in 2022 - plugins that were written ~10 years ago are unlikely to work even if syntax errors are fixed.
2022-06-23 22:31:17 +02:00
James Lu
8ccf2c7175 PluginDownloader: drop legacy Python 2-only repos
Most of these haven't been updated in ~10 years and are unlikely to work out of the box today (obsolete web APIs, etc.)
2022-06-23 22:31:17 +02:00
Valentin Lorentz
b3443a5a4c setup: Fix install of subpackages when pip-installed from git repositories
It seems setuptools needs to be explicitly told to include subpackages
in this case.
2022-06-22 20:31:59 +02:00
SamStrongTalks
d04e8161d5
Add ability to exclude channel from self censoring (#1508) 2022-06-17 16:44:12 +02:00
Valentin Lorentz
c333af9a44 Add alternative name 'limnoria-' in addition to 'supybot-*' for scripts
The 'supybot-*' variants will be deprecated in a year or two,
to give distributions time to provide the new names before updating
install/usage documentation.
2022-06-17 11:48:27 +02:00
Valentin Lorentz
0572d49988 Use setuptools 'entry_points' instead of distutils-style 'scripts'
A future commit will add aliases for these scripts, and using entry_points
will make them easier to set up.
2022-06-17 11:45:31 +02:00
Valentin Lorentz
52271d2e6e setup.py: Deduplicate script list 2022-06-17 09:11:55 +02:00
Valentin Lorentz
6379a9d43a supybot-reset-password: Update help string to match the man page 2022-06-17 09:11:35 +02:00
Valentin Lorentz
a65960bfdf Add missing man page for supybot-reset-password. 2022-06-17 09:09:20 +02:00
Valentin Lorentz
fd04fccaec i18n: Validate value of supybot.language 2022-06-17 00:29:38 +02:00
Valentin Lorentz
93370b6f0e utils: Rewrite i18n initialization
The previous implementation was messy and needlessly complicated

This simplifies the logic and removes hackiness by making utils/str.py
handle internationalization logic itself, instead of bending over
backwards to load logic from the parent package at import time.
2022-06-17 00:05:51 +02:00
Valentin Lorentz
4a620bf7f0 Socket: Use the right variable to initialize the reconnect delay 2022-06-16 22:35:08 +02:00
Valentin Lorentz
94d669ebec Make the minimum reconnect delay configurable 2022-05-28 13:53:05 +02:00
Valentin Lorentz
32198d42c2 i18n: Skip fuzzy strings
The German translation currently has at least one fuzzy string
with a missing %s; and several translations are completely wrong.
2022-04-27 22:15:43 +02:00
Valentin Lorentz
109f938b0c Implement +draft/channel-context 2022-04-22 18:30:31 +02:00
Valentin Lorentz
1d4a43ed1b AutoMode: Fix crash on servers without ISUPPORT PREFIX 2022-04-16 12:05:43 +02:00
Valentin Lorentz
94c7c7dfa3 supybot-plugin-create: Remove fallback for missing supybot.i18n
It is unlikely new plugins will be used on stock Supybot or Gribble.
2022-04-08 13:02:31 +02:00
Valentin Lorentz
9ec4eb9563 irclib: Fix assertion failure on InspIRCd when Sigyn plugin is loaded 2022-04-08 12:44:42 +02:00
Valentin Lorentz
eb6fc932d9 Web: Fix matching for youtube 2022-04-04 23:29:47 +02:00
Valentin Lorentz
21ea999e3c Time: Add support for UTC offsets as tztime arguments. 2022-04-04 22:07:06 +02:00
Valentin Lorentz
4f3d6fc39f Geograpy: Fix formatting of negative non-integral offsets (and improve others) 2022-04-04 22:06:19 +02:00
Valentin Lorentz
088d0f54dd irclib: Catch exception from outFilter, as with inFilter 2022-03-17 22:29:10 +01:00
Valentin Lorentz
862fca1602 conf: Use imports instead of sys.modules to detect module availability
`conf.supybot.databases()` may be called without any plugin supporting
sqlite3 being loaded yet, which causes `sqlite3` to be missing from
`sys.modules`; so it wouldn't be used by plugins loaded afterward.
2022-03-06 13:39:47 +01:00
Valentin Lorentz
d58d8d4a71 conf: Prioritize sqlite3 over sqlalchemy in supybot.databases
It's usually a better choice for plugins that implement both
2022-03-06 13:39:41 +01:00
Valentin Lorentz
9e995d8ac2 conf: Remove 'sqlite' module from supybot.databases
It is wholy replaced by 'sqlite3', now
2022-03-06 13:39:19 +01:00
PeGaSuS
80b26c013d
Fix typo in conf.py (#1501)
Fixed typo that lead to a wrong variable name being pointed out
2022-03-06 12:30:02 +01:00
Valentin Lorentz
66d986e820 Web: Add overrides to support Youtube and Reddit; remove Twitter from tests. 2022-03-03 22:16:53 +01:00
Valentin Lorentz
76f7eced5d Fediverse: Update tests broken by previous commit 2022-02-19 21:18:24 +01:00
Valentin Lorentz
78bdc469e4 htmlToText: Don't replace inline element tags with spaces
They are not meant to be displayed like this, so they look weird sometimes.
For example, Mastodon splits long links between spans, so the Fediverse plugin
always displayed them broken.
2022-02-19 21:00:51 +01:00
Valentin Lorentz
bc76f7ead4 Fix utils.time.iana_timezone on python < 3.9 2022-02-17 12:18:13 +01:00
Valentin Lorentz
4e60d8812d Misc: Make @last handle --regexp in a single process for all messages
Spawning one process for each message was a little silly, considering
there can be thousands of messages.

Plus, some instances do reach the timeout after running for a few weeks,
so we really need to fix this.

Ideally, `regexp_wrapper` should also be removed from other plugins
(Todo, Notes, ...) as they have the same issues, but this will do for
now.
2022-02-16 21:27:28 +01:00
Valentin Lorentz
4b892c2b1d all: Update .pot and .po files 2022-02-06 00:14:47 +01:00
Valentin Lorentz
f13d275076 sandbox/update_pot.py: Run msgmerge as well 2022-02-06 00:12:42 +01:00
Valentin Lorentz
24f0e21319 sandbox/update_pot.py: Also generate .pot file for the core 2022-02-06 00:11:20 +01:00
Valentin Lorentz
736430de5b Modernize sandbox/update_plugins_messagespot.py 2022-02-05 23:51:04 +01:00
Valentin Lorentz
5b7b2bd85b Fix chmods 2022-02-05 23:37:39 +01:00
Valentin Lorentz
dacaefda24 supybot-plugin-create: Create setup.py 2022-02-05 17:32:11 +01:00
Valentin Lorentz
498290f1cd wizard: Fix mixup of sasl username and password 2022-02-03 19:56:59 +01:00
James Lu
0ed743bb8e Format: allow empty substrings in 'replace'
This allows for easy substring removal without having to use regex.
2022-01-28 17:50:31 -08:00
Valentin Lorentz
c7fa33b8be setup.py: Use the website's URL instead of the repo's 2022-01-26 19:03:47 +01:00
Valentin Lorentz
da549e4fde Geography: Print current UTC offset next to timezones. 2022-01-16 20:45:41 +01:00
Valentin Lorentz
880efbbd27 Merge branch 'geography' into testing 2022-01-16 19:44:22 +01:00
Valentin Lorentz
1643cb1b09 registry.Regexp: Better safeguard against misuses of _setValue() 2022-01-11 20:38:44 +01:00
Valentin Lorentz
28b28fe3cf Config: Fix crash happening since the previous commit 2022-01-11 20:38:14 +01:00
Valentin Lorentz
dcca9f9637 RSS: Make feed announces actually network-specific
.getSpecific() always returned the  channel-specific but non-network-specific var,
unless the channel-specific and network-specific one was manually set.
2022-01-11 20:13:39 +01:00
Valentin Lorentz
40155ede22 Fix syntax DeprecationWarning. 2022-01-09 14:10:15 +01:00
Valentin Lorentz
74f86654b1 Remove fallbacks for old Python versions. 2022-01-01 18:11:36 +01:00
Valentin Lorentz
181e34baf9 setup.py + CI: Remove support for Python 3.4 and 3.5 2022-01-01 17:49:12 +01:00
Valentin Lorentz
7fade191c3 Google: Update suggestions in the deprecation warning
1. DDG is now built-in
2. GoogleCSE is actually limited to site-specific search
2021-12-23 20:09:49 +01:00
Valentin Lorentz
caa5aa3d84 Config: Replace inconsistent terminology 2021-12-19 21:11:26 +01:00
Valentin Lorentz
3f77c53ed5 utils/structures: Fix typos, remove unused code 2021-12-19 20:53:11 +01:00
Valentin Lorentz
8053d74e71 setup.py: Fix typo 2021-12-18 19:38:49 +01:00
Valentin Lorentz
ac379eb44c supybot-wizard: Ask for SASL username and password 2021-12-18 18:37:46 +01:00
Valentin Lorentz
d1191d1c89 setup.py: Remove 3.4 and 4.5 from the classifiers 2021-12-18 18:37:26 +01:00
Valentin Lorentz
49c7c30627 setup.py: Remove reference to supybot from the short description 2021-12-18 18:36:48 +01:00
Valentin Lorentz
e223b507dd utils.time: Add support for timezones without a slash.
eg. UTC, CET, ...
2021-12-07 23:30:16 +01:00
Valentin Lorentz
ed9dffdd7f supybot-plugin-doc: Remove extra space + regenerate all READMEs. 2021-12-04 03:19:12 +01:00
Valentin Lorentz
2d2241787f supybot-plugin-doc: Fix exceptions raised while exiting the script. 2021-12-04 03:08:09 +01:00
Valentin Lorentz
828fff9cc0 supybot-plugin-doc: Add missing newlines + regenerate all READMEs. 2021-12-04 02:50:28 +01:00
Valentin Lorentz
ef0cd48bd1 registry: Better explain String.__str__ 2021-12-03 18:03:27 +01:00
Valentin Lorentz
fba5ed5fa4 Fix crash caused by registry.Json.__str__ returning non-str objects 2021-12-03 18:02:14 +01:00
Valentin Lorentz
f1824fc7db Config: Fix crash when reseting registry.Pattern 2021-12-03 17:28:05 +01:00
Valentin Lorentz
baa8cda814 Fix bypassed cache invalidation checks, causing '@config reload' to be partially ignored
`registry.Value.__call__()` is a wrapper around access to
`registry.Value.value`, that checks if the value was set before the latest
call to `registry.open_registry`; and updates the `value` if needed.

When accessing `registry.Value.value` directly, this cache can't be
invalidated, causing the old value to still be used, until the next call
to `registry.Value.__call__()`.
2021-12-03 16:56:06 +01:00
Valentin Lorentz
c0d033ff84 Math: Fix crash in @convert on small/large single-digit numbers
str() converts them to the exponent notation, which makes split('.')[1]
crash, since there is no decimal part in the exponent notation when there
is a single significant digit.
2021-11-28 18:00:58 +01:00
Valentin Lorentz
2d5c80736d MessageParser: Fix crash (and unexpected behavior) when matching backslashes
Closes GH-1497.
2021-11-26 00:55:44 +01:00
Valentin Lorentz
068488c546 Fix sdists created by newer setuptools versions.
This caused the PyPI package to be broken since I upgraded
my computer from Debian bullseye
2021-11-20 14:41:42 +01:00
Valentin Lorentz
dd3678e481 Remove Travis badges 2021-11-19 09:53:31 +01:00
Valentin Lorentz
63a97fc147 Owner: Ignore commands when they are in a chathistory batch. 2021-11-18 13:17:39 +01:00
Valentin Lorentz
2236c7552a irclib: Request draft/account-registration
Servers might reject the REGISTER command if it's not ACKed.
2021-11-17 23:26:06 +01:00
Valentin Lorentz
d2091e8f71 Geography: Always prefer IANA timezones over UTC offsets
Even if the UTC offsets are given on a more specific entity,
they are usually worthless to us (eg. DST).
2021-11-11 19:07:36 +01:00
Valentin Lorentz
76b9d6f0ce Geography: Properly handle missing timezones 2021-11-09 23:38:31 +01:00
Valentin Lorentz
93a407a9ac Geography: Add 'localtime' command 2021-11-09 23:10:59 +01:00
Valentin Lorentz
36ade18319 Geography: Add 'timezone' command 2021-11-09 22:41:40 +01:00
Valentin Lorentz
696d82ccfe Geography: Fix crash in nominatim.py when some results are not OSM objects 2021-11-09 22:41:40 +01:00
Valentin Lorentz
162e974aba Geography: Implement search for OSM IDs using Nominatim. 2021-11-09 22:41:40 +01:00
Valentin Lorentz
35c1407779 Geography: Add support for querying Wikidata from an OSM ID. 2021-11-09 22:41:40 +01:00
Valentin Lorentz
1a72a7d6d0 Geography: run Black 2021-11-09 22:41:40 +01:00
Valentin Lorentz
849acb21f4 Geography: Clean up the SPARQL statement. 2021-11-09 22:41:40 +01:00
Valentin Lorentz
3b7379ec0f Geography: Fix typo, preventing exclusion of non-constant offset statements on timezones
eg. it did not exclude the offsets from Q941023 (Eastern Time Zone)
2021-11-09 22:41:40 +01:00
Valentin Lorentz
0a6f598295 Geography: Set a better user-agent to access Wikidata 2021-11-09 22:41:40 +01:00
Valentin Lorentz
27c513135c Geography: Early draft, with buggy implementation of timezone_from_qid. 2021-11-09 22:41:40 +01:00
Valentin Lorentz
5aefd6395f Time: Fix error handling in @tztime. 2021-11-09 22:33:23 +01:00
Valentin Lorentz
8326d6ef7f Fediverse and Poll: Run Black 2021-11-09 22:33:12 +01:00
Valentin Lorentz
feaa02ab6d Add docstring to supybot.utils.time.iana_timezone 2021-11-08 23:20:28 +01:00
Valentin Lorentz
12c526bc1c Update default user agent to mention Limnoria 2021-11-08 23:20:13 +01:00
Valentin Lorentz
abe59022b4 irclib: Remove broken + useless code
This function does not exist anymore
2021-11-08 21:59:05 +01:00
Valentin Lorentz
8b26b675ba Use stdlib instead of pytz on Python >= 3.9
Python 3.9 introduced the zoneinfo module, which provides the only
feature we used pytz for (getting a datetime.tzinfo object from
an IANA timezone id); so let's use it instead of a third-party
dependency.
2021-11-08 21:46:48 +01:00
Valentin Lorentz
a5cd930a4b Update CI/setup.py/README: Python 3.10 is now released. 2021-11-08 21:30:00 +01:00
Valentin Lorentz
ce7e4b754c Replace deprecated unittest function calls. 2021-11-08 21:29:59 +01:00
Valentin Lorentz
93c63092d9 Remove SQLAlchemy from the dependencies.
It's only used by Aka when sqlite3 is not available, so basically never.
And SQLAlchemy probably can't work without sqlite3 anyway.

Plus, SQLAlchemy depends on greenlet, which does not support
Python 3.11a2 yet: https://github.com/python-greenlet/greenlet/issues/273
2021-11-08 21:29:59 +01:00
James Lu
417cd7d66f LogToIrc: add missing import 2021-10-20 17:39:50 -07:00
Valentin Lorentz
1f618b9773 log: Fix support of 'supybot-test --clean'
Broken in dff394df64b275833eba3b12f253f1e66c80db27.
2021-10-18 10:08:41 +02:00
Valentin Lorentz
63eb6672ea Revert generic 'The Limnoria Contributors' in copyright notices
This commit reverts db7ef3f02517f9f2a3c56829a22b9fad3c36e374
(though it keeps the year updates)

After discussion with several people, it seems better to mention
copyright owners explicitly. eg. https://reuse.software/faq/#vcs-copyright
explains the issue of using VCSs to track copyright.

As db7ef3f02517f9f2a3c56829a22b9fad3c36e374 only replaced mentions
of my name with 'The Limnoria Contributors', this commit only needs
to undo that + add one person who contributed to setup.py.
2021-10-17 09:57:55 +02:00
Valentin Lorentz
dff394df64 log: Add support for rotating messages.log. 2021-10-14 23:52:16 +02:00
Valentin Lorentz
666acd9f1f log: Simplify encoding in BetterFileHandler.
I don't think any these cases are useful anymore.

Let's keep the last one anyway, just in case I'm wrong.
2021-10-14 23:47:32 +02:00
Valentin Lorentz
e972894b8a supybot-wizard: Fix variable shadowing. 2021-10-14 23:43:40 +02:00
PeGaSuS
f31e5c4b9a LogToIrc: Synchronize README with config.py
Better document the format of the 'target' config var
2021-10-09 22:53:13 +02:00
Valentin Lorentz
3f27c03f77 LogToIrc: better document the format of the 'target' config var 2021-10-09 21:08:48 +02:00
Valentin Lorentz
163e717bf0 Fediverse: increase again to fix failures on the CI... 2021-10-08 01:03:31 +02:00
Valentin Lorentz
d844243ce1 Fediverse: increase max heap size to mitigate crashes on pypy 2021-10-08 00:15:45 +02:00
Valentin Lorentz
bc0c5bdeed ChannelLogger: Log away messages 2021-10-07 21:34:04 +02:00
Valentin Lorentz
ebaa346619 callbacks: Don't raise AssertionError when addressd() is called with a NOTICE
Some plugins (like LinkRelay) share code between NOTICE and PRIVMSG
and they might call it unconditionally.
2021-09-22 21:48:59 +02:00
Valentin Lorentz
de277edb42 irclib: Make requestCapabilities a public method
So it can be used by plugins like Sigyn.
2021-09-22 18:54:47 +02:00
Valentin Lorentz
4d974869f9 String: Fix TypeError. 2021-09-21 21:41:25 +02:00
Valentin Lorentz
f468557899 Channel: Fix capability check in alertOps, to check the target instead of sender. 2021-09-21 21:21:21 +02:00
Valentin Lorentz
c93493901e Fediverse & String: Increase test timeouts, they can be flaky on CIs 2021-09-21 21:19:03 +02:00
Valentin Lorentz
749b8e18ad fix test 2021-09-14 21:03:15 +02:00
Valentin Lorentz
dc79ab193a Update capitalization of my Github username 2021-09-14 20:30:47 +02:00
Valentin Lorentz
5b9ec4f716 LogToIrc: Prevent loop when sending to non-existing channels
When the target is a channel it is not in, it would treat it as a user;
which, if userCapabilityRequired is empty, would unconditionally send it
to a channel.
This would usually result in an error, that would be logged,
hence the loop.
2021-09-13 19:07:34 +02:00
Valentin Lorentz
070090ffc5 LogToIrc: Honor the configured log level 2021-09-13 19:05:42 +02:00
Valentin Lorentz
76bd1c89bf Socket: Gracefully handle invalid lines with UTF8ONLY
Just skip the line, instead of crashing the whole loop (which
contains the next lines from the same server too)
2021-09-13 18:45:49 +02:00
Valentin Lorentz
ee9f0dc1bf STS: When persisting STS keys, use the actual port instead of the one from the policy
'Servers MAY send this key to securely connected clients, but it will be ignored.'
-- https://ircv3.net/specs/extensions/sts\#the-port-key
2021-09-03 20:15:18 +02:00
Valentin Lorentz
74073b2736 irclib: Log the server's error message on SASL failure. 2021-09-01 18:25:54 +02:00
Valentin Lorentz
e63858659a Fediverse: Better assertionerror messages 2021-08-28 23:48:19 +02:00
Valentin Lorentz
52a5cefd50 Move stripformatting from Format to Filter, for consistency 2021-08-28 23:37:21 +02:00
Valentin Lorentz
d593f84a66 Socket: disable charset heuristics when the server advertizes UTF8ONLY. 2021-08-27 19:03:18 +02:00
Valentin Lorentz
db05081ff6 commands: fix _checkUrl 2021-08-25 23:28:25 +02:00
Valentin Lorentz
0131cd0691 commands: Add converters for IRIs
Since the 'url' and 'httpUrl' converters no longer support them...
2021-08-25 21:55:31 +02:00
Valentin Lorentz
be88530fa4 commands: Disallow IRIs from 'url' and 'httpUrl' converters.
urllib doesn't support IRIs, and gives out a cryptic
'UnicodeEncodeError: 'ascii' codec can't encode character ...'
if we don't validate it.
2021-08-25 21:54:55 +02:00
Valentin Lorentz
62db3a92fc callbacks: Print unexpected commands 2021-08-25 21:29:19 +02:00
Valentin Lorentz
ca624d7ae6 RSS: Fix nondeterministic test failures
Caused by 'rss announce add' triggering headline announces, that would
delay the execution of the 'remove' commands.

Thanks to @mapreri and @Unit193 for help in reproducing the issue
and confirming the patch.
2021-08-22 19:23:05 +02:00
Valentin Lorentz
0c8e455b4e RSS: When deleting a named feed, preserve anonymous feed of the same URL. 2021-08-22 19:21:28 +02:00
Valentin Lorentz
cbd2b31d8f Add error message in case setuptools is not installed. 2021-08-12 21:32:24 +02:00
Ian Wienand
37ba0ef7be setup.py: switch import to setuptools
Switch to standard setuptools import, add suggested entries to
pyproject.toml.

Remove the --clean argument.  As the comment suggests I'm sure there
is history here, but having setup.py remove parts of the package does
not seem like something required at this point.

Also clean up the imports to remove unused and group them together at
the top.
2021-08-12 21:23:48 +02:00
Valentin Lorentz
49b9a9ab74 Add missing (optional) dependency, pyxmpp2-scram 2021-08-12 20:00:25 +02:00
James Lu
09392478e6
getUrlFd: chain the original exception so that plugins can handle them further (#1487) 2021-08-01 13:35:45 -07:00
Valentin Lorentz
db7ef3f025 all: Add generic 'The Limnoria Contributors' to copyright notices.
No need to bother with details (that are all outdated / out of sync
anyway), just look up the git history.
2021-08-01 21:54:49 +02:00
Valentin Lorentz
a86b2a62ab More verbose irctest logging.
trying to figure out why it freezes on the CI...
2021-07-31 17:57:53 +02:00
Valentin Lorentz
747ef77106 Fix tests when pyxmpp2_scram is not installed. 2021-07-31 14:40:44 +02:00
Valentin Lorentz
c008d1191c RSS: Fix crashes when the set of channels changed while iterating. 2021-07-31 14:33:34 +02:00
Valentin Lorentz
ade5a02457 Fix/update SASL tests, broken by the previous commit. 2021-07-31 13:05:39 +02:00
Valentin Lorentz
5e2c2122aa Add as scram-sha-256 prefered SASL mechanism. 2021-07-31 11:40:28 +02:00
Valentin Lorentz
406369d53f Expose standardSubstitute's var dictionary
So it can be reused by plugins if they want to use a different templating
engine.
2021-07-21 09:45:28 +02:00
751 changed files with 31789 additions and 15992 deletions

9
.editorconfig Normal file
View File

@ -0,0 +1,9 @@
root = true
[*]
insert_final_newline = true
indent_style = space
[*.py]
indent_size = 4
max_line_length = 79

1
.gitattributes vendored
View File

@ -1,2 +1,3 @@
* text=auto
sandbox export-ignore sandbox export-ignore
.git* export-ignore .git* export-ignore

View File

@ -4,29 +4,59 @@ on:
push: push:
pull_request: pull_request:
# Sources of supported versions:
# * https://github.com/actions/python-versions/blob/main/versions-manifest.json
# * https://downloads.python.org/pypy/versions.json
jobs: jobs:
build: build:
runs-on: ${{ matrix.runs-on }} runs-on: ${{ matrix.runs-on }}
timeout-minutes: 10
strategy: strategy:
matrix: matrix:
python-version: ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10.0-beta.4", "pypy-3.6", "pypy-3.7"]
with-opt-deps: [false, true]
runs-on: [ubuntu-latest]
exclude:
# Some of the dependencies don't work on old Python versions
- python-version: "3.4"
with-opt-deps: true
- python-version: "3.5"
with-opt-deps: true
- python-version: "3.6"
with-opt-deps: true
- python-version: "pypy-3.6"
with-opt-deps: true
include: include:
- python-version: "3.4" - python-version: "3.12.0-alpha.7"
with-opt-deps: true
runs-on: ubuntu-22.04
- python-version: "3.11"
with-opt-deps: true
runs-on: ubuntu-22.04
- python-version: "3.10"
with-opt-deps: true
runs-on: ubuntu-22.04
- python-version: "3.10"
with-opt-deps: false with-opt-deps: false
runs-on: ubuntu-18.04 runs-on: ubuntu-22.04
- python-version: "3.9"
with-opt-deps: true
runs-on: ubuntu-22.04
- python-version: "pypy-3.9"
with-opt-deps: true
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
@ -54,9 +84,9 @@ jobs:
supybot-test test -v --plugins-dir=./plugins/ --no-network supybot-test test -v --plugins-dir=./plugins/ --no-network
- name: Test with irctest - name: Test with irctest
if: "${{ matrix.with-opt-deps && matrix.python-version != 'pypy-3.7' }}" if: "${{ matrix.with-opt-deps && matrix.python-version != '3.7' && matrix.python-version != 'pypy-3.7' && matrix.python-version != 'pypy-3.9' }}"
run: | run: |
git clone https://github.com/ProgVal/irctest.git git clone https://github.com/progval/irctest.git
cd irctest cd irctest
pip3 install -r requirements.txt pip3 install -r requirements.txt
make limnoria make limnoria PYTEST_ARGS=-vs

3
.gitignore vendored
View File

@ -23,6 +23,9 @@ supybot.egg-info/
test-conf/ test-conf/
test-data/ test-data/
test-logs/ test-logs/
doc-conf/
doc-data/
doc-logs/
src/version.py src/version.py
INSTALL INSTALL
README.txt README.txt

View File

@ -22,14 +22,6 @@ It is the successor of
since 2010 and provides many new features, but keeps full compatibility since 2010 and provides many new features, but keeps full compatibility
with existing configurations and plugins. with existing configurations and plugins.
# Build status
Master branch: [![Build Status (master branch)](https://travis-ci.org/ProgVal/Limnoria.png?branch=master)](https://travis-ci.org/ProgVal/Limnoria)
Testing branch: [![Build Status (testing branch)](https://travis-ci.org/ProgVal/Limnoria.png?branch=testing)](https://travis-ci.org/ProgVal/Limnoria)
Limnoria supports CPython 3.4 to 3.9, CPython nightly, and Pypy 3.
# Support # Support
## Documentation ## Documentation

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

42
man/limnoria-adduser.1 Normal file
View File

@ -0,0 +1,42 @@
.\" Process this file with
.\" groff -man -Tascii limnoria-adduser.1
.\"
.TH LIMNORIA-ADDUSER 1 "APRIL 2005"
.SH NAME
limnoria-adduser \- Adds a user to a Limnoria users.conf file
.SH SYNOPSIS
.B limnoria-adduser
.RI [ options ] " users.conf
.SH DESCRIPTION
.B limnoria-adduser
adds a user to the specified users.conf file.
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BR \-u " NAME" "\fR,\fP \-\^\-username=" NAME
Specifies the username to use for the new user.
.TP
.BR \-p " PASSWORD" "\fR,\fP \-\^\-password=" PASSWORD
Specifies the password to use for the new user.
.TP
.BR \-c " CAPABILITY" "\fR,\fP \-\^\-capability=" CAPABILITY
Capability the user should have; this option may be given
multiple times.
.SH "SEE ALSO"
.IR python (1),
.IR limnoria (1),
.IR limnoria-test (1),
.IR limnoria-botchk (1),
.IR limnoria-wizard (1),
.IR limnoria-plugin-doc (1),
.IR limnoria-plugin-create (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Limnoria
license, a BSD-style license.

54
man/limnoria-botchk.1 Normal file
View File

@ -0,0 +1,54 @@
.\" Process this file with
.\" groff -man -Tascii limnoria-botchk.1
.\"
.TH LIMNORIA-BOTCHK 1 "APRIL 2005"
.SH NAME
limnoria-botchk \- A script to start Limnoria if it's not already running.
.SH SYNOPSIS
.B limnoria-botchk
.RI [ options ]
.SH DESCRIPTION
.B limnoria-botchk
is a script that will start Limnoria if it detects that one is not currently
running. This can be useful for scheduling
.IR limnoria (1)
to run via
.IR cron (8).
.SH OPTIONS
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BR \-v ", " \-\^\-verbose
Use verbose output when running the script.
.TP
.BI \-\^\-botdir= BOTDIR
Determines which directory the bot be started in.
.TP
.BI \-\^\-pidfile= PIDFILE
Specifies the name of the pidfile to look for. This should be relative
to the given botdir.
.TP
.BI \-\^\-limnoria= LIMNORIA
Specifies the location of
.IR limnoria (1).
If this is not given, it is assumed that
.IR limnoria (1)
is in the user's $PATH.
.TP
.BI \-\^\-conffile= CONFFILE
Specifies the path to the bot's configuration file. This will be used
when (re)starting the bot.
.SH "SEE ALSO"
.IR python (1),
.IR limnoria (1),
.IR limnoria-test (1),
.IR limnoria-wizard (1),
.IR limnoria-adduser (1),
.IR limnoria-plugin-doc (1),
.IR limnoria-plugin-create (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Limnoria
license, a BSD-style license.

View File

@ -0,0 +1,43 @@
.\" Process this file with
.\" groff -man -Tascii limnoria-plugin-create.1
.\"
.TH LIMNORIA-PLUGIN-CREATE 1 "APRIL 2005"
.SH NAME
limnoria-plugin-create \- A wizard for creating Limnoria plugins
.SH SYNOPSIS
.B limnoria-plugin-create
.RI [ options ]
.SH DESCRIPTION
.B limnoria-plugin-create
is a wizard that creates a template python source file for a new
.IR limnoria (1)
plugin.
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BI \-n " NAME" "\fR,\fP \-\^\-name=" NAME
Sets the name for the plugin.
.TP
.BR \-t ", " \-\^\-thread
Makes the plugin threaded.
.TP
.BI \-\^\-real\-name= REALNAME
Specify what real name the copyright is assigned to.
.SH "SEE ALSO"
.IR python (1),
.IR limnoria (1),
.IR limnoria-test (1),
.IR limnoria-botchk (1),
.IR limnoria-wizard (1),
.IR limnoria-adduser (1),
.IR limnoria-plugin-doc (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Limnoria
license, a BSD-style license.

48
man/limnoria-plugin-doc.1 Normal file
View File

@ -0,0 +1,48 @@
.\" Process this file with
.\" groff -man -Tascii limnoria-plugin-doc.1
.\"
.TH LIMNORIA-PLUGIN-DOC 1 "May 2009"
.SH NAME
limnoria-plugin-doc \- Generates the documentation for a Limnoria plugin
.SH SYNOPSIS
.B limnoria-plugin-doc
.RI [ options ]
.SH DESCRIPTION
.B limnoria-plugin-doc
is used to generate documentation (StructuredText or reStructuredText format)
for a
.IR limnoria (1)
plugin.
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BR \-c ", " \-\^\-clean
Clean the various data/conf/log directories after generating the docs.
.TP
.BR \-o ", " \-\^\-output\-dir= \fIOUTPUTDIR
Specifies the directory in which to write the documentation for the plugin.
.TP
.BR \-f ", " \-\^\-format= \fIFORMAT
Specifies which output format to use. Choices are 'rst' or 'stx'.
.TP
.BI \-\^\-plugins\-dir= PLUGINSDIRS
Looks in the given directory for plugins and generates documentation for all of
them.
.SH "SEE ALSO"
.IR python (1),
.IR limnoria (1),
.IR limnoria-test (1),
.IR limnoria-botchk (1),
.IR limnoria-wizard (1),
.IR limnoria-adduser (1),
.IR limnoria-plugin-create (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Limnoria
license, a BSD-style license.

View File

@ -0,0 +1,35 @@
.\" Process this file with
.\" groff -man -Tascii limnoria-reset-password.1
.\"
.TH LIMNORIA-RESET-PASSWORD 1 "JUNE 2022"
.SH NAME
limnoria-reset-password \- Changes a user's password in a Limnoria users.conf file
.SH SYNOPSIS
.B limnoria-reset-password
.RI [ options ] " users.conf
.SH DESCRIPTION
.B limnoria-reset-password
changes a user's password in a Limnoria users.conf file
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BR \-u " NAME" "\fR,\fP \-\^\-username=" NAME
Specifies the username to use for the new user.
.TP
.BR \-p " PASSWORD" "\fR,\fP \-\^\-password=" PASSWORD
Specifies the new password to use for the new user.
.SH "SEE ALSO"
.IR python (1),
.IR limnoria (1),
.IR limnoria-adduser (1)
.SH AUTHOR
This manual page was originally written by Valentin Lorentz
<progval plus limnoria at progval dot net>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Limnoria
license, a BSD-style license.

51
man/limnoria-test.1 Normal file
View File

@ -0,0 +1,51 @@
.\" Process this file with
.\" groff -man -Tascii limnoria-test.1
.\"
.TH LIMNORIA-TEST 1 "OCTOBER 2005"
.SH NAME
limnoria-test \- Runs the test suite for a Limnoria plugin
.SH SYNOPSIS
.B limnoria-test
.RI [ options ] " plugins
.SH DESCRIPTION
.B limnoria-test
Runs the test suite for a Limnoria plugin
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BR \-c ", " \-\^\-clean
Cleans the various data/conf/logs directories before running tests.
.TP
.BR \-t " TIMEOUT" "\fR,\fP \-\^\-timeout=" TIMEOUT
Specifies the timeout for tests to return responses.
.TP
.BR \-v ", " \-\^\-verbose
Sets the verbose flag, logging extra information about each test that runs.
.TP
.BR \-\^\-no\-network
Prevents the network-based tests from being run.
.TP
.BR \-\^\-trace
Traces all calls made. Unless you're really in a pinch, you probably
shouldn't do this; it results in copious amounts of output.
.TP
.BR "\fR,\fP \-\^\-plugins\-dir=" PLUGINSDIR
Looks in the given directory for plugins and loads the tests for all of them.
.SH "SEE ALSO"
.IR python (1),
.IR limnoria (1),
.IR limnoria-botchk (1),
.IR limnoria-wizard (1),
.IR limnoria-adduser (1),
.IR limnoria-plugin-doc (1),
.IR limnoria-plugin-create (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Limnoria
license, a BSD-style license.

42
man/limnoria-wizard.1 Normal file
View File

@ -0,0 +1,42 @@
.\" Process this file with
.\" groff -man -Tascii limnoria-wizard.1
.\"
.TH LIMNORIA-WIZARD 1 "SEPTEMBER 2004"
.SH NAME
limnoria-wizard \- A wizard for creating Limnoria configuration files
.SH SYNOPSIS
.B limnoria-wizard
.RI [ options ]
.SH DESCRIPTION
.B limnoria-wizard
is an in-depth wizard that provides a nice user interface for creating
configuration files for
.IR limnoria (1).
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.B \-\^\-allow\-root
Determines whether the wizard will be allowed to run as root. You do not
want this. Do not do it. Even if you think you want it, you do not.
.TP
.B \-\^\-no\-network
Determines whether the wizard will be allowed to run without a network
connection.
.SH "SEE ALSO"
.IR python (1),
.IR limnoria (1),
.IR limnoria-test (1),
.IR limnoria-botchk (1),
.IR limnoria-adduser (1),
.IR limnoria-plugin-doc (1),
.IR limnoria-plugin-create (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Limnoria
license, a BSD-style license.

66
man/limnoria.1 Normal file
View File

@ -0,0 +1,66 @@
.\" Process this file with
.\" groff -man -Tascii limnoria.1
.\"
.TH LIMNORIA 1 "JULY 2009"
.SH NAME
limnoria - A robust and user friendly Python IRC bot
.SH SYNOPSIS
.B limnoria
.RI [ options ] " configFile
.SH DESCRIPTION
.B Limnoria
is a robust, user-friendly, and programmer-friendly Python IRC bot.
It aims to be an adequate replacement for most existing IRC bots. It
includes a very flexible and powerful ACL system for controlling access
to commands, as well as more than 50 builtin plugins providing around
400 actual commands.
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BR \-P ", " \-\^\-profile
Enable profiling.
.TP
.BI \-n " NICK" "\fR,\fP \-\^\-nick=" NICK
Nick the bot should use.
.TP
.BI \-u " USER" "\fR,\fP \-\^\-user=" USER
Full username the bot should use.
.TP
.BI \-i " IDENT" "\fR,\fP \-\^\-ident=" IDENT
Ident the bot should use.
.TP
.BR \-d ", " \-\^\-daemon
Determines whether the bot will daemonize. This is a no-op on
non-POSIX systems.
.TP
.B \-\^\-allow\-default\-owner
Determines whether the bot will allow its defaultCapabilities not to
include "\-owner", thus giving all users the owner capability by
default. This is dumb, hence we require a command-line option to
enable it.
.TP
.B \-\^\-allow\-root
Determines whether the bot will be allowed to run as root. You do not
want this. Do not do it. Even if you think you want it, you do not.
.TP
.B \-\^\-debug
Determines whether some extra debugging stuff will be logged by this
script.
.SH "SEE ALSO"
.IR python (1),
.IR limnoria-test (1),
.IR limnoria-botchk (1),
.IR limnoria-wizard (1),
.IR limnoria-adduser (1),
.IR limnoria-plugin-doc (1),
.IR limnoria-plugin-create (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Limnoria
license, a BSD-style license.

View File

@ -1,42 +0,0 @@
.\" Process this file with
.\" groff -man -Tascii supybot-adduser.1
.\"
.TH SUPYBOT-ADDUSER 1 "APRIL 2005"
.SH NAME
supybot-adduser \- Adds a user to a Supybot users.conf file
.SH SYNOPSIS
.B supybot-adduser
.RI [ options ] " users.conf
.SH DESCRIPTION
.B supybot-adduser
adds a user to the specified users.conf file.
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BR \-u " NAME" "\fR,\fP \-\^\-username=" NAME
Specifies the username to use for the new user.
.TP
.BR \-p " PASSWORD" "\fR,\fP \-\^\-password=" PASSWORD
Specifies the password to use for the new user.
.TP
.BR \-c " CAPABILITY" "\fR,\fP \-\^\-capability=" CAPABILITY
Capability the user should have; this option may be given
multiple times.
.SH "SEE ALSO"
.IR python (1),
.IR supybot (1),
.IR supybot-test (1),
.IR supybot-botchk (1),
.IR supybot-wizard (1),
.IR supybot-plugin-doc (1),
.IR supybot-plugin-create (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Supybot
license, a BSD-style license.

1
man/supybot-adduser.1 Symbolic link
View File

@ -0,0 +1 @@
limnoria-adduser.1

View File

@ -1,54 +0,0 @@
.\" Process this file with
.\" groff -man -Tascii supybot-botchk.1
.\"
.TH SUPYBOT-BOTCHK 1 "APRIL 2005"
.SH NAME
supybot-botchk \- A script to start Supybot if it's not already running.
.SH SYNOPSIS
.B supybot-botchk
.RI [ options ]
.SH DESCRIPTION
.B supybot-botchk
is a script that will start Supybot if it detects that one is not currently
running. This can be useful for scheduling
.IR supybot (1)
to run via
.IR cron (8).
.SH OPTIONS
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BR \-v ", " \-\^\-verbose
Use verbose output when running the script.
.TP
.BI \-\^\-botdir= BOTDIR
Determines which directory the bot be started in.
.TP
.BI \-\^\-pidfile= PIDFILE
Specifies the name of the pidfile to look for. This should be relative
to the given botdir.
.TP
.BI \-\^\-supybot= SUPYBOT
Specifies the location of
.IR supybot (1).
If this is not given, it is assumed that
.IR supybot (1)
is in the user's $PATH.
.TP
.BI \-\^\-conffile= CONFFILE
Specifies the path to the bot's configuration file. This will be used
when (re)starting the bot.
.SH "SEE ALSO"
.IR python (1),
.IR supybot (1),
.IR supybot-test (1),
.IR supybot-wizard (1),
.IR supybot-adduser (1),
.IR supybot-plugin-doc (1),
.IR supybot-plugin-create (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Supybot
license, a BSD-style license.

1
man/supybot-botchk.1 Symbolic link
View File

@ -0,0 +1 @@
limnoria-botchk.1

View File

@ -1,43 +0,0 @@
.\" Process this file with
.\" groff -man -Tascii supybot-plugin-create.1
.\"
.TH SUPYBOT-PLUGIN-CREATE 1 "APRIL 2005"
.SH NAME
supybot-plugin-create \- A wizard for creating Supybot plugins
.SH SYNOPSIS
.B supybot-plugin-create
.RI [ options ]
.SH DESCRIPTION
.B supybot-plugin-create
is a wizard that creates a template python source file for a new
.IR supybot (1)
plugin.
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BI \-n " NAME" "\fR,\fP \-\^\-name=" NAME
Sets the name for the plugin.
.TP
.BR \-t ", " \-\^\-thread
Makes the plugin threaded.
.TP
.BI \-\^\-real\-name= REALNAME
Specify what real name the copyright is assigned to.
.SH "SEE ALSO"
.IR python (1),
.IR supybot (1),
.IR supybot-test (1),
.IR supybot-botchk (1),
.IR supybot-wizard (1),
.IR supybot-adduser (1),
.IR supybot-plugin-doc (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Supybot
license, a BSD-style license.

1
man/supybot-plugin-create.1 Symbolic link
View File

@ -0,0 +1 @@
limnoria-plugin-create.1

View File

@ -1,48 +0,0 @@
.\" Process this file with
.\" groff -man -Tascii supybot-plugin-doc.1
.\"
.TH SUPYBOT-PLUGIN-DOC 1 "May 2009"
.SH NAME
supybot-plugin-doc \- Generates the documentation for a Supybot plugin
.SH SYNOPSIS
.B supybot-plugin-doc
.RI [ options ]
.SH DESCRIPTION
.B supybot-plugin-doc
is used to generate documentation (StructuredText or reStructuredText format)
for a
.IR supybot (1)
plugin.
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BR \-c ", " \-\^\-clean
Clean the various data/conf/log directories after generating the docs.
.TP
.BR \-o ", " \-\^\-output\-dir= \fIOUTPUTDIR
Specifies the directory in which to write the documentation for the plugin.
.TP
.BR \-f ", " \-\^\-format= \fIFORMAT
Specifies which output format to use. Choices are 'rst' or 'stx'.
.TP
.BI \-\^\-plugins\-dir= PLUGINSDIRS
Looks in the given directory for plugins and generates documentation for all of
them.
.SH "SEE ALSO"
.IR python (1),
.IR supybot (1),
.IR supybot-test (1),
.IR supybot-botchk (1),
.IR supybot-wizard (1),
.IR supybot-adduser (1),
.IR supybot-plugin-create (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Supybot
license, a BSD-style license.

1
man/supybot-plugin-doc.1 Symbolic link
View File

@ -0,0 +1 @@
limnoria-plugin-doc.1

View File

@ -0,0 +1 @@
limnoria-reset-password.1

View File

@ -1,51 +0,0 @@
.\" Process this file with
.\" groff -man -Tascii supybot-test.1
.\"
.TH SUPYBOT-TEST 1 "OCTOBER 2005"
.SH NAME
supybot-test \- Runs the test suite for a Supybot plugin
.SH SYNOPSIS
.B supybot-test
.RI [ options ] " plugins
.SH DESCRIPTION
.B supybot-test
Runs the test suite for a Supybot plugin
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BR \-c ", " \-\^\-clean
Cleans the various data/conf/logs directories before running tests.
.TP
.BR \-t " TIMEOUT" "\fR,\fP \-\^\-timeout=" TIMEOUT
Specifies the timeout for tests to return responses.
.TP
.BR \-v ", " \-\^\-verbose
Sets the verbose flag, logging extra information about each test that runs.
.TP
.BR \-\^\-no\-network
Prevents the network-based tests from being run.
.TP
.BR \-\^\-trace
Traces all calls made. Unless you're really in a pinch, you probably
shouldn't do this; it results in copious amounts of output.
.TP
.BR "\fR,\fP \-\^\-plugins\-dir=" PLUGINSDIR
Looks in the given directory for plugins and loads the tests for all of them.
.SH "SEE ALSO"
.IR python (1),
.IR supybot (1),
.IR supybot-botchk (1),
.IR supybot-wizard (1),
.IR supybot-adduser (1),
.IR supybot-plugin-doc (1),
.IR supybot-plugin-create (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Supybot
license, a BSD-style license.

1
man/supybot-test.1 Symbolic link
View File

@ -0,0 +1 @@
limnoria-test.1

View File

@ -1,42 +0,0 @@
.\" Process this file with
.\" groff -man -Tascii supybot-wizard.1
.\"
.TH SUPYBOT-WIZARD 1 "SEPTEMBER 2004"
.SH NAME
supybot-wizard \- A wizard for creating Supybot configuration files
.SH SYNOPSIS
.B supybot-wizard
.RI [ options ]
.SH DESCRIPTION
.B supybot-wizard
is an in-depth wizard that provides a nice user interface for creating
configuration files for
.IR supybot (1).
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.B \-\^\-allow\-root
Determines whether the wizard will be allowed to run as root. You do not
want this. Do not do it. Even if you think you want it, you do not.
.TP
.B \-\^\-no\-network
Determines whether the wizard will be allowed to run without a network
connection.
.SH "SEE ALSO"
.IR python (1),
.IR supybot (1),
.IR supybot-test (1),
.IR supybot-botchk (1),
.IR supybot-adduser (1),
.IR supybot-plugin-doc (1),
.IR supybot-plugin-create (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Supybot
license, a BSD-style license.

1
man/supybot-wizard.1 Symbolic link
View File

@ -0,0 +1 @@
limnoria-wizard.1

View File

@ -1,66 +0,0 @@
.\" Process this file with
.\" groff -man -Tascii supybot.1
.\"
.TH SUPYBOT 1 "JULY 2009"
.SH NAME
supybot - A robust and user friendly Python IRC bot
.SH SYNOPSIS
.B supybot
.RI [ options ] " configFile
.SH DESCRIPTION
.B Supybot
is a robust, user-friendly, and programmer-friendly Python IRC bot.
It aims to be an adequate replacement for most existing IRC bots. It
includes a very flexible and powerful ACL system for controlling access
to commands, as well as more than 50 builtin plugins providing around
400 actual commands.
.SH OPTIONS
.TP
.B \-\^\-version
Show version of program.
.TP
.BR \-h ", " \-\^\-help
Show summary of options.
.TP
.BR \-P ", " \-\^\-profile
Enable profiling.
.TP
.BI \-n " NICK" "\fR,\fP \-\^\-nick=" NICK
Nick the bot should use.
.TP
.BI \-u " USER" "\fR,\fP \-\^\-user=" USER
Full username the bot should use.
.TP
.BI \-i " IDENT" "\fR,\fP \-\^\-ident=" IDENT
Ident the bot should use.
.TP
.BR \-d ", " \-\^\-daemon
Determines whether the bot will daemonize. This is a no-op on
non-POSIX systems.
.TP
.B \-\^\-allow\-default\-owner
Determines whether the bot will allow its defaultCapabilities not to
include "\-owner", thus giving all users the owner capability by
default. This is dumb, hence we require a command-line option to
enable it.
.TP
.B \-\^\-allow\-root
Determines whether the bot will be allowed to run as root. You do not
want this. Do not do it. Even if you think you want it, you do not.
.TP
.B \-\^\-debug
Determines whether some extra debugging stuff will be logged by this
script.
.SH "SEE ALSO"
.IR python (1),
.IR supybot-test (1),
.IR supybot-botchk (1),
.IR supybot-wizard (1),
.IR supybot-adduser (1),
.IR supybot-plugin-doc (1),
.IR supybot-plugin-create (1)
.SH AUTHOR
This manual page was originally written by James McCoy
<vega dot james at gmail dot com>. Permission is granted to copy,
distribute and/or modify this document under the terms of the Supybot
license, a BSD-style license.

1
man/supybot.1 Symbolic link
View File

@ -0,0 +1 @@
limnoria.1

View File

@ -5,11 +5,13 @@ Documentation for the Admin plugin for Supybot
Purpose Purpose
------- -------
These are commands useful for administrating the bot; they all require their These are commands useful for administrating the bot; they all require their
caller to have the 'admin' capability. This plugin is loaded by default. caller to have the 'admin' capability. This plugin is loaded by default.
Usage Usage
----- -----
This plugin provides access to administrative commands, such as This plugin provides access to administrative commands, such as
adding capabilities, managing ignore lists, and joining channels. adding capabilities, managing ignore lists, and joining channels.
This is a core Supybot plugin that should not be removed! This is a core Supybot plugin that should not be removed!
@ -18,6 +20,7 @@ This is a core Supybot plugin that should not be removed!
Commands Commands
-------- --------
.. _command-admin-acmd: .. _command-admin-acmd:
acmd <command> [<arg> ...] acmd <command> [<arg> ...]
@ -77,7 +80,7 @@ Configuration
supybot.plugins.Admin.public supybot.plugins.Admin.public
This config variable defaults to "True", is not network-specific, and is not channel-specific. This config variable defaults to "True", is not network-specific, and is not channel-specific.
Determines whether this plugin is publicly visible. Determines whether this plugin is publicly visible.

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2004-2005, Jeremiah Fincher # Copyright (c) 2004-2005, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2004-2005, Jeremiah Fincher # Copyright (c) 2004-2005, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Supybot\n" "Project-Id-Version: Supybot\n"
"POT-Creation-Date: 2014-08-17 13:46+CEST\n" "POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: 2011-10-31 13:37+0100\n" "PO-Revision-Date: 2011-10-31 13:37+0100\n"
"Last-Translator: Florian Besser <fbesser@gmail.com>\n" "Last-Translator: Florian Besser <fbesser@gmail.com>\n"
"Language-Team: German <fbesser@gmail.com>\n" "Language-Team: German <fbesser@gmail.com>\n"
@ -13,31 +13,38 @@ msgstr ""
"X-Poedit-Language: German\n" "X-Poedit-Language: German\n"
"X-Poedit-Country: Germany\n" "X-Poedit-Country: Germany\n"
#: plugin.py:54 #: plugin.py:46
msgid ""
"This plugin provides access to administrative commands, such as\n"
" adding capabilities, managing ignore lists, and joining channels.\n"
" This is a core Supybot plugin that should not be removed!"
msgstr ""
#: plugin.py:57
msgid "Nick/channel temporarily unavailable." msgid "Nick/channel temporarily unavailable."
msgstr "Nick/Kanal temporär nicht verfügbar." msgstr "Nick/Kanal temporär nicht verfügbar."
#: plugin.py:72 #: plugin.py:85
msgid "Cannot join %s, it's full." msgid "Cannot join %s, it's full."
msgstr "Kann %s nicht beitreten, der Kanal ist voll." msgstr "Kann %s nicht beitreten, der Kanal ist voll."
#: plugin.py:80 #: plugin.py:93
msgid "Cannot join %s, I was not invited." msgid "Cannot join %s, I was not invited."
msgstr "Kann %s nicht beitreten, ich wurde nicht eingeladen." msgstr "Kann %s nicht beitreten, ich wurde nicht eingeladen."
#: plugin.py:88 #: plugin.py:101
msgid "Cannot join %s, I am banned." msgid "Cannot join %s, I am banned."
msgstr "Ich kann %s nicht betreten, ich bin gebannt." msgstr "Ich kann %s nicht betreten, ich bin gebannt."
#: plugin.py:96 #: plugin.py:109
msgid "Cannot join %s, my keyword was wrong." msgid "Cannot join %s, my keyword was wrong."
msgstr "Ich kann %s nicht beitreten, mein Schlüsselwort ist falsch." msgstr "Ich kann %s nicht beitreten, mein Schlüsselwort ist falsch."
#: plugin.py:104 plugin.py:113 #: plugin.py:117 plugin.py:126
msgid "Cannot join %s, I'm not identified with NickServ." msgid "Cannot join %s, I'm not identified with NickServ."
msgstr "Ich kann %s nicht betreten, ich bin nicht mit NickServ identifiziert." msgstr "Ich kann %s nicht betreten, ich bin nicht mit NickServ identifiziert."
#: plugin.py:143 #: plugin.py:156
msgid "" msgid ""
"<channel> [<key>]\n" "<channel> [<key>]\n"
"\n" "\n"
@ -51,46 +58,48 @@ msgstr ""
"Sagt dem Bot dem angegeben Kanal beizutreten. Falls <Schlüssel> angegeben " "Sagt dem Bot dem angegeben Kanal beizutreten. Falls <Schlüssel> angegeben "
"wird, wird dieser benutzt um zu versuchen den Kanal zu betreten." "wird, wird dieser benutzt um zu versuchen den Kanal zu betreten."
#: plugin.py:156 #: plugin.py:162
msgid "channel"
msgstr ""
#: plugin.py:169
msgid "I'm already too close to maximum number of channels for this network." msgid "I'm already too close to maximum number of channels for this network."
msgstr "Ich bin schon zu nah an den maximalen Kanälen für dieses Netzwerk." msgstr "Ich bin schon zu nah an den maximalen Kanälen für dieses Netzwerk."
#: plugin.py:165 #: plugin.py:178
#, fuzzy
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
" Returns the channels the bot is on. Must be given in private, in " " Returns the channels the bot is on.\n"
"order\n"
" to protect the secrecy of secret channels.\n"
" " " "
msgstr "" msgstr ""
"hat keine Argumenten\n" "hat keine Argumente\n"
"\n" "\n"
"Gibt die Kanäle aus in denen der Bot sich befindet. Dieser Befehl muss " "Listet die Hostmasken auf, die der Bot ignoriert."
"privat gegeben werden, um das Geheimnis der geheimen Kanale zu wahren."
#: plugin.py:175 #: plugin.py:187
msgid "I'm not currently in any channels." msgid "I'm not currently in any channels."
msgstr "Momentan bin ich in keinen Kanälen." msgstr "Momentan bin ich in keinen Kanälen."
#: plugin.py:181 #: plugin.py:193
msgid "My connection is restricted, I can't change nicks." msgid "My connection is restricted, I can't change nicks."
msgstr "Meine Verbindung ist begrenzt, I kann meinen Nick nicht wechseln." msgstr "Meine Verbindung ist begrenzt, I kann meinen Nick nicht wechseln."
#: plugin.py:188 #: plugin.py:200
msgid "Someone else is already using that nick." msgid "Someone else is already using that nick."
msgstr "Jemand anderes benutzt diesen Nick schon." msgstr "Jemand anderes benutzt diesen Nick schon."
#: plugin.py:195 #: plugin.py:207
#, fuzzy #, fuzzy
msgid "I can't change nick, I'm currently banned in %s." msgid "I can't change nick, I'm currently banned in %s."
msgstr "Ich kann meinen Nick nicht ändern, der Server sagte %q." msgstr "Ich kann meinen Nick nicht ändern, der Server sagte %q."
#: plugin.py:203 #: plugin.py:215
msgid "I can't change nicks, the server said %q." msgid "I can't change nicks, the server said %q."
msgstr "Ich kann meinen Nick nicht ändern, der Server sagte %q." msgstr "Ich kann meinen Nick nicht ändern, der Server sagte %q."
#: plugin.py:217 #: plugin.py:229
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<nick>] [<network>]\n" "[<nick>] [<network>]\n"
@ -104,29 +113,7 @@ msgstr ""
"Ändert den Nick des Bots zu <Nick>. Falls <Nick> nicht angegeben wird, wird " "Ändert den Nick des Bots zu <Nick>. Falls <Nick> nicht angegeben wird, wird "
"der momentane Botnick zurückgegeben." "der momentane Botnick zurückgegeben."
#: plugin.py:234 #: plugin.py:248
msgid ""
"[<channel>] [<reason>]\n"
"\n"
" Tells the bot to part the list of channels you give it. <channel> "
"is\n"
" only necessary if you want the bot to part a channel other than the\n"
" current channel. If <reason> is specified, use it as the part\n"
" message.\n"
" "
msgstr ""
"[<Kanal>] [<Grund>]\n"
"\n"
"Sagt dem Bot die Liste von angebenen Kanälen zu verlassen. <Kanal> ist nur "
"notwendig, falls der Bot einen anderen Kanal als den Momentanen verlassen "
"soll. Falls <Grund> angegeben wird, wird dies als Verlassensnachricht "
"verwendet."
#: plugin.py:252
msgid "I'm not in %s."
msgstr "Ich bin nicht in %s."
#: plugin.py:264
msgid "" msgid ""
"<name|hostmask> <capability>\n" "<name|hostmask> <capability>\n"
"\n" "\n"
@ -140,7 +127,7 @@ msgstr ""
"Gibt dem angebenen Benutzer <Name> (oder dem auf den die <Hostmaske> " "Gibt dem angebenen Benutzer <Name> (oder dem auf den die <Hostmaske> "
"zutrifft) die angegebene Fähigkeit." "zutrifft) die angegebene Fähigkeit."
#: plugin.py:284 #: plugin.py:268
msgid "" msgid ""
"The \"owner\" capability can't be added in the bot. Use the supybot-adduser " "The \"owner\" capability can't be added in the bot. Use the supybot-adduser "
"program (or edit the users.conf file yourself) to add an owner capability." "program (or edit the users.conf file yourself) to add an owner capability."
@ -149,11 +136,11 @@ msgstr ""
"das supybot-adduser Programm (oder verändere users.conf per Hand) um die " "das supybot-adduser Programm (oder verändere users.conf per Hand) um die "
"Besitzer Fähigkeit hinzuzufügen." "Besitzer Fähigkeit hinzuzufügen."
#: plugin.py:295 #: plugin.py:279
msgid "You can't add capabilities you don't have." msgid "You can't add capabilities you don't have."
msgstr "Du kannst keine Fähigkeiten hinzufügen, die du nicht hast." msgstr "Du kannst keine Fähigkeiten hinzufügen, die du nicht hast."
#: plugin.py:300 #: plugin.py:284
msgid "" msgid ""
"<name|hostmask> <capability>\n" "<name|hostmask> <capability>\n"
"\n" "\n"
@ -167,15 +154,15 @@ msgstr ""
"Nimmt dem Benutzer der durch <Name> (oder dem Benutzer auf den momentan " "Nimmt dem Benutzer der durch <Name> (oder dem Benutzer auf den momentan "
"<Hostmaske> zeigt) angeben wird die angegeben Fähigkeit <Fähigkeit>." "<Hostmaske> zeigt) angeben wird die angegeben Fähigkeit <Fähigkeit>."
#: plugin.py:312 #: plugin.py:296
msgid "That user doesn't have that capability." msgid "That user doesn't have that capability."
msgstr "Der Benutzer hat diese Fähigkeit nicht." msgstr "Der Benutzer hat diese Fähigkeit nicht."
#: plugin.py:314 #: plugin.py:298
msgid "You can't remove capabilities you don't have." msgid "You can't remove capabilities you don't have."
msgstr "Du kannst keine Fähigkeiten entfernen, die du nicht hast." msgstr "Du kannst keine Fähigkeiten entfernen, die du nicht hast."
#: plugin.py:322 #: plugin.py:306
msgid "" msgid ""
"<hostmask|nick> [<expires>]\n" "<hostmask|nick> [<expires>]\n"
"\n" "\n"
@ -194,7 +181,7 @@ msgstr ""
"optional, das legt fest wann die Ignorierung abläuft;falls dies nicht " "optional, das legt fest wann die Ignorierung abläuft;falls dies nicht "
"angegeben wird, wird die Ignorierung niemals ablaufen." "angegeben wird, wird die Ignorierung niemals ablaufen."
#: plugin.py:335 #: plugin.py:319
msgid "" msgid ""
"<hostmask|nick>\n" "<hostmask|nick>\n"
"\n" "\n"
@ -207,11 +194,11 @@ msgstr ""
"Wird die beständige Ignorierung, von <Hostmaske> oder der Hostmaske die " "Wird die beständige Ignorierung, von <Hostmaske> oder der Hostmaske die "
"momentan mit dem <Nick> verbunden wird, aufheben." "momentan mit dem <Nick> verbunden wird, aufheben."
#: plugin.py:344 #: plugin.py:328
msgid "%s wasn't in the ignores database." msgid "%s wasn't in the ignores database."
msgstr "%s war nicht in der Datenbank für Ignorierungen." msgstr "%s war nicht in der Datenbank für Ignorierungen."
#: plugin.py:349 #: plugin.py:333
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -222,11 +209,11 @@ msgstr ""
"\n" "\n"
"Listet die Hostmasken auf, die der Bot ignoriert." "Listet die Hostmasken auf, die der Bot ignoriert."
#: plugin.py:357 #: plugin.py:341
msgid "I'm not currently globally ignoring anyone." msgid "I'm not currently globally ignoring anyone."
msgstr "Momentan ignoriere ich niemanden global." msgstr "Momentan ignoriere ich niemanden global."
#: plugin.py:361 #: plugin.py:345
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -237,5 +224,47 @@ msgstr ""
"\n" "\n"
"Leert die momentane Sendenwarteschlange für dieses Netzwerk." "Leert die momentane Sendenwarteschlange für dieses Netzwerk."
#: plugin.py:354
msgid ""
"<command> [<arg> ...]\n"
"\n"
" Perform <command> (with associated <arg>s on all channels on current "
"network."
msgstr ""
#~ msgid ""
#~ "takes no arguments\n"
#~ "\n"
#~ " Returns the channels the bot is on. Must be given in private, in "
#~ "order\n"
#~ " to protect the secrecy of secret channels.\n"
#~ " "
#~ msgstr ""
#~ "hat keine Argumenten\n"
#~ "\n"
#~ "Gibt die Kanäle aus in denen der Bot sich befindet. Dieser Befehl muss "
#~ "privat gegeben werden, um das Geheimnis der geheimen Kanale zu wahren."
#~ msgid ""
#~ "[<channel>] [<reason>]\n"
#~ "\n"
#~ " Tells the bot to part the list of channels you give it. "
#~ "<channel> is\n"
#~ " only necessary if you want the bot to part a channel other than "
#~ "the\n"
#~ " current channel. If <reason> is specified, use it as the part\n"
#~ " message.\n"
#~ " "
#~ msgstr ""
#~ "[<Kanal>] [<Grund>]\n"
#~ "\n"
#~ "Sagt dem Bot die Liste von angebenen Kanälen zu verlassen. <Kanal> ist "
#~ "nur notwendig, falls der Bot einen anderen Kanal als den Momentanen "
#~ "verlassen soll. Falls <Grund> angegeben wird, wird dies als "
#~ "Verlassensnachricht verwendet."
#~ msgid "I'm not in %s."
#~ msgstr "Ich bin nicht in %s."
#~ msgid "That nick is currently banned." #~ msgid "That nick is currently banned."
#~ msgstr "Dieser Nick ist momentan gebannt." #~ msgstr "Dieser Nick ist momentan gebannt."

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Finnish translation of Admin plugin in Supybot\n" "Project-Id-Version: Finnish translation of Admin plugin in Supybot\n"
"POT-Creation-Date: 2014-12-20 11:59+EET\n" "POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: 2014-12-20 12:19+0200\n" "PO-Revision-Date: 2014-12-20 12:19+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"
@ -31,27 +31,27 @@ msgstr ""
msgid "Nick/channel temporarily unavailable." msgid "Nick/channel temporarily unavailable."
msgstr "Nimimerkki/kanava on väliaikaisesti saavuttamattomissa." msgstr "Nimimerkki/kanava on väliaikaisesti saavuttamattomissa."
#: plugin.py:75 #: plugin.py:85
msgid "Cannot join %s, it's full." msgid "Cannot join %s, it's full."
msgstr "Ei voida liittyä kanavalle %s, se on täynnä." msgstr "Ei voida liittyä kanavalle %s, se on täynnä."
#: plugin.py:83 #: plugin.py:93
msgid "Cannot join %s, I was not invited." msgid "Cannot join %s, I was not invited."
msgstr "Ei voi liittyä kanavalle %s, minua ei ole kutsuttu." msgstr "Ei voi liittyä kanavalle %s, minua ei ole kutsuttu."
#: plugin.py:91 #: plugin.py:101
msgid "Cannot join %s, I am banned." msgid "Cannot join %s, I am banned."
msgstr "Ei voi liittyä kanavalle %s, se on antanut minulle porttikiellon." msgstr "Ei voi liittyä kanavalle %s, se on antanut minulle porttikiellon."
#: plugin.py:99 #: plugin.py:109
msgid "Cannot join %s, my keyword was wrong." msgid "Cannot join %s, my keyword was wrong."
msgstr "En voi liittyä kanavalle %s, minun avainsana oli väärä." msgstr "En voi liittyä kanavalle %s, minun avainsana oli väärä."
#: plugin.py:107 plugin.py:116 #: plugin.py:117 plugin.py:126
msgid "Cannot join %s, I'm not identified with NickServ." msgid "Cannot join %s, I'm not identified with NickServ."
msgstr "En voi liittyä kanavalle %s, koska en ole tunnistautunut NickServille." msgstr "En voi liittyä kanavalle %s, koska en ole tunnistautunut NickServille."
#: plugin.py:146 #: plugin.py:156
msgid "" msgid ""
"<channel> [<key>]\n" "<channel> [<key>]\n"
"\n" "\n"
@ -67,48 +67,49 @@ msgstr ""
" yrittäessä liittyä kanavalle.\n" " yrittäessä liittyä kanavalle.\n"
" " " "
#: plugin.py:159 #: plugin.py:162
msgid "channel"
msgstr ""
#: plugin.py:169
msgid "I'm already too close to maximum number of channels for this network." msgid "I'm already too close to maximum number of channels for this network."
msgstr "Minä olen jo liian lähellä kanavien maksimimäärää tässä verkossa." msgstr "Minä olen jo liian lähellä kanavien maksimimäärää tässä verkossa."
#: plugin.py:168 #: plugin.py:178
#, fuzzy
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
" Returns the channels the bot is on. Must be given in private, in " " Returns the channels the bot is on.\n"
"order\n"
" to protect the secrecy of secret channels.\n"
" " " "
msgstr "" msgstr ""
"Ei ota parametrejä\n" "Ei ota parametrejä\n"
"\n" "\n"
" Palauttaa listan kanavista, joilla botti on. Täytyy antaa " " Luetteloi hostmaskit jotka ovat botin huomiotta jättämis listalla.\n"
"yksityisviestillä salaistenkanavien\n" " "
" salaisuuden suojelemiseksi.\n"
" "
#: plugin.py:178 #: plugin.py:187
msgid "I'm not currently in any channels." msgid "I'm not currently in any channels."
msgstr "En juuri nyt ole millään kanavalla." msgstr "En juuri nyt ole millään kanavalla."
#: plugin.py:184 #: plugin.py:193
msgid "My connection is restricted, I can't change nicks." msgid "My connection is restricted, I can't change nicks."
msgstr "Minun yhteyteni on rajoitettu. En voi vaihtaa nimimerkkiä." msgstr "Minun yhteyteni on rajoitettu. En voi vaihtaa nimimerkkiä."
#: plugin.py:191 #: plugin.py:200
msgid "Someone else is already using that nick." msgid "Someone else is already using that nick."
msgstr "Joku muu käyttää jo tuota nimimerkkiä." msgstr "Joku muu käyttää jo tuota nimimerkkiä."
#: plugin.py:198 #: plugin.py:207
#, fuzzy #, fuzzy
msgid "I can't change nick, I'm currently banned in %s." msgid "I can't change nick, I'm currently banned in %s."
msgstr "Minä en voi vaihtaa nimimerkkiä, koska palvelin sanoi %q" msgstr "Minä en voi vaihtaa nimimerkkiä, koska palvelin sanoi %q"
#: plugin.py:206 #: plugin.py:215
msgid "I can't change nicks, the server said %q." msgid "I can't change nicks, the server said %q."
msgstr "Minä en voi vaihtaa nimimerkkiä, koska palvelin sanoi %q" msgstr "Minä en voi vaihtaa nimimerkkiä, koska palvelin sanoi %q"
#: plugin.py:220 #: plugin.py:229
msgid "" msgid ""
"[<nick>] [<network>]\n" "[<nick>] [<network>]\n"
"\n" "\n"
@ -123,30 +124,7 @@ msgstr ""
" nimimerkki palautetaan.\n" " nimimerkki palautetaan.\n"
" " " "
#: plugin.py:237 #: plugin.py:248
msgid ""
"[<channel>] [<reason>]\n"
"\n"
" Tells the bot to part the list of channels you give it. <channel> "
"is\n"
" only necessary if you want the bot to part a channel other than the\n"
" current channel. If <reason> is specified, use it as the part\n"
" message.\n"
" "
msgstr ""
"[<kanava>] [<syy>]\n"
"\n"
" Käskee botin poistua kanavilta, jotka annat sille. <Kanava> on\n"
" vaadittu jos haluat botin poistuvat muulta, kuin \n"
" nykyiseltä kanavalta. Jos <syy> on määritetty, sitä käytetään\n"
" poistumisviestissä.\n"
" "
#: plugin.py:255
msgid "I'm not in %s."
msgstr "Minä en ole kanavalla %s."
#: plugin.py:267
msgid "" msgid ""
"<name|hostmask> <capability>\n" "<name|hostmask> <capability>\n"
"\n" "\n"
@ -162,7 +140,7 @@ msgstr ""
" ilmoittaa) määritetyn valtuuden <valtuus>\n" " ilmoittaa) määritetyn valtuuden <valtuus>\n"
" " " "
#: plugin.py:287 #: plugin.py:268
msgid "" msgid ""
"The \"owner\" capability can't be added in the bot. Use the supybot-adduser " "The \"owner\" capability can't be added in the bot. Use the supybot-adduser "
"program (or edit the users.conf file yourself) to add an owner capability." "program (or edit the users.conf file yourself) to add an owner capability."
@ -170,11 +148,11 @@ msgstr ""
"\"Owner\" valtuutta ei voi lisätä botissa. Käytä supybot-adduser ohjelmaa " "\"Owner\" valtuutta ei voi lisätä botissa. Käytä supybot-adduser ohjelmaa "
"(tai muokkaa users.conf tiedostoa itse) lisätäksesi owner valtuuden." "(tai muokkaa users.conf tiedostoa itse) lisätäksesi owner valtuuden."
#: plugin.py:298 #: plugin.py:279
msgid "You can't add capabilities you don't have." msgid "You can't add capabilities you don't have."
msgstr "Et voi lisätä valtuuksia, joita sinulla ei ole." msgstr "Et voi lisätä valtuuksia, joita sinulla ei ole."
#: plugin.py:303 #: plugin.py:284
msgid "" msgid ""
"<name|hostmask> <capability>\n" "<name|hostmask> <capability>\n"
"\n" "\n"
@ -190,15 +168,15 @@ msgstr ""
" <hostmask> sopii) määritetyn valtuuden <valtuus>\n" " <hostmask> sopii) määritetyn valtuuden <valtuus>\n"
" " " "
#: plugin.py:315 #: plugin.py:296
msgid "That user doesn't have that capability." msgid "That user doesn't have that capability."
msgstr "Tuolla käyttäjällä ei tuota valtuutta." msgstr "Tuolla käyttäjällä ei tuota valtuutta."
#: plugin.py:317 #: plugin.py:298
msgid "You can't remove capabilities you don't have." msgid "You can't remove capabilities you don't have."
msgstr "Sinä et voi poistaa valtuuksia, joita sinulla ei ole." msgstr "Sinä et voi poistaa valtuuksia, joita sinulla ei ole."
#: plugin.py:325 #: plugin.py:306
msgid "" msgid ""
"<hostmask|nick> [<expires>]\n" "<hostmask|nick> [<expires>]\n"
"\n" "\n"
@ -222,7 +200,7 @@ msgstr ""
"automaattisesti.\n" "automaattisesti.\n"
" " " "
#: plugin.py:338 #: plugin.py:319
msgid "" msgid ""
"<hostmask|nick>\n" "<hostmask|nick>\n"
"\n" "\n"
@ -236,11 +214,11 @@ msgstr ""
" hostmaskista joka on tällä hetkellä yhdistetty <nimimerkkiin>.\n" " hostmaskista joka on tällä hetkellä yhdistetty <nimimerkkiin>.\n"
" " " "
#: plugin.py:347 #: plugin.py:328
msgid "%s wasn't in the ignores database." msgid "%s wasn't in the ignores database."
msgstr "%s ei ollut huomiotta jätettävien tietokannassa." msgstr "%s ei ollut huomiotta jätettävien tietokannassa."
#: plugin.py:352 #: plugin.py:333
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -252,11 +230,11 @@ msgstr ""
" Luetteloi hostmaskit jotka ovat botin huomiotta jättämis listalla.\n" " Luetteloi hostmaskit jotka ovat botin huomiotta jättämis listalla.\n"
" " " "
#: plugin.py:360 #: plugin.py:341
msgid "I'm not currently globally ignoring anyone." msgid "I'm not currently globally ignoring anyone."
msgstr "En tällä hetkellä jätä ketään huomioitta globaalisti." msgstr "En tällä hetkellä jätä ketään huomioitta globaalisti."
#: plugin.py:364 #: plugin.py:345
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -268,5 +246,50 @@ msgstr ""
" Tyhjentää nykyisen lähetysjonon tälle verkolle.\n" " Tyhjentää nykyisen lähetysjonon tälle verkolle.\n"
" " " "
#: plugin.py:354
msgid ""
"<command> [<arg> ...]\n"
"\n"
" Perform <command> (with associated <arg>s on all channels on current "
"network."
msgstr ""
#~ msgid ""
#~ "takes no arguments\n"
#~ "\n"
#~ " Returns the channels the bot is on. Must be given in private, in "
#~ "order\n"
#~ " to protect the secrecy of secret channels.\n"
#~ " "
#~ msgstr ""
#~ "Ei ota parametrejä\n"
#~ "\n"
#~ " Palauttaa listan kanavista, joilla botti on. Täytyy antaa "
#~ "yksityisviestillä salaistenkanavien\n"
#~ " salaisuuden suojelemiseksi.\n"
#~ " "
#~ msgid ""
#~ "[<channel>] [<reason>]\n"
#~ "\n"
#~ " Tells the bot to part the list of channels you give it. "
#~ "<channel> is\n"
#~ " only necessary if you want the bot to part a channel other than "
#~ "the\n"
#~ " current channel. If <reason> is specified, use it as the part\n"
#~ " message.\n"
#~ " "
#~ msgstr ""
#~ "[<kanava>] [<syy>]\n"
#~ "\n"
#~ " Käskee botin poistua kanavilta, jotka annat sille. <Kanava> on\n"
#~ " vaadittu jos haluat botin poistuvat muulta, kuin \n"
#~ " nykyiseltä kanavalta. Jos <syy> on määritetty, sitä käytetään\n"
#~ " poistumisviestissä.\n"
#~ " "
#~ msgid "I'm not in %s."
#~ msgstr "Minä en ole kanavalla %s."
#~ msgid "That nick is currently banned." #~ msgid "That nick is currently banned."
#~ msgstr "Tuolla nimimerkillä on tällähetkellä porttikielto." #~ msgstr "Tuolla nimimerkillä on tällähetkellä porttikielto."

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2014-08-17 13:46+CEST\n" "POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: \n" "PO-Revision-Date: \n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: ProgVal <progval@gmail.com>\n" "Language-Team: ProgVal <progval@gmail.com>\n"
@ -12,31 +12,38 @@ msgstr ""
"X-Poedit-SourceCharset: Ascii\n" "X-Poedit-SourceCharset: Ascii\n"
"X-Generator: Poedit 1.5.4\n" "X-Generator: Poedit 1.5.4\n"
#: plugin.py:54 #: plugin.py:46
msgid ""
"This plugin provides access to administrative commands, such as\n"
" adding capabilities, managing ignore lists, and joining channels.\n"
" This is a core Supybot plugin that should not be removed!"
msgstr ""
#: plugin.py:57
msgid "Nick/channel temporarily unavailable." msgid "Nick/channel temporarily unavailable."
msgstr "Nick/canal temporairement indisponible" msgstr "Nick/canal temporairement indisponible"
#: plugin.py:72 #: plugin.py:85
msgid "Cannot join %s, it's full." msgid "Cannot join %s, it's full."
msgstr "Ne peut joindre %s, il est plein." msgstr "Ne peut joindre %s, il est plein."
#: plugin.py:80 #: plugin.py:93
msgid "Cannot join %s, I was not invited." msgid "Cannot join %s, I was not invited."
msgstr "Ne peut joindre %s, pas invité." msgstr "Ne peut joindre %s, pas invité."
#: plugin.py:88 #: plugin.py:101
msgid "Cannot join %s, I am banned." msgid "Cannot join %s, I am banned."
msgstr "Ne peut joindre %s, j'y suis banni." msgstr "Ne peut joindre %s, j'y suis banni."
#: plugin.py:96 #: plugin.py:109
msgid "Cannot join %s, my keyword was wrong." msgid "Cannot join %s, my keyword was wrong."
msgstr "Ne peut joindre %s, mon mot de passe est mauvais." msgstr "Ne peut joindre %s, mon mot de passe est mauvais."
#: plugin.py:104 plugin.py:113 #: plugin.py:117 plugin.py:126
msgid "Cannot join %s, I'm not identified with NickServ." msgid "Cannot join %s, I'm not identified with NickServ."
msgstr "Ne peut joindre %s, je ne suis pas identifié auprès de NickServ." msgstr "Ne peut joindre %s, je ne suis pas identifié auprès de NickServ."
#: plugin.py:143 #: plugin.py:156
msgid "" msgid ""
"<channel> [<key>]\n" "<channel> [<key>]\n"
"\n" "\n"
@ -50,46 +57,48 @@ msgstr ""
"Dit au bot de rejoindre le canal donné. Si la <clef> est donnée, elle est " "Dit au bot de rejoindre le canal donné. Si la <clef> est donnée, elle est "
"utilisée pour rejoindre le canal." "utilisée pour rejoindre le canal."
#: plugin.py:156 #: plugin.py:162
msgid "channel"
msgstr ""
#: plugin.py:169
msgid "I'm already too close to maximum number of channels for this network." msgid "I'm already too close to maximum number of channels for this network."
msgstr "Je suis déjà sur un nombre de canaux trop grand pour ce réseau." msgstr "Je suis déjà sur un nombre de canaux trop grand pour ce réseau."
#: plugin.py:165 #: plugin.py:178
#, fuzzy
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
" Returns the channels the bot is on. Must be given in private, in " " Returns the channels the bot is on.\n"
"order\n"
" to protect the secrecy of secret channels.\n"
" " " "
msgstr "" msgstr ""
"Ne prend pas d'argument \n" "Ne prend pas d'argument\n"
"\n" "\n"
"Retourne les canaux sur lesquels le bot est. Doit être en privé, dans le but " "Liste les masques d'hôte que le bot ignore."
"d'éviter que les canaux secrets ne soient divulgués."
#: plugin.py:175 #: plugin.py:187
msgid "I'm not currently in any channels." msgid "I'm not currently in any channels."
msgstr "Je ne suis actuellement sur aucun canal." msgstr "Je ne suis actuellement sur aucun canal."
#: plugin.py:181 #: plugin.py:193
msgid "My connection is restricted, I can't change nicks." msgid "My connection is restricted, I can't change nicks."
msgstr "Ma connexion est restreinte, je ne peux changer de nick." msgstr "Ma connexion est restreinte, je ne peux changer de nick."
#: plugin.py:188 #: plugin.py:200
msgid "Someone else is already using that nick." msgid "Someone else is already using that nick."
msgstr "Quelqu'un d'autre utilise déjà ce nick." msgstr "Quelqu'un d'autre utilise déjà ce nick."
#: plugin.py:195 #: plugin.py:207
#, fuzzy #, fuzzy
msgid "I can't change nick, I'm currently banned in %s." msgid "I can't change nick, I'm currently banned in %s."
msgstr "Je ne peux changer de nick, le serveur a dit %q." msgstr "Je ne peux changer de nick, le serveur a dit %q."
#: plugin.py:203 #: plugin.py:215
msgid "I can't change nicks, the server said %q." msgid "I can't change nicks, the server said %q."
msgstr "Je ne peux changer de nick, le serveur a dit %q." msgstr "Je ne peux changer de nick, le serveur a dit %q."
#: plugin.py:217 #: plugin.py:229
msgid "" msgid ""
"[<nick>] [<network>]\n" "[<nick>] [<network>]\n"
"\n" "\n"
@ -102,29 +111,7 @@ msgstr ""
"Change le nick du bot à <nick>. Si aucun nick n'est donné, retourne le nick " "Change le nick du bot à <nick>. Si aucun nick n'est donné, retourne le nick "
"actuel du bot." "actuel du bot."
#: plugin.py:234 #: plugin.py:248
msgid ""
"[<channel>] [<reason>]\n"
"\n"
" Tells the bot to part the list of channels you give it. <channel> "
"is\n"
" only necessary if you want the bot to part a channel other than the\n"
" current channel. If <reason> is specified, use it as the part\n"
" message.\n"
" "
msgstr ""
"[<canal>] [<raison>]\n"
"\n"
"Dit au bot de partir de la liste de canaux que vous avez donnée. <canal> "
"n'est nécessaire que si vous voulez que le bot parte d'un autre canal que "
"l'actuel. Si la <raison> est spécifiée, elle est utilisée comme message de "
"départ."
#: plugin.py:252
msgid "I'm not in %s."
msgstr "Je ne suis pas sur %s."
#: plugin.py:264
msgid "" msgid ""
"<name|hostmask> <capability>\n" "<name|hostmask> <capability>\n"
"\n" "\n"
@ -138,7 +125,7 @@ msgstr ""
"Donne la <capacité> à l'utilisateur spécifié par <nom> (ou l'utilisateur à " "Donne la <capacité> à l'utilisateur spécifié par <nom> (ou l'utilisateur à "
"qui correspond <masque d'hôte>)." "qui correspond <masque d'hôte>)."
#: plugin.py:284 #: plugin.py:268
msgid "" msgid ""
"The \"owner\" capability can't be added in the bot. Use the supybot-adduser " "The \"owner\" capability can't be added in the bot. Use the supybot-adduser "
"program (or edit the users.conf file yourself) to add an owner capability." "program (or edit the users.conf file yourself) to add an owner capability."
@ -147,11 +134,11 @@ msgstr ""
"supybot-adduser (ou éditez le fichier users.conf vous-même) pour ajouter la " "supybot-adduser (ou éditez le fichier users.conf vous-même) pour ajouter la "
"capacité owner." "capacité owner."
#: plugin.py:295 #: plugin.py:279
msgid "You can't add capabilities you don't have." msgid "You can't add capabilities you don't have."
msgstr "Vous ne pouvez ajouter des capacités que vous n'avez pas." msgstr "Vous ne pouvez ajouter des capacités que vous n'avez pas."
#: plugin.py:300 #: plugin.py:284
msgid "" msgid ""
"<name|hostmask> <capability>\n" "<name|hostmask> <capability>\n"
"\n" "\n"
@ -165,15 +152,15 @@ msgstr ""
"Retire la <capacité> à l'utilisateur spécifié par le <nom> (ou celui à qui " "Retire la <capacité> à l'utilisateur spécifié par le <nom> (ou celui à qui "
"correspond le <masque d'hôte>)." "correspond le <masque d'hôte>)."
#: plugin.py:312 #: plugin.py:296
msgid "That user doesn't have that capability." msgid "That user doesn't have that capability."
msgstr "Cet utilisateur n'a pas cette capacité." msgstr "Cet utilisateur n'a pas cette capacité."
#: plugin.py:314 #: plugin.py:298
msgid "You can't remove capabilities you don't have." msgid "You can't remove capabilities you don't have."
msgstr "Vous ne pouvez retirer des capacités que vous n'avez pas." msgstr "Vous ne pouvez retirer des capacités que vous n'avez pas."
#: plugin.py:322 #: plugin.py:306
msgid "" msgid ""
"<hostmask|nick> [<expires>]\n" "<hostmask|nick> [<expires>]\n"
"\n" "\n"
@ -192,7 +179,7 @@ msgstr ""
"quand (en \"secondes à partir de maintenant\") l'ignorance expirera ; si " "quand (en \"secondes à partir de maintenant\") l'ignorance expirera ; si "
"elle n'est pas donnée, l'ignorance n'expirera jamais." "elle n'est pas donnée, l'ignorance n'expirera jamais."
#: plugin.py:335 #: plugin.py:319
msgid "" msgid ""
"<hostmask|nick>\n" "<hostmask|nick>\n"
"\n" "\n"
@ -205,11 +192,11 @@ msgstr ""
"Ceci retirera le masque d'ignorance persistant sur le <masque d'hôte>, ou " "Ceci retirera le masque d'ignorance persistant sur le <masque d'hôte>, ou "
"sur le masque d'hôte associé au <nick>." "sur le masque d'hôte associé au <nick>."
#: plugin.py:344 #: plugin.py:328
msgid "%s wasn't in the ignores database." msgid "%s wasn't in the ignores database."
msgstr "%s n'étais pas dans ma base de données d'ignorance." msgstr "%s n'étais pas dans ma base de données d'ignorance."
#: plugin.py:349 #: plugin.py:333
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -220,11 +207,11 @@ msgstr ""
"\n" "\n"
"Liste les masques d'hôte que le bot ignore." "Liste les masques d'hôte que le bot ignore."
#: plugin.py:357 #: plugin.py:341
msgid "I'm not currently globally ignoring anyone." msgid "I'm not currently globally ignoring anyone."
msgstr "Je n'ignore actuellement personne globalement." msgstr "Je n'ignore actuellement personne globalement."
#: plugin.py:361 #: plugin.py:345
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -235,5 +222,47 @@ msgstr ""
"\n" "\n"
"Vide la queue en attente pour ce réseau." "Vide la queue en attente pour ce réseau."
#: plugin.py:354
msgid ""
"<command> [<arg> ...]\n"
"\n"
" Perform <command> (with associated <arg>s on all channels on current "
"network."
msgstr ""
#~ msgid ""
#~ "takes no arguments\n"
#~ "\n"
#~ " Returns the channels the bot is on. Must be given in private, in "
#~ "order\n"
#~ " to protect the secrecy of secret channels.\n"
#~ " "
#~ msgstr ""
#~ "Ne prend pas d'argument \n"
#~ "\n"
#~ "Retourne les canaux sur lesquels le bot est. Doit être en privé, dans le "
#~ "but d'éviter que les canaux secrets ne soient divulgués."
#~ msgid ""
#~ "[<channel>] [<reason>]\n"
#~ "\n"
#~ " Tells the bot to part the list of channels you give it. "
#~ "<channel> is\n"
#~ " only necessary if you want the bot to part a channel other than "
#~ "the\n"
#~ " current channel. If <reason> is specified, use it as the part\n"
#~ " message.\n"
#~ " "
#~ msgstr ""
#~ "[<canal>] [<raison>]\n"
#~ "\n"
#~ "Dit au bot de partir de la liste de canaux que vous avez donnée. <canal> "
#~ "n'est nécessaire que si vous voulez que le bot parte d'un autre canal que "
#~ "l'actuel. Si la <raison> est spécifiée, elle est utilisée comme message "
#~ "de départ."
#~ msgid "I'm not in %s."
#~ msgstr "Je ne suis pas sur %s."
#~ msgid "That nick is currently banned." #~ msgid "That nick is currently banned."
#~ msgstr "Ce nick est banni." #~ msgstr "Ce nick est banni."

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2014-08-17 13:46+CEST\n" "POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: 2012-03-15 20:25+0100\n" "PO-Revision-Date: 2012-03-15 20:25+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"
@ -10,31 +10,38 @@ 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:54 #: plugin.py:46
msgid ""
"This plugin provides access to administrative commands, such as\n"
" adding capabilities, managing ignore lists, and joining channels.\n"
" This is a core Supybot plugin that should not be removed!"
msgstr ""
#: plugin.py:57
msgid "Nick/channel temporarily unavailable." msgid "Nick/channel temporarily unavailable."
msgstr "Nick/canale temporaneamente non disponibile." msgstr "Nick/canale temporaneamente non disponibile."
#: plugin.py:72 #: plugin.py:85
msgid "Cannot join %s, it's full." msgid "Cannot join %s, it's full."
msgstr "Non posso entrare in %s, è pieno." msgstr "Non posso entrare in %s, è pieno."
#: plugin.py:80 #: plugin.py:93
msgid "Cannot join %s, I was not invited." msgid "Cannot join %s, I was not invited."
msgstr "Non posso entrare in %s, non sono stato invitato." msgstr "Non posso entrare in %s, non sono stato invitato."
#: plugin.py:88 #: plugin.py:101
msgid "Cannot join %s, I am banned." msgid "Cannot join %s, I am banned."
msgstr "Non posso entrare in %s, sono stato bannato." msgstr "Non posso entrare in %s, sono stato bannato."
#: plugin.py:96 #: plugin.py:109
msgid "Cannot join %s, my keyword was wrong." msgid "Cannot join %s, my keyword was wrong."
msgstr "Non posso entrare in %s, la password era sbagliata." msgstr "Non posso entrare in %s, la password era sbagliata."
#: plugin.py:104 plugin.py:113 #: plugin.py:117 plugin.py:126
msgid "Cannot join %s, I'm not identified with NickServ." msgid "Cannot join %s, I'm not identified with NickServ."
msgstr "Non posso entrare in %s, non sono identificato con NickServ." msgstr "Non posso entrare in %s, non sono identificato con NickServ."
#: plugin.py:143 #: plugin.py:156
msgid "" msgid ""
"<channel> [<key>]\n" "<channel> [<key>]\n"
"\n" "\n"
@ -50,48 +57,49 @@ msgstr ""
" viene usata quando si tenta di entrare nel canale.\n" " viene usata quando si tenta di entrare nel canale.\n"
" " " "
#: plugin.py:156 #: plugin.py:162
msgid "channel"
msgstr ""
#: plugin.py:169
msgid "I'm already too close to maximum number of channels for this network." msgid "I'm already too close to maximum number of channels for this network."
msgstr "Sono già troppo vicino al numero massimo di canali per questa rete." msgstr "Sono già troppo vicino al numero massimo di canali per questa rete."
#: plugin.py:165 #: plugin.py:178
#, fuzzy
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
" Returns the channels the bot is on. Must be given in private, in " " Returns the channels the bot is on.\n"
"order\n"
" to protect the secrecy of secret channels.\n"
" " " "
msgstr "" msgstr ""
"non necessita argomenti\n" "Non necessita argomenti\n"
"\n" "\n"
" Restituisce i canali dove è presente il bot. Deve essere richiesto " " Elenca le hostmask che il bot sta ignorando.\n"
"in\n" " "
" privato per preservare la segretezza dei canali privati.\n"
" "
#: plugin.py:175 #: plugin.py:187
msgid "I'm not currently in any channels." msgid "I'm not currently in any channels."
msgstr "Al momento non sono in nessun canale." msgstr "Al momento non sono in nessun canale."
#: plugin.py:181 #: plugin.py:193
msgid "My connection is restricted, I can't change nicks." msgid "My connection is restricted, I can't change nicks."
msgstr "La mia connessione è limitata, non posso cambiare nick." msgstr "La mia connessione è limitata, non posso cambiare nick."
#: plugin.py:188 #: plugin.py:200
msgid "Someone else is already using that nick." msgid "Someone else is already using that nick."
msgstr "Qualcun altro sta utilizzando questo nick." msgstr "Qualcun altro sta utilizzando questo nick."
#: plugin.py:195 #: plugin.py:207
#, fuzzy #, fuzzy
msgid "I can't change nick, I'm currently banned in %s." msgid "I can't change nick, I'm currently banned in %s."
msgstr "Non posso cambiare nick, il server ha detto %q." msgstr "Non posso cambiare nick, il server ha detto %q."
#: plugin.py:203 #: plugin.py:215
msgid "I can't change nicks, the server said %q." msgid "I can't change nicks, the server said %q."
msgstr "Non posso cambiare nick, il server ha detto %q." msgstr "Non posso cambiare nick, il server ha detto %q."
#: plugin.py:217 #: plugin.py:229
#, fuzzy #, fuzzy
msgid "" msgid ""
"[<nick>] [<network>]\n" "[<nick>] [<network>]\n"
@ -107,32 +115,7 @@ msgstr ""
" quello attuale.\n" " quello attuale.\n"
" " " "
#: plugin.py:234 #: plugin.py:248
msgid ""
"[<channel>] [<reason>]\n"
"\n"
" Tells the bot to part the list of channels you give it. <channel> "
"is\n"
" only necessary if you want the bot to part a channel other than the\n"
" current channel. If <reason> is specified, use it as the part\n"
" message.\n"
" "
msgstr ""
"[<canale>] [<motivo>]\n"
"\n"
" Fornisce al bot l'elenco dei canali da cui uscire. <canale> è "
"necessario\n"
" solo se si vuole far uscire il bot da un canale diverso da quello "
"attuale.\n"
" Se <motivo> viene specificato, verrà usato come messaggio di "
"uscita.\n"
" "
#: plugin.py:252
msgid "I'm not in %s."
msgstr "Non sono in %s."
#: plugin.py:264
msgid "" msgid ""
"<name|hostmask> <capability>\n" "<name|hostmask> <capability>\n"
"\n" "\n"
@ -147,7 +130,7 @@ msgstr ""
" <hostmask> attualmente) la <capacità> specificata.\n" " <hostmask> attualmente) la <capacità> specificata.\n"
" " " "
#: plugin.py:284 #: plugin.py:268
msgid "" msgid ""
"The \"owner\" capability can't be added in the bot. Use the supybot-adduser " "The \"owner\" capability can't be added in the bot. Use the supybot-adduser "
"program (or edit the users.conf file yourself) to add an owner capability." "program (or edit the users.conf file yourself) to add an owner capability."
@ -155,11 +138,11 @@ msgstr ""
"La capacità \"owner\" non può essere aggiunta al bot. Utilizzare il " "La capacità \"owner\" non può essere aggiunta al bot. Utilizzare il "
"programma supybot-adduser (o modificare il file users.conf) per aggiungerla." "programma supybot-adduser (o modificare il file users.conf) per aggiungerla."
#: plugin.py:295 #: plugin.py:279
msgid "You can't add capabilities you don't have." msgid "You can't add capabilities you don't have."
msgstr "Non puoi aggiungere capacità che non hai." msgstr "Non puoi aggiungere capacità che non hai."
#: plugin.py:300 #: plugin.py:284
msgid "" msgid ""
"<name|hostmask> <capability>\n" "<name|hostmask> <capability>\n"
"\n" "\n"
@ -175,15 +158,15 @@ msgstr ""
" <hostmask> attualmente) la <capacità> specificata\n" " <hostmask> attualmente) la <capacità> specificata\n"
" " " "
#: plugin.py:312 #: plugin.py:296
msgid "That user doesn't have that capability." msgid "That user doesn't have that capability."
msgstr "Questo utente non ha tale capacità." msgstr "Questo utente non ha tale capacità."
#: plugin.py:314 #: plugin.py:298
msgid "You can't remove capabilities you don't have." msgid "You can't remove capabilities you don't have."
msgstr "Non puoi rimuovere capacità che non hai." msgstr "Non puoi rimuovere capacità che non hai."
#: plugin.py:322 #: plugin.py:306
msgid "" msgid ""
"<hostmask|nick> [<expires>]\n" "<hostmask|nick> [<expires>]\n"
"\n" "\n"
@ -206,7 +189,7 @@ msgstr ""
" questo non scadrà mai.\n" " questo non scadrà mai.\n"
" " " "
#: plugin.py:335 #: plugin.py:319
msgid "" msgid ""
"<hostmask|nick>\n" "<hostmask|nick>\n"
"\n" "\n"
@ -220,11 +203,11 @@ msgstr ""
"associata a <nick>.\n" "associata a <nick>.\n"
" " " "
#: plugin.py:344 #: plugin.py:328
msgid "%s wasn't in the ignores database." msgid "%s wasn't in the ignores database."
msgstr "%s non è nel mio database degli ignorati." msgstr "%s non è nel mio database degli ignorati."
#: plugin.py:349 #: plugin.py:333
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -236,11 +219,11 @@ msgstr ""
" Elenca le hostmask che il bot sta ignorando.\n" " Elenca le hostmask che il bot sta ignorando.\n"
" " " "
#: plugin.py:357 #: plugin.py:341
msgid "I'm not currently globally ignoring anyone." msgid "I'm not currently globally ignoring anyone."
msgstr "Al momento non sto ignorando nessuno." msgstr "Al momento non sto ignorando nessuno."
#: plugin.py:361 #: plugin.py:345
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -253,5 +236,52 @@ msgstr ""
"per questa rete.\n" "per questa rete.\n"
" " " "
#: plugin.py:354
msgid ""
"<command> [<arg> ...]\n"
"\n"
" Perform <command> (with associated <arg>s on all channels on current "
"network."
msgstr ""
#~ msgid ""
#~ "takes no arguments\n"
#~ "\n"
#~ " Returns the channels the bot is on. Must be given in private, in "
#~ "order\n"
#~ " to protect the secrecy of secret channels.\n"
#~ " "
#~ msgstr ""
#~ "non necessita argomenti\n"
#~ "\n"
#~ " Restituisce i canali dove è presente il bot. Deve essere "
#~ "richiesto in\n"
#~ " privato per preservare la segretezza dei canali privati.\n"
#~ " "
#~ msgid ""
#~ "[<channel>] [<reason>]\n"
#~ "\n"
#~ " Tells the bot to part the list of channels you give it. "
#~ "<channel> is\n"
#~ " only necessary if you want the bot to part a channel other than "
#~ "the\n"
#~ " current channel. If <reason> is specified, use it as the part\n"
#~ " message.\n"
#~ " "
#~ msgstr ""
#~ "[<canale>] [<motivo>]\n"
#~ "\n"
#~ " Fornisce al bot l'elenco dei canali da cui uscire. <canale> è "
#~ "necessario\n"
#~ " solo se si vuole far uscire il bot da un canale diverso da quello "
#~ "attuale.\n"
#~ " Se <motivo> viene specificato, verrà usato come messaggio di "
#~ "uscita.\n"
#~ " "
#~ msgid "I'm not in %s."
#~ msgstr "Non sono in %s."
#~ msgid "That nick is currently banned." #~ msgid "That nick is currently banned."
#~ msgstr "Il nick è attualmente bannato." #~ msgstr "Il nick è attualmente bannato."

View File

@ -5,13 +5,13 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2014-12-20 11:59+EET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
@ -28,27 +28,27 @@ msgstr ""
msgid "Nick/channel temporarily unavailable." msgid "Nick/channel temporarily unavailable."
msgstr "" msgstr ""
#: plugin.py:75 #: plugin.py:85
msgid "Cannot join %s, it's full." msgid "Cannot join %s, it's full."
msgstr "" msgstr ""
#: plugin.py:83 #: plugin.py:93
msgid "Cannot join %s, I was not invited." msgid "Cannot join %s, I was not invited."
msgstr "" msgstr ""
#: plugin.py:91 #: plugin.py:101
msgid "Cannot join %s, I am banned." msgid "Cannot join %s, I am banned."
msgstr "" msgstr ""
#: plugin.py:99 #: plugin.py:109
msgid "Cannot join %s, my keyword was wrong." msgid "Cannot join %s, my keyword was wrong."
msgstr "" msgstr ""
#: plugin.py:107 plugin.py:116 #: plugin.py:117 plugin.py:126
msgid "Cannot join %s, I'm not identified with NickServ." msgid "Cannot join %s, I'm not identified with NickServ."
msgstr "" msgstr ""
#: plugin.py:146 #: plugin.py:156
#, docstring #, docstring
msgid "" msgid ""
"<channel> [<key>]\n" "<channel> [<key>]\n"
@ -58,41 +58,44 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:159 #: plugin.py:162
msgid "channel"
msgstr ""
#: plugin.py:169
msgid "I'm already too close to maximum number of channels for this network." msgid "I'm already too close to maximum number of channels for this network."
msgstr "" msgstr ""
#: plugin.py:168 #: plugin.py:178
#, docstring #, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
" Returns the channels the bot is on. Must be given in private, in order\n" " Returns the channels the bot is on.\n"
" to protect the secrecy of secret channels.\n"
" " " "
msgstr "" msgstr ""
#: plugin.py:178 #: plugin.py:187
msgid "I'm not currently in any channels." msgid "I'm not currently in any channels."
msgstr "" msgstr ""
#: plugin.py:184 #: plugin.py:193
msgid "My connection is restricted, I can't change nicks." msgid "My connection is restricted, I can't change nicks."
msgstr "" msgstr ""
#: plugin.py:191 #: plugin.py:200
msgid "Someone else is already using that nick." msgid "Someone else is already using that nick."
msgstr "" msgstr ""
#: plugin.py:198 #: plugin.py:207
msgid "I can't change nick, I'm currently banned in %s." msgid "I can't change nick, I'm currently banned in %s."
msgstr "" msgstr ""
#: plugin.py:206 #: plugin.py:215
msgid "I can't change nicks, the server said %q." msgid "I can't change nicks, the server said %q."
msgstr "" msgstr ""
#: plugin.py:220 #: plugin.py:229
#, docstring #, docstring
msgid "" msgid ""
"[<nick>] [<network>]\n" "[<nick>] [<network>]\n"
@ -102,23 +105,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:237 #: plugin.py:248
#, docstring
msgid ""
"[<channel>] [<reason>]\n"
"\n"
" Tells the bot to part the list of channels you give it. <channel> is\n"
" only necessary if you want the bot to part a channel other than the\n"
" current channel. If <reason> is specified, use it as the part\n"
" message.\n"
" "
msgstr ""
#: plugin.py:255
msgid "I'm not in %s."
msgstr ""
#: plugin.py:267
#, docstring #, docstring
msgid "" msgid ""
"<name|hostmask> <capability>\n" "<name|hostmask> <capability>\n"
@ -128,15 +115,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:287 #: plugin.py:268
msgid "The \"owner\" capability can't be added in the bot. Use the supybot-adduser program (or edit the users.conf file yourself) to add an owner capability." msgid "The \"owner\" capability can't be added in the bot. Use the supybot-adduser program (or edit the users.conf file yourself) to add an owner capability."
msgstr "" msgstr ""
#: plugin.py:298 #: plugin.py:279
msgid "You can't add capabilities you don't have." msgid "You can't add capabilities you don't have."
msgstr "" msgstr ""
#: plugin.py:303 #: plugin.py:284
#, docstring #, docstring
msgid "" msgid ""
"<name|hostmask> <capability>\n" "<name|hostmask> <capability>\n"
@ -146,15 +133,15 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:315 #: plugin.py:296
msgid "That user doesn't have that capability." msgid "That user doesn't have that capability."
msgstr "" msgstr ""
#: plugin.py:317 #: plugin.py:298
msgid "You can't remove capabilities you don't have." msgid "You can't remove capabilities you don't have."
msgstr "" msgstr ""
#: plugin.py:325 #: plugin.py:306
#, docstring #, docstring
msgid "" msgid ""
"<hostmask|nick> [<expires>]\n" "<hostmask|nick> [<expires>]\n"
@ -166,7 +153,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:338 #: plugin.py:319
#, docstring #, docstring
msgid "" msgid ""
"<hostmask|nick>\n" "<hostmask|nick>\n"
@ -176,11 +163,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:347 #: plugin.py:328
msgid "%s wasn't in the ignores database." msgid "%s wasn't in the ignores database."
msgstr "" msgstr ""
#: plugin.py:352 #: plugin.py:333
#, docstring #, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
@ -189,11 +176,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:360 #: plugin.py:341
msgid "I'm not currently globally ignoring anyone." msgid "I'm not currently globally ignoring anyone."
msgstr "" msgstr ""
#: plugin.py:364 #: plugin.py:345
#, docstring #, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
@ -202,3 +189,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:354
#, docstring
msgid ""
"<command> [<arg> ...]\n"
"\n"
" Perform <command> (with associated <arg>s on all channels on current network."
msgstr ""

View File

@ -1,6 +1,6 @@
### ###
# Copyright (c) 2002-2005, Jeremiah Fincher # Copyright (c) 2002-2005, Jeremiah Fincher
# Copyright (c) 2010, Valentin Lorentz # Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2002-2005, Jeremiah Fincher # Copyright (c) 2002-2005, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -70,7 +71,7 @@ class AdminTestCase(PluginTestCase):
ircdb.users.setUser(u) ircdb.users.setUser(u)
self.assertNotError('capability add foo bar') self.assertNotError('capability add foo bar')
self.assertError('addcapability foo baz') self.assertError('addcapability foo baz')
self.assert_('bar' in u.capabilities) self.assertIn('bar', u.capabilities)
ircdb.users.delUser(u.id) ircdb.users.delUser(u.id)
def testCapabilityRemove(self): def testCapabilityRemove(self):
@ -79,10 +80,10 @@ class AdminTestCase(PluginTestCase):
u.name = 'foo' u.name = 'foo'
ircdb.users.setUser(u) ircdb.users.setUser(u)
self.assertNotError('capability add foo bar') self.assertNotError('capability add foo bar')
self.assert_('bar' in u.capabilities) self.assertIn('bar', u.capabilities)
self.assertError('removecapability foo bar') self.assertError('removecapability foo bar')
self.assertNotError('capability remove foo bar') self.assertNotError('capability remove foo bar')
self.assert_(not 'bar' in u.capabilities) self.assertNotIn('bar', u.capabilities)
ircdb.users.delUser(u.id) ircdb.users.delUser(u.id)
def testJoin(self): def testJoin(self):

View File

@ -5,12 +5,14 @@ Documentation for the Aka plugin for Supybot
Purpose Purpose
------- -------
This plugin allows the user to create various aliases (known as "Akas", since This plugin allows the user to create various aliases (known as "Akas", since
Alias is the name of another plugin Aka is based on) to other commands or Alias is the name of another plugin Aka is based on) to other commands or
combinations of other commands (via nested commands). combinations of other commands (via nested commands).
Usage Usage
----- -----
This plugin allows users to define aliases to commands and combinations This plugin allows users to define aliases to commands and combinations
of commands (via nesting). of commands (via nesting).
@ -44,7 +46,7 @@ Now you can use Aka as you used Alias before.
Trout Trout
^^^^^ ^^^^^
Add an aka, trout, which expects a word as an argument:: Add an aka, ``trout``, which expects a word as an argument::
<jamessan> @aka add trout "reply action slaps $1 with a large trout" <jamessan> @aka add trout "reply action slaps $1 with a large trout"
<bot> jamessan: The operation succeeded. <bot> jamessan: The operation succeeded.
@ -54,28 +56,25 @@ Add an aka, trout, which expects a word as an argument::
This ``trout`` aka requires the plugin ``Reply`` to be loaded since it This ``trout`` aka requires the plugin ``Reply`` to be loaded since it
provides the ``action`` command. provides the ``action`` command.
LastFM Random percentage
^^^^^^ ^^^^^^^^^^^^^^^^^
Add an aka, ``lastfm``, which expects a last.fm username and replies with Add an aka, ``randpercent``, which returns a random percentage value::
their most recently played item::
@aka add lastfm "rss [format concat http://ws.audioscrobbler.com/1.0/user/ [format concat [web urlquote $1] /recenttracks.rss]]" @aka add randpercent "squish [dice 1d100]%"
This ``lastfm`` aka requires the following plugins to be loaded: ``RSS``, This requires the ``Filter`` and ``Games`` plugins to be loaded.
``Format`` and ``Web``.
``RSS`` provides ``rss``, ``Format`` provides ``concat`` and ``Web`` provides Note that nested commands in an alias should be quoted, or they will only
``urlquote``. run once when you create the alias, and not each time the alias is
called. (In this case, not quoting the nested command would mean that
Note that if the nested commands being aliased hadn't been quoted, then ``@randpercent`` always responds with the same value!)
those commands would have been run immediately, and ``@lastfm`` would always
reply with the same information, the result of those commands.
.. _commands-Aka: .. _commands-Aka:
Commands Commands
-------- --------
.. _command-aka-add: .. _command-aka-add:
add [--channel <#channel>] <name> <command> add [--channel <#channel>] <name> <command>
@ -130,7 +129,7 @@ Configuration
supybot.plugins.Aka.maximumWordsInName supybot.plugins.Aka.maximumWordsInName
This config variable defaults to "5", is not network-specific, and is not channel-specific. This config variable defaults to "5", is not network-specific, and is not channel-specific.
The maximum number of words allowed in a command name. Setting this to an high value may slow down your bot on long commands. The maximum number of words allowed in a command name. Setting this to an high value may slow down your bot on long commands.
@ -138,7 +137,7 @@ supybot.plugins.Aka.maximumWordsInName
supybot.plugins.Aka.public supybot.plugins.Aka.public
This config variable defaults to "True", is not network-specific, and is not channel-specific. This config variable defaults to "True", is not network-specific, and is not channel-specific.
Determines whether this plugin is publicly visible. Determines whether this plugin is publicly visible.
@ -152,7 +151,7 @@ supybot.plugins.Aka.web
supybot.plugins.Aka.web.enable supybot.plugins.Aka.web.enable
This config variable defaults to "False", is not network-specific, and is not channel-specific. This config variable defaults to "False", is not network-specific, and is not channel-specific.
Determines whether the Akas will be browsable through the HTTP server. Determines whether the Akas will be browsable through the HTTP server.

View File

@ -1,5 +1,5 @@
### ###
# Copyright (c) 2013, Valentin Lorentz # Copyright (c) 2013-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,5 +1,5 @@
### ###
# Copyright (c) 2013, Valentin Lorentz # Copyright (c) 2013-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

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: 2014-12-20 13:30+EET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
@ -26,54 +26,124 @@ msgstr ""
" Korkean arvon asettaminen tähän voi hidastaa bottiasi pitkien komentojen " " Korkean arvon asettaminen tähän voi hidastaa bottiasi pitkien komentojen "
"kanssa." "kanssa."
#: plugin.py:140 plugin.py:264 plugin.py:507 #: config.py:61
msgid ""
"Determines whether the Akas will be\n"
" browsable through the HTTP server."
msgstr ""
#: plugin.py:141 plugin.py:274 plugin.py:732
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:169 plugin.py:181 plugin.py:195 plugin.py:291 plugin.py:308 #: plugin.py:170 plugin.py:182 plugin.py:196 plugin.py:301 plugin.py:318
#: plugin.py:325 #: plugin.py:335 plugin.py:912
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."
#: plugin.py:293 #: plugin.py:303
msgid "This Aka is already locked." msgid "This Aka is already locked."
msgstr "Tämä Aka on jo lukittu." msgstr "Tämä Aka on jo lukittu."
#: plugin.py:310 #: plugin.py:320
msgid "This Aka is already unlocked." msgid "This Aka is already unlocked."
msgstr "Tämä Aka on jo avattu." msgstr "Tämä Aka on jo avattu."
#: plugin.py:372 #: plugin.py:465
msgid "" #, fuzzy
"Aka is the improved version of the Alias plugin. It stores akas outside\n" msgid "By %s at %s"
" of the bot.conf, which doesn't have risk of corrupting the bot.conf " msgstr "Lukinnut %s aikaan %s"
"file\n"
" (this often happens when there are Unicode issues). Aka also\n"
" introduces multi-worded akas."
msgstr ""
"Aka on paranneltu versio Alias pluginista. Se tallentaa akat bot.conf-"
"tiedoston ulkopuolelle, jollla ei ole\n"
" riskiä korruptoida bot.conf tiedostoa (joka tapahtuu usein Unicode-"
"ongelmien kanssa). Aka\n"
" tukee myös useamman akan pituisia akoja."
#: plugin.py:481 #: plugin.py:501
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"
" LastFM\n"
" ^^^^^^\n"
"\n"
" Add an aka, ``lastfm``, which expects a last.fm username and replies "
"with\n"
" their most recently played item::\n"
"\n"
" @aka add lastfm \"rss [format concat http://ws.audioscrobbler."
"com/1.0/user/ [format concat [web urlquote $1] /recenttracks.rss]]\"\n"
"\n"
" This ``lastfm`` aka requires the following plugins to be loaded: "
"``RSS``,\n"
" ``Format`` and ``Web``.\n"
"\n"
" ``RSS`` provides ``rss``, ``Format`` provides ``concat`` and ``Web`` "
"provides\n"
" ``urlquote``.\n"
"\n"
" Note that if the nested commands being aliased hadn't been quoted, then\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 ""
#: plugin.py:699
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:485 #: plugin.py:703
msgid " at least" msgid " at least"
msgstr "ainakin" msgstr "ainakin"
#: plugin.py:494 #: plugin.py:712
msgid "Locked by %s at %s" msgid "Locked by %s at %s"
msgstr "Lukinnut %s aikaan %s" msgstr "Lukinnut %s aikaan %s"
#: plugin.py:497 #: plugin.py:717
#, fuzzy
msgid "" msgid ""
"<an alias,%s %n>\n" "<a global alias,%s %n>\n"
"\n" "\n"
"Alias for %q.%s" "Alias for %q.%s"
msgstr "" msgstr ""
@ -81,32 +151,39 @@ msgstr ""
"\n" "\n"
"Alias komennolle %q.%s" "Alias komennolle %q.%s"
#: plugin.py:498 #: plugin.py:718 plugin.py:722
msgid "argument" msgid "argument"
msgstr "parametri" msgstr "parametri"
#: plugin.py:504 #: plugin.py:721
#, fuzzy
msgid ""
"<an alias on %s,%s %n>\n"
"\n"
"Alias for %q.%s"
msgstr ""
"<alias,%s %n>\n"
"\n"
"Alias komennolle %q.%s"
#: plugin.py:729
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:509 #: plugin.py:734
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:514 #: plugin.py:739
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:516 #: plugin.py:746
msgid "There can be only one $* in an alias."
msgstr "Aliaksessa voi olla vain yksi $*."
#: plugin.py:523
msgid "This Aka is locked." msgid "This Aka is locked."
msgstr "Tämä Aka on lukittu." msgstr "Tämä Aka on lukittu."
#: plugin.py:527 #: plugin.py:750
#, fuzzy #, fuzzy
msgid "" msgid ""
"[--channel <#channel>] <name> <command>\n" "[--channel <#channel>] <name> <command>\n"
@ -137,12 +214,12 @@ msgstr ""
"parametrit.\n" "parametrit.\n"
" " " "
#: plugin.py:541 plugin.py:573 plugin.py:604 plugin.py:636 plugin.py:659 #: plugin.py:764 plugin.py:796 plugin.py:827 plugin.py:859 plugin.py:882
#: plugin.py:682 #: plugin.py:905 plugin.py:951 plugin.py:994
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:559 #: plugin.py:782
#, fuzzy #, fuzzy
msgid "" msgid ""
"[--channel <#channel>] <name> <command>\n" "[--channel <#channel>] <name> <command>\n"
@ -172,7 +249,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:596 #: plugin.py:819
msgid "" msgid ""
"[--channel <#channel>] <name>\n" "[--channel <#channel>] <name>\n"
"\n" "\n"
@ -184,7 +261,7 @@ msgstr ""
" Poistaa annetun aliaksen, ellei se ole lukittu.\n" " Poistaa annetun aliaksen, ellei se ole lukittu.\n"
" " " "
#: plugin.py:618 #: plugin.py:841
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."
@ -192,7 +269,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:628 #: plugin.py:851
msgid "" msgid ""
"[--channel <#channel>] <alias>\n" "[--channel <#channel>] <alias>\n"
"\n" "\n"
@ -204,7 +281,7 @@ msgstr ""
" Lukitsee aliaksen estäen muita muokkaamasta sitä.\n" " Lukitsee aliaksen estäen muita muokkaamasta sitä.\n"
" " " "
#: plugin.py:651 #: plugin.py:874
msgid "" msgid ""
"[--channel <#channel>] <alias>\n" "[--channel <#channel>] <alias>\n"
"\n" "\n"
@ -216,7 +293,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:674 #: plugin.py:897
msgid "" msgid ""
"[--channel <#channel>] <alias>\n" "[--channel <#channel>] <alias>\n"
"\n" "\n"
@ -227,7 +304,7 @@ msgstr ""
"\n" "\n"
" Tämä komento näyttää Akan sisällön." " Tämä komento näyttää Akan sisällön."
#: plugin.py:694 #: plugin.py:917
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -237,14 +314,60 @@ msgstr ""
"\n" "\n"
" Tuo Aliaksen tietokannan Akaan ja tyhjentää aiemman." " Tuo Aliaksen tietokannan Akaan ja tyhjentää aiemman."
#: plugin.py:699 #: plugin.py:922
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:709 #: plugin.py:933
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
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 ""
#: plugin.py:960
msgid "--locked and --unlocked are incompatible options."
msgstr ""
#: plugin.py:980
msgid "No Akas found."
msgstr ""
#: plugin.py:985
msgid ""
"[--channel <#channel>] <query>\n"
"\n"
" Searches Akas defined for <channel>. If <channel> is not specified,\n"
" searches all global Akas."
msgstr ""
#: plugin.py:1004
msgid "No matching Akas were found."
msgstr ""
#~ msgid ""
#~ "Aka is the improved version of the Alias plugin. It stores akas outside\n"
#~ " of the bot.conf, which doesn't have risk of corrupting the bot.conf "
#~ "file\n"
#~ " (this often happens when there are Unicode issues). Aka also\n"
#~ " introduces multi-worded akas."
#~ msgstr ""
#~ "Aka on paranneltu versio Alias pluginista. Se tallentaa akat bot.conf-"
#~ "tiedoston ulkopuolelle, jollla ei ole\n"
#~ " riskiä korruptoida bot.conf tiedostoa (joka tapahtuu usein Unicode-"
#~ "ongelmien kanssa). Aka\n"
#~ " tukee myös useamman akan pituisia akoja."
#~ msgid "There can be only one $* in an alias."
#~ msgstr "Aliaksessa voi olla vain yksi $*."
#~ msgid "" #~ msgid ""
#~ "Add the help for 'plugin help Aka' here\n" #~ "Add the help for 'plugin help Aka' here\n"
#~ " This should describe *how* to use this plugin." #~ " This should describe *how* to use this plugin."

View File

@ -5,13 +5,13 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2014-12-20 13:30+EET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
@ -22,76 +22,147 @@ msgid ""
" on long commands." " on long commands."
msgstr "" msgstr ""
#: plugin.py:140 plugin.py:264 plugin.py:507 #: config.py:61
msgid ""
"Determines whether the Akas will be\n"
" browsable through the HTTP server."
msgstr ""
#: plugin.py:141 plugin.py:274 plugin.py:732
msgid "This Aka already exists." msgid "This Aka already exists."
msgstr "" msgstr ""
#: plugin.py:169 plugin.py:181 plugin.py:195 plugin.py:291 plugin.py:308 #: plugin.py:170 plugin.py:182 plugin.py:196 plugin.py:301 plugin.py:318
#: plugin.py:325 #: plugin.py:335 plugin.py:912
msgid "This Aka does not exist" msgid "This Aka does not exist."
msgstr "" msgstr ""
#: plugin.py:293 #: plugin.py:303
msgid "This Aka is already locked." msgid "This Aka is already locked."
msgstr "" msgstr ""
#: plugin.py:310 #: plugin.py:320
msgid "This Aka is already unlocked." msgid "This Aka is already unlocked."
msgstr "" msgstr ""
#: plugin.py:372 #: plugin.py:465
#, docstring msgid "By %s at %s"
msgid ""
"Aka is the improved version of the Alias plugin. It stores akas outside\n"
" of the bot.conf, which doesn't have risk of corrupting the bot.conf file\n"
" (this often happens when there are Unicode issues). Aka also\n"
" introduces multi-worded akas."
msgstr "" msgstr ""
#: plugin.py:481 #: plugin.py:501
#, docstring
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"
" LastFM\n"
" ^^^^^^\n"
"\n"
" Add an aka, ``lastfm``, which expects a last.fm username and replies with\n"
" their most recently played item::\n"
"\n"
" @aka add lastfm \"rss [format concat http://ws.audioscrobbler.com/1.0/user/ [format concat [web urlquote $1] /recenttracks.rss]]\"\n"
"\n"
" This ``lastfm`` aka requires the following plugins to be loaded: ``RSS``,\n"
" ``Format`` and ``Web``.\n"
"\n"
" ``RSS`` provides ``rss``, ``Format`` provides ``concat`` and ``Web`` provides\n"
" ``urlquote``.\n"
"\n"
" Note that if the nested commands being aliased hadn't been quoted, then\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 ""
#: plugin.py:699
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:485 #: plugin.py:703
msgid " at least" msgid " at least"
msgstr "" msgstr ""
#: plugin.py:494 #: plugin.py:712
msgid "Locked by %s at %s" msgid "Locked by %s at %s"
msgstr "" msgstr ""
#: plugin.py:497 #: plugin.py:717
msgid "" msgid ""
"<an alias,%s %n>\n" "<a global alias,%s %n>\n"
"\n" "\n"
"Alias for %q.%s" "Alias for %q.%s"
msgstr "" msgstr ""
#: plugin.py:498 #: plugin.py:718 plugin.py:722
msgid "argument" msgid "argument"
msgstr "" msgstr ""
#: plugin.py:504 #: plugin.py:721
msgid ""
"<an alias on %s,%s %n>\n"
"\n"
"Alias for %q.%s"
msgstr ""
#: plugin.py:729
msgid "You can't overwrite commands in this plugin." msgid "You can't overwrite commands in this plugin."
msgstr "" msgstr ""
#: plugin.py:509 #: plugin.py:734
msgid "This Aka has too many spaces in its name." msgid "This Aka has too many spaces in its name."
msgstr "" msgstr ""
#: plugin.py:514 #: plugin.py:739
msgid "Can't mix $* and optional args (@1, etc.)" msgid "Can't mix $* and optional args (@1, etc.)"
msgstr "" msgstr ""
#: plugin.py:516 #: plugin.py:746
msgid "There can be only one $* in an alias."
msgstr ""
#: plugin.py:523
msgid "This Aka is locked." msgid "This Aka is locked."
msgstr "" msgstr ""
#: plugin.py:527 #: plugin.py:750
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <name> <command>\n" "[--channel <#channel>] <name> <command>\n"
@ -106,12 +177,12 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:541 plugin.py:573 plugin.py:604 plugin.py:636 plugin.py:659 #: plugin.py:764 plugin.py:796 plugin.py:827 plugin.py:859 plugin.py:882
#: plugin.py:682 #: plugin.py:905 plugin.py:951 plugin.py:994
msgid "%r is not a valid channel." msgid "%r is not a valid channel."
msgstr "" msgstr ""
#: plugin.py:559 #: plugin.py:782
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <name> <command>\n" "[--channel <#channel>] <name> <command>\n"
@ -126,7 +197,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:596 #: plugin.py:819
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <name>\n" "[--channel <#channel>] <name>\n"
@ -135,14 +206,14 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:618 #: plugin.py:841
#, 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:628 #: plugin.py:851
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <alias>\n" "[--channel <#channel>] <alias>\n"
@ -151,7 +222,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:651 #: plugin.py:874
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <alias>\n" "[--channel <#channel>] <alias>\n"
@ -160,7 +231,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:674 #: plugin.py:897
#, docstring #, docstring
msgid "" msgid ""
"[--channel <#channel>] <alias>\n" "[--channel <#channel>] <alias>\n"
@ -169,11 +240,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:689 #: plugin.py:917
msgid "This Aka does not exist."
msgstr ""
#: plugin.py:694
#, docstring #, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
@ -181,11 +248,42 @@ 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:699 #: plugin.py:922
msgid "Alias plugin is not loaded." msgid "Alias plugin is not loaded."
msgstr "" msgstr ""
#: plugin.py:709 #: plugin.py:933
msgid "Error occured when importing the %n: %L" msgid "Error occured when importing the %n: %L"
msgstr "" msgstr ""
#: plugin.py:941
#, docstring
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 ""
#: plugin.py:960
msgid "--locked and --unlocked are incompatible options."
msgstr ""
#: plugin.py:980
msgid "No Akas found."
msgstr ""
#: plugin.py:985
#, docstring
msgid ""
"[--channel <#channel>] <query>\n"
"\n"
" Searches Akas defined for <channel>. If <channel> is not specified,\n"
" searches all global Akas."
msgstr ""
#: plugin.py:1004
msgid "No matching Akas were found."
msgstr ""

View File

@ -1,5 +1,5 @@
### ###
# Copyright (c) 2013, Valentin Lorentz # Copyright (c) 2013-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -532,7 +532,7 @@ class Aka(callbacks.Plugin):
Trout Trout
^^^^^ ^^^^^
Add an aka, trout, which expects a word as an argument:: Add an aka, ``trout``, which expects a word as an argument::
<jamessan> @aka add trout "reply action slaps $1 with a large trout" <jamessan> @aka add trout "reply action slaps $1 with a large trout"
<bot> jamessan: The operation succeeded. <bot> jamessan: The operation succeeded.
@ -542,23 +542,19 @@ class Aka(callbacks.Plugin):
This ``trout`` aka requires the plugin ``Reply`` to be loaded since it This ``trout`` aka requires the plugin ``Reply`` to be loaded since it
provides the ``action`` command. provides the ``action`` command.
LastFM Random percentage
^^^^^^ ^^^^^^^^^^^^^^^^^
Add an aka, ``lastfm``, which expects a last.fm username and replies with Add an aka, ``randpercent``, which returns a random percentage value::
their most recently played item::
@aka add lastfm "rss [format concat http://ws.audioscrobbler.com/1.0/user/ [format concat [web urlquote $1] /recenttracks.rss]]" @aka add randpercent "squish [dice 1d100]%"
This ``lastfm`` aka requires the following plugins to be loaded: ``RSS``, This requires the ``Filter`` and ``Games`` plugins to be loaded.
``Format`` and ``Web``.
``RSS`` provides ``rss``, ``Format`` provides ``concat`` and ``Web`` provides Note that nested commands in an alias should be quoted, or they will only
``urlquote``. run once when you create the alias, and not each time the alias is
called. (In this case, not quoting the nested command would mean that
Note that if the nested commands being aliased hadn't been quoted, then ``@randpercent`` always responds with the same value!)
those commands would have been run immediately, and ``@lastfm`` would always
reply with the same information, the result of those commands.
""" """
def __init__(self, irc): def __init__(self, irc):

View File

@ -1,6 +1,7 @@
# -*- coding: utf8 -*- # -*- coding: utf8 -*-
### ###
# Copyright (c) 2002-2004, Jeremiah Fincher # Copyright (c) 2002-2004, Jeremiah Fincher
# Copyright (c) 2013-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -5,37 +5,42 @@ Documentation for the Alias plugin for Supybot
Purpose Purpose
------- -------
Allows aliases for other commands. NOTE THAT IT'S RECOMMENDED TO USE Aka Allows aliases for other commands. NOTE THAT IT'S RECOMMENDED TO USE Aka
PLUGIN INSTEAD! PLUGIN INSTEAD!
Usage Usage
----- -----
This plugin allows users to define aliases to commands and combinations This plugin allows users to define aliases to commands and combinations
of commands (via nesting). of commands (via nesting).
This plugin is only kept for backward compatibility, you should use the This plugin is only kept for backward compatibility, you should use the
built-in Aka plugin instead (you can migrate your existing aliases using built-in Aka plugin instead (you can migrate your existing aliases using
the 'importaliasdatabase' command. the 'importaliasdatabase' command.
To add an alias, `trout`, which expects a word as an argument:: To add an alias, ``trout``, which expects a word as an argument::
<jamessan> @alias add trout "action slaps $1 with a large trout" <jamessan> @alias add trout "action slaps $1 with a large trout"
<bot> jamessan: The operation succeeded. <bot> jamessan: The operation succeeded.
<jamessan> @trout me <jamessan> @trout me
* bot slaps me with a large trout * bot slaps me with a large trout
To add an alias, `lastfm`, which expects a last.fm user and replies with Add an alias, ``randpercent``, which returns a random percentage value::
their recently played items::
@alias add lastfm "rss [format concat http://ws.audioscrobbler.com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]" @alias add randpercent "squish [dice 1d100]%"
Note that if the nested commands being aliased hadn't been quoted, then This requires the ``Filter`` and ``Games`` plugins to be loaded.
those commands would have been run immediately, and `@lastfm` would always
reply with the same information, the result of those commands. Note that nested commands in an alias should be quoted, or they will only
run once when you create the alias, and not each time the alias is
called. (In this case, not quoting the nested command would mean that
``@randpercent`` always responds with the same value!)
.. _commands-Alias: .. _commands-Alias:
Commands Commands
-------- --------
.. _command-alias-add: .. _command-alias-add:
add <name> <command> add <name> <command>
@ -82,7 +87,7 @@ supybot.plugins.Alias.escapedaliases
supybot.plugins.Alias.public supybot.plugins.Alias.public
This config variable defaults to "True", is not network-specific, and is not channel-specific. This config variable defaults to "True", is not network-specific, and is not channel-specific.
Determines whether this plugin is publicly visible. Determines whether this plugin is publicly visible.
@ -90,7 +95,7 @@ supybot.plugins.Alias.public
supybot.plugins.Alias.validName supybot.plugins.Alias.validName
This config variable defaults to "^[^\\x00-\\x20]+$", is not network-specific, and is not channel-specific. This config variable defaults to "^[^\\x00-\\x20]+$", is not network-specific, and is not channel-specific.
Regex which alias names must match in order to be valid Regex which alias names must match in order to be valid

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2005, Jeremiah Fincher # Copyright (c) 2005, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2005, Jeremiah Fincher # Copyright (c) 2005, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Supybot\n" "Project-Id-Version: Supybot\n"
"POT-Creation-Date: 2012-02-15 23:03+CET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
@ -13,7 +13,11 @@ msgstr ""
"X-Poedit-Language: German\n" "X-Poedit-Language: German\n"
"X-Poedit-Country: GERMANY\n" "X-Poedit-Country: GERMANY\n"
#: plugin.py:45 #: config.py:48
msgid "Regex which alias names must match in order to be valid"
msgstr ""
#: plugin.py:48
msgid "" msgid ""
"Returns the channel the msg came over or the channel given in args.\n" "Returns the channel the msg came over or the channel given in args.\n"
"\n" "\n"
@ -21,15 +25,24 @@ msgid ""
" removed).\n" " removed).\n"
" " " "
msgstr "" msgstr ""
"Gibt den Kanal aus über den die Nachricht kam oder der Kanal der in den Argumenten gegeben wurde.\n" "Gibt den Kanal aus über den die Nachricht kam oder der Kanal der in den "
"Argumenten gegeben wurde.\n"
"\n" "\n"
"Falls der Kanal in den Argumenten angegeben wurde, werden die Argumente bearbeitet (der Kanal wird entfernt." "Falls der Kanal in den Argumenten angegeben wurde, werden die Argumente "
"bearbeitet (der Kanal wird entfernt."
#: plugin.py:164 #: plugin.py:110
msgid ""
"Encodes dots and pipes\n"
" Format: a<number of escaped chars>a(<index>(d|p))+<word without dots or "
"pipes>."
msgstr ""
#: plugin.py:226
msgid " at least" msgid " at least"
msgstr "mindestens" msgstr "mindestens"
#: plugin.py:165 #: plugin.py:228 plugin.py:233
msgid "" msgid ""
"<an alias,%s %n>\n" "<an alias,%s %n>\n"
"\n" "\n"
@ -39,11 +52,42 @@ msgstr ""
"\n" "\n"
"Alias für %q." "Alias für %q."
#: plugin.py:166 #: plugin.py:229 plugin.py:234
msgid "argument" msgid "argument"
msgstr "Argument" msgstr "Argument"
#: plugin.py:220 #: plugin.py:239
msgid ""
"\n"
" This plugin allows users to define aliases to commands and combinations\n"
" of commands (via nesting).\n"
" This plugin is only kept for backward compatibility, you should use the\n"
" built-in Aka plugin instead (you can migrate your existing aliases "
"using\n"
" the 'importaliasdatabase' command.\n"
"\n"
" To add an alias, `trout`, which expects a word as an argument::\n"
"\n"
" <jamessan> @alias add trout \"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"
" To add an alias, `lastfm`, which expects a last.fm user and replies "
"with\n"
" their recently played items::\n"
"\n"
" @alias add lastfm \"rss [format concat http://ws.audioscrobbler."
"com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]\"\n"
"\n"
" Note that if the nested commands being aliased hadn't been quoted, then\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 ""
#: plugin.py:357
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -54,12 +98,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:229 #: plugin.py:365 plugin.py:378
#: plugin.py:243
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:234 #: plugin.py:370
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -70,28 +113,34 @@ 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:254 #: plugin.py:386
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:292 #: plugin.py:426
#, fuzzy #, fuzzy
msgid "" msgid ""
"<name> <command>\n" "<name> <command>\n"
"\n" "\n"
" Defines an alias <name> that executes <command>. The <command>\n" " Defines an alias <name> that executes <command>. The <command>\n"
" should be in the standard \"command argument [nestedcommand argument]\"\n" " should be in the standard \"command argument [nestedcommand "
" arguments to the alias; they'll be filled with the first, second, etc.\n" "argument]\"\n"
" arguments. $1, $2, etc. can be used for required arguments. @1, @2,\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" " etc. can be used for optional arguments. $* simply means \"all\n"
" remaining arguments,\" and cannot be combined with optional arguments.\n" " remaining arguments,\" and cannot be combined with optional "
"arguments.\n"
" " " "
msgstr "" msgstr ""
"<Name> <Alias>\n" "<Name> <Alias>\n"
"\n" "\n"
"Definiert einen Alias <Name> der <Alias> ausführt. <Alias> sollte in der Standardform \"Befehl Argument [verschachtelter Befehl Argument\" angegeben werden." "Definiert einen Alias <Name> der <Alias> ausführt. <Alias> sollte in der "
"Standardform \"Befehl Argument [verschachtelter Befehl Argument\" angegeben "
"werden."
#: plugin.py:315 #: plugin.py:449
msgid "" msgid ""
"<name>\n" "<name>\n"
"\n" "\n"
@ -102,3 +151,25 @@ msgstr ""
"\n" "\n"
"Entfernt den gegeben Alias, falls er nicht gesperrt ist." "Entfernt den gegeben Alias, falls er nicht gesperrt ist."
#: plugin.py:463
msgid ""
"[--locked|--unlocked]\n"
"\n"
" Lists alias names of a particular type, defaults to all aliases if "
"no\n"
" --locked or --unlocked option is given.\n"
" "
msgstr ""
#: plugin.py:470
msgid "Cannot specify --locked and --unlocked simultaneously"
msgstr ""
#: plugin.py:486
msgid "There are no aliases of that type."
msgstr ""
#: plugin.py:488
#, fuzzy
msgid "There are no aliases."
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: 2014-12-20 13:30+EET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
@ -16,7 +16,11 @@ msgstr ""
"Plural-Forms: \n" "Plural-Forms: \n"
"X-Generator: Poedit 1.6.10\n" "X-Generator: Poedit 1.6.10\n"
#: plugin.py:46 #: config.py:48
msgid "Regex which alias names must match in order to be valid"
msgstr ""
#: plugin.py:48
msgid "" msgid ""
"Returns the channel the msg came over or the channel given in args.\n" "Returns the channel the msg came over or the channel given in args.\n"
"\n" "\n"
@ -31,20 +35,21 @@ msgstr ""
" poistetaan).\n" " poistetaan).\n"
" " " "
#: plugin.py:105 #: plugin.py:110
#, fuzzy #, fuzzy
msgid "" msgid ""
"Encodes [a-z0-9.]+ into [a-z][a-z0-9].\n" "Encodes dots and pipes\n"
" Format: a<number of escaped chars>a(<index>d)+<word without dots>." " Format: a<number of escaped chars>a(<index>(d|p))+<word without dots or "
"pipes>."
msgstr "" msgstr ""
"Salaa [a-z0-9.]+ sisään [a-z][a-z0-9].\n" "Salaa [a-z0-9.]+ sisään [a-z][a-z0-9].\n"
" Muoto: a<ohitettujen merkkien määrä>a(<index>d)+<sana ilman pisteitä>." " Muoto: a<ohitettujen merkkien määrä>a(<index>d)+<sana ilman pisteitä>."
#: plugin.py:221 #: plugin.py:226
msgid " at least" msgid " at least"
msgstr "vähintään" msgstr "vähintään"
#: plugin.py:223 plugin.py:228 #: plugin.py:228 plugin.py:233
msgid "" msgid ""
"<an alias,%s %n>\n" "<an alias,%s %n>\n"
"\n" "\n"
@ -54,20 +59,42 @@ msgstr ""
"\n" "\n"
"Alias %q:lle." "Alias %q:lle."
#: plugin.py:224 plugin.py:229 #: plugin.py:229 plugin.py:234
msgid "argument" msgid "argument"
msgstr "parametri" msgstr "parametri"
#: plugin.py:234 #: plugin.py:239
#, fuzzy
msgid "" msgid ""
"This plugin allows users to define aliases to commands and combinations\n" "\n"
" of commands (via nesting)." " This plugin allows users to define aliases to commands and combinations\n"
" of commands (via nesting).\n"
" This plugin is only kept for backward compatibility, you should use the\n"
" built-in Aka plugin instead (you can migrate your existing aliases "
"using\n"
" the 'importaliasdatabase' command.\n"
"\n"
" To add an alias, `trout`, which expects a word as an argument::\n"
"\n"
" <jamessan> @alias add trout \"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"
" To add an alias, `lastfm`, which expects a last.fm user and replies "
"with\n"
" their recently played items::\n"
"\n"
" @alias add lastfm \"rss [format concat http://ws.audioscrobbler."
"com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]\"\n"
"\n"
" Note that if the nested commands being aliased hadn't been quoted, then\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 ""
"Tämä plugini sallii käyttäjien määrittää aliaksia komennoille ja komentojen "
"yhdistelmille (sisäytyksellä)."
#: plugin.py:299 #: plugin.py:357
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -79,11 +106,11 @@ msgstr ""
" Lukitsee aliaksen, niin ettei kukaan muu voi muuttaa sitä.\n" " Lukitsee aliaksen, niin ettei kukaan muu voi muuttaa sitä.\n"
" " " "
#: plugin.py:308 plugin.py:322 #: plugin.py:365 plugin.py:378
msgid "There is no such alias." msgid "There is no such alias."
msgstr "Tuollaista aliasta ei ole." msgstr "Tuollaista aliasta ei ole."
#: plugin.py:313 #: plugin.py:370
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -96,11 +123,11 @@ msgstr ""
"aliaksia sen päälle.\n" "aliaksia sen päälle.\n"
" " " "
#: plugin.py:334 #: plugin.py:386
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:379 #: plugin.py:426
msgid "" msgid ""
"<name> <command>\n" "<name> <command>\n"
"\n" "\n"
@ -129,7 +156,7 @@ msgstr ""
"parametrejä.\n" "parametrejä.\n"
" " " "
#: plugin.py:402 #: plugin.py:449
msgid "" msgid ""
"<name>\n" "<name>\n"
"\n" "\n"
@ -141,6 +168,37 @@ msgstr ""
" Poistaa annetun aliaksen jos se ei ole lukittu.\n" " Poistaa annetun aliaksen jos se ei ole lukittu.\n"
" " " "
#: plugin.py:463
msgid ""
"[--locked|--unlocked]\n"
"\n"
" Lists alias names of a particular type, defaults to all aliases if "
"no\n"
" --locked or --unlocked option is given.\n"
" "
msgstr ""
#: plugin.py:470
msgid "Cannot specify --locked and --unlocked simultaneously"
msgstr ""
#: plugin.py:486
msgid "There are no aliases of that type."
msgstr ""
#: plugin.py:488
#, fuzzy
msgid "There are no aliases."
msgstr "Tuollaista aliasta ei ole."
#, fuzzy
#~ msgid ""
#~ "This plugin allows users to define aliases to commands and combinations\n"
#~ " of commands (via nesting)."
#~ msgstr ""
#~ "Tämä plugini sallii käyttäjien määrittää aliaksia komennoille ja "
#~ "komentojen yhdistelmille (sisäytyksellä)."
#~ 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 ""
#~ "Yritit sisällyttää useampia komentoja, kuin tämä botti sallii juuri nyt." #~ "Yritit sisällyttää useampia komentoja, kuin tämä botti sallii juuri nyt."

View File

@ -1,19 +1,22 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2014-01-22 13:38+CET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
"Language: fr_FR\n" "Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"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"
"X-Poedit-SourceCharset: ASCII\n" "X-Poedit-SourceCharset: ASCII\n"
"X-Generator: Poedit 1.5.4\n" "X-Generator: Poedit 1.5.4\n"
"Language: fr\n"
#: plugin.py:46 #: config.py:48
msgid "Regex which alias names must match in order to be valid"
msgstr ""
#: plugin.py:48
msgid "" msgid ""
"Returns the channel the msg came over or the channel given in args.\n" "Returns the channel the msg came over or the channel given in args.\n"
"\n" "\n"
@ -26,23 +29,19 @@ msgstr ""
"Si le canal était donné en argument, args est modifié (le canal est " "Si le canal était donné en argument, args est modifié (le canal est "
"supprimé)." "supprimé)."
#: plugin.py:108 #: plugin.py:110
#, fuzzy
msgid "" msgid ""
"Encodes [a-z0-9.]+ into [a-z][a-z0-9].\n" "Encodes dots and pipes\n"
" Format: a<number of escaped chars>a(<index>d)+<word without dots>." " Format: a<number of escaped chars>a(<index>(d|p))+<word without dots or "
"pipes>."
msgstr "." msgstr "."
#: plugin.py:219 #: plugin.py:226
msgid "You've attempted more nesting than is currently allowed on this bot."
msgstr ""
"Vous avez essayé dutiliser plus dimbrication que ce qui est actuellement "
"autorisé sur ce bot."
#: plugin.py:224
msgid " at least" msgid " at least"
msgstr "au moins" msgstr "au moins"
#: plugin.py:226 plugin.py:231 #: plugin.py:228 plugin.py:233
msgid "" msgid ""
"<an alias,%s %n>\n" "<an alias,%s %n>\n"
"\n" "\n"
@ -52,11 +51,42 @@ msgstr ""
"\n" "\n"
"Alias pour %q." "Alias pour %q."
#: plugin.py:227 plugin.py:232 #: plugin.py:229 plugin.py:234
msgid "argument" msgid "argument"
msgstr "argument" msgstr "argument"
#: plugin.py:300 #: plugin.py:239
msgid ""
"\n"
" This plugin allows users to define aliases to commands and combinations\n"
" of commands (via nesting).\n"
" This plugin is only kept for backward compatibility, you should use the\n"
" built-in Aka plugin instead (you can migrate your existing aliases "
"using\n"
" the 'importaliasdatabase' command.\n"
"\n"
" To add an alias, `trout`, which expects a word as an argument::\n"
"\n"
" <jamessan> @alias add trout \"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"
" To add an alias, `lastfm`, which expects a last.fm user and replies "
"with\n"
" their recently played items::\n"
"\n"
" @alias add lastfm \"rss [format concat http://ws.audioscrobbler."
"com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]\"\n"
"\n"
" Note that if the nested commands being aliased hadn't been quoted, then\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 ""
#: plugin.py:357
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -67,11 +97,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:309 plugin.py:323 #: plugin.py:365 plugin.py:378
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:314 #: plugin.py:370
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -82,11 +112,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:335 #: plugin.py:386
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:383 #: plugin.py:426
msgid "" msgid ""
"<name> <command>\n" "<name> <command>\n"
"\n" "\n"
@ -112,7 +142,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:406 #: plugin.py:449
msgid "" msgid ""
"<name>\n" "<name>\n"
"\n" "\n"
@ -122,3 +152,31 @@ msgstr ""
"<nom>\n" "<nom>\n"
"\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
msgid ""
"[--locked|--unlocked]\n"
"\n"
" Lists alias names of a particular type, defaults to all aliases if "
"no\n"
" --locked or --unlocked option is given.\n"
" "
msgstr ""
#: plugin.py:470
msgid "Cannot specify --locked and --unlocked simultaneously"
msgstr ""
#: plugin.py:486
msgid "There are no aliases of that type."
msgstr ""
#: plugin.py:488
#, fuzzy
msgid "There are no aliases."
msgstr "Cet alias n'existe pas."
#~ msgid "You've attempted more nesting than is currently allowed on this bot."
#~ msgstr ""
#~ "Vous avez essayé dutiliser plus dimbrication que ce qui est "
#~ "actuellement autorisé sur ce bot."

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: 2012-03-11 20:58+UTC\n" "POT-Creation-Date: 2022-02-06 00:12+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"
@ -17,7 +17,11 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n"
#: plugin.py:45 #: config.py:48
msgid "Regex which alias names must match in order to be valid"
msgstr ""
#: plugin.py:48
msgid "" msgid ""
"Returns the channel the msg came over or the channel given in args.\n" "Returns the channel the msg came over or the channel given in args.\n"
"\n" "\n"
@ -25,15 +29,24 @@ msgid ""
" removed).\n" " removed).\n"
" " " "
msgstr "" msgstr ""
"Kiírja a csatorna nevét, ahonnan az üzenet jött, vagy a paraméterként megadott csatornát.\n" "Kiírja a csatorna nevét, ahonnan az üzenet jött, vagy a paraméterként "
"megadott csatornát.\n"
"\n" "\n"
"Ha a csatorna meg volt adva paraméterként, a paraméterek módosulnak (a csatorna eltávolításra kerül)." "Ha a csatorna meg volt adva paraméterként, a paraméterek módosulnak (a "
"csatorna eltávolításra kerül)."
#: plugin.py:164 #: plugin.py:110
msgid ""
"Encodes dots and pipes\n"
" Format: a<number of escaped chars>a(<index>(d|p))+<word without dots or "
"pipes>."
msgstr ""
#: plugin.py:226
msgid " at least" msgid " at least"
msgstr " legalább" msgstr " legalább"
#: plugin.py:165 #: plugin.py:228 plugin.py:233
msgid "" msgid ""
"<an alias,%s %n>\n" "<an alias,%s %n>\n"
"\n" "\n"
@ -43,11 +56,42 @@ msgstr ""
"\n" "\n"
"Álnév %q-ra." "Álnév %q-ra."
#: plugin.py:166 #: plugin.py:229 plugin.py:234
msgid "argument" msgid "argument"
msgstr "paraméter" msgstr "paraméter"
#: plugin.py:220 #: plugin.py:239
msgid ""
"\n"
" This plugin allows users to define aliases to commands and combinations\n"
" of commands (via nesting).\n"
" This plugin is only kept for backward compatibility, you should use the\n"
" built-in Aka plugin instead (you can migrate your existing aliases "
"using\n"
" the 'importaliasdatabase' command.\n"
"\n"
" To add an alias, `trout`, which expects a word as an argument::\n"
"\n"
" <jamessan> @alias add trout \"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"
" To add an alias, `lastfm`, which expects a last.fm user and replies "
"with\n"
" their recently played items::\n"
"\n"
" @alias add lastfm \"rss [format concat http://ws.audioscrobbler."
"com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]\"\n"
"\n"
" Note that if the nested commands being aliased hadn't been quoted, then\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 ""
#: plugin.py:357
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -58,12 +102,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:229 #: plugin.py:365 plugin.py:378
#: plugin.py:243
msgid "There is no such alias." msgid "There is no such alias."
msgstr "Nincs ilyen álnév." msgstr "Nincs ilyen álnév."
#: plugin.py:234 #: plugin.py:370
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -74,27 +117,37 @@ 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:254 #: plugin.py:386
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:292 #: plugin.py:426
msgid "" msgid ""
"<name> <command>\n" "<name> <command>\n"
"\n" "\n"
" Defines an alias <name> that executes <command>. The <command>\n" " Defines an alias <name> that executes <command>. The <command>\n"
" should be in the standard \"command argument [nestedcommand argument]\"\n" " should be in the standard \"command argument [nestedcommand "
" arguments to the alias; they'll be filled with the first, second, etc.\n" "argument]\"\n"
" arguments. $1, $2, etc. can be used for required arguments. @1, @2,\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" " etc. can be used for optional arguments. $* simply means \"all\n"
" remaining arguments,\" and cannot be combined with optional arguments.\n" " remaining arguments,\" and cannot be combined with optional "
"arguments.\n"
" " " "
msgstr "" msgstr ""
"<név> <álnév>\n" "<név> <álnév>\n"
"\n" "\n"
"Meghatároz egy <név> nevű álnevet, amely futtatja <álnév> parancsot. Az <álnév>-nek a szabványos \"parancs paraméter [beágyazottparancs paraméter]\" álnév paraméterei formában kell lennie; ezek ki lesznek töltve az első, második stb. paraméterekkel. $1, $2 stb. használható kötelező paraméterekhez. @1, @2 stb. használható választható paraméterekhez. $* azt jelenti, \"az összes hátralévő paraméter,\" és nem kombinálható választható paraméterekkel." "Meghatároz egy <név> nevű álnevet, amely futtatja <álnév> parancsot. Az "
"<álnév>-nek a szabványos \"parancs paraméter [beágyazottparancs paraméter]\" "
"álnév paraméterei formában kell lennie; ezek ki lesznek töltve az első, "
"második stb. paraméterekkel. $1, $2 stb. használható kötelező "
"paraméterekhez. @1, @2 stb. használható választható paraméterekhez. $* azt "
"jelenti, \"az összes hátralévő paraméter,\" és nem kombinálható választható "
"paraméterekkel."
#: plugin.py:315 #: plugin.py:449
msgid "" msgid ""
"<name>\n" "<name>\n"
"\n" "\n"
@ -105,3 +158,25 @@ 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
msgid ""
"[--locked|--unlocked]\n"
"\n"
" Lists alias names of a particular type, defaults to all aliases if "
"no\n"
" --locked or --unlocked option is given.\n"
" "
msgstr ""
#: plugin.py:470
msgid "Cannot specify --locked and --unlocked simultaneously"
msgstr ""
#: plugin.py:486
msgid "There are no aliases of that type."
msgstr ""
#: plugin.py:488
#, fuzzy
msgid "There are no aliases."
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: 2011-02-26 09:49+CET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
@ -10,9 +10,11 @@ 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"
#: config.py:48
msgid "Regex which alias names must match in order to be valid"
msgstr ""
#: plugin.py:45 #: plugin.py:48
#, docstring
msgid "" msgid ""
"Returns the channel the msg came over or the channel given in args.\n" "Returns the channel the msg came over or the channel given in args.\n"
"\n" "\n"
@ -20,17 +22,26 @@ msgid ""
" removed).\n" " removed).\n"
" " " "
msgstr "" msgstr ""
"Restituisce il canale da dove proviene il messaggio o il canale fornito come argomento.\n" "Restituisce il canale da dove proviene il messaggio o il canale fornito come "
"argomento.\n"
"\n" "\n"
" Se il canale è stato dato come argomento, quest'ultimo viene modificato (il canale\n" " Se il canale è stato dato come argomento, quest'ultimo viene modificato "
"(il canale\n"
" viene rimosso).\n" " viene rimosso).\n"
" " " "
#: plugin.py:164 #: plugin.py:110
msgid ""
"Encodes dots and pipes\n"
" Format: a<number of escaped chars>a(<index>(d|p))+<word without dots or "
"pipes>."
msgstr ""
#: plugin.py:226
msgid " at least" msgid " at least"
msgstr " almeno" msgstr " almeno"
#: plugin.py:165 #: plugin.py:228 plugin.py:233
msgid "" msgid ""
"<an alias,%s %n>\n" "<an alias,%s %n>\n"
"\n" "\n"
@ -40,12 +51,42 @@ msgstr ""
"\n" "\n"
"Alias per %q." "Alias per %q."
#: plugin.py:166 #: plugin.py:229 plugin.py:234
msgid "argument" msgid "argument"
msgstr "argomento" msgstr "argomento"
#: plugin.py:220 #: plugin.py:239
#, docstring msgid ""
"\n"
" This plugin allows users to define aliases to commands and combinations\n"
" of commands (via nesting).\n"
" This plugin is only kept for backward compatibility, you should use the\n"
" built-in Aka plugin instead (you can migrate your existing aliases "
"using\n"
" the 'importaliasdatabase' command.\n"
"\n"
" To add an alias, `trout`, which expects a word as an argument::\n"
"\n"
" <jamessan> @alias add trout \"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"
" To add an alias, `lastfm`, which expects a last.fm user and replies "
"with\n"
" their recently played items::\n"
"\n"
" @alias add lastfm \"rss [format concat http://ws.audioscrobbler."
"com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]\"\n"
"\n"
" Note that if the nested commands being aliased hadn't been quoted, then\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 ""
#: plugin.py:357
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -57,12 +98,11 @@ msgstr ""
" Blocca un alias affinché nessun altro possa modificarlo.\n" " Blocca un alias affinché nessun altro possa modificarlo.\n"
" " " "
#: plugin.py:229 plugin.py:243 #: plugin.py:365 plugin.py:378
msgid "There is no such alias." msgid "There is no such alias."
msgstr "Non c'è nessun alias." msgstr "Non c'è nessun alias."
#: plugin.py:234 #: plugin.py:370
#, docstring
msgid "" msgid ""
"<alias>\n" "<alias>\n"
"\n" "\n"
@ -74,35 +114,40 @@ msgstr ""
" Sblocca un alias affinché chiunque possa ridefinirne di nuovi.\n" " Sblocca un alias affinché chiunque possa ridefinirne di nuovi.\n"
" " " "
#: plugin.py:254 #: plugin.py:386
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:292 #: plugin.py:426
#, docstring
msgid "" msgid ""
"<name> <command>\n" "<name> <command>\n"
"\n" "\n"
" Defines an alias <name> that executes <command>. The <command>\n" " Defines an alias <name> that executes <command>. The <command>\n"
" should be in the standard \"command argument [nestedcommand argument]\"\n" " should be in the standard \"command argument [nestedcommand "
" arguments to the alias; they'll be filled with the first, second, etc.\n" "argument]\"\n"
" arguments. $1, $2, etc. can be used for required arguments. @1, @2,\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" " etc. can be used for optional arguments. $* simply means \"all\n"
" remaining arguments,\" and cannot be combined with optional arguments.\n" " remaining arguments,\" and cannot be combined with optional "
"arguments.\n"
" " " "
msgstr "" msgstr ""
"<nome> <comando>\n" "<nome> <comando>\n"
"\n" "\n"
" Definisce un <nome> che esegue <comando>. <comando> deve essere nello\n" " Definisce un <nome> che esegue <comando>. <comando> deve essere "
"nello\n"
" standard \"comando argomento [comando_nidificato argomento]\"; gli\n" " standard \"comando argomento [comando_nidificato argomento]\"; gli\n"
" argomenti dati devono essere riportati in sequenza. Per gli argomenti\n" " argomenti dati devono essere riportati in sequenza. Per gli "
" richiesti è possibile utilizzare $1, $2, ecc., mentre @1, @2, ecc. per\n" "argomenti\n"
" richiesti è possibile utilizzare $1, $2, ecc., mentre @1, @2, ecc. "
"per\n"
" quelli opzionali. $* significa semplicemente \"tutti gli argomenti\n" " quelli opzionali. $* significa semplicemente \"tutti gli argomenti\n"
" rimanenti\" e non può essere combinato con quelli opzionali.\n" " rimanenti\" e non può essere combinato con quelli opzionali.\n"
" " " "
#: plugin.py:315 #: plugin.py:449
#, docstring
msgid "" msgid ""
"<name>\n" "<name>\n"
"\n" "\n"
@ -114,3 +159,25 @@ msgstr ""
" Rimuove l'alias specificato, se questo non è bloccato.\n" " Rimuove l'alias specificato, se questo non è bloccato.\n"
" " " "
#: plugin.py:463
msgid ""
"[--locked|--unlocked]\n"
"\n"
" Lists alias names of a particular type, defaults to all aliases if "
"no\n"
" --locked or --unlocked option is given.\n"
" "
msgstr ""
#: plugin.py:470
msgid "Cannot specify --locked and --unlocked simultaneously"
msgstr ""
#: plugin.py:486
msgid "There are no aliases of that type."
msgstr ""
#: plugin.py:488
#, fuzzy
msgid "There are no aliases."
msgstr "Non c'è nessun alias."

View File

@ -5,17 +5,21 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2014-12-20 13:30+EET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
#: plugin.py:46 #: config.py:48
msgid "Regex which alias names must match in order to be valid"
msgstr ""
#: plugin.py:48
#, docstring #, docstring
msgid "" msgid ""
"Returns the channel the msg came over or the channel given in args.\n" "Returns the channel the msg came over or the channel given in args.\n"
@ -25,36 +29,57 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:105 #: plugin.py:110
#, docstring #, docstring
msgid "" msgid ""
"Encodes [a-z0-9.]+ into [a-z][a-z0-9].\n" "Encodes dots and pipes\n"
" Format: a<number of escaped chars>a(<index>d)+<word without dots>." " Format: a<number of escaped chars>a(<index>(d|p))+<word without dots or pipes>."
msgstr "" msgstr ""
#: plugin.py:221 #: plugin.py:226
msgid " at least" msgid " at least"
msgstr "" msgstr ""
#: plugin.py:223 plugin.py:228 #: plugin.py:228 plugin.py:233
msgid "" msgid ""
"<an alias,%s %n>\n" "<an alias,%s %n>\n"
"\n" "\n"
"Alias for %q." "Alias for %q."
msgstr "" msgstr ""
#: plugin.py:224 plugin.py:229 #: plugin.py:229 plugin.py:234
msgid "argument" msgid "argument"
msgstr "" msgstr ""
#: plugin.py:234 #: plugin.py:239
#, docstring #, docstring
msgid "" msgid ""
"This plugin allows users to define aliases to commands and combinations\n" "\n"
" of commands (via nesting)." " This plugin allows users to define aliases to commands and combinations\n"
" of commands (via nesting).\n"
" This plugin is only kept for backward compatibility, you should use the\n"
" built-in Aka plugin instead (you can migrate your existing aliases using\n"
" the 'importaliasdatabase' command.\n"
"\n"
" To add an alias, `trout`, which expects a word as an argument::\n"
"\n"
" <jamessan> @alias add trout \"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"
" To add an alias, `lastfm`, which expects a last.fm user and replies with\n"
" their recently played items::\n"
"\n"
" @alias add lastfm \"rss [format concat http://ws.audioscrobbler.com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]\"\n"
"\n"
" Note that if the nested commands being aliased hadn't been quoted, then\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:299 #: plugin.py:357
#, docstring #, docstring
msgid "" msgid ""
"<alias>\n" "<alias>\n"
@ -63,11 +88,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:308 plugin.py:322 #: plugin.py:365 plugin.py:378
msgid "There is no such alias." msgid "There is no such alias."
msgstr "" msgstr ""
#: plugin.py:313 #: plugin.py:370
#, docstring #, docstring
msgid "" msgid ""
"<alias>\n" "<alias>\n"
@ -76,11 +101,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:334 #: plugin.py:386
msgid "That name isn't valid. Try %q instead." msgid "That name isn't valid. Try %q instead."
msgstr "" msgstr ""
#: plugin.py:379 #: plugin.py:426
#, docstring #, docstring
msgid "" msgid ""
"<name> <command>\n" "<name> <command>\n"
@ -94,7 +119,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:402 #: plugin.py:449
#, docstring #, docstring
msgid "" msgid ""
"<name>\n" "<name>\n"
@ -103,3 +128,25 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:463
#, docstring
msgid ""
"[--locked|--unlocked]\n"
"\n"
" Lists alias names of a particular type, defaults to all aliases if no\n"
" --locked or --unlocked option is given.\n"
" "
msgstr ""
#: plugin.py:470
msgid "Cannot specify --locked and --unlocked simultaneously"
msgstr ""
#: plugin.py:486
msgid "There are no aliases of that type."
msgstr ""
#: plugin.py:488
msgid "There are no aliases."
msgstr ""

View File

@ -1,6 +1,7 @@
### ###
# Copyright (c) 2002-2004, Jeremiah Fincher # Copyright (c) 2002-2004, Jeremiah Fincher
# Copyright (c) 2014, James McCoy # Copyright (c) 2014, James McCoy
# Copyright (c) 2012-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -242,21 +243,23 @@ class Alias(callbacks.Plugin):
built-in Aka plugin instead (you can migrate your existing aliases using built-in Aka plugin instead (you can migrate your existing aliases using
the 'importaliasdatabase' command. the 'importaliasdatabase' command.
To add an alias, `trout`, which expects a word as an argument:: To add an alias, ``trout``, which expects a word as an argument::
<jamessan> @alias add trout "action slaps $1 with a large trout" <jamessan> @alias add trout "action slaps $1 with a large trout"
<bot> jamessan: The operation succeeded. <bot> jamessan: The operation succeeded.
<jamessan> @trout me <jamessan> @trout me
* bot slaps me with a large trout * bot slaps me with a large trout
To add an alias, `lastfm`, which expects a last.fm user and replies with Add an alias, ``randpercent``, which returns a random percentage value::
their recently played items::
@alias add lastfm "rss [format concat http://ws.audioscrobbler.com/1.0/user/ [format concat [urlquote $1] /recenttracks.rss]]" @alias add randpercent "squish [dice 1d100]%"
Note that if the nested commands being aliased hadn't been quoted, then This requires the ``Filter`` and ``Games`` plugins to be loaded.
those commands would have been run immediately, and `@lastfm` would always
reply with the same information, the result of those commands. Note that nested commands in an alias should be quoted, or they will only
run once when you create the alias, and not each time the alias is
called. (In this case, not quoting the nested command would mean that
``@randpercent`` always responds with the same value!)
""" """
def __init__(self, irc): def __init__(self, irc):
self.__parent = super(Alias, self) self.__parent = super(Alias, self)

View File

@ -1,6 +1,7 @@
# -*- coding: utf8 -*- # -*- coding: utf8 -*-
### ###
# Copyright (c) 2002-2004, Jeremiah Fincher # Copyright (c) 2002-2004, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -110,7 +111,7 @@ class AliasTestCase(ChannelPluginTestCase):
self.assertResponse('foobar', 'sbbone') self.assertResponse('foobar', 'sbbone')
self.assertRaises(Alias.AliasError, cb.removeAlias, 'foobar') self.assertRaises(Alias.AliasError, cb.removeAlias, 'foobar')
cb.removeAlias('foobar', evenIfLocked=True) cb.removeAlias('foobar', evenIfLocked=True)
self.assertFalse('foobar' in cb.aliases) self.assertNotIn('foobar', cb.aliases)
self.assertError('foobar') self.assertError('foobar')
self.assertRegexp('alias add abc\x07 ignore', 'Error.*Invalid') self.assertRegexp('alias add abc\x07 ignore', 'Error.*Invalid')

View File

@ -5,10 +5,12 @@ Documentation for the Anonymous plugin for Supybot
Purpose Purpose
------- -------
Allows folks to talk through the bot anonymously. Allows folks to talk through the bot anonymously.
Usage Usage
----- -----
This plugin allows users to act through the bot anonymously. The 'do' This plugin allows users to act through the bot anonymously. The 'do'
command has the bot perform an anonymous action in a given channel, and command has the bot perform an anonymous action in a given channel, and
the 'say' command allows other people to speak through the bot. Since the 'say' command allows other people to speak through the bot. Since
@ -48,6 +50,7 @@ This
Commands Commands
-------- --------
.. _command-anonymous-do: .. _command-anonymous-do:
do <channel> <action> do <channel> <action>
@ -77,7 +80,7 @@ Configuration
supybot.plugins.Anonymous.allowPrivateTarget supybot.plugins.Anonymous.allowPrivateTarget
This config variable defaults to "False", is not network-specific, and is not channel-specific. This config variable defaults to "False", is not network-specific, and is not channel-specific.
Determines whether the bot will allow the "tell" command to be used. If true, the bot will allow the "tell" command to send private messages to other users. Determines whether the bot will allow the "tell" command to be used. If true, the bot will allow the "tell" command to send private messages to other users.
@ -85,7 +88,7 @@ supybot.plugins.Anonymous.allowPrivateTarget
supybot.plugins.Anonymous.public supybot.plugins.Anonymous.public
This config variable defaults to "True", is not network-specific, and is not channel-specific. This config variable defaults to "True", is not network-specific, and is not channel-specific.
Determines whether this plugin is publicly visible. Determines whether this plugin is publicly visible.
@ -93,7 +96,7 @@ supybot.plugins.Anonymous.public
supybot.plugins.Anonymous.requireCapability supybot.plugins.Anonymous.requireCapability
This config variable defaults to "", is network-specific, and is channel-specific. This config variable defaults to "", is network-specific, and is channel-specific.
Determines what capability (if any) the bot should require people trying to use this plugin to have. Determines what capability (if any) the bot should require people trying to use this plugin to have.
@ -101,7 +104,7 @@ supybot.plugins.Anonymous.requireCapability
supybot.plugins.Anonymous.requirePresenceInChannel supybot.plugins.Anonymous.requirePresenceInChannel
This config variable defaults to "True", is network-specific, and is channel-specific. This config variable defaults to "True", is network-specific, and is channel-specific.
Determines whether the bot should require people trying to use this plugin to be in the channel they wish to anonymously send to. Determines whether the bot should require people trying to use this plugin to be in the channel they wish to anonymously send to.
@ -109,7 +112,7 @@ supybot.plugins.Anonymous.requirePresenceInChannel
supybot.plugins.Anonymous.requireRegistration supybot.plugins.Anonymous.requireRegistration
This config variable defaults to "True", is network-specific, and is channel-specific. This config variable defaults to "True", is network-specific, and is channel-specific.
Determines whether the bot should require people trying to use this plugin to be registered. Determines whether the bot should require people trying to use this plugin to be registered.

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2005, Daniel DiPaolo # Copyright (c) 2005, Daniel DiPaolo
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2005, Daniel DiPaolo # Copyright (c) 2005, Daniel DiPaolo
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Supybot\n" "Project-Id-Version: Supybot\n"
"POT-Creation-Date: 2011-06-09 18:26+CEST\n" "POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: 2011-10-28 12:55+0100\n" "PO-Revision-Date: 2011-10-28 12:55+0100\n"
"Last-Translator: Florian Besser <fbesser@gmail.com>\n" "Last-Translator: Florian Besser <fbesser@gmail.com>\n"
"Language-Team: German <fbesser@gmail.com>\n" "Language-Team: German <fbesser@gmail.com>\n"
@ -12,77 +12,145 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
"X-Poedit-Language: de\n" "X-Poedit-Language: de\n"
#: config.py:49 #: config.py:50
msgid "" msgid ""
"Determines whether\n" "Determines whether\n"
" the bot should require people trying to use this plugin to be in the\n" " the bot should require people trying to use this plugin to be in the\n"
" channel they wish to anonymously send to." " channel they wish to anonymously send to."
msgstr "Legt fest ob Leute im Kanal sein müssen, an den anonym senden wollen." msgstr "Legt fest ob Leute im Kanal sein müssen, an den anonym senden wollen."
#: config.py:53 #: config.py:54
msgid "" msgid ""
"Determines whether the bot should require\n" "Determines whether the bot should require\n"
" people trying to use this plugin to be registered." " people trying to use this plugin to be registered."
msgstr "Legt fest ob Nutzer registiert sein müssen um dieses Plugin zu benutze." msgstr ""
"Legt fest ob Nutzer registiert sein müssen um dieses Plugin zu benutze."
#: config.py:56 #: config.py:57
msgid "" msgid ""
"Determines what capability (if any) the bot should\n" "Determines what capability (if any) the bot should\n"
" require people trying to use this plugin to have." " require people trying to use this plugin to have."
msgstr "Legt fest welche Fähgikeiten (falls überhaupt) der Bot verlangt von Personen die versuchen dieses Plugin zu benutzen." msgstr ""
"Legt fest welche Fähgikeiten (falls überhaupt) der Bot verlangt von Personen "
"die versuchen dieses Plugin zu benutzen."
#: config.py:59 #: config.py:60
#, fuzzy
msgid "" msgid ""
"Determines whether the bot will require \n" "Determines whether the bot will allow the\n"
" targets of the \"say\" command to be public (i.e., channels). If this is\n" " \"tell\" command to be used. If true, the bot will allow the \"tell\"\n"
" True, the bot will allow people to use the \"say\" command to send private\n" " command to send private messages to other users."
" messages to other users." msgstr ""
msgstr "Legt fest ob der Bot verlangt, dass Ziele des Befehls \"say\" öffentlich sind (z.B. Kanäle). Falls das auf True gesetzt ist, wird ber Bot Nutzern erlauben den Befehl \"say\" zu nutzen um anderen Nutzern private Nachrichten zu senden." "Legt fest ob der Bot verlangt, dass Ziele des Befehls \"say\" öffentlich "
"sind (z.B. Kanäle). Falls das auf True gesetzt ist, wird ber Bot Nutzern "
"erlauben den Befehl \"say\" zu nutzen um anderen Nutzern private Nachrichten "
"zu senden."
#: plugin.py:40 #: plugin.py:45
#, fuzzy
msgid "" msgid ""
"This plugin allows users to act through the bot anonymously. The 'do'\n" "\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" " 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" " 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" " this can be fairly well abused, you might want to set\n"
" supybot.plugins.Anonymous.requireCapability so only users with that\n" " supybot.plugins.Anonymous.requireCapability so only users with that\n"
" capability can use this plugin. For extra security, you can require that\n" " capability can use this plugin. For extra security, you can require "
" the user be *in* the channel they are trying to address anonymously with\n" "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" " supybot.plugins.Anonymous.requirePresenceInChannel, or you can require\n"
" that the user be registered by setting\n" " that the user be registered by setting\n"
" supybot.plugins.Anonymous.requireRegistration.\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 "Das Plugin erlaubt Nutzern durch den Bot anonym zu bleiben. Der 'do' Befehl lässt den Bot eine anonyme Aktion in einem Kanal ausführen und der 'say' Befehl lässt Nutzer durch den Bot sprechen. Da das Ganze natürlich leicht missbraucht werden kann, willst du vielleicht supybot.plugins.Anonymous.requireCapability setzen, sodass nur Nutzer mit dieser Fähigkeit das Plugin benutzen können. Für etwas mehr Sicherheit kannst du mit supybot.plugins.Anonymous.requirePresenceInChannel verlangen, dass der Nutzer in dem Kanal sein muss in dem er anonym senden will oder du kannst verlangen, dass der Nutzer registriert sein muss indem du supybot.plugins.Anonymous.requireRegistration setzt." msgstr ""
"Das Plugin erlaubt Nutzern durch den Bot anonym zu bleiben. Der 'do' Befehl "
"lässt den Bot eine anonyme Aktion in einem Kanal ausführen und der 'say' "
"Befehl lässt Nutzer durch den Bot sprechen. Da das Ganze natürlich leicht "
"missbraucht werden kann, willst du vielleicht supybot.plugins.Anonymous."
"requireCapability setzen, sodass nur Nutzer mit dieser Fähigkeit das Plugin "
"benutzen können. Für etwas mehr Sicherheit kannst du mit supybot.plugins."
"Anonymous.requirePresenceInChannel verlangen, dass der Nutzer in dem Kanal "
"sein muss in dem er anonym senden will oder du kannst verlangen, dass der "
"Nutzer registriert sein muss indem du supybot.plugins.Anonymous."
"requireRegistration setzt."
#: plugin.py:64 #: plugin.py:98
msgid "You must be in %s to %q in there." msgid "You must be in %s to %q in there."
msgstr "Du musst in %s sein um %q dort auszuführen." msgstr "Du musst in %s sein um %q dort auszuführen."
#: plugin.py:68 #: plugin.py:102
msgid "I'm lobotomized in %s." msgid "I'm lobotomized in %s."
msgstr "Ich bin hirnamputiert in %s." msgstr "Ich bin hirnamputiert in %s."
#: plugin.py:71 #: plugin.py:105
msgid "That channel has set its capabilities so as to disallow the use of this plugin."
msgstr "Für den Kanal sind die Fähigkeiten so gesetzt, dass sie das benutzen dieses Plugins nicht erlauben."
#: plugin.py:74
msgid "%q cannot be used to send private messages."
msgstr "%q kann nicht verwendet werden um private Nachrichten zu versenden."
#: plugin.py:80
msgid "" msgid ""
"<channel|nick> <text>\n" "That channel has set its capabilities so as to disallow the use of this "
"plugin."
msgstr ""
"Für den Kanal sind die Fähigkeiten so gesetzt, dass sie das benutzen dieses "
"Plugins nicht erlauben."
#: plugin.py:108
msgid ""
"This command is disabled (supybot.plugins.Anonymous.allowPrivateTarget is "
"False)."
msgstr ""
#: plugin.py:112
#, fuzzy
msgid ""
"<channel> <text>\n"
"\n" "\n"
" Sends <text> to <channel|nick>. Can only send to <nick> if\n" " Sends <text> to <channel>.\n"
" "
msgstr ""
"<Kanal> <Aktion>\n"
"\n"
"Führt die <Aktion> im <Kanal> aus."
#: plugin.py:124
#, fuzzy
msgid ""
"<nick> <text>\n"
"\n"
" Sends <text> to <nick>. Can only be used if\n"
" supybot.plugins.Anonymous.allowPrivateTarget is True.\n" " supybot.plugins.Anonymous.allowPrivateTarget is True.\n"
" " " "
msgstr "" msgstr ""
"<Kanal|Nick> <text>\n" "<Kanal|Nick> <text>\n"
"\n" "\n"
"Sendet <Text> an <Kanal|Nick>. Kann nur an <Nick> senden wenn supybot.plugins.Anonymous.allowPrivateTarget auf True gesetzt ist." "Sendet <Text> an <Kanal|Nick>. Kann nur an <Nick> senden wenn supybot."
"plugins.Anonymous.allowPrivateTarget auf True gesetzt ist."
#: plugin.py:94 #: plugin.py:137
msgid "" msgid ""
"<channel> <action>\n" "<channel> <action>\n"
"\n" "\n"
@ -93,3 +161,42 @@ msgstr ""
"\n" "\n"
"Führt die <Aktion> im <Kanal> aus." "Führt die <Aktion> im <Kanal> aus."
#: 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 ""
#: plugin.py:162
msgid ""
"Unable to react, supybot.protocols.irc.experimentalExtensions is disabled."
msgstr ""
#: plugin.py:167
msgid "Unable to react, the network does not support message-tags."
msgstr ""
#: plugin.py:172
msgid ""
"Unable to react, the network does not allow draft/reply and/or draft/react."
msgstr ""
#: plugin.py:181
msgid "I couldn't find a message from %s in my history of %s messages."
msgstr ""
#: plugin.py:189
msgid "Unable to react, %s's last message does not have a message id."
msgstr ""
#~ msgid "%q cannot be used to send private messages."
#~ msgstr "%q kann nicht verwendet werden um private Nachrichten zu versenden."

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Supybot Anonymous\n" "Project-Id-Version: Supybot Anonymous\n"
"POT-Creation-Date: 2014-12-20 11:59+EET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
@ -15,7 +15,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.6.10\n" "X-Generator: Poedit 1.6.10\n"
#: config.py:49 #: config.py:50
msgid "" msgid ""
"Determines whether\n" "Determines whether\n"
" the bot should require people trying to use this plugin to be in the\n" " the bot should require people trying to use this plugin to be in the\n"
@ -25,7 +25,7 @@ msgstr ""
"botti ihmisten, jotka yrittävät käyttää tätä lisäosaa, olemaan\n" "botti ihmisten, jotka yrittävät käyttää tätä lisäosaa, olemaan\n"
"kanavalla, jonne he tahtovat lähettää viestin tuntemattomasti." "kanavalla, jonne he tahtovat lähettää viestin tuntemattomasti."
#: config.py:53 #: config.py:54
msgid "" msgid ""
"Determines whether the bot should require\n" "Determines whether the bot should require\n"
" people trying to use this plugin to be registered." " people trying to use this plugin to be registered."
@ -33,7 +33,7 @@ msgstr ""
"Määrittää vaatiiko botti\n" "Määrittää vaatiiko botti\n"
"ihmisiä, jotka yrittävät käyttää tätä lisäosaa, olemaan rekisteröityneitä." "ihmisiä, jotka yrittävät käyttää tätä lisäosaa, olemaan rekisteröityneitä."
#: config.py:56 #: config.py:57
msgid "" msgid ""
"Determines what capability (if any) the bot should\n" "Determines what capability (if any) the bot should\n"
" require people trying to use this plugin to have." " require people trying to use this plugin to have."
@ -41,7 +41,7 @@ msgstr ""
"Määrittää minkä valtuuden (jos minkään) botti vaatii\n" "Määrittää minkä valtuuden (jos minkään) botti vaatii\n"
" ihmisiltä, jotka yrittävät käyttää tätä lisäosaa." " ihmisiltä, jotka yrittävät käyttää tätä lisäosaa."
#: config.py:59 #: config.py:60
#, fuzzy #, fuzzy
msgid "" msgid ""
"Determines whether the bot will allow the\n" "Determines whether the bot will allow the\n"
@ -52,9 +52,11 @@ msgstr ""
"sallii \"tell\"-komennon\n" "sallii \"tell\"-komennon\n"
" lähettävän yksityisviestejä toisille käyttäjille." " lähettävän yksityisviestejä toisille käyttäjille."
#: plugin.py:41 #: plugin.py:45
#, fuzzy
msgid "" msgid ""
"This plugin allows users to act through the bot anonymously. The 'do'\n" "\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" " 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" " 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" " this can be fairly well abused, you might want to set\n"
@ -66,6 +68,33 @@ msgid ""
" supybot.plugins.Anonymous.requirePresenceInChannel, or you can require\n" " supybot.plugins.Anonymous.requirePresenceInChannel, or you can require\n"
" that the user be registered by setting\n" " that the user be registered by setting\n"
" supybot.plugins.Anonymous.requireRegistration.\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 "" msgstr ""
"Tämä lisäosa sallii käyttäjien toimia botin kautta tuntemattomasti.\n" "Tämä lisäosa sallii käyttäjien toimia botin kautta tuntemattomasti.\n"
@ -82,21 +111,21 @@ msgstr ""
" että tuo käyttäjä on rekisteröitynyt asetuksella\n" " että tuo käyttäjä on rekisteröitynyt asetuksella\n"
" supybot.plugins.Anonymous.requireRegistration" " supybot.plugins.Anonymous.requireRegistration"
#: plugin.py:65 #: plugin.py:98
msgid "You must be in %s to %q in there." msgid "You must be in %s to %q in there."
msgstr "Sinun täytyy olla kanavalla %s %q sinne." msgstr "Sinun täytyy olla kanavalla %s %q sinne."
#: plugin.py:69 #: plugin.py:102
msgid "I'm lobotomized in %s." msgid "I'm lobotomized in %s."
msgstr "Minut on lobotomoitu kanavalla %s." msgstr "Minut on lobotomoitu kanavalla %s."
#: plugin.py:72 #: plugin.py:105
msgid "" msgid ""
"That channel has set its capabilities so as to disallow the use of this " "That channel has set its capabilities so as to disallow the use of this "
"plugin." "plugin."
msgstr "Tuo kanava on asettanut valtuudet kieltämään tämän Pluginin käytön." msgstr "Tuo kanava on asettanut valtuudet kieltämään tämän Pluginin käytön."
#: plugin.py:75 #: plugin.py:108
msgid "" msgid ""
"This command is disabled (supybot.plugins.Anonymous.allowPrivateTarget is " "This command is disabled (supybot.plugins.Anonymous.allowPrivateTarget is "
"False)." "False)."
@ -104,7 +133,7 @@ msgstr ""
"Tämä komento on poistettu käytöstä (supybot.plugins.Anonymous." "Tämä komento on poistettu käytöstä (supybot.plugins.Anonymous."
"allowPrivateTarget on False)." "allowPrivateTarget on False)."
#: plugin.py:80 #: plugin.py:112
msgid "" msgid ""
"<channel> <text>\n" "<channel> <text>\n"
"\n" "\n"
@ -114,7 +143,7 @@ msgstr ""
"<kanava> <teksti>\n" "<kanava> <teksti>\n"
" Lähettää <tesktin> <kanavalle>." " Lähettää <tesktin> <kanavalle>."
#: plugin.py:92 #: plugin.py:124
msgid "" msgid ""
"<nick> <text>\n" "<nick> <text>\n"
"\n" "\n"
@ -129,7 +158,7 @@ msgstr ""
" ollessa True.\n" " ollessa True.\n"
" " " "
#: plugin.py:106 #: plugin.py:137
msgid "" msgid ""
"<channel> <action>\n" "<channel> <action>\n"
"\n" "\n"
@ -141,6 +170,43 @@ msgstr ""
"Suorittaa <toiminnon> <kanavalla>.\n" "Suorittaa <toiminnon> <kanavalla>.\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 ""
#: plugin.py:162
msgid ""
"Unable to react, supybot.protocols.irc.experimentalExtensions is disabled."
msgstr ""
#: plugin.py:167
msgid "Unable to react, the network does not support message-tags."
msgstr ""
#: plugin.py:172
msgid ""
"Unable to react, the network does not allow draft/reply and/or draft/react."
msgstr ""
#: plugin.py:181
msgid "I couldn't find a message from %s in my history of %s messages."
msgstr ""
#: plugin.py:189
msgid "Unable to react, %s's last message does not have a message id."
msgstr ""
#~ msgid "%q cannot be used to send private messages." #~ msgid "%q cannot be used to send private messages."
#~ msgstr "%q:ta ei voi käyttää yksityisviestien lähettämiseen." #~ msgstr "%q:ta ei voi käyttää yksityisviestien lähettämiseen."

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2011-06-09 18:26+CEST\n" "POT-Creation-Date: 2022-02-06 00:12+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,77 +13,137 @@ msgstr ""
"X-Poedit-Country: France\n" "X-Poedit-Country: France\n"
"X-Poedit-SourceCharset: ASCII\n" "X-Poedit-SourceCharset: ASCII\n"
#: config.py:49 #: config.py:50
msgid "" msgid ""
"Determines whether\n" "Determines whether\n"
" the bot should require people trying to use this plugin to be in the\n" " the bot should require people trying to use this plugin to be in the\n"
" channel they wish to anonymously send to." " channel they wish to anonymously send to."
msgstr "Détermine si le bot requiérera que les gens soient sur le canal pour y envoyer des messages anonymement." msgstr ""
"Détermine si le bot requiérera que les gens soient sur le canal pour y "
"envoyer des messages anonymement."
#: config.py:53 #: config.py:54
msgid "" msgid ""
"Determines whether the bot should require\n" "Determines whether the bot should require\n"
" people trying to use this plugin to be registered." " people trying to use this plugin to be registered."
msgstr "Détermine si le bot requiérera que les personnes utilisant ce plugin soient enregistrées." msgstr ""
"Détermine si le bot requiérera que les personnes utilisant ce plugin soient "
"enregistrées."
#: config.py:56 #: config.py:57
msgid "" msgid ""
"Determines what capability (if any) the bot should\n" "Determines what capability (if any) the bot should\n"
" require people trying to use this plugin to have." " require people trying to use this plugin to have."
msgstr "Détermine quelle capacité (s'il y en a une) le bot requiéra que les gens utilisant ce plugin aient." msgstr ""
"Détermine quelle capacité (s'il y en a une) le bot requiéra que les gens "
"utilisant ce plugin aient."
#: config.py:59 #: config.py:60
#, fuzzy
msgid "" msgid ""
"Determines whether the bot will require \n" "Determines whether the bot will allow the\n"
" targets of the \"say\" command to be public (i.e., channels). If this is\n" " \"tell\" command to be used. If true, the bot will allow the \"tell\"\n"
" True, the bot will allow people to use the \"say\" command to send private\n" " command to send private messages to other users."
" messages to other users." msgstr ""
msgstr "Détermine si le bot requiérera que les cibles de la commande \"say\" soient publiques (c'est à dire des canaux). Si c'est True, le bot autorisera les personnes à utiliser la commande \"say\" pour envoyer des messages à d'autres utilisateurs en privé." "Détermine si le bot requiérera que les cibles de la commande \"say\" soient "
"publiques (c'est à dire des canaux). Si c'est True, le bot autorisera les "
"personnes à utiliser la commande \"say\" pour envoyer des messages à "
"d'autres utilisateurs en privé."
#: plugin.py:40 #: plugin.py:45
msgid "" msgid ""
"This plugin allows users to act through the bot anonymously. The 'do'\n" "\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" " 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" " 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" " this can be fairly well abused, you might want to set\n"
" supybot.plugins.Anonymous.requireCapability so only users with that\n" " supybot.plugins.Anonymous.requireCapability so only users with that\n"
" capability can use this plugin. For extra security, you can require that\n" " capability can use this plugin. For extra security, you can require "
" the user be *in* the channel they are trying to address anonymously with\n" "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" " supybot.plugins.Anonymous.requirePresenceInChannel, or you can require\n"
" that the user be registered by setting\n" " that the user be registered by setting\n"
" supybot.plugins.Anonymous.requireRegistration.\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 "" msgstr ""
#: plugin.py:64 #: plugin.py:98
msgid "You must be in %s to %q in there." msgid "You must be in %s to %q in there."
msgstr "Vous devez être sur %s pour y utiliser %q." msgstr "Vous devez être sur %s pour y utiliser %q."
#: plugin.py:68 #: plugin.py:102
msgid "I'm lobotomized in %s." msgid "I'm lobotomized in %s."
msgstr "Je suis lobotomisé sur %s." msgstr "Je suis lobotomisé sur %s."
#: plugin.py:71 #: plugin.py:105
msgid "That channel has set its capabilities so as to disallow the use of this plugin."
msgstr "Ce canal a définit ses capacités de façon à désactiver l'utilisation de ce plugin."
#: plugin.py:74
msgid "%q cannot be used to send private messages."
msgstr "%q ne peut pas être utilisé pour envoyer des messages privés."
#: plugin.py:80
msgid "" msgid ""
"<channel|nick> <text>\n" "That channel has set its capabilities so as to disallow the use of this "
"plugin."
msgstr ""
"Ce canal a définit ses capacités de façon à désactiver l'utilisation de ce "
"plugin."
#: plugin.py:108
msgid ""
"This command is disabled (supybot.plugins.Anonymous.allowPrivateTarget is "
"False)."
msgstr ""
#: plugin.py:112
#, fuzzy
msgid ""
"<channel> <text>\n"
"\n" "\n"
" Sends <text> to <channel|nick>. Can only send to <nick> if\n" " Sends <text> to <channel>.\n"
" "
msgstr ""
"<canal> <action>\n"
"\n"
"Effectue l'<action> sur le <canal>."
#: plugin.py:124
#, fuzzy
msgid ""
"<nick> <text>\n"
"\n"
" Sends <text> to <nick>. Can only be used if\n"
" supybot.plugins.Anonymous.allowPrivateTarget is True.\n" " supybot.plugins.Anonymous.allowPrivateTarget is True.\n"
" " " "
msgstr "" msgstr ""
"<canal|nick> <text>\n" "<canal|nick> <text>\n"
"\n" "\n"
"Envoie le <texte> au <canal|nick>. Vous ne pouvez envoyer à <nick> que si supybot.plugins.Anonymous.allowPrivateTarget vaut True." "Envoie le <texte> au <canal|nick>. Vous ne pouvez envoyer à <nick> que si "
"supybot.plugins.Anonymous.allowPrivateTarget vaut True."
#: plugin.py:94 #: plugin.py:137
msgid "" msgid ""
"<channel> <action>\n" "<channel> <action>\n"
"\n" "\n"
@ -94,3 +154,42 @@ msgstr ""
"\n" "\n"
"Effectue l'<action> sur le <canal>." "Effectue l'<action> sur le <canal>."
#: 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 ""
#: plugin.py:162
msgid ""
"Unable to react, supybot.protocols.irc.experimentalExtensions is disabled."
msgstr ""
#: plugin.py:167
msgid "Unable to react, the network does not support message-tags."
msgstr ""
#: plugin.py:172
msgid ""
"Unable to react, the network does not allow draft/reply and/or draft/react."
msgstr ""
#: plugin.py:181
msgid "I couldn't find a message from %s in my history of %s messages."
msgstr ""
#: plugin.py:189
msgid "Unable to react, %s's last message does not have a message id."
msgstr ""
#~ msgid "%q cannot be used to send private messages."
#~ msgstr "%q ne peut pas être utilisé pour envoyer des messages privés."

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria Anonymous\n" "Project-Id-Version: Limnoria Anonymous\n"
"POT-Creation-Date: 2011-06-09 18:26+CEST\n" "POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: 2011-07-21 17:32+0100\n" "PO-Revision-Date: 2011-07-21 17:32+0100\n"
"Last-Translator: nyuszika7h <litemininyuszika@gmail.com>\n" "Last-Translator: nyuszika7h <litemininyuszika@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -15,77 +15,148 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
#: config.py:49 #: config.py:50
msgid "" msgid ""
"Determines whether\n" "Determines whether\n"
" the bot should require people trying to use this plugin to be in the\n" " the bot should require people trying to use this plugin to be in the\n"
" channel they wish to anonymously send to." " channel they wish to anonymously send to."
msgstr "Meghatározza, hogy a bot megkövetelje-e, hogy a bővítményt használni kívánó emberek abban a csatornában legyenek, ahová névtelenül szeretnének küldeni." msgstr ""
"Meghatározza, hogy a bot megkövetelje-e, hogy a bővítményt használni kívánó "
"emberek abban a csatornában legyenek, ahová névtelenül szeretnének küldeni."
#: config.py:53 #: config.py:54
msgid "" msgid ""
"Determines whether the bot should require\n" "Determines whether the bot should require\n"
" people trying to use this plugin to be registered." " people trying to use this plugin to be registered."
msgstr "Meghatározza, hogy a bot megkövetelje-e, hogy a bővítményt használni kívánó emberek regisztrálva legyenek." msgstr ""
"Meghatározza, hogy a bot megkövetelje-e, hogy a bővítményt használni kívánó "
"emberek regisztrálva legyenek."
#: config.py:56 #: config.py:57
msgid "" msgid ""
"Determines what capability (if any) the bot should\n" "Determines what capability (if any) the bot should\n"
" require people trying to use this plugin to have." " require people trying to use this plugin to have."
msgstr "Meghatározza, hogy milyen képesség (ha van ilyen) legyen szükséges a bővítmény használatához." msgstr ""
"Meghatározza, hogy milyen képesség (ha van ilyen) legyen szükséges a "
"bővítmény használatához."
#: config.py:59 #: config.py:60
#, fuzzy
msgid "" msgid ""
"Determines whether the bot will require \n" "Determines whether the bot will allow the\n"
" targets of the \"say\" command to be public (i.e., channels). If this is\n" " \"tell\" command to be used. If true, the bot will allow the \"tell\"\n"
" True, the bot will allow people to use the \"say\" command to send private\n" " command to send private messages to other users."
" messages to other users." msgstr ""
msgstr "Meghatározza, hogy a bot megkövetelje-e, hogy a \"say\" parancs célja publikus legyen (pl., csatornák). Ha ez True, a bot megengedi az embereknek, hogy a \"say\" paranccsal privát üzenetet küldjenek másoknak." "Meghatározza, hogy a bot megkövetelje-e, hogy a \"say\" parancs célja "
"publikus legyen (pl., csatornák). Ha ez True, a bot megengedi az embereknek, "
"hogy a \"say\" paranccsal privát üzenetet küldjenek másoknak."
#: plugin.py:40 #: plugin.py:45
#, fuzzy
msgid "" msgid ""
"This plugin allows users to act through the bot anonymously. The 'do'\n" "\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" " 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" " 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" " this can be fairly well abused, you might want to set\n"
" supybot.plugins.Anonymous.requireCapability so only users with that\n" " supybot.plugins.Anonymous.requireCapability so only users with that\n"
" capability can use this plugin. For extra security, you can require that\n" " capability can use this plugin. For extra security, you can require "
" the user be *in* the channel they are trying to address anonymously with\n" "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" " supybot.plugins.Anonymous.requirePresenceInChannel, or you can require\n"
" that the user be registered by setting\n" " that the user be registered by setting\n"
" supybot.plugins.Anonymous.requireRegistration.\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 "Ez a bővítmény megengedi a felhasználóknak, hogy névtelenül cselekedjenek a boton keresztül. A 'do' parancs hatására a bot végrehajt egy névtelen tevékenységet egy megadott csatornában, és a 'say' parancs megengedi másoknak, hogy a boton keresztül beszéljenek. Mivel ezzel elég könnyen vissza lehet élni, érdemes beállítani a supybot.plugins.Anonymous.requireCapability-t, hogy csak az adott képességgel rendelkező felhasználók használhassák ezt a bővítményt. Extra biztonságért a supybot.plugins.Anonymous.requirePresenceInChannel-lel megkövetelheted, hogy a felhasználó abban a csatornában legyen, amelyet névtelenül szeretnének megcímezni, vagy a supybot.plugins.Anonymous.requireRegistration-nel megkövetelheted, hogy a felhasználó regisztálva legyen." msgstr ""
"Ez a bővítmény megengedi a felhasználóknak, hogy névtelenül cselekedjenek a "
"boton keresztül. A 'do' parancs hatására a bot végrehajt egy névtelen "
"tevékenységet egy megadott csatornában, és a 'say' parancs megengedi "
"másoknak, hogy a boton keresztül beszéljenek. Mivel ezzel elég könnyen "
"vissza lehet élni, érdemes beállítani a supybot.plugins.Anonymous."
"requireCapability-t, hogy csak az adott képességgel rendelkező felhasználók "
"használhassák ezt a bővítményt. Extra biztonságért a supybot.plugins."
"Anonymous.requirePresenceInChannel-lel megkövetelheted, hogy a felhasználó "
"abban a csatornában legyen, amelyet névtelenül szeretnének megcímezni, vagy "
"a supybot.plugins.Anonymous.requireRegistration-nel megkövetelheted, hogy a "
"felhasználó regisztálva legyen."
#: plugin.py:64 #: plugin.py:98
msgid "You must be in %s to %q in there." msgid "You must be in %s to %q in there."
msgstr "%s-ban kell lenned, hogy a %q parancsot használd ott." msgstr "%s-ban kell lenned, hogy a %q parancsot használd ott."
#: plugin.py:68 #: plugin.py:102
msgid "I'm lobotomized in %s." msgid "I'm lobotomized in %s."
msgstr "Némítva vagyok %s-ban." msgstr "Némítva vagyok %s-ban."
#: plugin.py:71 #: plugin.py:105
msgid "That channel has set its capabilities so as to disallow the use of this plugin."
msgstr "A megadott csatornában nem használhatod a bővítményt a csatorna képességei miatt."
#: plugin.py:74
msgid "%q cannot be used to send private messages."
msgstr "A %q parancs nem használható privát üzenetek küldésére."
#: plugin.py:80
msgid "" msgid ""
"<channel|nick> <text>\n" "That channel has set its capabilities so as to disallow the use of this "
"plugin."
msgstr ""
"A megadott csatornában nem használhatod a bővítményt a csatorna képességei "
"miatt."
#: plugin.py:108
msgid ""
"This command is disabled (supybot.plugins.Anonymous.allowPrivateTarget is "
"False)."
msgstr ""
#: plugin.py:112
#, fuzzy
msgid ""
"<channel> <text>\n"
"\n" "\n"
" Sends <text> to <channel|nick>. Can only send to <nick> if\n" " Sends <text> to <channel>.\n"
" "
msgstr ""
"<csatorna> <tevékenység>\n"
"\n"
"Végrehajtja <tevékenység>-et <csatorna>-ban."
#: plugin.py:124
#, fuzzy
msgid ""
"<nick> <text>\n"
"\n"
" Sends <text> to <nick>. Can only be used if\n"
" supybot.plugins.Anonymous.allowPrivateTarget is True.\n" " supybot.plugins.Anonymous.allowPrivateTarget is True.\n"
" " " "
msgstr "" msgstr ""
"<csatorna|név> <szöveg>\n" "<csatorna|név> <szöveg>\n"
"\n" "\n"
"Elküldi <szöveg>-et <csatorna|név>-nek. Csak akkor küldhet <név>-nek, ha a supybot.plugins.Anonymous.allowPrivateTarget True." "Elküldi <szöveg>-et <csatorna|név>-nek. Csak akkor küldhet <név>-nek, ha a "
"supybot.plugins.Anonymous.allowPrivateTarget True."
#: plugin.py:94 #: plugin.py:137
msgid "" msgid ""
"<channel> <action>\n" "<channel> <action>\n"
"\n" "\n"
@ -96,3 +167,42 @@ msgstr ""
"\n" "\n"
"Végrehajtja <tevékenység>-et <csatorna>-ban." "Végrehajtja <tevékenység>-et <csatorna>-ban."
#: 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 ""
#: plugin.py:162
msgid ""
"Unable to react, supybot.protocols.irc.experimentalExtensions is disabled."
msgstr ""
#: plugin.py:167
msgid "Unable to react, the network does not support message-tags."
msgstr ""
#: plugin.py:172
msgid ""
"Unable to react, the network does not allow draft/reply and/or draft/react."
msgstr ""
#: plugin.py:181
msgid "I couldn't find a message from %s in my history of %s messages."
msgstr ""
#: plugin.py:189
msgid "Unable to react, %s's last message does not have a message id."
msgstr ""
#~ msgid "%q cannot be used to send private messages."
#~ msgstr "A %q parancs nem használható privát üzenetek küldésére."

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2011-02-26 09:49+CET\n" "POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: 2011-08-10 00:13+0200\n" "PO-Revision-Date: 2011-08-10 00:13+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,8 +10,7 @@ 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"
#: config.py:50
#: config.py:49
msgid "" msgid ""
"Determines whether\n" "Determines whether\n"
" the bot should require people trying to use this plugin to be in the\n" " the bot should require people trying to use this plugin to be in the\n"
@ -20,7 +19,7 @@ msgstr ""
"Determina se il bot richieda che gli utenti siano in canale\n" "Determina se il bot richieda che gli utenti siano in canale\n"
" per inviare messaggi in forma anonima." " per inviare messaggi in forma anonima."
#: config.py:53 #: config.py:54
msgid "" msgid ""
"Determines whether the bot should require\n" "Determines whether the bot should require\n"
" people trying to use this plugin to be registered." " people trying to use this plugin to be registered."
@ -28,7 +27,7 @@ msgstr ""
"Determina se il bot richieda che gli utenti siano registrati\n" "Determina se il bot richieda che gli utenti siano registrati\n"
" per usare il plugin." " per usare il plugin."
#: config.py:56 #: config.py:57
msgid "" msgid ""
"Determines what capability (if any) the bot should\n" "Determines what capability (if any) the bot should\n"
" require people trying to use this plugin to have." " require people trying to use this plugin to have."
@ -36,64 +35,121 @@ msgstr ""
"Determina quali capacità (eventuali) debbano\n" "Determina quali capacità (eventuali) debbano\n"
" avere gli utenti per utilizzare questo plugin." " avere gli utenti per utilizzare questo plugin."
#: config.py:59 #: config.py:60
#, fuzzy
msgid "" msgid ""
"Determines whether the bot will require \n" "Determines whether the bot will allow the\n"
" targets of the \"say\" command to be public (i.e., channels). If this is\n" " \"tell\" command to be used. If true, the bot will allow the \"tell\"\n"
" True, the bot will allow people to use the \"say\" command to send private\n" " command to send private messages to other users."
" messages to other users."
msgstr "" msgstr ""
"Determina se il bot richiederà che le destinazioni del comando \"say\" siano\n" "Determina se il bot richiederà che le destinazioni del comando \"say\" "
"siano\n"
" pubbliche (ovvero i canali). Se impostato a True, il bot permetterà\n" " pubbliche (ovvero i canali). Se impostato a True, il bot permetterà\n"
" di usare il comando \"say\" per inviare messaggi privati ad altri utenti." " di usare il comando \"say\" per inviare messaggi privati ad altri utenti."
#: plugin.py:40 #: plugin.py:45
#, docstring #, fuzzy
msgid "" msgid ""
"This plugin allows users to act through the bot anonymously. The 'do'\n" "\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" " 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" " 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" " this can be fairly well abused, you might want to set\n"
" supybot.plugins.Anonymous.requireCapability so only users with that\n" " supybot.plugins.Anonymous.requireCapability so only users with that\n"
" capability can use this plugin. For extra security, you can require that\n" " capability can use this plugin. For extra security, you can require "
" the user be *in* the channel they are trying to address anonymously with\n" "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" " supybot.plugins.Anonymous.requirePresenceInChannel, or you can require\n"
" that the user be registered by setting\n" " that the user be registered by setting\n"
" supybot.plugins.Anonymous.requireRegistration.\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 "" msgstr ""
"Questo plugin permette agli utenti di agire attraverso il bot in modo anonimo.\n" "Questo plugin permette agli utenti di agire attraverso il bot in modo "
" Il comando \"do\" esegue un'azione anonima in un dato canale, mentre \"say\"\n" "anonimo.\n"
" permette di parlare tramite il bot. Giacché si può facilmente abusarne, è\n" " Il comando \"do\" esegue un'azione anonima in un dato canale, mentre "
" possibile impostare supybot.plugins.Anonymous.requireCapability in modo che\n" "\"say\"\n"
" solo gli utenti con determinate capacità possano usare il plugin. Per una\n" " permette di parlare tramite il bot. Giacché si può facilmente abusarne, "
" maggiore sicurezza è ppossibile richiedere con supybot.plugins.Anonymous.requirePresenceInChannel\n" "è\n"
" che l'utente intenzionato a parlare anonimamente sia in canale; o anche, tramite\n" " possibile impostare supybot.plugins.Anonymous.requireCapability in modo "
" supybot.plugins.Anonymous.requireRegistration, che l'utente sia registrato." "che\n"
" " " solo gli utenti con determinate capacità possano usare il plugin. Per "
"una\n"
" maggiore sicurezza è ppossibile richiedere con supybot.plugins.Anonymous."
"requirePresenceInChannel\n"
" che l'utente intenzionato a parlare anonimamente sia in canale; o anche, "
"tramite\n"
" supybot.plugins.Anonymous.requireRegistration, che l'utente sia "
"registrato. "
#: plugin.py:64 #: plugin.py:98
msgid "You must be in %s to %q in there." msgid "You must be in %s to %q in there."
msgstr "Devi essere in %s per %q." msgstr "Devi essere in %s per %q."
#: plugin.py:68 #: plugin.py:102
msgid "I'm lobotomized in %s." msgid "I'm lobotomized in %s."
msgstr "In %s sono lobotomizzato." msgstr "In %s sono lobotomizzato."
#: plugin.py:71 #: plugin.py:105
msgid "That channel has set its capabilities so as to disallow the use of this plugin."
msgstr "Questo canale ha le capacità impostate in modo da impedire l'utilizzo di questo plugin."
#: plugin.py:74
msgid "%q cannot be used to send private messages."
msgstr "%q non può essere usato per inviare messaggi privati."
#: plugin.py:80
#, docstring
msgid "" msgid ""
"<channel|nick> <text>\n" "That channel has set its capabilities so as to disallow the use of this "
"plugin."
msgstr ""
"Questo canale ha le capacità impostate in modo da impedire l'utilizzo di "
"questo plugin."
#: plugin.py:108
msgid ""
"This command is disabled (supybot.plugins.Anonymous.allowPrivateTarget is "
"False)."
msgstr ""
#: plugin.py:112
#, fuzzy
msgid ""
"<channel> <text>\n"
"\n" "\n"
" Sends <text> to <channel|nick>. Can only send to <nick> if\n" " Sends <text> to <channel>.\n"
" "
msgstr ""
"<canale> <azione>\n"
"\n"
" Esegue <azione> in <canale>.\n"
" "
#: plugin.py:124
#, fuzzy
msgid ""
"<nick> <text>\n"
"\n"
" Sends <text> to <nick>. Can only be used if\n"
" supybot.plugins.Anonymous.allowPrivateTarget is True.\n" " supybot.plugins.Anonymous.allowPrivateTarget is True.\n"
" " " "
msgstr "" msgstr ""
@ -103,8 +159,7 @@ msgstr ""
" supybot.plugins.Anonymous.allowPrivateTarget è impostato a True.\n" " supybot.plugins.Anonymous.allowPrivateTarget è impostato a True.\n"
" " " "
#: plugin.py:94 #: plugin.py:137
#, docstring
msgid "" msgid ""
"<channel> <action>\n" "<channel> <action>\n"
"\n" "\n"
@ -116,3 +171,42 @@ msgstr ""
" Esegue <azione> in <canale>.\n" " Esegue <azione> in <canale>.\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 ""
#: plugin.py:162
msgid ""
"Unable to react, supybot.protocols.irc.experimentalExtensions is disabled."
msgstr ""
#: plugin.py:167
msgid "Unable to react, the network does not support message-tags."
msgstr ""
#: plugin.py:172
msgid ""
"Unable to react, the network does not allow draft/reply and/or draft/react."
msgstr ""
#: plugin.py:181
msgid "I couldn't find a message from %s in my history of %s messages."
msgstr ""
#: plugin.py:189
msgid "Unable to react, %s's last message does not have a message id."
msgstr ""
#~ msgid "%q cannot be used to send private messages."
#~ msgstr "%q non può essere usato per inviare messaggi privati."

View File

@ -5,46 +5,47 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2014-12-20 11:59+EET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
#: config.py:49 #: config.py:50
msgid "" msgid ""
"Determines whether\n" "Determines whether\n"
" the bot should require people trying to use this plugin to be in the\n" " the bot should require people trying to use this plugin to be in the\n"
" channel they wish to anonymously send to." " channel they wish to anonymously send to."
msgstr "" msgstr ""
#: config.py:53 #: config.py:54
msgid "" msgid ""
"Determines whether the bot should require\n" "Determines whether the bot should require\n"
" people trying to use this plugin to be registered." " people trying to use this plugin to be registered."
msgstr "" msgstr ""
#: config.py:56 #: config.py:57
msgid "" msgid ""
"Determines what capability (if any) the bot should\n" "Determines what capability (if any) the bot should\n"
" require people trying to use this plugin to have." " require people trying to use this plugin to have."
msgstr "" msgstr ""
#: config.py:59 #: config.py:60
msgid "" msgid ""
"Determines whether the bot will allow the\n" "Determines whether the bot will allow the\n"
" \"tell\" command to be used. If true, the bot will allow the \"tell\"\n" " \"tell\" command to be used. If true, the bot will allow the \"tell\"\n"
" command to send private messages to other users." " command to send private messages to other users."
msgstr "" msgstr ""
#: plugin.py:41 #: plugin.py:45
#, docstring #, docstring
msgid "" msgid ""
"This plugin allows users to act through the bot anonymously. The 'do'\n" "\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" " 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" " 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" " this can be fairly well abused, you might want to set\n"
@ -54,26 +55,51 @@ msgid ""
" supybot.plugins.Anonymous.requirePresenceInChannel, or you can require\n" " supybot.plugins.Anonymous.requirePresenceInChannel, or you can require\n"
" that the user be registered by setting\n" " that the user be registered by setting\n"
" supybot.plugins.Anonymous.requireRegistration.\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 "" msgstr ""
#: plugin.py:65 #: plugin.py:98
msgid "You must be in %s to %q in there." msgid "You must be in %s to %q in there."
msgstr "" msgstr ""
#: plugin.py:69 #: plugin.py:102
msgid "I'm lobotomized in %s." msgid "I'm lobotomized in %s."
msgstr "" msgstr ""
#: plugin.py:72 #: plugin.py:105
msgid "That channel has set its capabilities so as to disallow the use of this plugin." msgid "That channel has set its capabilities so as to disallow the use of this plugin."
msgstr "" msgstr ""
#: plugin.py:75 #: plugin.py:108
msgid "This command is disabled (supybot.plugins.Anonymous.allowPrivateTarget is False)." msgid "This command is disabled (supybot.plugins.Anonymous.allowPrivateTarget is False)."
msgstr "" msgstr ""
#: plugin.py:80 #: plugin.py:112
#, docstring #, docstring
msgid "" msgid ""
"<channel> <text>\n" "<channel> <text>\n"
@ -82,7 +108,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:92 #: plugin.py:124
#, docstring #, docstring
msgid "" msgid ""
"<nick> <text>\n" "<nick> <text>\n"
@ -92,7 +118,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:106 #: plugin.py:137
#, docstring #, docstring
msgid "" msgid ""
"<channel> <action>\n" "<channel> <action>\n"
@ -101,3 +127,39 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:148
#, docstring
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 ""
#: plugin.py:162
msgid "Unable to react, supybot.protocols.irc.experimentalExtensions is disabled."
msgstr ""
#: plugin.py:167
msgid "Unable to react, the network does not support message-tags."
msgstr ""
#: plugin.py:172
msgid "Unable to react, the network does not allow draft/reply and/or draft/react."
msgstr ""
#: plugin.py:181
msgid "I couldn't find a message from %s in my history of %s messages."
msgstr ""
#: plugin.py:189
msgid "Unable to react, %s's last message does not have a message id."
msgstr ""

View File

@ -1,7 +1,7 @@
### ###
# Copyright (c) 2005, Daniel DiPaolo # Copyright (c) 2005, Daniel DiPaolo
# Copyright (c) 2014, James McCoy # Copyright (c) 2014, James McCoy
# Copyright (c) 2021, Valentin Lorentz # Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,7 +1,7 @@
### ###
# Copyright (c) 2005, Daniel DiPaolo # Copyright (c) 2005, Daniel DiPaolo
# Copyright (c) 2014, James McCoy # Copyright (c) 2014, James McCoy
# Copyright (c) 2021, Valentin Lorentz # Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -39,7 +39,7 @@ class AnonymousTestCase(ChannelPluginTestCase):
with conf.supybot.plugins.Anonymous.requireRegistration.context(False): with conf.supybot.plugins.Anonymous.requireRegistration.context(False):
m = self.assertNotError('anonymous say %s foo!' % self.channel) m = self.assertNotError('anonymous say %s foo!' % self.channel)
self.assertTrue(m.args[1] == 'foo!') self.assertEqual(m.args[1], 'foo!')
def testTell(self): def testTell(self):
self.assertError('anonymous tell %s I love you!' % self.nick) self.assertError('anonymous tell %s I love you!' % self.nick)
@ -48,7 +48,7 @@ class AnonymousTestCase(ChannelPluginTestCase):
self.assertError('anonymous tell %s foo!' % self.channel) self.assertError('anonymous tell %s foo!' % self.channel)
with conf.supybot.plugins.Anonymous.allowPrivateTarget.context(True): with conf.supybot.plugins.Anonymous.allowPrivateTarget.context(True):
m = self.assertNotError('anonymous tell %s foo!' % self.nick) m = self.assertNotError('anonymous tell %s foo!' % self.nick)
self.assertTrue(m.args[1] == 'foo!') self.assertEqual(m.args[1], 'foo!')
def testAction(self): def testAction(self):
m = self.assertError('anonymous do %s loves you!' % self.channel) m = self.assertError('anonymous do %s loves you!' % self.channel)

View File

@ -5,12 +5,14 @@ Documentation for the AutoMode plugin for Supybot
Purpose Purpose
------- -------
Automatically ops, voices, or halfops, or bans people when they join a channel, Automatically ops, voices, or halfops, or bans people when they join a channel,
according to their capabilities. If you want your bot automatically op users according to their capabilities. If you want your bot automatically op users
when they join your channel, this is the plugin to load. when they join your channel, this is the plugin to load.
Usage Usage
----- -----
This plugin, when configured, allows the bot to automatically set modes This plugin, when configured, allows the bot to automatically set modes
on users when they join. on users when they join.
@ -35,7 +37,7 @@ Configuration
supybot.plugins.AutoMode.alternativeCapabilities supybot.plugins.AutoMode.alternativeCapabilities
This config variable defaults to "True", is network-specific, and is channel-specific. This config variable defaults to "True", is network-specific, and is channel-specific.
Determines whether the bot will check for 'alternative capabilities' (ie. autoop, autohalfop, autovoice) in addition to/instead of classic ones. Determines whether the bot will check for 'alternative capabilities' (ie. autoop, autohalfop, autovoice) in addition to/instead of classic ones.
@ -43,7 +45,7 @@ supybot.plugins.AutoMode.alternativeCapabilities
supybot.plugins.AutoMode.ban supybot.plugins.AutoMode.ban
This config variable defaults to "True", is network-specific, and is channel-specific. This config variable defaults to "True", is network-specific, and is channel-specific.
Determines whether the bot will automatically ban people who join the channel and are on the banlist. Determines whether the bot will automatically ban people who join the channel and are on the banlist.
@ -51,7 +53,7 @@ supybot.plugins.AutoMode.ban
supybot.plugins.AutoMode.ban.period supybot.plugins.AutoMode.ban.period
This config variable defaults to "86400", is network-specific, and is channel-specific. This config variable defaults to "86400", is network-specific, and is channel-specific.
Determines how many seconds the bot will automatically ban a person when banning. Determines how many seconds the bot will automatically ban a person when banning.
@ -59,7 +61,7 @@ supybot.plugins.AutoMode.ban
supybot.plugins.AutoMode.delay supybot.plugins.AutoMode.delay
This config variable defaults to "0", is network-specific, and is channel-specific. This config variable defaults to "0", is network-specific, and is channel-specific.
Determines how many seconds the bot will wait before applying a mode. Has no effect on bans. Determines how many seconds the bot will wait before applying a mode. Has no effect on bans.
@ -67,7 +69,7 @@ supybot.plugins.AutoMode.delay
supybot.plugins.AutoMode.enable supybot.plugins.AutoMode.enable
This config variable defaults to "True", is network-specific, and is channel-specific. This config variable defaults to "True", is network-specific, and is channel-specific.
Determines whether this plugin is enabled. Determines whether this plugin is enabled.
@ -75,7 +77,7 @@ supybot.plugins.AutoMode.enable
supybot.plugins.AutoMode.extra supybot.plugins.AutoMode.extra
This config variable defaults to " ", is network-specific, and is channel-specific. This config variable defaults to " ", is network-specific, and is channel-specific.
Extra modes that will be applied to a user. Example syntax: user1+o-v user2+v user3-v Extra modes that will be applied to a user. Example syntax: user1+o-v user2+v user3-v
@ -83,7 +85,7 @@ supybot.plugins.AutoMode.extra
supybot.plugins.AutoMode.fallthrough supybot.plugins.AutoMode.fallthrough
This config variable defaults to "True", is network-specific, and is channel-specific. This config variable defaults to "True", is network-specific, and is channel-specific.
Determines whether the bot will "fall through" to halfop/voicing when auto-opping is turned off but auto-halfopping/voicing are turned on. Determines whether the bot will "fall through" to halfop/voicing when auto-opping is turned off but auto-halfopping/voicing are turned on.
@ -91,7 +93,7 @@ supybot.plugins.AutoMode.fallthrough
supybot.plugins.AutoMode.halfop supybot.plugins.AutoMode.halfop
This config variable defaults to "False", is network-specific, and is channel-specific. This config variable defaults to "False", is network-specific, and is channel-specific.
Determines whether the bot will automatically halfop people with the <channel>,halfop capability when they join the channel. Determines whether the bot will automatically halfop people with the <channel>,halfop capability when they join the channel.
@ -99,7 +101,7 @@ supybot.plugins.AutoMode.halfop
supybot.plugins.AutoMode.op supybot.plugins.AutoMode.op
This config variable defaults to "False", is network-specific, and is channel-specific. This config variable defaults to "False", is network-specific, and is channel-specific.
Determines whether the bot will automatically op people with the <channel>,op capability when they join the channel. Determines whether the bot will automatically op people with the <channel>,op capability when they join the channel.
@ -107,7 +109,7 @@ supybot.plugins.AutoMode.op
supybot.plugins.AutoMode.owner supybot.plugins.AutoMode.owner
This config variable defaults to "False", is not network-specific, and is not channel-specific. This config variable defaults to "False", is not network-specific, and is not channel-specific.
Determines whether this plugin will automode owners even if they don't have op/halfop/voice/whatever capability. Determines whether this plugin will automode owners even if they don't have op/halfop/voice/whatever capability.
@ -115,7 +117,7 @@ supybot.plugins.AutoMode.owner
supybot.plugins.AutoMode.public supybot.plugins.AutoMode.public
This config variable defaults to "True", is not network-specific, and is not channel-specific. This config variable defaults to "True", is not network-specific, and is not channel-specific.
Determines whether this plugin is publicly visible. Determines whether this plugin is publicly visible.
@ -123,7 +125,7 @@ supybot.plugins.AutoMode.public
supybot.plugins.AutoMode.voice supybot.plugins.AutoMode.voice
This config variable defaults to "False", is network-specific, and is channel-specific. This config variable defaults to "False", is network-specific, and is channel-specific.
Determines whether the bot will automatically voice people with the <channel>,voice capability when they join the channel. Determines whether the bot will automatically voice people with the <channel>,voice capability when they join the channel.

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2005, Jeremiah Fincher # Copyright (c) 2005, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2005, Jeremiah Fincher # Copyright (c) 2005, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Supybot\n" "Project-Id-Version: Supybot\n"
"POT-Creation-Date: 2012-04-19 21:37+CEST\n" "POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: 2012-04-27 15:38+0200\n" "PO-Revision-Date: 2012-04-27 15:38+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"
@ -13,63 +13,116 @@ msgstr ""
"X-Poedit-Language: German\n" "X-Poedit-Language: German\n"
"X-Poedit-Country: GERMANY\n" "X-Poedit-Country: GERMANY\n"
#: config.py:46 #: config.py:47
msgid "" msgid ""
"Determines whether this plugin is enabled.\n" "Determines whether this plugin is enabled.\n"
" " " "
msgstr "Legt fest ob das Plugin aktiv ist." msgstr "Legt fest ob das Plugin aktiv ist."
#: config.py:49 #: config.py:50
msgid "" msgid ""
"Determines whether this plugin will automode\n" "Determines whether this plugin will automode\n"
" owners even if they don't have op/halfop/voice/whatever capability." " owners even if they don't have op/halfop/voice/whatever capability."
msgstr "Legt fest ob das Plugin Besitzern automatisch den Modus zuweist, obwohl sie nicht die op/halfop/voice/wasauchimmer Fähigkeit besitzen." msgstr ""
"Legt fest ob das Plugin Besitzern automatisch den Modus zuweist, obwohl sie "
"nicht die op/halfop/voice/wasauchimmer Fähigkeit besitzen."
#: config.py:52 #: config.py:53
msgid ""
"Determines whether the bot will\n"
" check for 'alternative capabilities' (ie. autoop, autohalfop,\n"
" autovoice) in addition to/instead of classic ones."
msgstr ""
#: config.py:57
#, fuzzy #, fuzzy
msgid "" msgid ""
"Determines whether the bot will \"fall\n" "Determines whether the bot will \"fall\n"
" through\" to halfop/voicing when auto-opping is turned off but\n" " through\" to halfop/voicing when auto-opping is turned off but\n"
" auto-halfopping/voicing are turned on." " auto-halfopping/voicing are turned on."
msgstr "Legt fest ob der Bot \"zurückfällt\" auf Halboperator/Sprechrechte wenn automatischer Operator abgeschaltet ist, aber automatische Halboperator/Sprecherechte angeschaltet sind." msgstr ""
"Legt fest ob der Bot \"zurückfällt\" auf Halboperator/Sprechrechte wenn "
"automatischer Operator abgeschaltet ist, aber automatische Halboperator/"
"Sprecherechte angeschaltet sind."
#: config.py:56 #: config.py:61
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" op people with the <channel>,op capability when they join the channel.\n" " op people with the <channel>,op capability when they join the channel.\n"
" " " "
msgstr "Legt fest ob der Bot Personen, mit der <Kanal>,op Fähigkeit, automatisch Operatorrechte zuweisen soll, wenn sie den Kanal betreten." msgstr ""
"Legt fest ob der Bot Personen, mit der <Kanal>,op Fähigkeit, automatisch "
"Operatorrechte zuweisen soll, wenn sie den Kanal betreten."
#: config.py:60 #: config.py:65
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" halfop people with the <channel>,halfop capability when they join the\n" " halfop people with the <channel>,halfop capability when they join the\n"
" channel." " channel."
msgstr "Legt fest ob der Bot Personen, mit der <Kanal>,halfop Fähigkeit, automatisch Halboperatorrechte zuweisen soll, wenn sie den Kanal betreten." msgstr ""
"Legt fest ob der Bot Personen, mit der <Kanal>,halfop Fähigkeit, automatisch "
"Halboperatorrechte zuweisen soll, wenn sie den Kanal betreten."
#: config.py:64 #: config.py:69
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" voice people with the <channel>,voice capability when they join the\n" " voice people with the <channel>,voice capability when they join the\n"
" channel." " channel."
msgstr "Legt fest ob der Bot Personen, mit der <Kanal>,voice Fähigkeit, automatisch Sprechrechte zuweisen soll, wenn sie den Kanal betreten." msgstr ""
"Legt fest ob der Bot Personen, mit der <Kanal>,voice Fähigkeit, automatisch "
"Sprechrechte zuweisen soll, wenn sie den Kanal betreten."
#: config.py:68 #: config.py:73
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" ban people who join the channel and are on the banlist." " ban people who join the channel and are on the banlist."
msgstr "Legt fest ob der Bot automatisch Personen bannen soll die auf der Banliste stehen." msgstr ""
"Legt fest ob der Bot automatisch Personen bannen soll die auf der Banliste "
"stehen."
#: config.py:71 #: config.py:76
msgid "" msgid ""
"Determines how many seconds the bot\n" "Determines how many seconds the bot\n"
" will automatically ban a person when banning." " will automatically ban a person when banning."
msgstr "Legt fest wieviele Sekunden der Bot Personen automatisch bannt." msgstr "Legt fest wieviele Sekunden der Bot Personen automatisch bannt."
#: config.py:75 #: config.py:80
#, fuzzy #, fuzzy
msgid "" msgid ""
"Determines how many seconds the bot will wait\n" "Determines how many seconds the bot will wait\n"
" before applying a mode. Has no effect on bans." " before applying a mode. Has no effect on bans."
msgstr "Legt fest wieviele Sekunden der Bot Personen automatisch bannt." msgstr "Legt fest wieviele Sekunden der Bot Personen automatisch bannt."
#: config.py:84
msgid ""
"Extra modes that will be\n"
" applied to a user. Example syntax: user1+o-v user2+v user3-v"
msgstr ""
#: plugin.py:49
msgid ""
"\n"
" This plugin, when configured, allows the bot to automatically set modes\n"
" on users when they join.\n"
"\n"
" * if ``plugins.automode.op`` is set to ``True``, users with the\n"
" ``#channel,op`` capability are opped when they join.\n"
" * if ``plugins.automode.halfop`` is set to ``True``, users with the\n"
" ``#channel,halfop`` are halfopped when they join.\n"
" * if ``plugins.automode.voice`` is set to ``True``, users with the\n"
" ``#channel,voice`` are voiced when they join.\n"
"\n"
" This plugin also kbans people on ``@channel ban list``\n"
" (``config plugins.automode.ban``) when they join and if moding users "
"with\n"
" lower capability is enabled, that is also applied to users with higher\n"
" capability (``config plugins.automode.fallthrough``).\n"
"\n"
" "
msgstr ""
#: plugin.py:97
msgid ""
"Determines whether or not a mode has already\n"
" been applied."
msgstr ""

View File

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Supybot AutoMode\n" "Project-Id-Version: Supybot AutoMode\n"
"POT-Creation-Date: 2014-12-20 11:29+EET\n" "POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: 2014-12-20 11:38+0200\n" "PO-Revision-Date: 2014-12-20 11:38+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"
@ -16,13 +16,13 @@ msgstr ""
"Plural-Forms: \n" "Plural-Forms: \n"
"X-Generator: Poedit 1.6.10\n" "X-Generator: Poedit 1.6.10\n"
#: config.py:46 #: config.py:47
msgid "" msgid ""
"Determines whether this plugin is enabled.\n" "Determines whether this plugin is enabled.\n"
" " " "
msgstr "Määrittää onko tämä lisäosa käytössä." msgstr "Määrittää onko tämä lisäosa käytössä."
#: config.py:49 #: config.py:50
msgid "" msgid ""
"Determines whether this plugin will automode\n" "Determines whether this plugin will automode\n"
" owners even if they don't have op/halfop/voice/whatever capability." " owners even if they don't have op/halfop/voice/whatever capability."
@ -31,7 +31,7 @@ msgstr ""
"olisi\n" "olisi\n"
" op/halfop/voice/ihansama valtuutta." " op/halfop/voice/ihansama valtuutta."
#: config.py:52 #: config.py:53
msgid "" msgid ""
"Determines whether the bot will\n" "Determines whether the bot will\n"
" check for 'alternative capabilities' (ie. autoop, autohalfop,\n" " check for 'alternative capabilities' (ie. autoop, autohalfop,\n"
@ -41,7 +41,7 @@ msgstr ""
"autoop,\n" "autoop,\n"
" autohalfop, autovoice) klassisten lisäksi/sijaan." " autohalfop, autovoice) klassisten lisäksi/sijaan."
#: config.py:56 #: config.py:57
msgid "" msgid ""
"Determines whether the bot will \"fall\n" "Determines whether the bot will \"fall\n"
" through\" to halfop/voicing when auto-opping is turned off but\n" " through\" to halfop/voicing when auto-opping is turned off but\n"
@ -52,7 +52,7 @@ msgstr ""
" oprtaattori aseman antaminen on poistettu käytöstä, mutta automaattinen\n" " oprtaattori aseman antaminen on poistettu käytöstä, mutta automaattinen\n"
" puolioperaattori aseman/äänen antaminen on käytössä." " puolioperaattori aseman/äänen antaminen on käytössä."
#: config.py:60 #: config.py:61
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" op people with the <channel>,op capability when they join the channel.\n" " op people with the <channel>,op capability when they join the channel.\n"
@ -62,7 +62,7 @@ msgstr ""
" ihmiset, joilla on #<kanava>,op valtuus automaattisesti, kun he liittyvät " " ihmiset, joilla on #<kanava>,op valtuus automaattisesti, kun he liittyvät "
"kanavalle." "kanavalle."
#: config.py:64 #: config.py:65
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" halfop people with the <channel>,halfop capability when they join the\n" " halfop people with the <channel>,halfop capability when they join the\n"
@ -71,7 +71,7 @@ msgstr ""
"Määrittää antaako botti puolioperaattorin aseman automaattisesti, kun " "Määrittää antaako botti puolioperaattorin aseman automaattisesti, kun "
"ihmiset, joilla on #<kanava>,halfop valtuus liittyvät kanavalle." "ihmiset, joilla on #<kanava>,halfop valtuus liittyvät kanavalle."
#: config.py:68 #: config.py:69
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" voice people with the <channel>,voice capability when they join the\n" " voice people with the <channel>,voice capability when they join the\n"
@ -81,7 +81,7 @@ msgstr ""
"voice\n" "voice\n"
" valtuus heidän liittyessään kanavalle." " valtuus heidän liittyessään kanavalle."
#: config.py:72 #: config.py:73
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" ban people who join the channel and are on the banlist." " ban people who join the channel and are on the banlist."
@ -89,7 +89,7 @@ msgstr ""
"Määrittää antaako botti porttikiellon ihmisille,\n" "Määrittää antaako botti porttikiellon ihmisille,\n"
" jotka liittyvät kanavalle ja ovat porttikieltolistalla." " jotka liittyvät kanavalle ja ovat porttikieltolistalla."
#: config.py:75 #: config.py:76
msgid "" msgid ""
"Determines how many seconds the bot\n" "Determines how many seconds the bot\n"
" will automatically ban a person when banning." " will automatically ban a person when banning."
@ -98,7 +98,7 @@ msgstr ""
"antaessaan\n" "antaessaan\n"
" porttikieltoa automaattisesti." " porttikieltoa automaattisesti."
#: config.py:79 #: config.py:80
msgid "" msgid ""
"Determines how many seconds the bot will wait\n" "Determines how many seconds the bot will wait\n"
" before applying a mode. Has no effect on bans." " before applying a mode. Has no effect on bans."
@ -107,7 +107,7 @@ msgstr ""
"Tällä ei ole\n" "Tällä ei ole\n"
" vaikutusta porttikieltoihin." " vaikutusta porttikieltoihin."
#: config.py:83 #: config.py:84
msgid "" msgid ""
"Extra modes that will be\n" "Extra modes that will be\n"
" applied to a user. Example syntax: user1+o-v user2+v user3-v" " applied to a user. Example syntax: user1+o-v user2+v user3-v"
@ -115,17 +115,38 @@ msgstr ""
"Ylimääräiset tilat, jotka asetetaan käyttäjään.\n" "Ylimääräiset tilat, jotka asetetaan käyttäjään.\n"
" Esimerkki syntaksi: käyttäjä1+o-v käyttäjä2+v käyttäjä3-v" " Esimerkki syntaksi: käyttäjä1+o-v käyttäjä2+v käyttäjä3-v"
#: plugin.py:48 #: plugin.py:49
#, fuzzy
msgid "" msgid ""
"This plugin, when configured, allows the bot to automatically set modes\n" "\n"
" on users when they join." " This plugin, when configured, allows the bot to automatically set modes\n"
" on users when they join.\n"
"\n"
" * if ``plugins.automode.op`` is set to ``True``, users with the\n"
" ``#channel,op`` capability are opped when they join.\n"
" * if ``plugins.automode.halfop`` is set to ``True``, users with the\n"
" ``#channel,halfop`` are halfopped when they join.\n"
" * if ``plugins.automode.voice`` is set to ``True``, users with the\n"
" ``#channel,voice`` are voiced when they join.\n"
"\n"
" This plugin also kbans people on ``@channel ban list``\n"
" (``config plugins.automode.ban``) when they join and if moding users "
"with\n"
" lower capability is enabled, that is also applied to users with higher\n"
" capability (``config plugins.automode.fallthrough``).\n"
"\n"
" "
msgstr "" msgstr ""
"Määritettynä tämä plugin voi asettaa tiloja kanavalle liittyjiin "
"automaattisesti."
#: plugin.py:80 #: plugin.py:97
msgid "" msgid ""
"Determines whether or not a mode has already\n" "Determines whether or not a mode has already\n"
" been applied." " been applied."
msgstr "Määrittää asettaako botti tilan vai eikö, jos tila se on jo asetettu." msgstr "Määrittää asettaako botti tilan vai eikö, jos tila se on jo asetettu."
#, fuzzy
#~ msgid ""
#~ "This plugin, when configured, allows the bot to automatically set modes\n"
#~ " on users when they join."
#~ msgstr ""
#~ "Määritettynä tämä plugin voi asettaa tiloja kanavalle liittyjiin "
#~ "automaattisesti."

View File

@ -2,7 +2,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2014-01-21 19:30+CET\n" "POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: 2014-01-21 19:33+0100\n" "PO-Revision-Date: 2014-01-21 19:33+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: French <kde-i18n-doc@kde.org>\n" "Language-Team: French <kde-i18n-doc@kde.org>\n"
@ -14,13 +14,13 @@ msgstr ""
"X-Generator: Poedit 1.5.4\n" "X-Generator: Poedit 1.5.4\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: config.py:46 #: config.py:47
msgid "" msgid ""
"Determines whether this plugin is enabled.\n" "Determines whether this plugin is enabled.\n"
" " " "
msgstr "Détermine si ce plugin est activé." msgstr "Détermine si ce plugin est activé."
#: config.py:49 #: config.py:50
msgid "" msgid ""
"Determines whether this plugin will automode\n" "Determines whether this plugin will automode\n"
" owners even if they don't have op/halfop/voice/whatever capability." " owners even if they don't have op/halfop/voice/whatever capability."
@ -28,7 +28,7 @@ msgstr ""
"Détermine si ce plugin mettra des modes automatiques sur les owners, même si " "Détermine si ce plugin mettra des modes automatiques sur les owners, même si "
"ils n'ont pas la capacité op/halfop/voice/..." "ils n'ont pas la capacité op/halfop/voice/..."
#: config.py:52 #: config.py:53
msgid "" msgid ""
"Determines whether the bot will\n" "Determines whether the bot will\n"
" check for 'alternative capabilities' (ie. autoop, autohalfop,\n" " check for 'alternative capabilities' (ie. autoop, autohalfop,\n"
@ -37,7 +37,7 @@ msgstr ""
"Détermine si le bot vérifiera les « capacités alternatives » (ie. autoop, " "Détermine si le bot vérifiera les « capacités alternatives » (ie. autoop, "
"autohalfop, autovoice) en plus/à la place des capacités classiques." "autohalfop, autovoice) en plus/à la place des capacités classiques."
#: config.py:56 #: config.py:57
msgid "" msgid ""
"Determines whether the bot will \"fall\n" "Determines whether the bot will \"fall\n"
" through\" to halfop/voicing when auto-opping is turned off but\n" " through\" to halfop/voicing when auto-opping is turned off but\n"
@ -46,7 +46,7 @@ msgstr ""
"Détermine si le bot ne halfopera/voicera pas lorsque l'auto-op est " "Détermine si le bot ne halfopera/voicera pas lorsque l'auto-op est "
"désactivé, même si l'auto-halfopvoice est activé." "désactivé, même si l'auto-halfopvoice est activé."
#: config.py:60 #: config.py:61
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" op people with the <channel>,op capability when they join the channel.\n" " op people with the <channel>,op capability when they join the channel.\n"
@ -55,7 +55,7 @@ msgstr ""
"Détermine si le bot opera automatiquement les gens qui ont la capacité " "Détermine si le bot opera automatiquement les gens qui ont la capacité "
"<canal>,op lorsqu'ils rejoignent le canal." "<canal>,op lorsqu'ils rejoignent le canal."
#: config.py:64 #: config.py:65
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" halfop people with the <channel>,halfop capability when they join the\n" " halfop people with the <channel>,halfop capability when they join the\n"
@ -64,7 +64,7 @@ msgstr ""
"Détermine si le bot halfopera les gens qui ont la capacité <canal>,halfop " "Détermine si le bot halfopera les gens qui ont la capacité <canal>,halfop "
"lorsqu'ils rejoignent le canal." "lorsqu'ils rejoignent le canal."
#: config.py:68 #: config.py:69
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" voice people with the <channel>,voice capability when they join the\n" " voice people with the <channel>,voice capability when they join the\n"
@ -73,7 +73,7 @@ msgstr ""
"Détermine si le bot voicera automatiquement les gens avec la capacité " "Détermine si le bot voicera automatiquement les gens avec la capacité "
"<canal>,voice lorsqu'ils rejoingent le canal." "<canal>,voice lorsqu'ils rejoingent le canal."
#: config.py:72 #: config.py:73
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" ban people who join the channel and are on the banlist." " ban people who join the channel and are on the banlist."
@ -81,7 +81,7 @@ msgstr ""
"Détermine si le bot bannira automatiquement les personnes qui rejoignent le " "Détermine si le bot bannira automatiquement les personnes qui rejoignent le "
"canal et qui sont sur la liste de bannissement." "canal et qui sont sur la liste de bannissement."
#: config.py:75 #: config.py:76
msgid "" msgid ""
"Determines how many seconds the bot\n" "Determines how many seconds the bot\n"
" will automatically ban a person when banning." " will automatically ban a person when banning."
@ -89,7 +89,7 @@ msgstr ""
"Détermine combien de secondes durera le bannissement que le bot posera sur " "Détermine combien de secondes durera le bannissement que le bot posera sur "
"une personne." "une personne."
#: config.py:79 #: config.py:80
msgid "" msgid ""
"Determines how many seconds the bot will wait\n" "Determines how many seconds the bot will wait\n"
" before applying a mode. Has no effect on bans." " before applying a mode. Has no effect on bans."
@ -97,7 +97,7 @@ msgstr ""
"Détermine combien de secondes le bot attendra avant d'appliquer un mode. " "Détermine combien de secondes le bot attendra avant d'appliquer un mode. "
"Cela n'a aucun effet sur les bannissements." "Cela n'a aucun effet sur les bannissements."
#: config.py:83 #: config.py:84
msgid "" msgid ""
"Extra modes that will be\n" "Extra modes that will be\n"
" applied to a user. Example syntax: user1+o-v user2+v user3-v" " applied to a user. Example syntax: user1+o-v user2+v user3-v"
@ -105,7 +105,29 @@ msgstr ""
"Des modes supplémentaires à appliquer à un utilisateur. Par exemple : " "Des modes supplémentaires à appliquer à un utilisateur. Par exemple : "
"user1+o-v user2+v user3-v" "user1+o-v user2+v user3-v"
#: plugin.py:78 #: plugin.py:49
msgid ""
"\n"
" This plugin, when configured, allows the bot to automatically set modes\n"
" on users when they join.\n"
"\n"
" * if ``plugins.automode.op`` is set to ``True``, users with the\n"
" ``#channel,op`` capability are opped when they join.\n"
" * if ``plugins.automode.halfop`` is set to ``True``, users with the\n"
" ``#channel,halfop`` are halfopped when they join.\n"
" * if ``plugins.automode.voice`` is set to ``True``, users with the\n"
" ``#channel,voice`` are voiced when they join.\n"
"\n"
" This plugin also kbans people on ``@channel ban list``\n"
" (``config plugins.automode.ban``) when they join and if moding users "
"with\n"
" lower capability is enabled, that is also applied to users with higher\n"
" capability (``config plugins.automode.fallthrough``).\n"
"\n"
" "
msgstr ""
#: plugin.py:97
msgid "" msgid ""
"Determines whether or not a mode has already\n" "Determines whether or not a mode has already\n"
" been applied." " been applied."

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2011-02-26 09:49+CET\n" "POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: 2012-04-23 19:29+0200\n" "PO-Revision-Date: 2012-04-23 19: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"
@ -10,8 +10,7 @@ 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"
#: config.py:47
#: config.py:46
msgid "" msgid ""
"Determines whether this plugin is enabled.\n" "Determines whether this plugin is enabled.\n"
" " " "
@ -19,7 +18,7 @@ msgstr ""
"Determina se il plugin è abilitato.\n" "Determina se il plugin è abilitato.\n"
" " " "
#: config.py:49 #: config.py:50
msgid "" msgid ""
"Determines whether this plugin will automode\n" "Determines whether this plugin will automode\n"
" owners even if they don't have op/halfop/voice/whatever capability." " owners even if they don't have op/halfop/voice/whatever capability."
@ -27,7 +26,14 @@ msgstr ""
"Determina se il plugin darà automaticamente il mode ai proprietari.\n" "Determina se il plugin darà automaticamente il mode ai proprietari.\n"
" anche se non hanno la capacità op, halfop, voice, ecc..." " anche se non hanno la capacità op, halfop, voice, ecc..."
#: config.py:52 #: config.py:53
msgid ""
"Determines whether the bot will\n"
" check for 'alternative capabilities' (ie. autoop, autohalfop,\n"
" autovoice) in addition to/instead of classic ones."
msgstr ""
#: config.py:57
msgid "" msgid ""
"Determines whether the bot will \"fall\n" "Determines whether the bot will \"fall\n"
" through\" to halfop/voicing when auto-opping is turned off but\n" " through\" to halfop/voicing when auto-opping is turned off but\n"
@ -37,7 +43,7 @@ msgstr ""
" quando l'op automatico è disabilitato ma l'halfop o il voice\n" " quando l'op automatico è disabilitato ma l'halfop o il voice\n"
" automatico sono attivati." " automatico sono attivati."
#: config.py:56 #: config.py:61
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" op people with the <channel>,op capability when they join the channel.\n" " op people with the <channel>,op capability when they join the channel.\n"
@ -47,7 +53,7 @@ msgstr ""
" la capacità <canale>,op quando entrano in canale.\n" " la capacità <canale>,op quando entrano in canale.\n"
" " " "
#: config.py:60 #: config.py:65
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" halfop people with the <channel>,halfop capability when they join the\n" " halfop people with the <channel>,halfop capability when they join the\n"
@ -57,7 +63,7 @@ msgstr ""
" la capacità <canale>,halfop quando entrano in canale.\n" " la capacità <canale>,halfop quando entrano in canale.\n"
" " " "
#: config.py:64 #: config.py:69
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" voice people with the <channel>,voice capability when they join the\n" " voice people with the <channel>,voice capability when they join the\n"
@ -67,7 +73,7 @@ msgstr ""
" la capacità <canale>,voice quando entrano in canale.\n" " la capacità <canale>,voice quando entrano in canale.\n"
" " " "
#: config.py:68 #: config.py:73
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" ban people who join the channel and are on the banlist." " ban people who join the channel and are on the banlist."
@ -76,14 +82,13 @@ msgstr ""
" entrano in canale e sono nella lista dei ban.\n" " entrano in canale e sono nella lista dei ban.\n"
" " " "
#: config.py:71 #: config.py:76
msgid "" msgid ""
"Determines how many seconds the bot\n" "Determines how many seconds the bot\n"
" will automatically ban a person when banning." " will automatically ban a person when banning."
msgstr "" msgstr "Determina quanti secondi durerà il ban applicato a un utente."
"Determina quanti secondi durerà il ban applicato a un utente."
#: config.py:75 #: config.py:80
msgid "" msgid ""
"Determines how many seconds the bot will wait\n" "Determines how many seconds the bot will wait\n"
" before applying a mode. Has no effect on bans." " before applying a mode. Has no effect on bans."
@ -91,3 +96,36 @@ msgstr ""
"Determina quanti secondi aspetterà il bot prima di applicare un mode.\n" "Determina quanti secondi aspetterà il bot prima di applicare un mode.\n"
" Non ha effetto sui ban." " Non ha effetto sui ban."
#: config.py:84
msgid ""
"Extra modes that will be\n"
" applied to a user. Example syntax: user1+o-v user2+v user3-v"
msgstr ""
#: plugin.py:49
msgid ""
"\n"
" This plugin, when configured, allows the bot to automatically set modes\n"
" on users when they join.\n"
"\n"
" * if ``plugins.automode.op`` is set to ``True``, users with the\n"
" ``#channel,op`` capability are opped when they join.\n"
" * if ``plugins.automode.halfop`` is set to ``True``, users with the\n"
" ``#channel,halfop`` are halfopped when they join.\n"
" * if ``plugins.automode.voice`` is set to ``True``, users with the\n"
" ``#channel,voice`` are voiced when they join.\n"
"\n"
" This plugin also kbans people on ``@channel ban list``\n"
" (``config plugins.automode.ban``) when they join and if moding users "
"with\n"
" lower capability is enabled, that is also applied to users with higher\n"
" capability (``config plugins.automode.fallthrough``).\n"
"\n"
" "
msgstr ""
#: plugin.py:97
msgid ""
"Determines whether or not a mode has already\n"
" been applied."
msgstr ""

View File

@ -5,95 +5,110 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2014-12-20 11:29+EET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
#: config.py:46 #: config.py:47
msgid "" msgid ""
"Determines whether this plugin is enabled.\n" "Determines whether this plugin is enabled.\n"
" " " "
msgstr "" msgstr ""
#: config.py:49 #: config.py:50
msgid "" msgid ""
"Determines whether this plugin will automode\n" "Determines whether this plugin will automode\n"
" owners even if they don't have op/halfop/voice/whatever capability." " owners even if they don't have op/halfop/voice/whatever capability."
msgstr "" msgstr ""
#: config.py:52 #: config.py:53
msgid "" msgid ""
"Determines whether the bot will\n" "Determines whether the bot will\n"
" check for 'alternative capabilities' (ie. autoop, autohalfop,\n" " check for 'alternative capabilities' (ie. autoop, autohalfop,\n"
" autovoice) in addition to/instead of classic ones." " autovoice) in addition to/instead of classic ones."
msgstr "" msgstr ""
#: config.py:56 #: config.py:57
msgid "" msgid ""
"Determines whether the bot will \"fall\n" "Determines whether the bot will \"fall\n"
" through\" to halfop/voicing when auto-opping is turned off but\n" " through\" to halfop/voicing when auto-opping is turned off but\n"
" auto-halfopping/voicing are turned on." " auto-halfopping/voicing are turned on."
msgstr "" msgstr ""
#: config.py:60 #: config.py:61
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" op people with the <channel>,op capability when they join the channel.\n" " op people with the <channel>,op capability when they join the channel.\n"
" " " "
msgstr "" msgstr ""
#: config.py:64 #: config.py:65
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" halfop people with the <channel>,halfop capability when they join the\n" " halfop people with the <channel>,halfop capability when they join the\n"
" channel." " channel."
msgstr "" msgstr ""
#: config.py:68 #: config.py:69
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" voice people with the <channel>,voice capability when they join the\n" " voice people with the <channel>,voice capability when they join the\n"
" channel." " channel."
msgstr "" msgstr ""
#: config.py:72 #: config.py:73
msgid "" msgid ""
"Determines whether the bot will automatically\n" "Determines whether the bot will automatically\n"
" ban people who join the channel and are on the banlist." " ban people who join the channel and are on the banlist."
msgstr "" msgstr ""
#: config.py:75 #: config.py:76
msgid "" msgid ""
"Determines how many seconds the bot\n" "Determines how many seconds the bot\n"
" will automatically ban a person when banning." " will automatically ban a person when banning."
msgstr "" msgstr ""
#: config.py:79 #: config.py:80
msgid "" msgid ""
"Determines how many seconds the bot will wait\n" "Determines how many seconds the bot will wait\n"
" before applying a mode. Has no effect on bans." " before applying a mode. Has no effect on bans."
msgstr "" msgstr ""
#: config.py:83 #: config.py:84
msgid "" msgid ""
"Extra modes that will be\n" "Extra modes that will be\n"
" applied to a user. Example syntax: user1+o-v user2+v user3-v" " applied to a user. Example syntax: user1+o-v user2+v user3-v"
msgstr "" msgstr ""
#: plugin.py:48 #: plugin.py:49
#, docstring #, docstring
msgid "" msgid ""
"This plugin, when configured, allows the bot to automatically set modes\n" "\n"
" on users when they join." " This plugin, when configured, allows the bot to automatically set modes\n"
" on users when they join.\n"
"\n"
" * if ``plugins.automode.op`` is set to ``True``, users with the\n"
" ``#channel,op`` capability are opped when they join.\n"
" * if ``plugins.automode.halfop`` is set to ``True``, users with the\n"
" ``#channel,halfop`` are halfopped when they join.\n"
" * if ``plugins.automode.voice`` is set to ``True``, users with the\n"
" ``#channel,voice`` are voiced when they join.\n"
"\n"
" This plugin also kbans people on ``@channel ban list``\n"
" (``config plugins.automode.ban``) when they join and if moding users with\n"
" lower capability is enabled, that is also applied to users with higher\n"
" capability (``config plugins.automode.fallthrough``).\n"
"\n"
" "
msgstr "" msgstr ""
#: plugin.py:80 #: plugin.py:97
#, docstring #, docstring
msgid "" msgid ""
"Determines whether or not a mode has already\n" "Determines whether or not a mode has already\n"

View File

@ -1,6 +1,7 @@
### ###
# Copyright (c) 2004, Jeremiah Fincher # Copyright (c) 2004, Jeremiah Fincher
# Copyright (c) 2009, James McCoy # Copyright (c) 2009, James McCoy
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -143,7 +144,7 @@ class AutoMode(callbacks.Plugin):
break break
try: try:
do('op') do('op')
if 'h' in irc.state.supported['prefix']: if 'h' in irc.state.supported.get('prefix', ''):
do('halfop') do('halfop')
except Continue: except Continue:
return return

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2005, Jeremiah Fincher # Copyright (c) 2005, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -5,6 +5,7 @@ Documentation for the Autocomplete plugin for Supybot
Purpose Purpose
------- -------
Autocomplete: Provides command autocompletion for IRC clients that support it. Autocomplete: Provides command autocompletion for IRC clients that support it.
This plugin implements an early draft of the IRCv3 autocompletion client tags. This plugin implements an early draft of the IRCv3 autocompletion client tags.
@ -17,6 +18,7 @@ If you are interested in this feature, please contribute to
Usage Usage
----- -----
Provides command completion for IRC clients that support it. Provides command completion for IRC clients that support it.
.. _conf-Autocomplete: .. _conf-Autocomplete:
@ -28,7 +30,7 @@ Configuration
supybot.plugins.Autocomplete.enabled supybot.plugins.Autocomplete.enabled
This config variable defaults to "False", is network-specific, and is channel-specific. This config variable defaults to "False", is network-specific, and is channel-specific.
Whether the bot should reply to autocomplete requests from clients. Whether the bot should reply to autocomplete requests from clients.
@ -36,7 +38,7 @@ supybot.plugins.Autocomplete.enabled
supybot.plugins.Autocomplete.public supybot.plugins.Autocomplete.public
This config variable defaults to "True", is not network-specific, and is not channel-specific. This config variable defaults to "True", is not network-specific, and is not channel-specific.
Determines whether this plugin is publicly visible. Determines whether this plugin is publicly visible.

View File

@ -1,5 +1,5 @@
### ###
# Copyright (c) 2020, Valentin Lorentz # Copyright (c) 2020-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -60,10 +60,8 @@ __url__ = ""
from . import config from . import config
from . import plugin from . import plugin
if sys.version_info >= (3, 4): from importlib import reload
from importlib import reload
else:
from imp import reload
# In case we're being reloaded. # In case we're being reloaded.
reload(config) reload(config)
reload(plugin) reload(plugin)

View File

@ -1,5 +1,5 @@
### ###
# Copyright (c) 2020, Valentin Lorentz # Copyright (c) 2020-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -0,0 +1,45 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2022-02-06 00:12+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
#: config.py:62
msgid ""
"Whether the bot should reply to autocomplete\n"
" requests from clients."
msgstr ""
#: plugin.py:42
#, docstring
msgid "Takes a list of lists, and returns their longest common prefix."
msgstr ""
#: plugin.py:57
#, docstring
msgid ""
"Returns the value of the +draft/autocomplete-response tag for the given\n"
" +draft/autocomplete-request payload."
msgstr ""
#: plugin.py:101
#, docstring
msgid "Returns a list of commands starting with the normalized_payload."
msgstr ""
#: plugin.py:121
#, docstring
msgid "Provides command completion for IRC clients that support it."
msgstr ""

View File

@ -1,5 +1,5 @@
### ###
# Copyright (c) 2020, Valentin Lorentz # Copyright (c) 2020-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,5 +1,5 @@
### ###
# Copyright (c) 2020, Valentin Lorentz # Copyright (c) 2020-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -5,6 +5,7 @@ Documentation for the BadWords plugin for Supybot
Purpose Purpose
------- -------
Filters bad words on outgoing messages from the bot, so the bot can't be made Filters bad words on outgoing messages from the bot, so the bot can't be made
to say bad words. to say bad words.
As an additional capability, it can (optionally) kick users who As an additional capability, it can (optionally) kick users who
@ -12,6 +13,7 @@ use such words from channels that have that capability enabled.
Usage Usage
----- -----
Maintains a list of words that the bot is not allowed to say. Maintains a list of words that the bot is not allowed to say.
Can also be used to kick people that say these words, if the bot Can also be used to kick people that say these words, if the bot
has op. has op.
@ -20,6 +22,7 @@ has op.
Commands Commands
-------- --------
.. _command-badwords-add: .. _command-badwords-add:
add <word> [<word> ...] add <word> [<word> ...]
@ -44,7 +47,7 @@ Configuration
supybot.plugins.BadWords.kick supybot.plugins.BadWords.kick
This config variable defaults to "False", is network-specific, and is channel-specific. This config variable defaults to "False", is network-specific, and is channel-specific.
Determines whether the bot will kick people with a warning when they use bad words. Determines whether the bot will kick people with a warning when they use bad words.
@ -52,7 +55,7 @@ supybot.plugins.BadWords.kick
supybot.plugins.BadWords.kick.message supybot.plugins.BadWords.kick.message
This config variable defaults to "You have been kicked for using a word prohibited in the presence of this bot. Please use more appropriate language in the future.", is network-specific, and is channel-specific. This config variable defaults to "You have been kicked for using a word prohibited in the presence of this bot. Please use more appropriate language in the future.", is network-specific, and is channel-specific.
Determines the kick message used by the bot when kicking users for saying bad words. Determines the kick message used by the bot when kicking users for saying bad words.
@ -60,7 +63,7 @@ supybot.plugins.BadWords.kick
supybot.plugins.BadWords.nastyChars supybot.plugins.BadWords.nastyChars
This config variable defaults to "!@#&", is not network-specific, and is not channel-specific. This config variable defaults to "!@#&", is not network-specific, and is not channel-specific.
Determines what characters will replace bad words; a chunk of these characters matching the size of the replaced bad word will be used to replace the bad words you've configured. Determines what characters will replace bad words; a chunk of these characters matching the size of the replaced bad word will be used to replace the bad words you've configured.
@ -68,7 +71,7 @@ supybot.plugins.BadWords.nastyChars
supybot.plugins.BadWords.phrases supybot.plugins.BadWords.phrases
This config variable defaults to " ", is not network-specific, and is not channel-specific. This config variable defaults to " ", is not network-specific, and is not channel-specific.
Comma-separated groups of words that are considered to be 'bad'. Comma-separated groups of words that are considered to be 'bad'.
@ -76,7 +79,7 @@ supybot.plugins.BadWords.phrases
supybot.plugins.BadWords.public supybot.plugins.BadWords.public
This config variable defaults to "True", is not network-specific, and is not channel-specific. This config variable defaults to "True", is not network-specific, and is not channel-specific.
Determines whether this plugin is publicly visible. Determines whether this plugin is publicly visible.
@ -84,7 +87,7 @@ supybot.plugins.BadWords.public
supybot.plugins.BadWords.replaceMethod supybot.plugins.BadWords.replaceMethod
This config variable defaults to "nastyCharacters", is not network-specific, and is not channel-specific. This config variable defaults to "nastyCharacters", is not network-specific, and is not channel-specific.
Determines the manner in which bad words will be replaced. 'nastyCharacters' (the default) will replace a bad word with the same number of 'nasty characters' (like those used in comic books; configurable by supybot.plugins.BadWords.nastyChars). 'simple' will replace a bad word with a simple strings (regardless of the length of the bad word); this string is configurable via supybot.plugins.BadWords.simpleReplacement. Valid strings: simple and nastyCharacters. Determines the manner in which bad words will be replaced. 'nastyCharacters' (the default) will replace a bad word with the same number of 'nasty characters' (like those used in comic books; configurable by supybot.plugins.BadWords.nastyChars). 'simple' will replace a bad word with a simple strings (regardless of the length of the bad word); this string is configurable via supybot.plugins.BadWords.simpleReplacement. Valid strings: simple and nastyCharacters.
@ -92,15 +95,23 @@ supybot.plugins.BadWords.replaceMethod
supybot.plugins.BadWords.requireWordBoundaries supybot.plugins.BadWords.requireWordBoundaries
This config variable defaults to "False", is network-specific, and is channel-specific. This config variable defaults to "False", is network-specific, and is channel-specific.
Determines whether the bot will require bad words to be independent words, or whether it will censor them within other words. For instance, if 'darn' is a bad word, then if this is true, 'darn' will be censored, but 'darnit' will not. You probably want this to be false. After changing this setting, the BadWords regexp needs to be regenerated by adding/removing a word to the list, or reloading the plugin. Determines whether the bot will require bad words to be independent words, or whether it will censor them within other words. For instance, if 'darn' is a bad word, then if this is true, 'darn' will be censored, but 'darnit' will not. You probably want this to be false. After changing this setting, the BadWords regexp needs to be regenerated by adding/removing a word to the list, or reloading the plugin.
.. _conf-supybot.plugins.BadWords.selfCensor:
supybot.plugins.BadWords.selfCensor
This config variable defaults to "True", is network-specific, and is channel-specific.
Determines whether the bot will filter its own messages.
.. _conf-supybot.plugins.BadWords.simpleReplacement: .. _conf-supybot.plugins.BadWords.simpleReplacement:
supybot.plugins.BadWords.simpleReplacement supybot.plugins.BadWords.simpleReplacement
This config variable defaults to "[CENSORED]", is not network-specific, and is not channel-specific. This config variable defaults to "[CENSORED]", is not network-specific, and is not channel-specific.
Determines what word will replace bad words if the replacement method is 'simple'. Determines what word will replace bad words if the replacement method is 'simple'.
@ -108,7 +119,7 @@ supybot.plugins.BadWords.simpleReplacement
supybot.plugins.BadWords.stripFormatting supybot.plugins.BadWords.stripFormatting
This config variable defaults to "True", is not network-specific, and is not channel-specific. This config variable defaults to "True", is not network-specific, and is not channel-specific.
Determines whether the bot will strip formatting characters from messages before it checks them for bad words. If this is False, it will be relatively trivial to circumvent this plugin's filtering. If it's True, however, it will interact poorly with other plugins that do coloring or bolding of text. Determines whether the bot will strip formatting characters from messages before it checks them for bad words. If this is False, it will be relatively trivial to circumvent this plugin's filtering. If it's True, however, it will interact poorly with other plugins that do coloring or bolding of text.
@ -116,7 +127,7 @@ supybot.plugins.BadWords.stripFormatting
supybot.plugins.BadWords.words supybot.plugins.BadWords.words
This config variable defaults to " ", is not network-specific, and is not channel-specific. This config variable defaults to " ", is not network-specific, and is not channel-specific.
Determines what words are considered to be 'bad' so the bot won't say them. Determines what words are considered to be 'bad' so the bot won't say them.

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2005, Jeremiah Fincher # Copyright (c) 2005, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2005, Jeremiah Fincher # Copyright (c) 2005, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -84,7 +85,7 @@ class String256(registry.String):
return s * (1024//len(s)) return s * (1024//len(s))
def __str__(self): def __str__(self):
return self.value return self()
conf.registerGlobalValue(BadWords, 'nastyChars', conf.registerGlobalValue(BadWords, 'nastyChars',
String256('!@#&', _("""Determines what characters will replace bad words; a String256('!@#&', _("""Determines what characters will replace bad words; a
@ -112,6 +113,9 @@ conf.registerGlobalValue(BadWords, 'stripFormatting',
filtering. If it's True, however, it will interact poorly with other filtering. If it's True, however, it will interact poorly with other
plugins that do coloring or bolding of text."""))) plugins that do coloring or bolding of text.""")))
conf.registerChannelValue(BadWords, 'selfCensor',
registry.Boolean(True, _("""Determines whether the bot will filter its own
messages.""")))
conf.registerChannelValue(BadWords, 'kick', conf.registerChannelValue(BadWords, 'kick',
registry.Boolean(False, _("""Determines whether the bot will kick people with registry.Boolean(False, _("""Determines whether the bot will kick people with
a warning when they use bad words."""))) a warning when they use bad words.""")))

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: 2011-02-26 09:49+CET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
@ -16,15 +16,15 @@ msgstr ""
"X-Poedit-Language: Finnish\n" "X-Poedit-Language: Finnish\n"
"X-Poedit-Country: FINLAND\n" "X-Poedit-Country: FINLAND\n"
#: config.py:40 #: config.py:43
msgid "Would you like to add some bad words?" msgid "Would you like to add some bad words?"
msgstr "Haluaisitko lisätä joitakin pahoja sanoja?" msgstr "Haluaisitko lisätä joitakin pahoja sanoja?"
#: config.py:41 #: config.py:44
msgid "What words? (separate individual words by spaces)" msgid "What words? (separate individual words by spaces)"
msgstr "Mitkä sanat? (Rajoita erilliset sanat käyttämällä välilyöntiä)." msgstr "Mitkä sanat? (Rajoita erilliset sanat käyttämällä välilyöntiä)."
#: config.py:53 #: config.py:68
msgid "" msgid ""
"Determines what words are\n" "Determines what words are\n"
" considered to be 'bad' so the bot won't say them." " considered to be 'bad' so the bot won't say them."
@ -32,53 +32,71 @@ msgstr ""
"Määrittää mitkä sanat ovat\n" "Määrittää mitkä sanat ovat\n"
" 'pahoja', jottei botti sano niitä." " 'pahoja', jottei botti sano niitä."
#: config.py:56 #: config.py:71
msgid "" msgid ""
"Determines whether the bot will require bad\n" "Determines whether the bot will require bad\n"
" words to be independent words, or whether it will censor them within other\n" " words to be independent words, or whether it will censor them within "
" words. For instance, if 'darn' is a bad word, then if this is true, 'darn'\n" "other\n"
" words. For instance, if 'darn' is a bad word, then if this is true, "
"'darn'\n"
" will be censored, but 'darnit' will not. You probably want this to be\n" " will be censored, but 'darnit' will not. You probably want this to be\n"
" false. After changing this setting, the BadWords regexp needs to be\n" " false. After changing this setting, the BadWords regexp needs to be\n"
" regenerated by adding/removing a word to the list, or reloading the\n" " regenerated by adding/removing a word to the list, or reloading the\n"
" plugin." " plugin."
msgstr "" msgstr ""
"Määrittää vaatiiko botti pahojen sanojen\n" "Määrittää vaatiiko botti pahojen sanojen\n"
" olevan toisistaan riippumattomia sanoja, vai sensuroiko se ne toisten sanojen\n" " olevan toisistaan riippumattomia sanoja, vai sensuroiko se ne toisten "
" sisältä. Esimerkiksi, jos 'pah' on paha sana, ja jos tämä on asetus on true, 'pah'\n" "sanojen\n"
" sensuroidaan, mutta 'pahus' ei sensuroida. Sinä luultavasti tahdot pitää tämän\n" " sisältä. Esimerkiksi, jos 'pah' on paha sana, ja jos tämä on asetus on "
" false:na. Tämän asetuksen muuttamisen jälkeen, BadWords säännöllinen lauseke täytyy\n" "true, 'pah'\n"
" luoda uudelleen lisäämällä/poistamalla sana listalta, tai lataamalla lisäosa \n" " sensuroidaan, mutta 'pahus' ei sensuroida. Sinä luultavasti tahdot "
"pitää tämän\n"
" false:na. Tämän asetuksen muuttamisen jälkeen, BadWords säännöllinen "
"lauseke täytyy\n"
" luoda uudelleen lisäämällä/poistamalla sana listalta, tai lataamalla "
"lisäosa \n"
" uudelleen." " uudelleen."
#: config.py:73 #: config.py:79
msgid ""
"Comma-separated groups\n"
" of words that are considered to be 'bad'."
msgstr ""
#: config.py:91
msgid "" msgid ""
"Determines what characters will replace bad words; a\n" "Determines what characters will replace bad words; a\n"
" chunk of these characters matching the size of the replaced bad word will\n" " chunk of these characters matching the size of the replaced bad word "
"will\n"
" be used to replace the bad words you've configured." " be used to replace the bad words you've configured."
msgstr "" msgstr ""
"Määrittä mitkä merkit korvaavat pahat sanat; \n" "Määrittä mitkä merkit korvaavat pahat sanat; \n"
" osia näistä merkeistä, jotka sopivat pahan sanan kokoon,\n" " osia näistä merkeistä, jotka sopivat pahan sanan kokoon,\n"
" käytetään määrittämiesi pahojen sanojen korvaamisessa." " käytetään määrittämiesi pahojen sanojen korvaamisessa."
#: config.py:81 #: config.py:99
msgid "" msgid ""
"Determines the manner in which\n" "Determines the manner in which\n"
" bad words will be replaced. 'nastyCharacters' (the default) will replace a\n" " bad words will be replaced. 'nastyCharacters' (the default) will "
"replace a\n"
" bad word with the same number of 'nasty characters' (like those used in\n" " bad word with the same number of 'nasty characters' (like those used in\n"
" comic books; configurable by supybot.plugins.BadWords.nastyChars).\n" " comic books; configurable by supybot.plugins.BadWords.nastyChars).\n"
" 'simple' will replace a bad word with a simple strings (regardless of the\n" " 'simple' will replace a bad word with a simple strings (regardless of "
"the\n"
" 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 ""
"Määrittää millä tavalla\n" "Määrittää millä tavalla\n"
" pahat sanat korvataan. 'nastyCharacters' (oletus) korvaa\n" " pahat sanat korvataan. 'nastyCharacters' (oletus) korvaa\n"
" pahan sanan samalla määrällä 'häijyjä merkkejä' (kuten ne jotka ovat\n" " pahan sanan samalla määrällä 'häijyjä merkkejä' (kuten ne jotka ovat\n"
" sarjakuvissa; muokattavissa supybot.plugins.BadWords.nastyChars asetuksella).\n" " sarjakuvissa; muokattavissa supybot.plugins.BadWords.nastyChars "
" 'simple' korvaa pahan sanan yksinkertaisella merkkiketjulla (riippumatta\n" "asetuksella).\n"
" 'simple' korvaa pahan sanan yksinkertaisella merkkiketjulla "
"(riippumatta\n"
" pahan sanan koosta); tämä merkkiketju on muokattavissa\n" " pahan sanan koosta); tämä merkkiketju on muokattavissa\n"
" asetuksella supybot.plugins.BadWords.simpleReplacement." " asetuksella supybot.plugins.BadWords.simpleReplacement."
#: config.py:89 #: config.py:107
msgid "" msgid ""
"Determines what word will replace bad\n" "Determines what word will replace bad\n"
" words if the replacement method is 'simple'." " words if the replacement method is 'simple'."
@ -86,21 +104,24 @@ msgstr ""
"Määrittää mikä sana korvaa pahat\n" "Määrittää mikä sana korvaa pahat\n"
" sanat jos korvausmenetelmä on 'simple'." " sanat jos korvausmenetelmä on 'simple'."
#: config.py:92 #: config.py:110
msgid "" msgid ""
"Determines whether the bot will strip\n" "Determines whether the bot will strip\n"
" formatting characters from messages before it checks them for bad words.\n" " formatting characters from messages before it checks them for bad "
" If this is False, it will be relatively trivial to circumvent this plugin's\n" "words.\n"
" If this is False, it will be relatively trivial to circumvent this "
"plugin's\n"
" filtering. If it's True, however, it will interact poorly with other\n" " filtering. If it's True, however, it will interact poorly with other\n"
" plugins that do coloring or bolding of text." " plugins that do coloring or bolding of text."
msgstr "" msgstr ""
"Määrittää riisuuko botti\n" "Määrittää riisuuko botti\n"
" muotoilun merkeistä ennen kuin se tarkistaa ne pahojen sanojen varalta.\n" " muotoilun merkeistä ennen kuin se tarkistaa ne pahojen sanojen varalta.\n"
" Jos tämä on 'False', on hyvin pinnallista kiertää tämän lisäosan\n" " Jos tämä on 'False', on hyvin pinnallista kiertää tämän lisäosan\n"
" suodatusta. Jos se kuitenkin on 'True', se on huonosti vuorovaikutuksessa\n" " suodatusta. Jos se kuitenkin on 'True', se on huonosti "
"vuorovaikutuksessa\n"
" tekstin värittämistä tai korostamista tekevien lisäosien kanssa." " tekstin värittämistä tai korostamista tekevien lisäosien kanssa."
#: config.py:99 #: config.py:117
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."
@ -108,7 +129,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:102 #: config.py:120
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"
@ -118,7 +139,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:104 #: config.py:122
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."
@ -133,10 +154,11 @@ msgid ""
" has op." " has op."
msgstr "" msgstr ""
"Säilyttää listaa sanoista, joita botin ei ole sallittua sanoa.\n" "Säilyttää listaa sanoista, joita botin ei ole sallittua sanoa.\n"
" Voidaan myös käyttää potkimaan ihmisiä, jotka sanovat näitä sanoja, jos botilla\n" " Voidaan myös käyttää potkimaan ihmisiä, jotka sanovat näitä sanoja, jos "
"botilla\n"
" on opit." " on opit."
#: plugin.py:113 #: plugin.py:127
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -148,11 +170,11 @@ msgstr ""
" Palauttaa listan sanoista, joita sensuroidaan.\n" " Palauttaa listan sanoista, joita sensuroidaan.\n"
" " " "
#: plugin.py:123 #: plugin.py:137
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:128 #: plugin.py:142
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
"\n" "\n"
@ -164,7 +186,7 @@ msgstr ""
" Lisää kaikki <sana>(t) sensuroitaviin sanoihin.\n" " Lisää kaikki <sana>(t) sensuroitaviin sanoihin.\n"
" " " "
#: plugin.py:140 #: plugin.py:162
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: 2011-02-26 09:49+CET\n" "POT-Creation-Date: 2022-02-06 00:12+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,82 +13,124 @@ msgstr ""
"X-Poedit-Country: France\n" "X-Poedit-Country: France\n"
"X-Poedit-SourceCharset: ASCII\n" "X-Poedit-SourceCharset: ASCII\n"
#: config.py:40 #: config.py:43
msgid "Would you like to add some bad words?" msgid "Would you like to add some bad words?"
msgstr "Voulez-vous ajouter quelques mots interdits ?" msgstr "Voulez-vous ajouter quelques mots interdits ?"
#: config.py:41 #: config.py:44
msgid "What words? (separate individual words by spaces)" msgid "What words? (separate individual words by spaces)"
msgstr "Quels mots ? (séparez chaque mot par un espace)" msgstr "Quels mots ? (séparez chaque mot par un espace)"
#: config.py:53 #: config.py:68
msgid "" msgid ""
"Determines what words are\n" "Determines what words are\n"
" considered to be 'bad' so the bot won't say them." " considered to be 'bad' so the bot won't say them."
msgstr "Détermine quels mots sont considérés comme interdits, donc le bot ne les dira pas." msgstr ""
"Détermine quels mots sont considérés comme interdits, donc le bot ne les "
"dira pas."
#: config.py:56 #: config.py:71
msgid "" msgid ""
"Determines whether the bot will require bad\n" "Determines whether the bot will require bad\n"
" words to be independent words, or whether it will censor them within other\n" " words to be independent words, or whether it will censor them within "
" words. For instance, if 'darn' is a bad word, then if this is true, 'darn'\n" "other\n"
" words. For instance, if 'darn' is a bad word, then if this is true, "
"'darn'\n"
" will be censored, but 'darnit' will not. You probably want this to be\n" " will be censored, but 'darnit' will not. You probably want this to be\n"
" false. After changing this setting, the BadWords regexp needs to be\n" " false. After changing this setting, the BadWords regexp needs to be\n"
" regenerated by adding/removing a word to the list, or reloading the\n" " regenerated by adding/removing a word to the list, or reloading the\n"
" plugin." " plugin."
msgstr "Détermine si le bot requiert que les gros mots soient indépendants, ou si ils peuvent être dans d'autres mots. Par exemple, si 'merde' est censuré et que c'est True, 'merde' sera censuré, mais pas 'emmerder'. Il est probablement mieux que ceci soit False. Après avoir modifié ce paramètre, l'expression régulière de BadWords doit être regénérée en ajoutant/supprimant un mot de la liste, ou en rechargeant le plugin." msgstr ""
"Détermine si le bot requiert que les gros mots soient indépendants, ou si "
"ils peuvent être dans d'autres mots. Par exemple, si 'merde' est censuré et "
"que c'est True, 'merde' sera censuré, mais pas 'emmerder'. Il est "
"probablement mieux que ceci soit False. Après avoir modifié ce paramètre, "
"l'expression régulière de BadWords doit être regénérée en ajoutant/"
"supprimant un mot de la liste, ou en rechargeant le plugin."
#: config.py:73 #: config.py:79
msgid ""
"Comma-separated groups\n"
" of words that are considered to be 'bad'."
msgstr ""
#: config.py:91
msgid "" msgid ""
"Determines what characters will replace bad words; a\n" "Determines what characters will replace bad words; a\n"
" chunk of these characters matching the size of the replaced bad word will\n" " chunk of these characters matching the size of the replaced bad word "
"will\n"
" be used to replace the bad words you've configured." " be used to replace the bad words you've configured."
msgstr "Détermine par quels caractères seront remplacés les gros mots ; un morceau de ces caractères ayant la même taille que le mot remplacé sera utilisé pour remplacer les gros mots que vous avez configurés." msgstr ""
"Détermine par quels caractères seront remplacés les gros mots ; un morceau "
#: config.py:81 "de ces caractères ayant la même taille que le mot remplacé sera utilisé pour "
msgid "" "remplacer les gros mots que vous avez configurés."
"Determines the manner in which\n"
" bad words will be replaced. 'nastyCharacters' (the default) will replace a\n"
" bad word with the same number of 'nasty characters' (like those used in\n"
" comic books; configurable by supybot.plugins.BadWords.nastyChars).\n"
" 'simple' will replace a bad word with a simple strings (regardless of the\n"
" length of the bad word); this string is configurable via\n"
" supybot.plugins.BadWords.simpleReplacement."
msgstr "Détermine la manière dont les gros mots sont remplacés. 'nastyCharacters' (par défaut) remplacera un gros mot par le même nombre de 'caractères obscènes' (comme ceux utilisés dans les bandes dessinées ; configurables dans supybot.plugins.BadWords.nastyChars). 'simple' remplacera le mot pas une simple chaîne (peu importe la taille du gros mot) ; cette chaîne est configurable dans supybot.plugins.BadWords.simpleReplacement."
#: config.py:89
msgid ""
"Determines what word will replace bad\n"
" words if the replacement method is 'simple'."
msgstr "Détermin quel mot remplacera les mots interdits, si la méthode de remplacement est 'simple'."
#: config.py:92
msgid ""
"Determines whether the bot will strip\n"
" formatting characters from messages before it checks them for bad words.\n"
" If this is False, it will be relatively trivial to circumvent this plugin's\n"
" filtering. If it's True, however, it will interact poorly with other\n"
" plugins that do coloring or bolding of text."
msgstr "Détermine si le bot retirera les caractères de formattage avant de vérifier qu'ils contiennent des gros mots. Si ceci est False, ce sera relativement simple de contourner la protection. Si c'est True, toutefois, il fera perdre toute couleur ou formattage des autres plugins"
#: config.py:99 #: config.py:99
msgid "" msgid ""
"Determines the manner in which\n"
" bad words will be replaced. 'nastyCharacters' (the default) will "
"replace a\n"
" bad word with the same number of 'nasty characters' (like those used in\n"
" comic books; configurable by supybot.plugins.BadWords.nastyChars).\n"
" 'simple' will replace a bad word with a simple strings (regardless of "
"the\n"
" length of the bad word); this string is configurable via\n"
" supybot.plugins.BadWords.simpleReplacement."
msgstr ""
"Détermine la manière dont les gros mots sont remplacés. "
"'nastyCharacters' (par défaut) remplacera un gros mot par le même nombre de "
"'caractères obscènes' (comme ceux utilisés dans les bandes dessinées ; "
"configurables dans supybot.plugins.BadWords.nastyChars). 'simple' remplacera "
"le mot pas une simple chaîne (peu importe la taille du gros mot) ; cette "
"chaîne est configurable dans supybot.plugins.BadWords.simpleReplacement."
#: config.py:107
msgid ""
"Determines what word will replace bad\n"
" words if the replacement method is 'simple'."
msgstr ""
"Détermin quel mot remplacera les mots interdits, si la méthode de "
"remplacement est 'simple'."
#: config.py:110
msgid ""
"Determines whether the bot will strip\n"
" formatting characters from messages before it checks them for bad "
"words.\n"
" If this is False, it will be relatively trivial to circumvent this "
"plugin's\n"
" filtering. If it's True, however, it will interact poorly with other\n"
" plugins that do coloring or bolding of text."
msgstr ""
"Détermine si le bot retirera les caractères de formattage avant de vérifier "
"qu'ils contiennent des gros mots. Si ceci est False, ce sera relativement "
"simple de contourner la protection. Si c'est True, toutefois, il fera perdre "
"toute couleur ou formattage des autres plugins"
#: config.py:117
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."
msgstr "Détermine si le bot kickera les gens avec un avertissement lorsqu'ils utilisent des gros mots." msgstr ""
"Détermine si le bot kickera les gens avec un avertissement lorsqu'ils "
"utilisent des gros mots."
#: config.py:102 #: config.py:120
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"
" language in the future." " language in the future."
msgstr "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." msgstr ""
"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."
#: config.py:104 #: config.py:122
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."
msgstr "Détermine le message de kick utilisé par le bot lorsqu'il kick des utilisateurs utilisant des gros mots." msgstr ""
"Détermine le message de kick utilisé par le bot lorsqu'il kick des "
"utilisateurs utilisant des gros mots."
#: plugin.py:46 #: plugin.py:46
msgid "" msgid ""
@ -97,7 +139,7 @@ msgid ""
" has op." " has op."
msgstr "" msgstr ""
#: plugin.py:113 #: plugin.py:127
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -108,11 +150,11 @@ msgstr ""
"\n" "\n"
"Retourne une liste de mots qui sont censurés." "Retourne une liste de mots qui sont censurés."
#: plugin.py:123 #: plugin.py:137
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:128 #: plugin.py:142
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
"\n" "\n"
@ -123,7 +165,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:140 #: plugin.py:162
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
"\n" "\n"
@ -133,4 +175,3 @@ msgstr ""
"<mot> [<mot> ...]\n" "<mot> [<mot> ...]\n"
"\n" "\n"
"Retire les <mot>s de la liste des mots que le bot ne doit pas dire." "Retire les <mot>s de la liste des mots que le bot ne doit pas dire."

View File

@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Limnoria\n" "Project-Id-Version: Limnoria\n"
"POT-Creation-Date: 2011-02-26 09:49+CET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
@ -10,92 +10,121 @@ 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"
#: config.py:43
#: config.py:40
msgid "Would you like to add some bad words?" msgid "Would you like to add some bad words?"
msgstr "Vuoi aggiungere delle parole volgari?" msgstr "Vuoi aggiungere delle parole volgari?"
#: config.py:41 #: config.py:44
msgid "What words? (separate individual words by spaces)" msgid "What words? (separate individual words by spaces)"
msgstr "Quali parole? (separa ciascuna con uno spazio)" msgstr "Quali parole? (separa ciascuna con uno spazio)"
#: config.py:53 #: config.py:68
msgid "" msgid ""
"Determines what words are\n" "Determines what words are\n"
" considered to be 'bad' so the bot won't say them." " considered to be 'bad' so the bot won't say them."
msgstr "" msgstr ""
"Determina quali parole sono considerate \"volgari\" per cui il bot non le pronuncerà." "Determina quali parole sono considerate \"volgari\" per cui il bot non le "
"pronuncerà."
#: config.py:56 #: config.py:71
msgid "" msgid ""
"Determines whether the bot will require bad\n" "Determines whether the bot will require bad\n"
" words to be independent words, or whether it will censor them within other\n" " words to be independent words, or whether it will censor them within "
" words. For instance, if 'darn' is a bad word, then if this is true, 'darn'\n" "other\n"
" words. For instance, if 'darn' is a bad word, then if this is true, "
"'darn'\n"
" will be censored, but 'darnit' will not. You probably want this to be\n" " will be censored, but 'darnit' will not. You probably want this to be\n"
" false. After changing this setting, the BadWords regexp needs to be\n" " false. After changing this setting, the BadWords regexp needs to be\n"
" regenerated by adding/removing a word to the list, or reloading the\n" " regenerated by adding/removing a word to the list, or reloading the\n"
" plugin." " plugin."
msgstr "" msgstr ""
"Determina se il bot richieda che le parole volgari siano indipendenti o all'interno\n" "Determina se il bot richieda che le parole volgari siano indipendenti o "
" di altre parole. Ad esempio, se \"merda\" è volgare e questa opzione è impostata\n" "all'interno\n"
" a True, verrà censurata, ma \"merdata\" non lo sarà; probabilmente si preferisce\n" " di altre parole. Ad esempio, se \"merda\" è volgare e questa opzione è "
" che questa sia su False. Dopo aver modificato questa impostazione, la regexp di\n" "impostata\n"
" BadWords deve essere rigenerata con l'aggiunta o la rimozione di una parola\n" " a True, verrà censurata, ma \"merdata\" non lo sarà; probabilmente si "
"preferisce\n"
" che questa sia su False. Dopo aver modificato questa impostazione, la "
"regexp di\n"
" BadWords deve essere rigenerata con l'aggiunta o la rimozione di una "
"parola\n"
" dall'elenco o ricaricando il plugin." " dall'elenco o ricaricando il plugin."
#: config.py:73 #: config.py:79
msgid ""
"Comma-separated groups\n"
" of words that are considered to be 'bad'."
msgstr ""
#: config.py:91
msgid "" msgid ""
"Determines what characters will replace bad words; a\n" "Determines what characters will replace bad words; a\n"
" chunk of these characters matching the size of the replaced bad word will\n" " chunk of these characters matching the size of the replaced bad word "
"will\n"
" be used to replace the bad words you've configured." " be used to replace the bad words you've configured."
msgstr "" msgstr ""
"Determina quali caratteri sostituiranno le parole volgari, verranno utilizzati\n" "Determina quali caratteri sostituiranno le parole volgari, verranno "
"utilizzati\n"
" rimpiazzando la parola da censurare in tutta la sua lunghezza." " rimpiazzando la parola da censurare in tutta la sua lunghezza."
#: config.py:81 #: config.py:99
msgid "" msgid ""
"Determines the manner in which\n" "Determines the manner in which\n"
" bad words will be replaced. 'nastyCharacters' (the default) will replace a\n" " bad words will be replaced. 'nastyCharacters' (the default) will "
"replace a\n"
" bad word with the same number of 'nasty characters' (like those used in\n" " bad word with the same number of 'nasty characters' (like those used in\n"
" comic books; configurable by supybot.plugins.BadWords.nastyChars).\n" " comic books; configurable by supybot.plugins.BadWords.nastyChars).\n"
" 'simple' will replace a bad word with a simple strings (regardless of the\n" " 'simple' will replace a bad word with a simple strings (regardless of "
"the\n"
" 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\" (predefinito)\n" "Determina come verranno sostituite le parole volgari. \"nastyCharacters"
" rimpiazzerà la parola con lo stesso numero di \"brutti caratteri\" (come quelli usati\n" "\" (predefinito)\n"
" nei fumetti; configurabile da supybot.plugins.BadWords.nastyChars). \"simple\" sostituirà\n" " rimpiazzerà la parola con lo stesso numero di \"brutti caratteri\" (come "
" una parola volgare con una stringa semplice (indipendentemente dalla lunghezza della parola);\n" "quelli usati\n"
" questa stringa è configurabile tramite supybot.plugins.BadWords.simpleReplacement." " nei fumetti; configurabile da supybot.plugins.BadWords.nastyChars). "
"\"simple\" sostituirà\n"
" una parola volgare con una stringa semplice (indipendentemente dalla "
"lunghezza della parola);\n"
" questa stringa è configurabile tramite supybot.plugins.BadWords."
"simpleReplacement."
#: config.py:89 #: config.py:107
msgid "" msgid ""
"Determines what word will replace bad\n" "Determines what word will replace bad\n"
" words if the replacement method is 'simple'." " words if the replacement method is 'simple'."
msgstr "" msgstr ""
"Determina quale parola sostituirà quelle volgari se viene usato il metodo \"simple\"." "Determina quale parola sostituirà quelle volgari se viene usato il metodo "
"\"simple\"."
#: config.py:92 #: config.py:110
msgid "" msgid ""
"Determines whether the bot will strip\n" "Determines whether the bot will strip\n"
" formatting characters from messages before it checks them for bad words.\n" " formatting characters from messages before it checks them for bad "
" If this is False, it will be relatively trivial to circumvent this plugin's\n" "words.\n"
" If this is False, it will be relatively trivial to circumvent this "
"plugin's\n"
" filtering. If it's True, however, it will interact poorly with other\n" " filtering. If it's True, however, it will interact poorly with other\n"
" plugins that do coloring or bolding of text." " plugins that do coloring or bolding of text."
msgstr "" msgstr ""
"Determina se il bot rimuoverà i caratteri di formattazione prima di controllare\n" "Determina se il bot rimuoverà i caratteri di formattazione prima di "
" che contengano parole volgari. Se impostato a False sarà relativamente facile\n" "controllare\n"
" aggirare i filtri di questo plugin; tuttavia se impostato a True non interagirà\n" " che contengano parole volgari. Se impostato a False sarà relativamente "
"facile\n"
" aggirare i filtri di questo plugin; tuttavia se impostato a True non "
"interagirà\n"
" con altri plugin che colorano o rendono il testo grassetto." " con altri plugin che colorano o rendono il testo grassetto."
#: config.py:99 #: config.py:117
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."
msgstr "" msgstr ""
"Determina se il bot caccerà (kick) gli utenti con un avvertimento quando usano volgarità." "Determina se il bot caccerà (kick) gli utenti con un avvertimento quando "
"usano volgarità."
#: config.py:102 #: config.py:120
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"
@ -104,15 +133,15 @@ 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:104 #: config.py:122
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."
msgstr "" msgstr ""
"Determina il messaggio del kick utilizzato dal bot per espellere gli utenti che scrivono volgarità." "Determina il messaggio del kick utilizzato dal bot per espellere gli utenti "
"che scrivono volgarità."
#: plugin.py:46 #: plugin.py:46
#, docstring
msgid "" msgid ""
"Maintains a list of words that the bot is not allowed to say.\n" "Maintains a list of words that the bot is not allowed to say.\n"
" Can also be used to kick people that say these words, if the bot\n" " Can also be used to kick people that say these words, if the bot\n"
@ -122,8 +151,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:113 #: plugin.py:127
#, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
"\n" "\n"
@ -135,12 +163,11 @@ msgstr ""
" Riporta l'elenco delle parole censurate.\n" " Riporta l'elenco delle parole censurate.\n"
" " " "
#: plugin.py:123 #: plugin.py:137
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:128 #: plugin.py:142
#, docstring
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
"\n" "\n"
@ -152,8 +179,7 @@ msgstr ""
" Aggiunge <parola> all'elenco di quelle da censurare.\n" " Aggiunge <parola> all'elenco di quelle da censurare.\n"
" " " "
#: plugin.py:140 #: plugin.py:162
#, docstring
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
"\n" "\n"
@ -164,4 +190,3 @@ msgstr ""
"\n" "\n"
" Rimuove <parola> dall'elenco di quelle da censurare.\n" " Rimuove <parola> dall'elenco di quelle da censurare.\n"
" " " "

View File

@ -5,31 +5,31 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2014-03-22 16:34+EET\n" "POT-Creation-Date: 2022-02-06 00:12+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"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
#: config.py:42 #: config.py:43
msgid "Would you like to add some bad words?" msgid "Would you like to add some bad words?"
msgstr "" msgstr ""
#: config.py:43 #: config.py:44
msgid "What words? (separate individual words by spaces)" msgid "What words? (separate individual words by spaces)"
msgstr "" msgstr ""
#: config.py:55 #: config.py:68
msgid "" msgid ""
"Determines what words are\n" "Determines what words are\n"
" considered to be 'bad' so the bot won't say them." " considered to be 'bad' so the bot won't say them."
msgstr "" msgstr ""
#: config.py:58 #: config.py:71
msgid "" msgid ""
"Determines whether the bot will require bad\n" "Determines whether the bot will require bad\n"
" words to be independent words, or whether it will censor them within other\n" " words to be independent words, or whether it will censor them within other\n"
@ -40,14 +40,20 @@ msgid ""
" plugin." " plugin."
msgstr "" msgstr ""
#: config.py:75 #: config.py:79
msgid ""
"Comma-separated groups\n"
" of words that are considered to be 'bad'."
msgstr ""
#: config.py:91
msgid "" msgid ""
"Determines what characters will replace bad words; a\n" "Determines what characters will replace bad words; a\n"
" chunk of these characters matching the size of the replaced bad word will\n" " chunk of these characters matching the size of the replaced bad word will\n"
" be used to replace the bad words you've configured." " be used to replace the bad words you've configured."
msgstr "" msgstr ""
#: config.py:83 #: config.py:99
msgid "" msgid ""
"Determines the manner in which\n" "Determines the manner in which\n"
" bad words will be replaced. 'nastyCharacters' (the default) will replace a\n" " bad words will be replaced. 'nastyCharacters' (the default) will replace a\n"
@ -58,13 +64,13 @@ msgid ""
" supybot.plugins.BadWords.simpleReplacement." " supybot.plugins.BadWords.simpleReplacement."
msgstr "" msgstr ""
#: config.py:91 #: config.py:107
msgid "" msgid ""
"Determines what word will replace bad\n" "Determines what word will replace bad\n"
" words if the replacement method is 'simple'." " words if the replacement method is 'simple'."
msgstr "" msgstr ""
#: config.py:94 #: config.py:110
msgid "" msgid ""
"Determines whether the bot will strip\n" "Determines whether the bot will strip\n"
" formatting characters from messages before it checks them for bad words.\n" " formatting characters from messages before it checks them for bad words.\n"
@ -73,20 +79,26 @@ msgid ""
" plugins that do coloring or bolding of text." " plugins that do coloring or bolding of text."
msgstr "" msgstr ""
#: config.py:101 #: config.py:117
msgid ""
"Determines whether the bot will filter its own\n"
" messages."
msgstr ""
#: 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."
msgstr "" msgstr ""
#: config.py:104 #: 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"
" language in the future." " language in the future."
msgstr "" msgstr ""
#: config.py:106 #: 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."
@ -100,7 +112,7 @@ msgid ""
" has op." " has op."
msgstr "" msgstr ""
#: plugin.py:115 #: plugin.py:127
#, docstring #, docstring
msgid "" msgid ""
"takes no arguments\n" "takes no arguments\n"
@ -109,11 +121,11 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:125 #: plugin.py:137
msgid "I'm not currently censoring any bad words." msgid "I'm not currently censoring any bad words."
msgstr "" msgstr ""
#: plugin.py:130 #: plugin.py:142
#, docstring #, docstring
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"
@ -122,7 +134,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: plugin.py:142 #: plugin.py:162
#, docstring #, docstring
msgid "" msgid ""
"<word> [<word> ...]\n" "<word> [<word> ...]\n"

View File

@ -1,6 +1,7 @@
### ###
# Copyright (c) 2002-2004, Jeremiah Fincher # Copyright (c) 2002-2004, Jeremiah Fincher
# Copyright (c) 2009, James McCoy # Copyright (c) 2009, James McCoy
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without
@ -103,9 +104,10 @@ class BadWords(callbacks.Privmsg):
self.lastModified = time.time() self.lastModified = time.time()
def outFilter(self, irc, msg): def outFilter(self, irc, msg):
channel = msg.channel
if self.filtering and msg.command == 'PRIVMSG' \ if self.filtering and msg.command == 'PRIVMSG' \
and (self.words() or self.phrases()): and (self.words() or self.phrases()) \
channel = msg.channel and self.registryValue('selfCensor', channel, irc.network):
self.updateRegexp(channel, irc.network) self.updateRegexp(channel, irc.network)
s = msg.args[1] s = msg.args[1]
if self.registryValue('stripFormatting'): if self.registryValue('stripFormatting'):

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2002-2004, Jeremiah Fincher # Copyright (c) 2002-2004, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -5,11 +5,13 @@ Documentation for the Channel plugin for Supybot
Purpose Purpose
------- -------
Basic channel management commands. Many of these commands require their caller Basic channel management commands. Many of these commands require their caller
to have the #channel,op capability. This plugin is loaded by default. to have the #channel,op capability. This plugin is loaded by default.
Usage Usage
----- -----
This plugin provides various commands for channel management, such This plugin provides various commands for channel management, such
as setting modes and channel-wide bans/ignores/capabilities. This is as setting modes and channel-wide bans/ignores/capabilities. This is
a core Supybot plugin that should not be removed! a core Supybot plugin that should not be removed!
@ -18,6 +20,7 @@ a core Supybot plugin that should not be removed!
Commands Commands
-------- --------
.. _command-channel-alert: .. _command-channel-alert:
alert [<channel>] <text> alert [<channel>] <text>
@ -111,7 +114,7 @@ halfop [<channel>] [<nick> ...]
.. _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 exact, 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. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-ignore.add: .. _command-channel-ignore.add:
@ -135,8 +138,8 @@ invite [<channel>] <nick>
.. _command-channel-kban: .. _command-channel-kban:
kban [<channel>] [--{exact,nick,user,host}] <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 these options as you choose. <reason> is a reason to give for the kick. <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. <channel> is only necessary if the message isn't sent in the channel itself.
.. _command-channel-key: .. _command-channel-key:
@ -222,7 +225,7 @@ Configuration
supybot.plugins.Channel.alwaysRejoin supybot.plugins.Channel.alwaysRejoin
This config variable defaults to "True", is network-specific, and is channel-specific. This config variable defaults to "True", is network-specific, and is channel-specific.
Determines whether the bot will always try to rejoin a channel whenever it's kicked from the channel. Determines whether the bot will always try to rejoin a channel whenever it's kicked from the channel.
@ -230,7 +233,7 @@ supybot.plugins.Channel.alwaysRejoin
supybot.plugins.Channel.nicksInPrivate supybot.plugins.Channel.nicksInPrivate
This config variable defaults to "True", is network-specific, and is channel-specific. This config variable defaults to "True", is network-specific, and is channel-specific.
Determines whether the output of 'nicks' will be sent in private. This prevents mass-highlights of a channel's users, accidental or on purpose. Determines whether the output of 'nicks' will be sent in private. This prevents mass-highlights of a channel's users, accidental or on purpose.
@ -238,7 +241,7 @@ supybot.plugins.Channel.nicksInPrivate
supybot.plugins.Channel.partMsg supybot.plugins.Channel.partMsg
This config variable defaults to "Limnoria $version", is network-specific, and is channel-specific. This config variable defaults to "Limnoria $version", is network-specific, and is channel-specific.
Determines what part message should be used by default. If the part command is called without a part message, this will be used. If this value is empty, then no part message will be used (they are optional in the IRC protocol). The standard substitutions ($version, $nick, etc.) are all handled appropriately. Determines what part message should be used by default. If the part command is called without a part message, this will be used. If this value is empty, then no part message will be used (they are optional in the IRC protocol). The standard substitutions ($version, $nick, etc.) are all handled appropriately.
@ -246,7 +249,7 @@ supybot.plugins.Channel.partMsg
supybot.plugins.Channel.public supybot.plugins.Channel.public
This config variable defaults to "True", is not network-specific, and is not channel-specific. This config variable defaults to "True", is not network-specific, and is not channel-specific.
Determines whether this plugin is publicly visible. Determines whether this plugin is publicly visible.
@ -254,7 +257,7 @@ supybot.plugins.Channel.public
supybot.plugins.Channel.rejoinDelay supybot.plugins.Channel.rejoinDelay
This config variable defaults to "0", is network-specific, and is channel-specific. This config variable defaults to "0", is network-specific, and is channel-specific.
Determines how many seconds the bot will wait before rejoining a channel if kicked and supybot.plugins.Channel.alwaysRejoin is on. Determines how many seconds the bot will wait before rejoining a channel if kicked and supybot.plugins.Channel.alwaysRejoin is on.

View File

@ -1,5 +1,6 @@
### ###
# Copyright (c) 2004-2005, Jeremiah Fincher # Copyright (c) 2004-2005, Jeremiah Fincher
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

View File

@ -1,6 +1,7 @@
### ###
# Copyright (c) 2004-2005, Jeremiah Fincher # Copyright (c) 2004-2005, Jeremiah Fincher
# Copyright (c) 2009, James McCoy # Copyright (c) 2009, James McCoy
# Copyright (c) 2010-2021, Valentin Lorentz
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # Redistribution and use in source and binary forms, with or without

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