├── .gitattributes ├── Scheme ├── README.md ├── local │ └── __init__.py ├── pyproject.toml └── config.py ├── Bitoduc ├── README.md ├── local │ └── __init__.py └── pyproject.toml ├── Wikipedia ├── README.md ├── local │ └── __init__.py ├── pyproject.toml ├── messages.pot └── locales │ └── it.po ├── Biography ├── README.md ├── local │ └── __init__.py └── pyproject.toml ├── Debian ├── README.md └── pyproject.toml ├── Iwant ├── README.md ├── local │ └── __init__.py ├── pyproject.toml ├── messages.pot └── locales │ └── fr.po ├── Redmine ├── README.md ├── local │ └── __init__.py └── pyproject.toml ├── ListEmpty ├── README.md ├── local │ └── __init__.py ├── pyproject.toml ├── test.py └── config.py ├── MemoryProfiler ├── README.md ├── local │ └── __init__.py ├── pyproject.toml └── test.py ├── SkypeRelay ├── README.md ├── local │ └── __init__.py ├── pyproject.toml └── test.py ├── Apt ├── local │ └── __init__.py ├── pyproject.toml └── README.md ├── Dnsbl ├── README.md ├── local │ └── __init__.py └── pyproject.toml ├── Listener ├── README.md ├── local │ └── __init__.py ├── pyproject.toml └── test.py ├── OEIS ├── README.md ├── local │ └── __init__.py ├── pyproject.toml └── test.py ├── PPP ├── local │ └── __init__.py ├── README.md └── pyproject.toml ├── Variables ├── README.md ├── local │ └── __init__.py ├── pyproject.toml ├── messages.pot └── config.py ├── WikiTrans ├── README.md ├── local │ └── __init__.py ├── pyproject.toml ├── messages.pot ├── locales │ └── it.po └── config.py ├── Coffee ├── local │ └── __init__.py ├── README.md ├── pyproject.toml ├── messages.pot ├── locales │ ├── it.po │ └── fi.po ├── test.py └── config.py ├── Coinpan ├── local │ └── __init__.py ├── README.md └── pyproject.toml ├── Eureka ├── local │ └── __init__.py ├── pyproject.toml └── README.md ├── Fortune ├── local │ └── __init__.py ├── README.md └── pyproject.toml ├── GitHub ├── local │ └── __init__.py └── pyproject.toml ├── Json ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── test.py ├── Kickme ├── local │ └── __init__.py ├── README.md ├── pyproject.toml ├── test.py ├── config.py └── plugin.py ├── PingTime ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── config.py ├── Pinglist ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── config.py ├── Stocks ├── local │ └── __init__.py ├── README.md ├── pyproject.toml ├── test.py ├── __init__.py └── config.py ├── Sudo ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── messages.pot ├── Trigger ├── local │ └── __init__.py ├── README.md ├── pyproject.toml ├── messages.pot └── locales │ └── it.po ├── Trivia ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── test.py ├── WebDoc ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── test.py ├── WebLogs ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── test.py ├── WebStats ├── local │ └── __init__.py ├── pyproject.toml ├── README.md └── test.py ├── Website ├── local │ └── __init__.py ├── README.md ├── pyproject.toml ├── test.py └── config.py ├── AutoTrans ├── local │ └── __init__.py ├── README.md └── pyproject.toml ├── Brainfuck ├── local │ └── __init__.py ├── README.md ├── pyproject.toml ├── messages.pot └── config.py ├── ChannelStatus ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── test.py ├── Cleverbot ├── local │ └── __init__.py ├── pyproject.toml ├── test.py ├── README.md ├── __init__.py └── config.py ├── EchoTyping ├── local │ └── __init__.py ├── pyproject.toml ├── README.md └── test.py ├── Glob2Chan ├── local │ └── __init__.py ├── README.md ├── pycountry │ └── tests.py ├── pyproject.toml └── test.py ├── GoodFrench ├── local │ └── __init__.py ├── README.md ├── logs │ └── messages.log └── pyproject.toml ├── LinkRelay ├── local │ └── __init__.py ├── README.md └── pyproject.toml ├── Markovgen ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── test.py ├── MilleBornes ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── plugin.py ├── NickTracker ├── local │ └── __init__.py ├── pyproject.toml ├── test.py └── __init__.py ├── NoisyKarma ├── local │ └── __init__.py ├── README.md └── pyproject.toml ├── RateLimit ├── local │ └── __init__.py ├── README.md └── pyproject.toml ├── SilencePlugin ├── local │ └── __init__.py ├── README.md └── pyproject.toml ├── StdoutCapture ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── test.py ├── SupySandbox ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── config.py ├── AttackProtector ├── local │ └── __init__.py ├── pyproject.toml ├── README.md ├── locales │ ├── fr.po │ ├── it.po │ └── fi.po └── messages.pot ├── I18nPlaceholder ├── local │ └── __init__.py ├── README.md ├── pyproject.toml ├── test.py └── plugin.py ├── IgnoreNonVoice ├── local │ └── __init__.py ├── README.md ├── pyproject.toml └── test.py ├── RelayedCommands ├── local │ └── __init__.py ├── pyproject.toml └── README.rst ├── Seeks ├── README.md ├── pyproject.toml └── test.py ├── pyproject.toml ├── .editorconfig ├── .gitignore ├── requirements.txt ├── WunderWeather ├── README.md └── pyproject.toml ├── .mailmap ├── PackageInfo ├── pyproject.toml ├── test.py ├── __init__.py └── README.txt └── .travis.yml /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /Scheme/README.md: -------------------------------------------------------------------------------- 1 | Scheme interpreter. 2 | -------------------------------------------------------------------------------- /Bitoduc/README.md: -------------------------------------------------------------------------------- 1 | Interface to bitoduc.fr 2 | -------------------------------------------------------------------------------- /Wikipedia/README.md: -------------------------------------------------------------------------------- 1 | Grabs data from Wikipedia. 2 | -------------------------------------------------------------------------------- /Biography/README.md: -------------------------------------------------------------------------------- 1 | “user-specific” variable storage. 2 | -------------------------------------------------------------------------------- /Debian/README.md: -------------------------------------------------------------------------------- 1 | Fetches data from Debian's websites. 2 | -------------------------------------------------------------------------------- /Iwant/README.md: -------------------------------------------------------------------------------- 1 | Stores a simple list of users' wishes. 2 | -------------------------------------------------------------------------------- /Redmine/README.md: -------------------------------------------------------------------------------- 1 | Grabs data from the Redmine API. 2 | -------------------------------------------------------------------------------- /ListEmpty/README.md: -------------------------------------------------------------------------------- 1 | This plugin lists channels with a few users. 2 | -------------------------------------------------------------------------------- /MemoryProfiler/README.md: -------------------------------------------------------------------------------- 1 | Collects informations about memory usage. 2 | -------------------------------------------------------------------------------- /SkypeRelay/README.md: -------------------------------------------------------------------------------- 1 | Relays between IRC channels and Skype group chats 2 | -------------------------------------------------------------------------------- /Apt/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Dnsbl/README.md: -------------------------------------------------------------------------------- 1 | Bans clients connecting from hosts listed in DNS blacklists 2 | -------------------------------------------------------------------------------- /Listener/README.md: -------------------------------------------------------------------------------- 1 | Run a telnet server and announce messages to a channel. 2 | 3 | -------------------------------------------------------------------------------- /OEIS/README.md: -------------------------------------------------------------------------------- 1 | Graps data from the Online Encyclopedia of Integer Sequences. 2 | -------------------------------------------------------------------------------- /PPP/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Variables/README.md: -------------------------------------------------------------------------------- 1 | Variable storage. 2 | Could be useful in nested commands. 3 | -------------------------------------------------------------------------------- /WikiTrans/README.md: -------------------------------------------------------------------------------- 1 | Translates words using the Wikipedia interlanguage links. 2 | -------------------------------------------------------------------------------- /Bitoduc/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Coffee/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Coinpan/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Dnsbl/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Eureka/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Fortune/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /GitHub/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Iwant/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Json/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Kickme/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Listener/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /OEIS/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /PingTime/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Pinglist/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Redmine/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Scheme/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Stocks/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Sudo/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Trigger/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Trivia/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /WebDoc/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /WebLogs/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /WebStats/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Website/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /AutoTrans/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Biography/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Brainfuck/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /ChannelStatus/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Cleverbot/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /EchoTyping/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Glob2Chan/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /GoodFrench/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /LinkRelay/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /ListEmpty/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Markovgen/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /MilleBornes/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /NickTracker/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /NoisyKarma/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /RateLimit/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /SilencePlugin/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /SkypeRelay/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /StdoutCapture/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /SupySandbox/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Variables/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /WikiTrans/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /Wikipedia/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /AttackProtector/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /I18nPlaceholder/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /IgnoreNonVoice/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /MemoryProfiler/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /MilleBornes/README.md: -------------------------------------------------------------------------------- 1 | Mille Bornes game. 2 | 3 | Does not work yet and probably never will. 4 | -------------------------------------------------------------------------------- /RelayedCommands/local/__init__.py: -------------------------------------------------------------------------------- 1 | # Stub so local is a module, used for third-party modules 2 | -------------------------------------------------------------------------------- /GoodFrench/README.md: -------------------------------------------------------------------------------- 1 | Détecte des fautes de frappe, d’orthographe, de grammaire, et de typographie. 2 | -------------------------------------------------------------------------------- /Fortune/README.md: -------------------------------------------------------------------------------- 1 | Insert a description of your plugin here, with any notes, etc. about 2 | using it. 3 | -------------------------------------------------------------------------------- /Markovgen/README.md: -------------------------------------------------------------------------------- 1 | Insert a description of your plugin here, with any notes, etc. about 2 | using it. 3 | -------------------------------------------------------------------------------- /PingTime/README.md: -------------------------------------------------------------------------------- 1 | When A pings B, and B answers with “pong”, shows the time between these 2 | two messages. 3 | -------------------------------------------------------------------------------- /StdoutCapture/README.md: -------------------------------------------------------------------------------- 1 | Allows printing last stdout content to IRC. 2 | Useful if the bot is running as daemon. 3 | -------------------------------------------------------------------------------- /Seeks/README.md: -------------------------------------------------------------------------------- 1 | This is a basic but highly configurable plugin that allows to call 2 | a Seeks node (ie. a search engine). 3 | -------------------------------------------------------------------------------- /Coinpan/README.md: -------------------------------------------------------------------------------- 1 | Remplace « coin » et ses variantes par « pan » ou une variante 2 | correspondante dans les messages du salon. 3 | -------------------------------------------------------------------------------- /I18nPlaceholder/README.md: -------------------------------------------------------------------------------- 1 | Provides a fake `supybot.i18n` to plugins requiring it, so they work on a 2 | stock Supybot instance. 3 | -------------------------------------------------------------------------------- /Json/README.md: -------------------------------------------------------------------------------- 1 | Offers commands to manipulate a JSON tree. 2 | 3 | See http://stedolan.github.io/jq/tutorial/ for the syntax. 4 | -------------------------------------------------------------------------------- /WebDoc/README.md: -------------------------------------------------------------------------------- 1 | This plugins displays help of Supybot commands via the HTTP server. 2 | 3 | **This plugin requires Limnoria.** 4 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.black] 2 | line-length = 79 3 | 4 | include = '(Dnsbl|EchoTyping|NickTracker|RelayedCommands)/.*\.pyi?$' 5 | -------------------------------------------------------------------------------- /ChannelStatus/README.md: -------------------------------------------------------------------------------- 1 | Web interface for displaying channel-related data (topic, users, …) 2 | 3 | **This plugin requires Limnoria.** 4 | -------------------------------------------------------------------------------- /Stocks/README.md: -------------------------------------------------------------------------------- 1 | Provides access to stocks data 2 | 3 | Based on [sopel-stocks by Rusty Bower](https://github.com/RustyBower/sopel-stocks/) 4 | -------------------------------------------------------------------------------- /WebLogs/README.md: -------------------------------------------------------------------------------- 1 | Insert a description of your plugin here, with any notes, etc. about using it. 2 | 3 | **This plugin requires Limnoria.** 4 | -------------------------------------------------------------------------------- /Website/README.md: -------------------------------------------------------------------------------- 1 | Insert a description of your plugin here, with any notes, etc. about using it. 2 | 3 | **This plugin requires Limnoria.** 4 | -------------------------------------------------------------------------------- /NoisyKarma/README.md: -------------------------------------------------------------------------------- 1 | Snarfes channels for items in the Karma plugin's database, and reacts 2 | to them. 3 | 4 | (The idea comes from a naobot plugin.) 5 | -------------------------------------------------------------------------------- /RateLimit/README.md: -------------------------------------------------------------------------------- 1 | Provides fine-grained rate-limiting of commands, allowing a rate to be 2 | set per-command, on calls/time or calls/user/time basis. 3 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | insert_final_newline = true 5 | indent_style = space 6 | 7 | [*.py] 8 | indent_size = 4 9 | max_line_length = 79 10 | -------------------------------------------------------------------------------- /Kickme/README.md: -------------------------------------------------------------------------------- 1 | Provides a command for users to be able to kick themselves. 2 | Useful as a trigger (using Conditional and MessageParser/Trigger, 3 | for instance). 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | backup 2 | build 3 | test-data 4 | test-conf 5 | test-logs 6 | *.pyc 7 | docs/_build 8 | docs/plugins 9 | *.swp 10 | *.swo 11 | *~ 12 | *.mo 13 | README.txt 14 | -------------------------------------------------------------------------------- /Trigger/README.md: -------------------------------------------------------------------------------- 1 | Trigger is a very basic plugin, that allows channel ops to trigger commands 2 | by an event on there channel (join, part, quit, ...), through the 3 | configuration. 4 | -------------------------------------------------------------------------------- /Pinglist/README.md: -------------------------------------------------------------------------------- 1 | Provides a “meeting” database. 2 | Every user can subscribe to a meeting. 3 | 4 | When someone uses the `@pingall` command, all users of this meeting 5 | will be notified. 6 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | chardet 2 | django 3 | lxml 4 | beautifulsoup4 5 | python-twitter 6 | requests 7 | pygraphviz 8 | oauth2 9 | python-oauth2 10 | unicode_tex 11 | markovgen 12 | lz4-cffi 13 | -------------------------------------------------------------------------------- /SilencePlugin/README.md: -------------------------------------------------------------------------------- 1 | This plugin offers “muting” feature for plugins, for instance if you want 2 | to use a plugin without showing its output, or if you want a lobotomy-like 3 | feature for only one plugin. 4 | 5 | -------------------------------------------------------------------------------- /Coffee/README.md: -------------------------------------------------------------------------------- 1 | Makes coffee using the Hyper Text Coffee Pot Control Protocol 2 | (HTCPCP/1.0). More info at http://www.ietf.org/rfc/rfc2324.txt 3 | Warning: this command has side effect if no compatible device 4 | is found on the channel. 5 | -------------------------------------------------------------------------------- /IgnoreNonVoice/README.md: -------------------------------------------------------------------------------- 1 | This plugin ignores users who aren't voiced. Can also be configured to 2 | only work when the channel is moderated `mode +m`. Useful with reduced 3 | moderation (`mode +z`) on charybdis-based IRCds (including freenode's 4 | ircd-seven). 5 | -------------------------------------------------------------------------------- /PPP/README.md: -------------------------------------------------------------------------------- 1 | This plugin provides a simple interface to the API of the 2 | [Projet Pensées Profondes](http://projetpp.github.io/) (PPP). 3 | 4 | The PPP is a question-answering framework which provides an HTTP 5 | API this plugin uses to answer questions asked in natural language. 6 | -------------------------------------------------------------------------------- /AutoTrans/README.md: -------------------------------------------------------------------------------- 1 | Allows to set a user -> language map (in `supybot.plugins.AutoTrans.queries`), 2 | and when a message written in another language is sent on the channel, the 3 | user gets a translation of the message in a query. 4 | 5 | Uses Google Translation for language detection and translation. 6 | -------------------------------------------------------------------------------- /Glob2Chan/README.md: -------------------------------------------------------------------------------- 1 | This plugin is designed for the channel #glob2 @ OFTC, which deals with 2 | the Globulation 2 real-time strategy game. Check out http://globulation2.org/ 3 | for more informations. 4 | 5 | **This plugin requires Limnoria.** 6 | 7 | There is no reason to use this plugin for other usage, but I publish it 8 | anyway, because libre software is the Good. 9 | -------------------------------------------------------------------------------- /Sudo/README.md: -------------------------------------------------------------------------------- 1 | This plugin allows to run command as someone else, according to the rules 2 | the owner added. 3 | 4 | Be careful, this plugin can be *DANGEROUS* (at least as dangerous as the owner 5 | is), use it at your *OWN RISKS*. 6 | If you don't know how to use it, DON'T USE IT. 7 | If you don't know what you do, DON'T DO IT. 8 | If you don't know what the frak you are doing is, DON'T DO IT. 9 | -------------------------------------------------------------------------------- /LinkRelay/README.md: -------------------------------------------------------------------------------- 1 | LinkRelay is an alternative to the official Relay plugin. As Relay can 2 | relay only between channels with the same name, LinkRelay is highly 3 | configurable, and can be used to relay from any channel to any channel. 4 | 5 | More over, LinkRelay offers unique features, such as coloring the 6 | non-PRIVMSG messages (i.e. joins, parts, quits, kicks, nick changes, ...), 7 | non-reciprocal relays, or messages filtering (by regexp). 8 | -------------------------------------------------------------------------------- /Glob2Chan/pycountry/tests.py: -------------------------------------------------------------------------------- 1 | # vim:fileencoding=utf-8 2 | # Copyright (c) 2008 gocept gmbh & co. kg 3 | # See also LICENSE.txt 4 | # $Id$ 5 | """Test harness for pycountry.""" 6 | 7 | import doctest 8 | import unittest 9 | 10 | 11 | def test_suite(): 12 | suite = unittest.TestSuite() 13 | suite.addTest(doctest.DocFileSuite('README.txt', 14 | optionflags=doctest.ELLIPSIS)) 15 | return suite 16 | -------------------------------------------------------------------------------- /SupySandbox/README.md: -------------------------------------------------------------------------------- 1 | SupySandbox is currently deprecated, do not use this plugin. 2 | 3 | # SupySandbox 4 | 5 | SupySandbox provides a safe way to allow everybody to run Python code from IRC 6 | thanks to haypo's [pysandbox]. 7 | 8 | SupySandbox also aims to provide a powerful safe (i.e. anyone can run code 9 | without lateral effect on the bot or the host computer) scripting language, 10 | but it is blocked by technical problems. 11 | 12 | [pysandbox]:https://github.com/haypo/pysandbox 13 | -------------------------------------------------------------------------------- /Trivia/README.md: -------------------------------------------------------------------------------- 1 | # Trivia 2 | 3 | Simple trivia plugin for Limnoria, which asks a channel questions, gives hints, 4 | and awards points for good answer. 5 | 6 | Questions and answers should be in the file `questions.txt` (path is configurable 7 | as `supybot.plugins.Trivia.questionFile`. 8 | 9 | The format of this file is: on each line, write a question, followed by the `*` 10 | separator, followed by the answer. The separator is configurable as 11 | `supybot.plugins.Trivia.questionFileSeparator`. 12 | -------------------------------------------------------------------------------- /WunderWeather/README.md: -------------------------------------------------------------------------------- 1 | Plugin which allows users to query weather conditions from Wunderground 2 | using their XML API. 3 | 4 | To use: 5 | Download WunderWeather source 6 | Place source files in your supybot plugins folder 7 | Call "load WunderWeather" on your supybot 8 | 9 | Configurable options: 10 | supybot.plugins.WunderWeather.metric 11 | supybot.plugins.WunderWeather.imperial 12 | supybot.plugins.WunderWeather.showPressure 13 | supybot.plugins.WunderWeather.forecastDays 14 | 15 | Dependencies: 16 | None 17 | 18 | -------------------------------------------------------------------------------- /Brainfuck/README.md: -------------------------------------------------------------------------------- 1 | Brainfuck interpreter. See Wikipedia page for more informations. 2 | 3 | This plugin supports the standard Brainfuck specifications. 4 | 5 | Notes about this implementation: 6 | * The size of a memory cell is mostly unlimited (see Python limits of integers 7 | for more informations) 8 | * The number of memory cells is mostly unlimited (see Python maximum list size 9 | for more informations) 10 | * As user can input characters in the console, he must give them as the 11 | --input parameter when calling the command. 12 | -------------------------------------------------------------------------------- /GoodFrench/logs/messages.log: -------------------------------------------------------------------------------- 1 | ERROR 2010-11-06T18:41:06 supybot Invalid user dictionary file, resetting to empty. 2 | ERROR 2010-11-06T18:41:06 supybot Exact error: IOError: [Errno 2] No such file or directory: 'conf/users.conf' 3 | ERROR 2010-11-06T18:41:06 supybot Invalid channel database, resetting to empty. 4 | ERROR 2010-11-06T18:41:06 supybot Exact error: IOError: [Errno 2] No such file or directory: 'conf/channels.conf' 5 | WARNING 2010-11-06T18:41:06 supybot Couldn't open ignore database: [Errno 2] No such file or directory: 'conf/ignores.conf' 6 | INFO 2010-11-06T18:41:07 supybot Shutdown initiated. 7 | -------------------------------------------------------------------------------- /.mailmap: -------------------------------------------------------------------------------- 1 | Mikaela Suomalainen Mika Suomalainen 2 | Mikaela Suomalainen Mikaela Suomalainen 3 | Mikaela Suomalainen Mika Suomalainen 4 | Mikaela Suomalainen Mika Suomalainen 5 | Mikaela Suomalainen Mika Suomalainen 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Stocks/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-stocks" 6 | version = "0.0.0" 7 | authors = [ 8 | 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Stocks = "limnoria_stocks" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_stocks" = "." 25 | "limnoria_stocks.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_stocks" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Apt/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-apt" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Apt = "limnoria_apt" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_apt" = "." 25 | "limnoria_apt.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_apt" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /PPP/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-ppp" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | PPP = "limnoria_ppp" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_ppp" = "." 25 | "limnoria_ppp.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_ppp" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Cleverbot/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-cleverbot" 6 | version = "0.0.0" 7 | authors = [ 8 | 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Cleverbot = "limnoria_cleverbot" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_cleverbot" = "." 25 | "limnoria_cleverbot.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_cleverbot" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Json/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-json" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Json = "limnoria_json" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_json" = "." 25 | "limnoria_json.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_json" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /OEIS/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-oeis" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | OEIS = "limnoria_oeis" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_oeis" = "." 25 | "limnoria_oeis.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_oeis" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Sudo/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-sudo" 6 | version = "0.1" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Sudo = "limnoria_sudo" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_sudo" = "." 25 | "limnoria_sudo.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_sudo" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Dnsbl/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-dnsbl" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Dnsbl = "limnoria_dnsbl" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_dnsbl" = "." 25 | "limnoria_dnsbl.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_dnsbl" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Iwant/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-iwant" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Iwant = "limnoria_iwant" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_iwant" = "." 25 | "limnoria_iwant.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_iwant" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Coffee/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-coffee" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Coffee = "limnoria_coffee" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_coffee" = "." 25 | "limnoria_coffee.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_coffee" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Eureka/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-eureka" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Eureka = "limnoria_eureka" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_eureka" = "." 25 | "limnoria_eureka.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_eureka" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /GitHub/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-github" 6 | version = "0.1" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | GitHub = "limnoria_github" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_github" = "." 25 | "limnoria_github.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_github" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Kickme/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-kickme" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Kickme = "limnoria_kickme" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_kickme" = "." 25 | "limnoria_kickme.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_kickme" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /PackageInfo/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-packageinfo" 6 | version = "0.9.1" 7 | authors = [ 8 | 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | PackageInfo = "limnoria_packageinfo" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_packageinfo" = "." 25 | "limnoria_packageinfo.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_packageinfo" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Scheme/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-scheme" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Scheme = "limnoria_scheme" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_scheme" = "." 25 | "limnoria_scheme.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_scheme" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /WebDoc/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-webdoc" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | WebDoc = "limnoria_webdoc" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_webdoc" = "." 25 | "limnoria_webdoc.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_webdoc" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Bitoduc/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-bitoduc" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Bitoduc = "limnoria_bitoduc" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_bitoduc" = "." 25 | "limnoria_bitoduc.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_bitoduc" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Coinpan/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-coinpan" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Coinpan = "limnoria_coinpan" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_coinpan" = "." 25 | "limnoria_coinpan.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_coinpan" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Fortune/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-fortune" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Fortune = "limnoria_fortune" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_fortune" = "." 25 | "limnoria_fortune.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_fortune" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Redmine/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-redmine" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Redmine = "limnoria_redmine" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_redmine" = "." 25 | "limnoria_redmine.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_redmine" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Trigger/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-trigger" 6 | version = "0.1" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Trigger = "limnoria_trigger" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_trigger" = "." 25 | "limnoria_trigger.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_trigger" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /WebLogs/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-weblogs" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | WebLogs = "limnoria_weblogs" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_weblogs" = "." 25 | "limnoria_weblogs.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_weblogs" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Website/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-website" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Website = "limnoria_website" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_website" = "." 25 | "limnoria_website.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_website" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /WebStats/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-webstats" 6 | version = "0.5" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | WebStats = "limnoria_webstats" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_webstats" = "." 25 | "limnoria_webstats.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_webstats" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /PingTime/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-pingtime" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | PingTime = "limnoria_pingtime" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_pingtime" = "." 25 | "limnoria_pingtime.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_pingtime" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Pinglist/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-pinglist" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Pinglist = "limnoria_pinglist" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_pinglist" = "." 25 | "limnoria_pinglist.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_pinglist" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /AutoTrans/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-autotrans" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | AutoTrans = "limnoria_autotrans" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_autotrans" = "." 25 | "limnoria_autotrans.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_autotrans" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Biography/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-biography" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Biography = "limnoria_biography" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_biography" = "." 25 | "limnoria_biography.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_biography" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Brainfuck/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-brainfuck" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Brainfuck = "limnoria_brainfuck" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_brainfuck" = "." 25 | "limnoria_brainfuck.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_brainfuck" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Glob2Chan/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-glob2chan" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Glob2Chan = "limnoria_glob2chan" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_glob2chan" = "." 25 | "limnoria_glob2chan.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_glob2chan" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /ListEmpty/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-listempty" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | ListEmpty = "limnoria_listempty" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_listempty" = "." 25 | "limnoria_listempty.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_listempty" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /RateLimit/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-ratelimit" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | RateLimit = "limnoria_ratelimit" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_ratelimit" = "." 25 | "limnoria_ratelimit.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_ratelimit" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Variables/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-variables" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | Variables = "limnoria_variables" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_variables" = "." 25 | "limnoria_variables.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_variables" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /WikiTrans/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-wikitrans" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | WikiTrans = "limnoria_wikitrans" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_wikitrans" = "." 25 | "limnoria_wikitrans.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_wikitrans" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /GoodFrench/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-goodfrench" 6 | version = "0.1" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | GoodFrench = "limnoria_goodfrench" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_goodfrench" = "." 25 | "limnoria_goodfrench.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_goodfrench" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Debian/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-debian" 6 | version = "0.1" 7 | authors = [ 8 | { name = "James Vega" }, 9 | { name = "Valentin Lorentz" }, 10 | ] 11 | readme = "README.md" 12 | dependencies = [ 13 | "limnoria", 14 | ] 15 | classifiers = [ 16 | 'Environment :: Plugins', 17 | 'Programming Language :: Python :: 3', 18 | 'Topic :: Communications :: Chat', 19 | ] 20 | 21 | [project.entry-points.'limnoria.plugins'] 22 | Debian = "limnoria_debian" 23 | 24 | [tool.setuptools.package-dir] 25 | "limnoria_debian" = "." 26 | "limnoria_debian.local" = "local/" 27 | 28 | [tool.setuptools.package-data] 29 | "limnoria_debian" = ["locales/*.po"] 30 | -------------------------------------------------------------------------------- /EchoTyping/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-echotyping" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | EchoTyping = "limnoria_echotyping" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_echotyping" = "." 25 | "limnoria_echotyping.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_echotyping" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /NoisyKarma/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-noisykarma" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | NoisyKarma = "limnoria_noisykarma" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_noisykarma" = "." 25 | "limnoria_noisykarma.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_noisykarma" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Seeks/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-seeks" 6 | version = "0.1.1" 7 | authors = [ 8 | { name = "Pablo Joubert" }, 9 | { name = "Valentin Lorentz" }, 10 | ] 11 | readme = "README.md" 12 | dependencies = [ 13 | "limnoria", 14 | ] 15 | classifiers = [ 16 | 'Environment :: Plugins', 17 | 'Programming Language :: Python :: 3', 18 | 'Topic :: Communications :: Chat', 19 | ] 20 | 21 | [project.entry-points.'limnoria.plugins'] 22 | Seeks = "limnoria_seeks" 23 | 24 | [tool.setuptools.package-dir] 25 | "limnoria_seeks" = "." 26 | "limnoria_seeks.local" = "local/" 27 | 28 | [tool.setuptools.package-data] 29 | "limnoria_seeks" = ["locales/*.po"] 30 | -------------------------------------------------------------------------------- /MilleBornes/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-millebornes" 6 | version = "0.1" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | MilleBornes = "limnoria_millebornes" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_millebornes" = "." 25 | "limnoria_millebornes.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_millebornes" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /NickTracker/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-nicktracker" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | NickTracker = "limnoria_nicktracker" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_nicktracker" = "." 25 | "limnoria_nicktracker.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_nicktracker" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /SupySandbox/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-supysandbox" 6 | version = "0.1" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | SupySandbox = "limnoria_supysandbox" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_supysandbox" = "." 25 | "limnoria_supysandbox.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_supysandbox" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Trivia/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-trivia" 6 | version = "1.0" 7 | authors = [ 8 | { name = "quantumlemur" }, 9 | { name = "Valentin Lorentz" }, 10 | ] 11 | readme = "README.md" 12 | dependencies = [ 13 | "limnoria", 14 | ] 15 | classifiers = [ 16 | 'Environment :: Plugins', 17 | 'Programming Language :: Python :: 3', 18 | 'Topic :: Communications :: Chat', 19 | ] 20 | 21 | [project.entry-points.'limnoria.plugins'] 22 | Trivia = "limnoria_trivia" 23 | 24 | [tool.setuptools.package-dir] 25 | "limnoria_trivia" = "." 26 | "limnoria_trivia.local" = "local/" 27 | 28 | [tool.setuptools.package-data] 29 | "limnoria_trivia" = ["locales/*.po"] 30 | -------------------------------------------------------------------------------- /Markovgen/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-markovgen" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | "markovgen", 14 | ] 15 | classifiers = [ 16 | 'Environment :: Plugins', 17 | 'Programming Language :: Python :: 3', 18 | 'Topic :: Communications :: Chat', 19 | ] 20 | 21 | [project.entry-points.'limnoria.plugins'] 22 | Markovgen = "limnoria_markovgen" 23 | 24 | [tool.setuptools.package-dir] 25 | "limnoria_markovgen" = "." 26 | "limnoria_markovgen.local" = "local/" 27 | 28 | [tool.setuptools.package-data] 29 | "limnoria_markovgen" = ["locales/*.po"] 30 | -------------------------------------------------------------------------------- /SkypeRelay/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-skyperelay" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | "SkPy", 14 | ] 15 | classifiers = [ 16 | 'Environment :: Plugins', 17 | 'Programming Language :: Python :: 3', 18 | 'Topic :: Communications :: Chat', 19 | ] 20 | 21 | [project.entry-points.'limnoria.plugins'] 22 | SkypeRelay = "limnoria_skyperelay" 23 | 24 | [tool.setuptools.package-dir] 25 | "limnoria_skyperelay" = "." 26 | "limnoria_skyperelay.local" = "local/" 27 | 28 | [tool.setuptools.package-data] 29 | "limnoria_skyperelay" = ["locales/*.po"] 30 | -------------------------------------------------------------------------------- /ChannelStatus/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-channelstatus" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | ChannelStatus = "limnoria_channelstatus" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_channelstatus" = "." 25 | "limnoria_channelstatus.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_channelstatus" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Listener/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-listener" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "quantumlemur" }, 9 | { name = "Valentin Lorentz" }, 10 | ] 11 | readme = "README.md" 12 | dependencies = [ 13 | "limnoria", 14 | ] 15 | classifiers = [ 16 | 'Environment :: Plugins', 17 | 'Programming Language :: Python :: 3', 18 | 'Topic :: Communications :: Chat', 19 | ] 20 | 21 | [project.entry-points.'limnoria.plugins'] 22 | Listener = "limnoria_listener" 23 | 24 | [tool.setuptools.package-dir] 25 | "limnoria_listener" = "." 26 | "limnoria_listener.local" = "local/" 27 | 28 | [tool.setuptools.package-data] 29 | "limnoria_listener" = ["locales/*.po"] 30 | -------------------------------------------------------------------------------- /SilencePlugin/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-silenceplugin" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | SilencePlugin = "limnoria_silenceplugin" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_silenceplugin" = "." 25 | "limnoria_silenceplugin.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_silenceplugin" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /StdoutCapture/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-stdoutcapture" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | StdoutCapture = "limnoria_stdoutcapture" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_stdoutcapture" = "." 25 | "limnoria_stdoutcapture.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_stdoutcapture" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /WunderWeather/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-wunderweather" 6 | version = "%%VERSION%%" 7 | authors = [ 8 | { name = "James Vega" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | WunderWeather = "limnoria_wunderweather" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_wunderweather" = "." 25 | "limnoria_wunderweather.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_wunderweather" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /IgnoreNonVoice/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-ignorenonvoice" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | IgnoreNonVoice = "limnoria_ignorenonvoice" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_ignorenonvoice" = "." 25 | "limnoria_ignorenonvoice.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_ignorenonvoice" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /LinkRelay/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-linkrelay" 6 | version = "0.1" 7 | authors = [ 8 | { name = "quantumlemur" }, 9 | { name = "Valentin Lorentz" }, 10 | ] 11 | readme = "README.md" 12 | dependencies = [ 13 | "limnoria", 14 | ] 15 | classifiers = [ 16 | 'Environment :: Plugins', 17 | 'Programming Language :: Python :: 3', 18 | 'Topic :: Communications :: Chat', 19 | ] 20 | 21 | [project.entry-points.'limnoria.plugins'] 22 | LinkRelay = "limnoria_linkrelay" 23 | 24 | [tool.setuptools.package-dir] 25 | "limnoria_linkrelay" = "." 26 | "limnoria_linkrelay.local" = "local/" 27 | 28 | [tool.setuptools.package-data] 29 | "limnoria_linkrelay" = ["locales/*.po"] 30 | -------------------------------------------------------------------------------- /MemoryProfiler/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-memoryprofiler" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | MemoryProfiler = "limnoria_memoryprofiler" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_memoryprofiler" = "." 25 | "limnoria_memoryprofiler.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_memoryprofiler" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /Wikipedia/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-wikipedia" 6 | version = "0.1" 7 | authors = [ 8 | { name = "quantumlemur" }, 9 | { name = "Valentin Lorentz" }, 10 | ] 11 | readme = "README.md" 12 | dependencies = [ 13 | "limnoria", 14 | ] 15 | classifiers = [ 16 | 'Environment :: Plugins', 17 | 'Programming Language :: Python :: 3', 18 | 'Topic :: Communications :: Chat', 19 | ] 20 | 21 | [project.entry-points.'limnoria.plugins'] 22 | Wikipedia = "limnoria_wikipedia" 23 | 24 | [tool.setuptools.package-dir] 25 | "limnoria_wikipedia" = "." 26 | "limnoria_wikipedia.local" = "local/" 27 | 28 | [tool.setuptools.package-data] 29 | "limnoria_wikipedia" = ["locales/*.po"] 30 | -------------------------------------------------------------------------------- /AttackProtector/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-attackprotector" 6 | version = "0.2" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | AttackProtector = "limnoria_attackprotector" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_attackprotector" = "." 25 | "limnoria_attackprotector.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_attackprotector" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /I18nPlaceholder/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-i18nplaceholder" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | I18nPlaceholder = "limnoria_i18nplaceholder" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_i18nplaceholder" = "." 25 | "limnoria_i18nplaceholder.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_i18nplaceholder" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /RelayedCommands/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools"] 3 | 4 | [project] 5 | name = "limnoria-relayedcommands" 6 | version = "0.0.0" 7 | authors = [ 8 | { name = "Valentin Lorentz" }, 9 | ] 10 | readme = "README.md" 11 | dependencies = [ 12 | "limnoria", 13 | ] 14 | classifiers = [ 15 | 'Environment :: Plugins', 16 | 'Programming Language :: Python :: 3', 17 | 'Topic :: Communications :: Chat', 18 | ] 19 | 20 | [project.entry-points.'limnoria.plugins'] 21 | RelayedCommands = "limnoria_relayedcommands" 22 | 23 | [tool.setuptools.package-dir] 24 | "limnoria_relayedcommands" = "." 25 | "limnoria_relayedcommands.local" = "local/" 26 | 27 | [tool.setuptools.package-data] 28 | "limnoria_relayedcommands" = ["locales/*.po"] 29 | -------------------------------------------------------------------------------- /NickTracker/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2021, Valentin Lorentz 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU Affero General Public License as 6 | # published by the Free Software Foundation, either version 3 of the 7 | # License, or (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU Affero General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU Affero General Public License 15 | # along with this program. If not, see . 16 | 17 | ### 18 | 19 | from supybot.test import * 20 | 21 | 22 | class NickTrackerTestCase(PluginTestCase): 23 | plugins = ("NickTracker",) 24 | 25 | 26 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 27 | -------------------------------------------------------------------------------- /Trigger/messages.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR ORGANIZATION 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "POT-Creation-Date: 2011-08-21 02:16+CEST\n" 9 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 10 | "Last-Translator: FULL NAME \n" 11 | "Language-Team: LANGUAGE \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=CHARSET\n" 14 | "Content-Transfer-Encoding: ENCODING\n" 15 | "Generated-By: pygettext.py 1.5\n" 16 | 17 | 18 | #: config.py:60 19 | msgid "Command triggered by %s" 20 | msgstr "" 21 | 22 | #: config.py:63 23 | msgid "" 24 | "Command trigger on connect. This shouldn't be\n" 25 | " a Supybot command, but an IRC command (as given to ircquote)." 26 | msgstr "" 27 | 28 | #: plugin.py:50 29 | #, docstring 30 | msgid "" 31 | "Add the help for \"@plugin help Trigger\" here\n" 32 | " This should describe *how* to use this plugin." 33 | msgstr "" 34 | 35 | -------------------------------------------------------------------------------- /Cleverbot/test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # CleverBot Supybot Plugin v1.0 3 | # (C) Copyright 2012 Albert H. (alberthrocks) 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | # 18 | from supybot.test import * 19 | 20 | class PandorabotsTestCase(PluginTestCase): 21 | plugins = ('Pandorabots',) 22 | 23 | 24 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 25 | -------------------------------------------------------------------------------- /Trigger/locales/it.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Supybot-fr\n" 4 | "POT-Creation-Date: 2011-08-21 02:16+CEST\n" 5 | "PO-Revision-Date: 2011-08-23 23:03+0200\n" 6 | "Last-Translator: skizzhg \n" 7 | "Language-Team: Italian \n" 8 | "Language: it\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | 13 | 14 | #: config.py:60 15 | msgid "Command triggered by %s" 16 | msgstr "Comando attivato da %s" 17 | 18 | #: config.py:63 19 | msgid "" 20 | "Command triggered on connect. This shouldn't be\n" 21 | " a Supybot command, but an IRC command (as given to ircquote)." 22 | msgstr "Il comando attivato alla connessione, non è un comando di\n" 23 | "Supybot ma uno di IRC (come passarlo a \"ircquote\")." 24 | 25 | #: plugin.py:50 26 | #, docstring 27 | msgid "" 28 | "Add the help for \"@plugin help Trigger\" here\n" 29 | " This should describe *how* to use this plugin." 30 | msgstr "" 31 | 32 | -------------------------------------------------------------------------------- /EchoTyping/README.md: -------------------------------------------------------------------------------- 1 | Pretends to be typing whenever someone else is. 2 | 3 | This has no useful purpose, other than being annoying and 4 | an example implementation of the [typing specification]( 5 | https://ircv3.net/specs/client-tags/typing) 6 | 7 | # Testimonials 8 | 9 | An IRCv3 contributor: 10 | 11 | > haha the bots type when i type... silly 12 | 13 | The same IRCv3 contributor, months later: 14 | 15 | > damn you pinkietest2 and Limnoria 16 | > 17 | > always copying when i'm typing 18 | 19 | A [pissnet](https://wiki.letspiss.net/) user: 20 | 21 | > Who is NickServ_ , and why are they typing? 22 | 23 | An other pissnet user: 24 | 25 | > Also who programmed NickServ to echo typing notifications 26 | 27 | A [Matrix2051](https://github.com/progval/matrix2051) user: 28 | 29 | > who is Limnoria and why s(he) is typing when i typing? 30 | 31 | A user of a network that just migrated from Elemental-IRCd to InspIRCd 4: 32 | 33 | > does Limnoria by any chance have a plugin which sends typing status whenever anyone else sends typing status? 34 | > 35 | > i can confirm it is as irritating as intended 36 | -------------------------------------------------------------------------------- /WikiTrans/messages.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR ORGANIZATION 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "POT-Creation-Date: 2011-08-28 21:04+CEST\n" 9 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 10 | "Last-Translator: FULL NAME \n" 11 | "Language-Team: LANGUAGE \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=CHARSET\n" 14 | "Content-Transfer-Encoding: ENCODING\n" 15 | "Generated-By: pygettext.py 1.5\n" 16 | 17 | 18 | #: plugin.py:44 19 | #, docstring 20 | msgid "" 21 | "Add the help for \"@plugin help WikiTrans\" here\n" 22 | " This should describe *how* to use this plugin." 23 | msgstr "" 24 | 25 | #: plugin.py:48 26 | #, docstring 27 | msgid "" 28 | " \n" 29 | "\n" 30 | " Translates the (also works with expressions) using Wikipedia\n" 31 | " interlanguage links." 32 | msgstr "" 33 | 34 | #: plugin.py:56 35 | msgid "This word can't be found on Wikipedia" 36 | msgstr "" 37 | 38 | #: plugin.py:65 39 | msgid "No translation found" 40 | msgstr "" 41 | 42 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | sudo: false 3 | python: 4 | - "3.6" 5 | - "3.7" 6 | - "3.8" 7 | - "3.9" 8 | - "pypy3" 9 | install: 10 | - travis_retry pip install -vr https://raw.githubusercontent.com/ProgVal/Limnoria/testing/requirements.txt > /dev/null 11 | - travis_retry pip install -v git+https://github.com/ProgVal/Limnoria.git@testing > /dev/null 12 | - travis_retry pip install -vr requirements.txt 13 | - sudo apt install python3-apt python3-debian 14 | # command to run tests, e.g. python setup.py test 15 | script: 16 | - echo $TRAVIS_PYTHON_VERSION 17 | - export PYTHON_MAJOR_VERSION=$(python -c "import sys;print(sys.version_info[0])") 18 | - echo $PYTHON_MAJOR_VERSION 19 | - export DISABLED_PLUGINS="--exclude ./Twitter --exclude ./TwitterStream --exclude ./MegaHAL --exclude ./GUI --exclude ./WebStats" # py2-only plugins 20 | - supybot-test --plugins-dir=. --no-network --exclude=./NoLatin1 --exclude ./AlternativeTo --exclude ./Json --exclude ./PypySandbox --exclude ./Untiny --exclude ./CrousLyon --exclude ./PackageInfo --exclude ./Supysandbox $DISABLED_PLUGINS 21 | notifications: 22 | email: false 23 | matrix: 24 | fast_finish: true 25 | -------------------------------------------------------------------------------- /PackageInfo/test.py: -------------------------------------------------------------------------------- 1 | # -*- Encoding: utf-8 -*- 2 | ### 3 | # Copyright (c) 2008-2010 Terence Simpson 4 | # 5 | # This program is free software; you can redistribute it and/or modify 6 | # it under the terms of version 2 of the GNU General Public License as 7 | # published by the Free Software Foundation. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | ### 15 | 16 | from supybot.test import * 17 | 18 | class PackageInfoTestCase(PluginTestCase): 19 | plugins = ('PackageInfo',) 20 | cleanConfDir = True 21 | cleanDataDir = False 22 | 23 | def testBase(self): 24 | self.assertRegexp('info gstreamer1.0-libav', 25 | r'gstreamer1.0-libav \(source: gst-libav1.0\)') 26 | self.assertRegexp('info rjegegjierigj', 'does not exist') 27 | self.assertRegexp('find irssi', 'Found: .*irssi-dev') 28 | self.assertRegexp('depends supybot', 'python') 29 | 30 | 31 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 32 | -------------------------------------------------------------------------------- /Eureka/README.md: -------------------------------------------------------------------------------- 1 | Advanced trivia plugin. 2 | 3 | Config file format 4 | ================== 5 | 6 | ``` 7 | P QUESTION 8 | --- 9 | X RESPONSE 1 10 | X RESPONSE 2 11 | --- 12 | Y CLUE 1 13 | Y CLUE 2 14 | Y CLUE 3 15 | === Z 16 | ``` 17 | 18 | Where P, X, Y, and Z are integers. P is the number of points the question 19 | is worth of, X the type of response (a single char: 'r' for raw answer, and 20 | 'm' for a match (regexp)), Y is the time waited before giving a clue, 21 | and Z is the time waited before the question timeout. 22 | 23 | Y and Z are relative to the time of the previous clue. 24 | 25 | Example config file 26 | =================== 27 | 28 | ``` 29 | 2 Who wrote this plugin? 30 | --- 31 | r ProgVal 32 | --- 33 | 5 P***V** 34 | 5 Pr**Va* 35 | 2 Pro*Val 36 | === 5 37 | 38 | 4 What is the name of this bot? 39 | --- 40 | r Limnoria 41 | r Supybot 42 | --- 43 | 5 L******a 44 | 2 Li****ia 45 | 2 Lim**ria 46 | === 5 47 | 48 | 3 Who is the original author of Supybot? 49 | --- 50 | r jemfinch 51 | --- 52 | 1 j******* 53 | 1 jem***** 54 | === 1 55 | 56 | 1 Give a number. 57 | --- 58 | r 42 59 | m [0-9]+ 60 | --- 61 | === 2 62 | 63 | 1 Give another number. 64 | --- 65 | r 42 66 | m [0-9]+ 67 | --- 68 | === 2 69 | ``` 70 | -------------------------------------------------------------------------------- /Coffee/messages.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR ORGANIZATION 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "POT-Creation-Date: 2011-10-26 20:53+EEST\n" 9 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 10 | "Last-Translator: FULL NAME \n" 11 | "Language-Team: LANGUAGE \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=CHARSET\n" 14 | "Content-Transfer-Encoding: ENCODING\n" 15 | "Generated-By: pygettext.py 1.5\n" 16 | 17 | 18 | #: plugin.py:42 19 | #, docstring 20 | msgid "" 21 | "Add the help for \"@plugin help Coffee\" here\n" 22 | " This should describe *how* to use this plugin." 23 | msgstr "" 24 | 25 | #: plugin.py:47 26 | #, docstring 27 | msgid "" 28 | "takes no arguments\n" 29 | "\n" 30 | " Makes coffee using the Hyper Text Coffee Pot Control Protocol\n" 31 | " (HTCPCP/1.0). More info at http://www.ietf.org/rfc/rfc2324.txt\n" 32 | " Warning: this command has side effect if no compatible device\n" 33 | " is found on the channel." 34 | msgstr "" 35 | 36 | #: plugin.py:73 37 | msgid "Ahah, you really believed this? Supybot can do mostly everything, but not coffee!" 38 | msgstr "" 39 | 40 | -------------------------------------------------------------------------------- /WebStats/README.md: -------------------------------------------------------------------------------- 1 | WebStats is a plugin that provide a web access to channel based statistics. 2 | 3 | **This plugin requires Limnoria.** 4 | 5 | It is designed to be used on active channels, so it implements a cache system. 6 | Don't worry if you have enabled statistics and nothing happens on the Web 7 | interface in the following hour. 8 | 9 | You need pygraphviz (python-pygraphviz in Debian) for the "links" graph. 10 | 11 | ## Reverse proxies 12 | 13 | ### apache 14 | 15 | If you want to use Apache as a proxy for your WebStats instance, you can 16 | use this sample configuration: 17 | 18 | ```apache 19 | 20 | ServerName stats.supybot.fr.cr 21 | ServerAlias stats.supybot-fr.tk 22 | 23 | ProxyPass http://localhost:8080/ 24 | SetEnv force-proxy-request-1.0 1 25 | SetEnv proxy-nokeepalive 1 26 | 27 | 28 | ``` 29 | 30 | ### nginx 31 | 32 | Create a new site for your bot `/etc/nginx/sites-enabled/bot`: 33 | 34 | ```nginx 35 | server { 36 | listen 80; 37 | listen [::]:80; 38 | server_name stats.supybot.fr.cr; 39 | 40 | location / { 41 | proxy_pass http://localhost:8080/; 42 | } 43 | } 44 | ``` 45 | -------------------------------------------------------------------------------- /WikiTrans/locales/it.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Supybot-fr\n" 4 | "POT-Creation-Date: 2011-08-21 02:16+CEST\n" 5 | "PO-Revision-Date: 2011-08-28 21:05+0200\n" 6 | "Last-Translator: skizzhg \n" 7 | "Language-Team: Italian \n" 8 | "Language: it\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | 13 | 14 | #: plugin.py:44 15 | #, docstring 16 | msgid "" 17 | "Add the help for \"@plugin help WikiTrans\" here\n" 18 | " This should describe *how* to use this plugin." 19 | msgstr "" 20 | 21 | #: plugin.py:48 22 | #, docstring 23 | msgid "" 24 | " \n" 25 | "\n" 26 | " Translates the (also works with expressions) using Wikipedia\n" 27 | " interlanguage links." 28 | msgstr "" 29 | " \n" 30 | "\n" 31 | " Traduce (funziona anche con espressioni) utilizzando i link\n" 32 | " interlingua di Wikipedia." 33 | 34 | #: plugin.py:56 35 | msgid "This word can't be found on Wikipedia." 36 | msgstr "Questa parola non è presente su Wikipedia." 37 | 38 | #: plugin.py:61 39 | msgid "No translation found." 40 | msgstr "Non è stata trovata nessuna traduzione." 41 | 42 | -------------------------------------------------------------------------------- /Stocks/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2020 Valentin Lorentz 3 | # 4 | # Permission is hereby granted, free of charge, to any person obtaining a copy 5 | # of this software and associated documentation files (the "Software"), to deal 6 | # in the Software without restriction, including without limitation the rights 7 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | # copies of the Software, and to permit persons to whom the Software is 9 | # furnished to do so, subject to the following conditions: 10 | # 11 | # The above copyright notice and this permission notice shall be included in all 12 | # copies or substantial portions of the Software. 13 | # 14 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | # SOFTWARE. 21 | # 22 | ### 23 | 24 | from supybot.test import * 25 | 26 | 27 | class StocksTestCase(PluginTestCase): 28 | plugins = ('Stocks',) 29 | 30 | 31 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 32 | -------------------------------------------------------------------------------- /AttackProtector/README.md: -------------------------------------------------------------------------------- 1 | This plugin aims to provide a highly configurable protection against flood 2 | and spam. 3 | 4 | AttackProtector 5 | =============== 6 | 7 | Detection types 8 | --------------- 9 | 10 | There are two kind of detections: 11 | 12 | **Individual floods**: are the most common types of flood, involving floods 13 | from one user. Options controlling these detections exist in the 14 | configuration as the name of the flood type (e.g. 15 | `config plugins.attackprotector.{join,message,etc.}`). 16 | 17 | **grouped floods**: are floods from several nicks. Their names in the 18 | configuration are the flood type, prepended by 'group' (e.g. 19 | `config plugins.attackprotector.group{join,message,etc.}`). 20 | 21 | Of course, the detection value of group floods should be greater than the 22 | individual floods'. 23 | 24 | Punishment types 25 | ---------------- 26 | 27 | For each flood type, you can define a punishment. More common are `ban`, 28 | `kick`, or `kban`. You also can define modes, such as the default 29 | punishment for group joins: `mode+i`, which sets the mode `+i`. You can 30 | also remove a mode, with the syntax `mode-i`, or set/unset modes to the 31 | user, with `mode-v' or 'mode+v`. 32 | For a complete list of available modes, see your IRC network's help pages 33 | or try `/quote help`. 34 | 35 | For `ban` and `kban`, you can also add a timeout this way: `ban+X` and 36 | `kban+X`, where `X` is the number of seconds. 37 | -------------------------------------------------------------------------------- /Coffee/locales/it.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Supybot-fr\n" 4 | "POT-Creation-Date: 2011-10-26 20:53+EEST\n" 5 | "PO-Revision-Date: 2011-11-07 14:38+0100\n" 6 | "Last-Translator: skizzhg \n" 7 | "Language-Team: Italian \n" 8 | "Language: it\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | 13 | 14 | #: plugin.py:42 15 | #, docstring 16 | msgid "" 17 | "Add the help for \"@plugin help Coffee\" here\n" 18 | " This should describe *how* to use this plugin." 19 | msgstr "" 20 | 21 | #: plugin.py:47 22 | #, docstring 23 | msgid "" 24 | "takes no arguments\n" 25 | "\n" 26 | " Makes coffee using the Hyper Text Coffee Pot Control Protocol\n" 27 | " (HTCPCP/1.0). More info at http://www.ietf.org/rfc/rfc2324.txt\n" 28 | " Warning: this command has side effect if no compatible device\n" 29 | " is found on the channel." 30 | msgstr "" 31 | "non necessita argomenti\n" 32 | "\n" 33 | " Fa il caffè tramite Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0),\n" 34 | " ulteriori informazioni all'indirizzo http://www.ietf.org/rfc/rfc2324.txt\n" 35 | " Attenzione: questo comando ha effetti collaterali se in canale non viene\n" 36 | " trovato nessun dispositivo compatibile." 37 | 38 | #: plugin.py:73 39 | msgid "Ahah, you really believed this? Supybot can do mostly everything, but not coffee!" 40 | msgstr "Ahah, ci hai creduto? Supybot può fare quasi tutto ma non il caffè!" 41 | 42 | -------------------------------------------------------------------------------- /Cleverbot/README.md: -------------------------------------------------------------------------------- 1 | Cleverbot Plugin for Supybots 2 | ============================== 3 | Author: Albert Huang (alberthrocks) 4 | 5 | This is a plugin that uses the Cleverbot AI bot service to generate somewhat 6 | coherent AI responses to humans. As indicated, it is designed to be loaded 7 | into Supybot. 8 | 9 | The plugin responds by using an invalid command callback/hook to get the 10 | question and send back the response. 11 | 12 | This is only a proof of concept - under no circumstances should it be used in 13 | a production environment. Cleverbot may ban you for using their service this 14 | way, so beware. 15 | 16 | This plugin was forked from a similar project, supybot-pandorabots, which uses 17 | the Pandorabots AI API to generate responses. You can find that project here: 18 | https://launchpad.net/supybot-pandorabots 19 | 20 | By using this software, you comply to the GPL v3, especially the NO WARRANTY 21 | part. See LICENSE.txt for more information. I do not provide support - you 22 | should not expect any fixes made. (Maybe I'll fix code under rare 23 | circumstances... and maybe if there's demand!) 24 | 25 | To install, just copy this folder into your supybot plugins folder and load it. 26 | Note that if you are running any existing AIs, like Pandorabots, you need to 27 | disable them before using this AI. 28 | 29 | If you find any bugs, or have just something to say, feel free to join 30 | #talkingbots on EFNet or Freenode, file a bug report, or email me! 31 | 32 | This plugin uses PyCleverbot (the reason this was all possible), which can be 33 | found here: 34 | http://code.google.com/p/pycleverbot/ 35 | -------------------------------------------------------------------------------- /PackageInfo/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- Encoding: utf-8 -*- 2 | ### 3 | # Copyright (c) 2008-2010 Terence Simpson 4 | # 5 | # This program is free software; you can redistribute it and/or modify 6 | # it under the terms of version 2 of the GNU General Public License as 7 | # published by the Free Software Foundation. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | ### 15 | 16 | """ 17 | Display information on packages using apt-cache and search for files in packages with apt-file. 18 | """ 19 | 20 | from importlib import reload 21 | import supybot 22 | import supybot.world as world 23 | 24 | __version__ = "0.9.1" 25 | __author__ = supybot.Author("Terence Simpson", "tsimpson", "tsimpson@ubuntu.com") 26 | __contributors__ = { 27 | supybot.Author("Dennis Kaarsemaker","Seveas","dennis@kaarsemaker.net"): ["Origional concept"] 28 | } 29 | __url__ = 'https://launchpad.net/ubuntu-bots/' 30 | 31 | from . import config 32 | reload(config) 33 | from . import plugin 34 | reload(plugin) # In case we're being reloaded. 35 | from . import packages 36 | reload(packages) 37 | # Add more reloads here if you add third-party modules and want them to be 38 | # reloaded when this plugin is reloaded. Don't forget to import them as well! 39 | 40 | if world.testing: 41 | from . import test 42 | 43 | Class = plugin.Class 44 | configure = config.configure 45 | 46 | 47 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 48 | -------------------------------------------------------------------------------- /Coffee/locales/fi.po: -------------------------------------------------------------------------------- 1 | # Coffee plugin in ProgVals Supybot-plugins. 2 | # Copyright (C) 2011 ProgVals Supybot-plugins 3 | # Mikaela Suomalainen , 2011. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: \n" 8 | "POT-Creation-Date: 2011-10-26 20:53+EEST\n" 9 | "PO-Revision-Date: 2011-10-26 20:54+0200\n" 10 | "Last-Translator: Mikaela Suomalainen \n" 11 | "Language-Team: \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=UTF-8\n" 14 | "Content-Transfer-Encoding: 8bit\n" 15 | "Generated-By: pygettext.py 1.5\n" 16 | 17 | #: plugin.py:42 18 | msgid "" 19 | "Add the help for \"@plugin help Coffee\" here\n" 20 | " This should describe *how* to use this plugin." 21 | msgstr "Lisää ohje komennolle \"@plugin help Coffee\" tähän.\n" 22 | " Tämän *pitäisi* kuvata kuinka tätä lisäosaa käytetään." 23 | 24 | #: plugin.py:47 25 | msgid "" 26 | "takes no arguments\n" 27 | "\n" 28 | " Makes coffee using the Hyper Text Coffee Pot Control Protocol\n" 29 | " (HTCPCP/1.0). More info at http://www.ietf.org/rfc/rfc2324.txt\n" 30 | " Warning: this command has side effect if no compatible device\n" 31 | " is found on the channel." 32 | msgstr "ei ota parametrejä\n" 33 | "\n" 34 | " Tekee kahvia käyttäen Hyper Teksti KahviRuukun Hallinta Protokollaa\n" 35 | " (HTCPCP/1.0). Lisää tietoa osoitteessa http://www.ietf.org/rfc/rfc2324.txt .\n" 36 | " Varoitus: tällä lisäosalla on sivuvaikutuksia. jos\n" 37 | " kanavalta ei löydy yhteensopivia laitteita." 38 | 39 | #: plugin.py:73 40 | msgid "Ahah, you really believed this? Supybot can do mostly everything, but not coffee!" 41 | msgstr "Haha, uskoitko oikeasti tähän? Supybot voi tehdä enimmäkseen kaikkea, muttei kahvia!" 42 | 43 | -------------------------------------------------------------------------------- /AttackProtector/locales/fr.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Supybot-fr\n" 4 | "POT-Creation-Date: 2010-11-02 11:32+CET\n" 5 | "PO-Revision-Date: \n" 6 | "Last-Translator: Valentin Lorentz \n" 7 | "Language-Team: ProgVal \n" 8 | "Language: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Poedit-Language: Français\n" 13 | "X-Poedit-Country: France\n" 14 | "X-Poedit-SourceCharset: ASCII\n" 15 | 16 | #: config.py:54 17 | msgid "Value must be in the format p." 18 | msgstr "La valeur doit être dans le format p" 19 | 20 | #: config.py:73 21 | msgid "" 22 | "Determines how long (in seconds) the plugin will\n" 23 | " wait before being enabled. A too low value makes the bot believe that\n" 24 | " its incoming messages 'flood' on connection is an attack." 25 | msgstr "Détermine combien de temps le plugin attendra avant d'être activé. Une valeur trop petite fera croire au bot que l'arrivée massive de messages lorsqu'il se connecte est une attaque." 26 | 27 | #: config.py:85 28 | msgid "" 29 | "In the format XpY, where X is the number of %s per\n" 30 | " Y seconds that triggers the punishment." 31 | msgstr "Dans le format XpY, où X est le nombre de %s en Y secondes qui déclenche la contre-attaque." 32 | 33 | #: config.py:88 34 | msgid "" 35 | "Determines the pushiment applyed when a\n" 36 | " %s flood is detected." 37 | msgstr "Détermine la contre-attaque appliquée lorsqu'un flood de %s est détecté." 38 | 39 | #: plugin.py:100 40 | msgid "This plugin protects channels against spam and flood" 41 | msgstr "Ce plugin protège les canaux contre le spam et le flood" 42 | 43 | #: plugin.py:143 44 | msgid "%s flood detected" 45 | msgstr "flood de %ss détecté" 46 | 47 | -------------------------------------------------------------------------------- /Coffee/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2011, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class CoffeeTestCase(PluginTestCase): 34 | plugins = ('Coffee',) 35 | 36 | 37 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 38 | -------------------------------------------------------------------------------- /Kickme/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2012, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class KickmeTestCase(PluginTestCase): 34 | plugins = ('Kickme',) 35 | 36 | 37 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 38 | -------------------------------------------------------------------------------- /Listener/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2010, quantumlemur 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class ListenerTestCase(PluginTestCase): 34 | plugins = ('Listener',) 35 | 36 | 37 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 38 | -------------------------------------------------------------------------------- /WebDoc/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2013, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class WebDocTestCase(PluginTestCase): 34 | plugins = ('WebDoc',) 35 | 36 | 37 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 38 | -------------------------------------------------------------------------------- /WebLogs/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2011, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class WebLogsTestCase(PluginTestCase): 34 | plugins = ('WebLogs',) 35 | 36 | 37 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 38 | -------------------------------------------------------------------------------- /ListEmpty/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2012, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class ListEmptyTestCase(PluginTestCase): 34 | plugins = ('ListEmpty',) 35 | 36 | 37 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 38 | -------------------------------------------------------------------------------- /Markovgen/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2014, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class MarkovgenTestCase(PluginTestCase): 34 | plugins = ('Markovgen',) 35 | 36 | 37 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 38 | -------------------------------------------------------------------------------- /ChannelStatus/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2013, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class ChannelStatusTestCase(PluginTestCase): 34 | plugins = ('ChannelStatus',) 35 | 36 | 37 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 38 | -------------------------------------------------------------------------------- /EchoTyping/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2021, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | 34 | class EchoTypingTestCase(PluginTestCase): 35 | plugins = ("EchoTyping",) 36 | 37 | 38 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 39 | -------------------------------------------------------------------------------- /StdoutCapture/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2013, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class StdoutCaptureTestCase(PluginTestCase): 34 | plugins = ('StdoutCapture',) 35 | 36 | 37 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 38 | -------------------------------------------------------------------------------- /I18nPlaceholder/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2012, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class I18nPlaceholderTestCase(PluginTestCase): 34 | plugins = ('I18nPlaceholder',) 35 | 36 | 37 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 38 | -------------------------------------------------------------------------------- /IgnoreNonVoice/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2014, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class IgnoreNonVoiceTestCase(PluginTestCase): 34 | plugins = ('IgnoreNonVoice',) 35 | 36 | 37 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 38 | -------------------------------------------------------------------------------- /Iwant/messages.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR ORGANIZATION 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "POT-Creation-Date: 2011-11-18 18:46+CET\n" 9 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 10 | "Last-Translator: FULL NAME \n" 11 | "Language-Team: LANGUAGE \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=CHARSET\n" 14 | "Content-Transfer-Encoding: ENCODING\n" 15 | "Generated-By: pygettext.py 1.5\n" 16 | 17 | 18 | #: config.py:52 19 | msgid "" 20 | "List of wanted things. Don't edit this variable\n" 21 | " unless you know what you do." 22 | msgstr "" 23 | 24 | #: plugin.py:53 25 | #, docstring 26 | msgid "" 27 | "Add the help for \"@plugin help Iwant\" here\n" 28 | " This should describe *how* to use this plugin." 29 | msgstr "" 30 | 31 | #: plugin.py:58 32 | #, docstring 33 | msgid "" 34 | "[] \n" 35 | "\n" 36 | " Tell the bot you want the . is only needed if you\n" 37 | " don't send the message on the channel itself." 38 | msgstr "" 39 | 40 | #: plugin.py:64 41 | msgid "This thing is already wanted." 42 | msgstr "" 43 | 44 | #: plugin.py:73 45 | #, docstring 46 | msgid "" 47 | "[]\n" 48 | "\n" 49 | " Returns the list of wanted things for the . defaults\n" 50 | " to the current channel." 51 | msgstr "" 52 | 53 | #: plugin.py:80 54 | msgid "#%i: %s" 55 | msgstr "" 56 | 57 | #: plugin.py:86 58 | #, docstring 59 | msgid "" 60 | "[] \n" 61 | "\n" 62 | " Tell you the thing number . is only needed if you\n" 63 | " don't send the message on the channel itself." 64 | msgstr "" 65 | 66 | #: plugin.py:92 67 | msgid "No thing has this id." 68 | msgstr "" 69 | 70 | #: plugin.py:94 71 | msgid "Wish #%i is %s." 72 | msgstr "" 73 | 74 | -------------------------------------------------------------------------------- /Glob2Chan/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2010, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | import supybot.ircmsgs as ircmsgs 33 | 34 | class Glob2ChanTestCase(PluginTestCase): 35 | plugins = ('Glob2Chan',) 36 | 37 | 38 | 39 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 40 | -------------------------------------------------------------------------------- /AttackProtector/messages.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR ORGANIZATION 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "POT-Creation-Date: 2012-05-06 18:51+EEST\n" 9 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 10 | "Last-Translator: FULL NAME \n" 11 | "Language-Team: LANGUAGE \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=CHARSET\n" 14 | "Content-Transfer-Encoding: ENCODING\n" 15 | "Generated-By: pygettext.py 1.5\n" 16 | 17 | 18 | #: config.py:54 19 | #, docstring 20 | msgid "Value must be in the format p." 21 | msgstr "" 22 | 23 | #: config.py:64 24 | #, docstring 25 | msgid "" 26 | "Value must be a valid punishment ('ban', 'kick', 'kban', 'mode+X',\n" 27 | " 'mode-X', 'umode-X', 'command XXX', ...)" 28 | msgstr "" 29 | 30 | #: config.py:81 31 | msgid "" 32 | "Determines whether or not AttackProtector\n" 33 | " is enabled on this channel." 34 | msgstr "" 35 | 36 | #: config.py:84 37 | msgid "" 38 | "If a user has this capability, he won't be\n" 39 | " punished by AttackProtector" 40 | msgstr "" 41 | 42 | #: config.py:87 43 | msgid "" 44 | "Determines how long (in seconds) the plugin will\n" 45 | " wait before being enabled. A too low value makes the bot believe that\n" 46 | " its incoming messages 'flood' on connection is an attack." 47 | msgstr "" 48 | 49 | #: config.py:103 50 | msgid "" 51 | "In the format XpY, where X is the number of %s per\n" 52 | " Y seconds that triggers the punishment." 53 | msgstr "" 54 | 55 | #: config.py:106 56 | msgid "" 57 | "Determines the punishment applied when a\n" 58 | " %s flood is detected." 59 | msgstr "" 60 | 61 | #: plugin.py:107 62 | #, docstring 63 | msgid "This plugin protects channels against spam and flood" 64 | msgstr "" 65 | 66 | #: plugin.py:180 67 | msgid "%s flood detected" 68 | msgstr "" 69 | 70 | -------------------------------------------------------------------------------- /NickTracker/__init__.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2021, Valentin Lorentz 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU Affero General Public License as 6 | # published by the Free Software Foundation, either version 3 of the 7 | # License, or (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU Affero General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU Affero General Public License 15 | # along with this program. If not, see . 16 | 17 | ### 18 | 19 | """ 20 | NickTracker: Keeps track of the nicknames used by people connecting from the same hosts 21 | """ 22 | 23 | import sys 24 | import supybot 25 | from supybot import world 26 | 27 | # Use this for the version of this plugin. 28 | __version__ = "" 29 | 30 | # XXX Replace this with an appropriate author or supybot.Author instance. 31 | __author__ = supybot.authors.unknown 32 | 33 | # This is a dictionary mapping supybot.Author instances to lists of 34 | # contributions. 35 | __contributors__ = {} 36 | 37 | # This is a url where the most recent plugin package can be downloaded. 38 | __url__ = "" 39 | 40 | from . import config 41 | from . import plugin 42 | 43 | if sys.version_info >= (3, 4): 44 | from importlib import reload 45 | else: 46 | from importlib import reload 47 | # In case we're being reloaded. 48 | reload(config) 49 | reload(plugin) 50 | # Add more reloads here if you add third-party modules and want them to be 51 | # reloaded when this plugin is reloaded. Don't forget to import them as well! 52 | 53 | if world.testing: 54 | from . import test 55 | 56 | Class = plugin.Class 57 | configure = config.configure 58 | 59 | 60 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 61 | -------------------------------------------------------------------------------- /RelayedCommands/README.rst: -------------------------------------------------------------------------------- 1 | .. _plugin-RelayedCommands: 2 | 3 | Documentation for the RelayedCommands plugin for Supybot 4 | ======================================================== 5 | 6 | Purpose 7 | ------- 8 | 9 | RelayedCommands: Recognizes commands sent through a relay bot and runs them 10 | 11 | Usage 12 | ----- 13 | 14 | Recognizes commands sent through a relay bot and runs them 15 | 16 | .. _conf-RelayedCommands: 17 | 18 | Configuration 19 | ------------- 20 | 21 | .. _conf-supybot.plugins.RelayedCommands.bots: 22 | 23 | 24 | supybot.plugins.RelayedCommands.bots 25 | This is a group of: 26 | 27 | .. _conf-supybot.plugins.RelayedCommands.bots.nicks: 28 | 29 | 30 | supybot.plugins.RelayedCommands.bots.nicks 31 | This config variable defaults to " ", is network-specific, and is channel-specific. 32 | 33 | Nick names of relay bots to recognize. 34 | 35 | .. _conf-supybot.plugins.RelayedCommands.bots.self: 36 | 37 | 38 | supybot.plugins.RelayedCommands.bots.self 39 | This config variable defaults to "False", is network-specific, and is channel-specific. 40 | 41 | Whether to recognize this bot itself as a relay bot. 42 | 43 | .. _conf-supybot.plugins.RelayedCommands.public: 44 | 45 | 46 | supybot.plugins.RelayedCommands.public 47 | This config variable defaults to "True", is not network-specific, and is not channel-specific. 48 | 49 | Determines whether this plugin is publicly visible. 50 | 51 | .. _conf-supybot.plugins.RelayedCommands.replaceNick: 52 | 53 | 54 | supybot.plugins.RelayedCommands.replaceNick 55 | This config variable defaults to "False", is network-specific, and is channel-specific. 56 | 57 | Whether to run commands as the relayed user's nick instead of the relay bot's. This allows $nick to work as expected, makes the bot reply to the right nick, and makes rate-limits work per-relayed user instead of applying to all relayed messages as if coming to a single user (the relay bot). This means that it effectively exempts malicious relay bots from rate-limits. 58 | 59 | -------------------------------------------------------------------------------- /Cleverbot/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # CleverBot Supybot Plugin v1.0 3 | # (C) Copyright 2012 Albert H. (alberthrocks) 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | # 18 | 19 | """ 20 | Enables the bot to respond to humans via the Cleverbot AI. 21 | """ 22 | 23 | import supybot 24 | import supybot.world as world 25 | 26 | # Use this for the version of this plugin. You may wish to put a CVS keyword 27 | # in here if you're keeping the plugin in CVS or some similar system. 28 | __version__ = "" 29 | 30 | # XXX Replace this with an appropriate author or supybot.Author instance. 31 | __author__ = supybot.authors.unknown 32 | 33 | # This is a dictionary mapping supybot.Author instances to lists of 34 | # contributions. 35 | __contributors__ = {} 36 | 37 | # This is a url where the most recent plugin package can be downloaded. 38 | __url__ = '' # 'http://supybot.com/Members/yourname/Pandorabots/download' 39 | 40 | from . import config 41 | from . import plugin 42 | from importlib import reload 43 | reload(plugin) # In case we're being reloaded. 44 | # Add more reloads here if you add third-party modules and want them to be 45 | # reloaded when this plugin is reloaded. Don't forget to import them as well! 46 | 47 | if world.testing: 48 | import test 49 | 50 | Class = plugin.Class 51 | configure = config.configure 52 | 53 | 54 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 55 | -------------------------------------------------------------------------------- /Seeks/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2010, Pablo Joubert 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class SeeksTestCase(PluginTestCase): 34 | plugins = ('Seeks',) 35 | 36 | if network: 37 | def testSearch(self): 38 | self.assertRegexp('seeks search supybot', 39 | 'http://sourceforge.net/projects/supybot/') 40 | 41 | 42 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 43 | -------------------------------------------------------------------------------- /WebStats/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2010, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class WebStatsTestCase(ChannelHTTPPluginTestCase): 34 | plugins = ('WebStats',) 35 | 36 | def testHandling(self): 37 | self.assertHTTPResponse('/webstats/', 400, method='POST') 38 | self.assertHTTPResponse('/webstats/', 200) 39 | 40 | 41 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 42 | -------------------------------------------------------------------------------- /Json/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2015, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | 34 | class JsonTestCase(PluginTestCase): 35 | plugins = ('Json',) 36 | 37 | def testGet(self): 38 | self.assertResponse(r'get ".bar[0]" ' 39 | r'"{\"foo\": [\"foobar\"], \"bar\": [\"baz\", \"qux\"]}"''', 40 | 'baz') 41 | 42 | 43 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 44 | -------------------------------------------------------------------------------- /Trivia/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2011, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class TriviaTestCase(ChannelPluginTestCase): 34 | plugins = ('Trivia',) 35 | 36 | def testStartStop(self): 37 | self.assertRegexp('start', '...#1 of 10:.*') 38 | self.assertResponse('stop', 'Trivia stopping.') 39 | self.assertError('stop') 40 | 41 | 42 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 43 | -------------------------------------------------------------------------------- /MemoryProfiler/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2015, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | 34 | class MemoryProfilerTestCase(PluginTestCase): 35 | plugins = ('MemoryProfiler',) 36 | 37 | def testPlugins(self): 38 | self.assertNotError('memoryprofiler plugins') 39 | 40 | def testModules(self): 41 | self.assertNotError('memoryprofiler modules') 42 | 43 | 44 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 45 | -------------------------------------------------------------------------------- /Wikipedia/messages.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR ORGANIZATION 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "POT-Creation-Date: 2011-03-02 11:00+CET\n" 9 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 10 | "Last-Translator: FULL NAME \n" 11 | "Language-Team: LANGUAGE \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=CHARSET\n" 14 | "Content-Transfer-Encoding: ENCODING\n" 15 | "Generated-By: pygettext.py 1.5\n" 16 | 17 | 18 | #: config.py:59 19 | msgid "" 20 | "URL of the website from\n" 21 | " where you want to pull pages (usually: your language's\n" 22 | " wikipedia)" 23 | msgstr "" 24 | 25 | #: config.py:59 26 | msgid "en.wikipedia.org" 27 | msgstr "" 28 | 29 | #: plugin.py:56 30 | #, docstring 31 | msgid "" 32 | "Add the help for \"@plugin help Wikipedia\" here\n" 33 | " This should describe *how* to use this plugin." 34 | msgstr "" 35 | 36 | #: plugin.py:63 37 | #, docstring 38 | msgid "" 39 | "\n" 40 | "\n" 41 | " Returns the first paragraph of a Wikipedia article" 42 | msgstr "" 43 | 44 | #: plugin.py:79 45 | msgid "I didn't find anything for \"%s\".Did you mean \"%s\"? " 46 | msgstr "" 47 | 48 | #: plugin.py:91 49 | msgid "I didn't find anything for \"%s\", but here's the result for \"%s\": " 50 | msgstr "" 51 | 52 | #: plugin.py:101 53 | msgid "Redirected from" 54 | msgstr "" 55 | 56 | #: plugin.py:109 57 | msgid "Retrieved from" 58 | msgstr "" 59 | 60 | #: plugin.py:118 61 | msgid "%s is a disambiguation page. Possible results are: %s" 62 | msgstr "" 63 | 64 | #: plugin.py:121 65 | msgid "This article is about the year [\\d]*\\. For the [a-zA-Z ]* [\\d]*, see" 66 | msgstr "" 67 | 68 | #: plugin.py:123 69 | msgid "\"%s\" is a page full of events that happened in that year. If you were looking for information about the number itself, try searching for \"%s_(number)\", but don't expect anything useful..." 70 | msgstr "" 71 | 72 | #: plugin.py:131 73 | msgid "Not found, or page bad formed." 74 | msgstr "" 75 | 76 | -------------------------------------------------------------------------------- /Variables/messages.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR ORGANIZATION 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "POT-Creation-Date: 2011-08-21 02:16+CEST\n" 9 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 10 | "Last-Translator: FULL NAME \n" 11 | "Language-Team: LANGUAGE \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=CHARSET\n" 14 | "Content-Transfer-Encoding: ENCODING\n" 15 | "Generated-By: pygettext.py 1.5\n" 16 | 17 | 18 | #: plugin.py:53 19 | #, docstring 20 | msgid "" 21 | "Add the help for \"@plugin help Variables\" here\n" 22 | " This should describe *how* to use this plugin." 23 | msgstr "" 24 | 25 | #: plugin.py:112 26 | #, docstring 27 | msgid "" 28 | "[--domain ] [--name ] \n" 29 | "\n" 30 | " Sets a variable called to be , in the domain matching\n" 31 | " the and the .\n" 32 | " If is not given, it defaults to the current domain\n" 33 | " matching the .\n" 34 | " If is not given, it defaults to the global domain.\n" 35 | " Valid domain types are 'global', 'channel', and 'network'.\n" 36 | " Note that channel domains are channel-specific, but are cross-network.\n" 37 | " " 38 | msgstr "" 39 | 40 | #: plugin.py:142 41 | #, docstring 42 | msgid "" 43 | "[--domain ] [--name ] \n" 44 | "\n" 45 | " Get the value of the variable called , in the domain matching\n" 46 | " the and the .\n" 47 | " If is not given, it defaults to the current domain\n" 48 | " matching the .\n" 49 | " If is not given, it defaults to the global domain.\n" 50 | " Valid domain types are 'global', 'channel', and 'network'.\n" 51 | " Note that channel domains are channel-specific, but are cross-network.\n" 52 | " " 53 | msgstr "" 54 | 55 | #: plugin.py:156 56 | msgid "Variable does not exist." 57 | msgstr "" 58 | 59 | -------------------------------------------------------------------------------- /PackageInfo/README.txt: -------------------------------------------------------------------------------- 1 | This plugin allows package lookup via apt-cache/apt-file 2 | 3 | If you choose to enable this plugin from the supybot-wizard command, then most 4 | of the setup will be automatically done for you. You may still change the values 5 | of the settings manaually. 6 | 7 | --Setup-- 8 | supybot.plugins.PackageInfo.aptdir: 9 | Directory to use to store the apt cache (Global) 10 | Default: '$BOTDIR/data/aptdir' 11 | 12 | Create a new empty directory that will be used for the apt cache. 13 | In this directory, you create sources.list files for every release you 14 | want to search. The name of the file is important, since the filename (without 15 | the .list suffix) is the name that is used to refer to the release. 16 | The .list file should contain _both_ the deb and deb-src source lines. 17 | Eg; in lucid.list: 18 | deb http://archive.ubuntu.com/ubuntu ludid main restricted universe multiverse 19 | deb-src http://archive.ubuntu.com/ubuntu lucid main restricted universe multiverse 20 | 21 | supybot.plugins.PackageInfo.defaultRelease: 22 | Set this to the default release to use when none is specified. (Channel) 23 | Default: 'lucid' 24 | 25 | Whenever you create a new .list file, it is important to run the update_apt 26 | and update_apt_file scripts that comes with this plugin. Before you run these, 27 | you have to edit them to point to your apt dir. It's also useful to run them 28 | periodically from cron (say, once per week for update_apt and once per moth for 29 | update_apt_file). You also need to reload the plugin to make it pick up the new 30 | releases. 31 | 32 | supybot.plugins.PackageInfo.enabled: 33 | Enable or disable package lookup snarfing. (Channel) 34 | Default: True 35 | 36 | supybot.plugins.PackageInfo.prefixchar: 37 | Prefix character for the package lookup snarfer. (Channel) 38 | Default: ! 39 | 40 | --Usage-- 41 | find [] 42 | Search for or, of that fails, find 's package(s). 43 | Optionally in 44 | 45 | info [] 46 | Lookup information for , optionally in 47 | 48 | if supybot.plugins.PackageInfo.enabled is True the bot will also reply to 49 | the commands if prefixed with supybot.plugins.PackageInfo.prefixchar. 50 | -------------------------------------------------------------------------------- /Website/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2011, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class WebsiteTestCase(PluginTestCase): 34 | plugins = ('Website',) 35 | 36 | if network: 37 | def testPlugin(self): 38 | self.assertError('plugin') 39 | self.assertError('plugin Eeigrg') 40 | self.assertResponse('plugin AttackProtector', 'This plugin aims to ' 41 | 'provide a highly configurable protection against flood and ' 42 | 'spam. http://supybot.aperio.fr/plugins/view/AttackProtector/') 43 | 44 | 45 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 46 | -------------------------------------------------------------------------------- /OEIS/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2013, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | class OEISTestCase(PluginTestCase): 34 | plugins = ('OEIS',) 35 | 36 | if network: 37 | def testNames(self): 38 | self.assertRegexp('names 1,2,6,24,120', '(?i)factorial.*(A000142)') 39 | self.assertRegexp('names 15454454651,198448,228454456', 'No entry') 40 | 41 | def testAdvsearch(self): 42 | self.assertRegexp('advsearch "$id" 1,2,6,24,120', 'A000142') 43 | self.assertNotRegexp('advsearch "$id" 1,2,6,24,120', 'factorial') 44 | 45 | 46 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 47 | -------------------------------------------------------------------------------- /Stocks/__init__.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2020 Valentin Lorentz 3 | # 4 | # Permission is hereby granted, free of charge, to any person obtaining a copy 5 | # of this software and associated documentation files (the "Software"), to deal 6 | # in the Software without restriction, including without limitation the rights 7 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | # copies of the Software, and to permit persons to whom the Software is 9 | # furnished to do so, subject to the following conditions: 10 | # 11 | # The above copyright notice and this permission notice shall be included in all 12 | # copies or substantial portions of the Software. 13 | # 14 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | # SOFTWARE. 21 | # 22 | ### 23 | 24 | """ 25 | Stocks: Provides access to stocks data 26 | """ 27 | 28 | import sys 29 | import supybot 30 | from supybot import world 31 | 32 | # Use this for the version of this plugin. 33 | __version__ = "" 34 | 35 | # XXX Replace this with an appropriate author or supybot.Author instance. 36 | __author__ = supybot.authors.unknown 37 | 38 | # This is a dictionary mapping supybot.Author instances to lists of 39 | # contributions. 40 | __contributors__ = {} 41 | 42 | # This is a url where the most recent plugin package can be downloaded. 43 | __url__ = '' 44 | 45 | from . import config 46 | from . import plugin 47 | if sys.version_info >= (3, 4): 48 | from importlib import reload 49 | else: 50 | from importlib import reload 51 | # In case we're being reloaded. 52 | reload(config) 53 | reload(plugin) 54 | # Add more reloads here if you add third-party modules and want them to be 55 | # reloaded when this plugin is reloaded. Don't forget to import them as well! 56 | 57 | if world.testing: 58 | from . import test 59 | 60 | Class = plugin.Class 61 | configure = config.configure 62 | 63 | 64 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 65 | -------------------------------------------------------------------------------- /Cleverbot/config.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # CleverBot Supybot Plugin v1.0 3 | # (C) Copyright 2012 Albert H. (alberthrocks) 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | # 18 | 19 | import supybot.conf as conf 20 | import supybot.registry as registry 21 | 22 | def configure(advanced): 23 | # This will be called by supybot to configure this module. advanced is 24 | # a bool that specifies whether the user identified himself as an advanced 25 | # user or not. You should effect your configuration by manipulating the 26 | # registry as appropriate. 27 | from supybot.questions import expect, anything, something, yn 28 | conf.registerPlugin('Cleverbot', True) 29 | 30 | 31 | Cleverbot = conf.registerPlugin('Cleverbot') 32 | #conf.registerGlobalValue(Cleverbot,'bot',registry.String('923c98f3de35606b',"""bot ID""")) 33 | conf.registerGlobalValue(Cleverbot,'bot',registry.String('9c1423d9be345c5c',"""bot ID""")) 34 | conf.registerGlobalValue(Cleverbot,'name',registry.String('AaronBot',"""bot name""")) 35 | conf.registerChannelValue(Cleverbot,'react',registry.Boolean(True,"""Determine whether the bot should respond to errors.""")) 36 | conf.registerChannelValue(Cleverbot,'reactprivate',registry.Boolean(True,"""Determine whether the bot should respond to private chat errors.""")) 37 | conf.registerChannelValue(Cleverbot,'enable',registry.Boolean(False,"""Determine whether the Cleverbot response is enabled or not""")) 38 | # This is where your configuration variables (if any) should go. For example: 39 | # conf.registerGlobalValue(Cleverbot, 'someConfigVariableName', 40 | # registry.Boolean(False, """Help for someConfigVariableName.""")) 41 | 42 | 43 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: -------------------------------------------------------------------------------- /Apt/README.md: -------------------------------------------------------------------------------- 1 | Provides read access to APT repositories. 2 | 3 | This plugin is a rewrite of PackageInfo using the `python-apt` library instead 4 | of parsing `apt-cache`'s console output. 5 | 6 | ## Usage 7 | 8 | To use it, you must set `$DATADIR/aptdir/etc/apt/sources.list` (where $DATADIR is 9 | configured with `supybot.directories.data`, which defaults to $BOTDIR/data`) 10 | to the list of sources you want to use. See `man sources.list` for supported 11 | format. 12 | 13 | You should also either allow insecure sources, or add keys to the trusted 14 | store yourself. 15 | 16 | Example: 17 | 18 | ``` 19 | deb [trusted=yes] http://archive.ubuntu.com/ubuntu bionic main universe 20 | deb-src [trusted=yes] http://archive.ubuntu.com/ubuntu bionic main universe 21 | deb [trusted=yes] http://deb.debian.org/debian buster main 22 | deb-src [trusted=yes] http://deb.debian.org/debian buster main 23 | deb [trusted=yes] http://deb.debian.org/debian stretch-backports main 24 | deb-src [trusted=yes] http://deb.debian.org/debian stretch-backports main 25 | ``` 26 | 27 | The bot will then take care of updating these sources, based on the value of 28 | `supybot.plugins.Apt.cache.updateInterval`. 29 | 30 | 31 | ## Foreign architectures 32 | 33 | By default, APT only considers packages on the native architecture (the one 34 | the bot is running on, usually amd64 on PC or arm64/armhf/armel on SBCs). 35 | 36 | This is usually not a big deal, as the distributions you configure in 37 | `sources.list` usually support your native architecture, and almost all 38 | packages are available for your native architectures. 39 | There are however two cases where you care about this: 40 | 41 | 1. The distribution doesn't support your native architecture at all 42 | (eg. your bot is running on a PC but the distribution is Armbian; 43 | or you're running your bot on a Raspberry Pi and the distribution 44 | doesn't support ARM). 45 | 2. You want to see specific information about packages on foreign 46 | architectures, using the `--archs` option. 47 | 48 | There are [many ways to enable foreign architecture](https://wiki.debian.org/Multiarch/HOWTO), 49 | but the easiest for you is probably just to add them to `sources.list`. 50 | For example: 51 | 52 | ``` 53 | deb [trusted=yes arch=amd64,arm64,armhf] http://deb.debian.org/debian buster main 54 | deb-src [trusted=yes] http://deb.debian.org/debian buster main 55 | ``` 56 | -------------------------------------------------------------------------------- /Brainfuck/messages.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR ORGANIZATION 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "POT-Creation-Date: 2012-04-17 15:44+EEST\n" 9 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 10 | "Last-Translator: FULL NAME \n" 11 | "Language-Team: LANGUAGE \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=CHARSET\n" 14 | "Content-Transfer-Encoding: ENCODING\n" 15 | "Generated-By: pygettext.py 1.5\n" 16 | 17 | 18 | #: plugin.py:77 19 | msgid "Got `]` (at index %i), expected whatever you want but not that." 20 | msgstr "" 21 | 22 | #: plugin.py:80 23 | msgid "Got end of string, expected `]`." 24 | msgstr "" 25 | 26 | #: plugin.py:103 27 | msgid "Negative memory pointer." 28 | msgstr "" 29 | 30 | #: plugin.py:141 31 | #, docstring 32 | msgid "" 33 | "Add the help for \"@plugin help Brainfuck\" here\n" 34 | " This should describe *how* to use this plugin." 35 | msgstr "" 36 | 37 | #: plugin.py:148 38 | #, docstring 39 | msgid "" 40 | "\n" 41 | "\n" 42 | " Tests the Brainfuck syntax without running it. You should quote the\n" 43 | " code if you use brackets, because Supybot would interpret it as nested\n" 44 | " commands." 45 | msgstr "" 46 | 47 | #: plugin.py:157 48 | msgid "Your code looks ok." 49 | msgstr "" 50 | 51 | #: plugin.py:163 52 | #, docstring 53 | msgid "" 54 | "[--recover] [--input ] \n" 55 | "\n" 56 | " Interprets the given Brainfuck code. You should quote the code if you\n" 57 | " use brackets, because Supybot would interpret it as nested commands.\n" 58 | " If --recover is given, the bot will recover the previous processor\n" 59 | " memory and memory pointer.\n" 60 | " The code will be fed the when it asks for input." 61 | msgstr "" 62 | 63 | #: plugin.py:175 64 | msgid "No processor has been run for the moment." 65 | msgstr "" 66 | 67 | #: plugin.py:186 68 | msgid "Brainfuck syntax error: %s" 69 | msgstr "" 70 | 71 | #: plugin.py:190 72 | msgid "Brainfuck processor timed out." 73 | msgstr "" 74 | 75 | #: plugin.py:193 76 | msgid "Input too short." 77 | msgstr "" 78 | 79 | #: plugin.py:196 80 | msgid "Segmentation fault: %s" 81 | msgstr "" 82 | 83 | #: plugin.py:199 84 | msgid "Tried to output invalid character: %s" 85 | msgstr "" 86 | 87 | -------------------------------------------------------------------------------- /SkypeRelay/test.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2020, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | from supybot.test import * 32 | 33 | 34 | class SkypeRelayTestCase(PluginTestCase): 35 | plugins = ("SkypeRelay",) 36 | 37 | def testAddRemove(self): 38 | self.assertResponse( 39 | "skyperelay relay list", "There are currently no configured relays." 40 | ) 41 | self.assertNotError("skyperelay relay add test #test 00:aaaa@foo.example") 42 | self.assertResponse( 43 | "skyperelay relay list", "#test@test <-> 00:aaaa@foo.example" 44 | ) 45 | self.assertNotError("skyperelay relay remove test #test 00:aaaa@foo.example") 46 | self.assertResponse( 47 | "skyperelay relay list", "There are currently no configured relays." 48 | ) 49 | 50 | 51 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=88: 52 | -------------------------------------------------------------------------------- /MilleBornes/plugin.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2010, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import supybot.utils as utils 32 | from supybot.commands import * 33 | import world.testing as testing 34 | import supybot.plugins as plugins 35 | import supybot.ircutils as ircutils 36 | import supybot.callbacks as callbacks 37 | try: 38 | from supybot.i18n import PluginInternationalization 39 | from supybot.i18n import internationalizeDocstring 40 | _ = PluginInternationalization('MilleBornes') 41 | except: 42 | # This are useless functions that's allow to run the plugin on a bot 43 | # without the i18n plugin 44 | _ = lambda x:x 45 | internationalizeDocstring = lambda x:x 46 | 47 | 48 | @internationalizeDocstring 49 | class MilleBornes(callbacks.Plugin): 50 | pass 51 | Class = MilleBornes 52 | 53 | 54 | # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: 55 | -------------------------------------------------------------------------------- /Sudo/messages.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR ORGANIZATION 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: PACKAGE VERSION\n" 8 | "POT-Creation-Date: 2012-03-30 22:24+UTC\n" 9 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 10 | "Last-Translator: FULL NAME \n" 11 | "Language-Team: LANGUAGE \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=CHARSET\n" 14 | "Content-Transfer-Encoding: ENCODING\n" 15 | "Generated-By: pygettext.py 1.5\n" 16 | 17 | 18 | #: plugin.py:77 19 | #, docstring 20 | msgid "Add a rule with the given ID." 21 | msgstr "" 22 | 23 | #: plugin.py:83 24 | #, docstring 25 | msgid "Remove the rule associated with the name, and returns it." 26 | msgstr "" 27 | 28 | #: plugin.py:131 29 | #, docstring 30 | msgid "Plugin that allows to run commands as someone else" 31 | msgstr "" 32 | 33 | #: plugin.py:141 34 | #, docstring 35 | msgid "" 36 | "[] {allow,deny} [] \n" 37 | "\n" 38 | " Sets a new Sudo rule, called with the given \n" 39 | " (greatest numbers have precedence),\n" 40 | " allowing or denying to run commands matching the pattern ,\n" 41 | " from users to run commands as wearing the .\n" 42 | " The must be a relative integer.\n" 43 | " If is not given, it defaults to 0.\n" 44 | " The defaults to your hostmask.\n" 45 | " The is only needed if you set an 'allow' rule.\n" 46 | " " 47 | msgstr "" 48 | 49 | #: plugin.py:154 50 | msgid "You don't have to give a hostmask when setting a \"deny\" rule." 51 | msgstr "" 52 | 53 | #: plugin.py:163 54 | msgid "This name already exists" 55 | msgstr "" 56 | 57 | #: plugin.py:172 58 | #, docstring 59 | msgid "" 60 | "\n" 61 | "\n" 62 | " Remove a Sudo rule." 63 | msgstr "" 64 | 65 | #: plugin.py:178 66 | msgid "This name does not exist." 67 | msgstr "" 68 | 69 | #: plugin.py:185 70 | #, docstring 71 | msgid "" 72 | " [ [ ...]]\n" 73 | "\n" 74 | " Runs the command following the Sudo rules." 75 | msgstr "" 76 | 77 | #: plugin.py:192 78 | msgid "Sudo not granted." 79 | msgstr "" 80 | 81 | #: plugin.py:204 82 | #, docstring 83 | msgid "" 84 | " \n" 85 | "\n" 86 | " Runs as if you were wearing the . Of course, usage\n" 87 | " of the command is restricted to the owner." 88 | msgstr "" 89 | 90 | -------------------------------------------------------------------------------- /Iwant/locales/fr.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR ORGANIZATION 3 | # FIRST AUTHOR , YEAR. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: Limnoria\n" 8 | "POT-Creation-Date: 2011-11-18 18:46+CET\n" 9 | "PO-Revision-Date: 2011-11-18 18:49+0100\n" 10 | "Last-Translator: Valentin Lorentz \n" 11 | "Language-Team: Limnoria \n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=UTF-8\n" 14 | "Content-Transfer-Encoding: 8bit\n" 15 | "Generated-By: pygettext.py 1.5\n" 16 | "X-Poedit-Language: Français\n" 17 | "X-Poedit-Country: France\n" 18 | 19 | #: config.py:52 20 | msgid "" 21 | "List of wanted things. Don't edit this variable\n" 22 | " unless you know what you do." 23 | msgstr "List de souhaits. N'éditez pas cette variable de configuration à moins de savoir ce que vous faîtes." 24 | 25 | #: plugin.py:53 26 | msgid "" 27 | "Add the help for \"@plugin help Iwant\" here\n" 28 | " This should describe *how* to use this plugin." 29 | msgstr "" 30 | 31 | #: plugin.py:58 32 | msgid "" 33 | "[] \n" 34 | "\n" 35 | " Tell the bot you want the . is only needed if you\n" 36 | " don't send the message on the channel itself." 37 | msgstr "" 38 | "[] \n" 39 | "\n" 40 | "Indiquez au bot que vous voulez la chose. n'est nécessaire que si vous n'envoyez pas le message sur le canal lui-même." 41 | 42 | #: plugin.py:64 43 | msgid "This thing is already wanted." 44 | msgstr "Cette chose est déjà voulue." 45 | 46 | #: plugin.py:73 47 | msgid "" 48 | "[]\n" 49 | "\n" 50 | " Returns the list of wanted things for the . defaults\n" 51 | " to the current channel." 52 | msgstr "" 53 | "[]\n" 54 | "\n" 55 | "Retourne la liste des souhaits pour le . correspond par défaut au canal actuel." 56 | 57 | #: plugin.py:80 58 | msgid "#%i: %s" 59 | msgstr "#%i : %s" 60 | 61 | #: plugin.py:86 62 | msgid "" 63 | "[] \n" 64 | "\n" 65 | " Tell you the thing number . is only needed if you\n" 66 | " don't send the message on the channel itself." 67 | msgstr "" 68 | "[] \n" 69 | "\n" 70 | "Affiche le souhait numéro . n'est nécessaire que si vous n'envoyez pas le message sur le canal lui-même." 71 | 72 | #: plugin.py:92 73 | msgid "No thing has this id." 74 | msgstr "Rien n'a cet id." 75 | 76 | #: plugin.py:94 77 | msgid "Wish #%i is %s." 78 | msgstr "Le souhait #%i est %s." 79 | 80 | -------------------------------------------------------------------------------- /AttackProtector/locales/it.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Supybot-fr\n" 4 | "POT-Creation-Date: 2011-02-26 09:49+CET\n" 5 | "PO-Revision-Date: 2012-05-06 17:55+0200\n" 6 | "Last-Translator: skizzhg \n" 7 | "Language-Team: Italian \n" 8 | "Language: it\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | 13 | 14 | #: config.py:54 15 | #, docstring 16 | msgid "Value must be in the format p." 17 | msgstr "Il valore deve essere nel formato p." 18 | 19 | #: config.py:64 20 | #, docstring 21 | msgid "" 22 | "Value must be a valid punishment ('ban', 'kick', 'kban', 'mode+X',\n" 23 | " 'mode-X', 'umode-X', 'command XXX', ...)" 24 | msgstr "" 25 | "Il valore deve essere una punizione valida ('ban', 'kick', 'kban', 'mode+X',\n" 26 | " 'mode-X', 'umode-X', 'comando XXX', ...)" 27 | 28 | #: config.py:81 29 | msgid "" 30 | "Determines whether or not AttackProtector\n" 31 | " is enabled on this channel." 32 | msgstr "Determina se AttackProtector sia abilitato o meno in questo canale." 33 | 34 | #: config.py:84 35 | msgid "" 36 | "If a user has this capability, he won't be\n" 37 | " punished by AttackProtector" 38 | msgstr "Se un utente ha questa capacità non verrà punito da AttackProtector." 39 | 40 | #: config.py:87 41 | msgid "" 42 | "Determines how long (in seconds) the plugin will\n" 43 | " wait before being enabled. A too low value makes the bot believe that\n" 44 | " its incoming messages 'flood' on connection is an attack." 45 | msgstr "" 46 | "Determina per quanto tempo (in secondi) il plugin attenderà prima di attivarsi.\n" 47 | " Un valore troppo basso fa credere al bot che la quantità di messaggi in arrivo\n" 48 | " quando si connette siano un attacco." 49 | 50 | #: config.py:103 51 | msgid "" 52 | "In the format XpY, where X is the number of %s per\n" 53 | " Y seconds that triggers the punishment." 54 | msgstr "Nel formato XpY, dove X è il numero di %s per Y secondi che fa scattare la punizione." 55 | 56 | #: config.py:106 57 | msgid "" 58 | "Determines the punishment applied when a\n" 59 | " %s flood is detected." 60 | msgstr "Determina la punizione applicata quando viene rilevato un %s di flood." 61 | 62 | #: plugin.py:107 63 | #, docstring 64 | msgid "This plugin protects channels against spam and flood" 65 | msgstr "Questo plugin protegge il canale da spam e flood." 66 | 67 | #: plugin.py:180 68 | msgid "%s flood detected" 69 | msgstr "rilevato flood di %s" 70 | 71 | -------------------------------------------------------------------------------- /SupySandbox/config.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf8 -*- 2 | ### 3 | # Copyright (c) 2010, Valentin Lorentz 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions are met: 8 | # 9 | # * Redistributions of source code must retain the above copyright notice, 10 | # this list of conditions, and the following disclaimer. 11 | # * Redistributions in binary form must reproduce the above copyright notice, 12 | # this list of conditions, and the following disclaimer in the 13 | # documentation and/or other materials provided with the distribution. 14 | # * Neither the name of the author of this software nor the name of 15 | # contributors to this software may be used to endorse or promote products 16 | # derived from this software without specific prior written consent. 17 | # 18 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 22 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 | # POSSIBILITY OF SUCH DAMAGE. 29 | 30 | ### 31 | 32 | import supybot.conf as conf 33 | import supybot.registry as registry 34 | 35 | def configure(advanced): 36 | # This will be called by supybot to configure this module. advanced is 37 | # a bool that specifies whether the user identified himself as an advanced 38 | # user or not. You should effect your configuration by manipulating the 39 | # registry as appropriate. 40 | from supybot.questions import expect, anything, something, yn 41 | conf.registerPlugin('SupySandbox', True) 42 | 43 | 44 | SupySandbox = conf.registerPlugin('SupySandbox') 45 | # This is where your configuration variables (if any) should go. For example: 46 | # conf.registerGlobalValue(SupySandbox, 'someConfigVariableName', 47 | # registry.Boolean(False, """Help for someConfigVariableName.""")) 48 | 49 | 50 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 51 | -------------------------------------------------------------------------------- /I18nPlaceholder/plugin.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2012, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import sys 32 | 33 | import supybot.utils as utils 34 | from supybot.commands import * 35 | import supybot.plugins as plugins 36 | import supybot.ircutils as ircutils 37 | import supybot.callbacks as callbacks 38 | 39 | class Placeholder: 40 | internationalizeDocstring = lambda self,y:y 41 | 42 | def PluginInternationalization(self, plugin_name): 43 | return lambda x:x 44 | 45 | 46 | class I18nPlaceholder(callbacks.Plugin): 47 | """Add the help for "@plugin help I18nPlaceholder" here 48 | This should describe *how* to use this plugin.""" 49 | def __init__(self, *args, **kwargs): 50 | super(I18nPlaceholder, self).__init__(*args, **kwargs) 51 | 52 | if 'supybot.i18n' not in sys.modules: 53 | sys.modules['supybot.i18n'] = Placeholder() 54 | 55 | 56 | Class = I18nPlaceholder 57 | 58 | 59 | # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: 60 | -------------------------------------------------------------------------------- /Wikipedia/locales/it.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Supybot-fr\n" 4 | "POT-Creation-Date: 2011-02-26 09:49+CET\n" 5 | "PO-Revision-Date: 2011-07-29 17:43+0200\n" 6 | "Last-Translator: James Lu \n" 7 | "Language-Team: Italian \n" 8 | "Language: it\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | 13 | 14 | #: config.py:59 15 | msgid "" 16 | "URL of the website from\n" 17 | " where you want to pull pages (usually: your language's\n" 18 | " wikipedia)" 19 | msgstr "" 20 | "URL del sito web da cui recuperare le pagine (solitamente wikipedia nella tua lingua)." 21 | 22 | #: config.py:59 23 | msgid "en.wikipedia.org" 24 | msgstr "it.wikipedia.org" 25 | 26 | #: plugin.py:56 27 | #, docstring 28 | msgid "" 29 | "Add the help for \"@plugin help Wikipedia\" here\n" 30 | " This should describe *how* to use this plugin." 31 | msgstr "" 32 | 33 | #: plugin.py:63 34 | #, docstring 35 | msgid "" 36 | "\n" 37 | "\n" 38 | " Returns the first paragraph of a Wikipedia article" 39 | msgstr "" 40 | "\n" 41 | "\n" 42 | " Restituisce il primo paragrafo di un articolo di Wikipedia." 43 | 44 | #: plugin.py:79 45 | msgid "I didn't find anything for \"%s\". Did you mean \"%s\"? " 46 | msgstr "Non trovo nulla per \"%s\"; intendevi \"%s\"? " 47 | 48 | #: plugin.py:91 49 | msgid "I didn't find anything for \"%s\", but here's the result for \"%s\": " 50 | msgstr "Non trovo nulla per \"%s\", ma questi sono i risultati per \"%s\": " 51 | 52 | #: plugin.py:101 53 | msgid "Redirected from" 54 | msgstr "Rediretto da" 55 | 56 | #: plugin.py:118 57 | msgid "%s is a disambiguation page. Possible results are: %s" 58 | msgstr "%s è una pagina di disambiguazione; i possibili risultati sono: %s" 59 | 60 | #: plugin.py:121 61 | msgid "This article is about the year [\\d]*\\. For the [a-zA-Z ]* [\\d]*, see" 62 | msgstr "Questo articolo è circa dell'anno [\\d]*\\. Per il [a-zA-Z ]* [\\d]* vedi" 63 | 64 | #: plugin.py:123 65 | msgid "\"%s\" is a page full of events that happened in that year. If you were looking for information about the number itself, try searching for \"%s_(number)\", but don't expect anything useful..." 66 | msgstr "\"%s\" è una pagina piena di eventi accaduti quest'anno. Se stavi cercando informazioni sul numero prova \"%s_(numero)\", ma non aspettarti niente di utile..." 67 | 68 | #: plugin.py:131 69 | msgid "Not found, or page malformed." 70 | msgstr "Non trovato, o pagina non valida." 71 | 72 | #: plugin.py:168 73 | msgid "Retrieved from" 74 | msgstr "Recuperato da" 75 | -------------------------------------------------------------------------------- /Coffee/config.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2011, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import supybot.conf as conf 32 | import supybot.registry as registry 33 | from supybot.i18n import PluginInternationalization, internationalizeDocstring 34 | 35 | _ = PluginInternationalization('Coffee') 36 | 37 | def configure(advanced): 38 | # This will be called by supybot to configure this module. advanced is 39 | # a bool that specifies whether the user identified himself as an advanced 40 | # user or not. You should effect your configuration by manipulating the 41 | # registry as appropriate. 42 | from supybot.questions import expect, anything, something, yn 43 | conf.registerPlugin('Coffee', True) 44 | 45 | 46 | Coffee = conf.registerPlugin('Coffee') 47 | # This is where your configuration variables (if any) should go. For example: 48 | # conf.registerGlobalValue(Coffee, 'someConfigVariableName', 49 | # registry.Boolean(False, _("""Help for someConfigVariableName."""))) 50 | 51 | 52 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 53 | -------------------------------------------------------------------------------- /Kickme/config.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2012, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import supybot.conf as conf 32 | import supybot.registry as registry 33 | from supybot.i18n import PluginInternationalization, internationalizeDocstring 34 | 35 | _ = PluginInternationalization('Kickme') 36 | 37 | def configure(advanced): 38 | # This will be called by supybot to configure this module. advanced is 39 | # a bool that specifies whether the user identified himself as an advanced 40 | # user or not. You should effect your configuration by manipulating the 41 | # registry as appropriate. 42 | from supybot.questions import expect, anything, something, yn 43 | conf.registerPlugin('Kickme', True) 44 | 45 | 46 | Kickme = conf.registerPlugin('Kickme') 47 | # This is where your configuration variables (if any) should go. For example: 48 | # conf.registerGlobalValue(Kickme, 'someConfigVariableName', 49 | # registry.Boolean(False, _("""Help for someConfigVariableName."""))) 50 | 51 | 52 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 53 | -------------------------------------------------------------------------------- /Scheme/config.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2013, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import supybot.conf as conf 32 | import supybot.registry as registry 33 | from supybot.i18n import PluginInternationalization, internationalizeDocstring 34 | 35 | _ = PluginInternationalization('Scheme') 36 | 37 | def configure(advanced): 38 | # This will be called by supybot to configure this module. advanced is 39 | # a bool that specifies whether the user identified himself as an advanced 40 | # user or not. You should effect your configuration by manipulating the 41 | # registry as appropriate. 42 | from supybot.questions import expect, anything, something, yn 43 | conf.registerPlugin('Scheme', True) 44 | 45 | 46 | Scheme = conf.registerPlugin('Scheme') 47 | # This is where your configuration variables (if any) should go. For example: 48 | # conf.registerGlobalValue(Scheme, 'someConfigVariableName', 49 | # registry.Boolean(False, _("""Help for someConfigVariableName."""))) 50 | 51 | 52 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 53 | -------------------------------------------------------------------------------- /Stocks/config.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2020 Valentin Lorentz 3 | # 4 | # Permission is hereby granted, free of charge, to any person obtaining a copy 5 | # of this software and associated documentation files (the "Software"), to deal 6 | # in the Software without restriction, including without limitation the rights 7 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | # copies of the Software, and to permit persons to whom the Software is 9 | # furnished to do so, subject to the following conditions: 10 | # 11 | # The above copyright notice and this permission notice shall be included in all 12 | # copies or substantial portions of the Software. 13 | # 14 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | # SOFTWARE. 21 | # 22 | ### 23 | 24 | from supybot import conf, registry 25 | try: 26 | from supybot.i18n import PluginInternationalization 27 | _ = PluginInternationalization('Stocks') 28 | except: 29 | # Placeholder that allows to run the plugin on a bot 30 | # without the i18n module 31 | _ = lambda x: x 32 | 33 | 34 | def configure(advanced): 35 | # This will be called by supybot to configure this module. advanced is 36 | # a bool that specifies whether the user identified themself as an advanced 37 | # user or not. You should effect your configuration by manipulating the 38 | # registry as appropriate. 39 | from supybot.questions import expect, anything, something, yn 40 | conf.registerPlugin('Stocks', True) 41 | 42 | 43 | Stocks = conf.registerPlugin('Stocks') 44 | # This is where your configuration variables (if any) should go. For example: 45 | # conf.registerGlobalValue(Stocks, 'someConfigVariableName', 46 | # registry.Boolean(False, _("""Help for someConfigVariableName."""))) 47 | 48 | conf.registerGroup(Stocks, 'alphavantage') 49 | conf.registerGroup(Stocks.alphavantage, 'api') 50 | conf.registerGlobalValue(Stocks.alphavantage.api, 'key', 51 | registry.String('', _("""API key for alphavantage.co."""), 52 | private=True)) 53 | conf.registerGlobalValue(Stocks.alphavantage, 'maxsymbols', 54 | registry.Integer(10, _("""Maximum number of symbols for single request"""))) 55 | 56 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 57 | -------------------------------------------------------------------------------- /Website/config.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2011, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import supybot.conf as conf 32 | import supybot.registry as registry 33 | from supybot.i18n import PluginInternationalization, internationalizeDocstring 34 | 35 | _ = PluginInternationalization('Website') 36 | 37 | def configure(advanced): 38 | # This will be called by supybot to configure this module. advanced is 39 | # a bool that specifies whether the user identified himself as an advanced 40 | # user or not. You should effect your configuration by manipulating the 41 | # registry as appropriate. 42 | from supybot.questions import expect, anything, something, yn 43 | conf.registerPlugin('Website', True) 44 | 45 | 46 | Website = conf.registerPlugin('Website') 47 | # This is where your configuration variables (if any) should go. For example: 48 | # conf.registerGlobalValue(Website, 'someConfigVariableName', 49 | # registry.Boolean(False, _("""Help for someConfigVariableName."""))) 50 | 51 | 52 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 53 | -------------------------------------------------------------------------------- /Pinglist/config.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2013, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import supybot.conf as conf 32 | import supybot.registry as registry 33 | from supybot.i18n import PluginInternationalization, internationalizeDocstring 34 | 35 | _ = PluginInternationalization('Pinglist') 36 | 37 | def configure(advanced): 38 | # This will be called by supybot to configure this module. advanced is 39 | # a bool that specifies whether the user identified himself as an advanced 40 | # user or not. You should effect your configuration by manipulating the 41 | # registry as appropriate. 42 | from supybot.questions import expect, anything, something, yn 43 | conf.registerPlugin('Pinglist', True) 44 | 45 | 46 | Pinglist = conf.registerPlugin('Pinglist') 47 | # This is where your configuration variables (if any) should go. For example: 48 | # conf.registerGlobalValue(Pinglist, 'someConfigVariableName', 49 | # registry.Boolean(False, _("""Help for someConfigVariableName."""))) 50 | 51 | 52 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 53 | -------------------------------------------------------------------------------- /Brainfuck/config.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2011, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import supybot.conf as conf 32 | import supybot.registry as registry 33 | from supybot.i18n import PluginInternationalization, internationalizeDocstring 34 | 35 | _ = PluginInternationalization('Brainfuck') 36 | 37 | def configure(advanced): 38 | # This will be called by supybot to configure this module. advanced is 39 | # a bool that specifies whether the user identified himself as an advanced 40 | # user or not. You should effect your configuration by manipulating the 41 | # registry as appropriate. 42 | from supybot.questions import expect, anything, something, yn 43 | conf.registerPlugin('Brainfuck', True) 44 | 45 | 46 | Brainfuck = conf.registerPlugin('Brainfuck') 47 | # This is where your configuration variables (if any) should go. For example: 48 | # conf.registerGlobalValue(Brainfuck, 'someConfigVariableName', 49 | # registry.Boolean(False, _("""Help for someConfigVariableName."""))) 50 | 51 | 52 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 53 | -------------------------------------------------------------------------------- /ListEmpty/config.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2012, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import supybot.conf as conf 32 | import supybot.registry as registry 33 | from supybot.i18n import PluginInternationalization, internationalizeDocstring 34 | 35 | _ = PluginInternationalization('ListEmpty') 36 | 37 | def configure(advanced): 38 | # This will be called by supybot to configure this module. advanced is 39 | # a bool that specifies whether the user identified himself as an advanced 40 | # user or not. You should effect your configuration by manipulating the 41 | # registry as appropriate. 42 | from supybot.questions import expect, anything, something, yn 43 | conf.registerPlugin('ListEmpty', True) 44 | 45 | 46 | ListEmpty = conf.registerPlugin('ListEmpty') 47 | # This is where your configuration variables (if any) should go. For example: 48 | # conf.registerGlobalValue(ListEmpty, 'someConfigVariableName', 49 | # registry.Boolean(False, _("""Help for someConfigVariableName."""))) 50 | 51 | 52 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 53 | -------------------------------------------------------------------------------- /Variables/config.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2011, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import supybot.conf as conf 32 | import supybot.registry as registry 33 | from supybot.i18n import PluginInternationalization, internationalizeDocstring 34 | 35 | _ = PluginInternationalization('Variables') 36 | 37 | def configure(advanced): 38 | # This will be called by supybot to configure this module. advanced is 39 | # a bool that specifies whether the user identified himself as an advanced 40 | # user or not. You should effect your configuration by manipulating the 41 | # registry as appropriate. 42 | from supybot.questions import expect, anything, something, yn 43 | conf.registerPlugin('Variables', True) 44 | 45 | 46 | Variables = conf.registerPlugin('Variables') 47 | # This is where your configuration variables (if any) should go. For example: 48 | # conf.registerGlobalValue(Variables, 'someConfigVariableName', 49 | # registry.Boolean(False, _("""Help for someConfigVariableName."""))) 50 | 51 | 52 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 53 | -------------------------------------------------------------------------------- /WikiTrans/config.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2011, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import supybot.conf as conf 32 | import supybot.registry as registry 33 | from supybot.i18n import PluginInternationalization, internationalizeDocstring 34 | 35 | _ = PluginInternationalization('WikiTrans') 36 | 37 | def configure(advanced): 38 | # This will be called by supybot to configure this module. advanced is 39 | # a bool that specifies whether the user identified himself as an advanced 40 | # user or not. You should effect your configuration by manipulating the 41 | # registry as appropriate. 42 | from supybot.questions import expect, anything, something, yn 43 | conf.registerPlugin('WikiTrans', True) 44 | 45 | 46 | WikiTrans = conf.registerPlugin('WikiTrans') 47 | # This is where your configuration variables (if any) should go. For example: 48 | # conf.registerGlobalValue(WikiTrans, 'someConfigVariableName', 49 | # registry.Boolean(False, _("""Help for someConfigVariableName."""))) 50 | 51 | 52 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 53 | -------------------------------------------------------------------------------- /AttackProtector/locales/fi.po: -------------------------------------------------------------------------------- 1 | # AttackProtector plugin for Limnoria. 2 | # Copyright (C) 2012 ProgVal 3 | # Mikaela Suomalainen , 2012. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: \n" 8 | "POT-Creation-Date: 2012-05-06 18:51+EEST\n" 9 | "PO-Revision-Date: 2012-05-06 18:53+0200\n" 10 | "Last-Translator: Mikaela Suomalainen \n" 11 | "Language-Team: Finnish <>\n" 12 | "Language: fi\n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "Generated-By: pygettext.py 1.5\n" 17 | "Plural-Forms: nplurals=2; plural=(n!=1);\n" 18 | 19 | #: config.py:54 20 | msgid "Value must be in the format p." 21 | msgstr "Arvon täytyy olla muodossa p" 22 | 23 | #: config.py:64 24 | msgid "" 25 | "Value must be a valid punishment ('ban', 'kick', 'kban', 'mode+X',\n" 26 | " 'mode-X', 'umode-X', 'command XXX', ...)" 27 | msgstr "" 28 | "Arvon täytyy olla kelvollinen rangaistus ('ban', 'kick', 'kban', 'mode+X',\n" 29 | " 'mode-X', 'umode-X', 'komento XXX', ...)" 30 | 31 | #: config.py:81 32 | msgid "" 33 | "Determines whether or not AttackProtector\n" 34 | " is enabled on this channel." 35 | msgstr "Määrittää onko AttackProtector käytössä tällä kanavalla." 36 | 37 | #: config.py:84 38 | msgid "" 39 | "If a user has this capability, he won't be\n" 40 | " punished by AttackProtector" 41 | msgstr "Jos käyttäjällä on tämä valtuus, hän ei tule AttackProtectorin rangaisemaksi." 42 | 43 | #: config.py:87 44 | msgid "" 45 | "Determines how long (in seconds) the plugin will\n" 46 | " wait before being enabled. A too low value makes the bot believe that\n" 47 | " its incoming messages 'flood' on connection is an attack." 48 | msgstr "" 49 | "Määrittää kuinka pitkään (sekunteissa) lisäosa odottaa ennen käyttöön ottoaan. Liian\n" 50 | " alhainen arvo saa botin olettamaan, että sen sisääntulevat viestit 'tulva' yhdistäessä\n" 51 | " on hyökkäys." 52 | 53 | #: config.py:103 54 | msgid "" 55 | "In the format XpY, where X is the number of %s per\n" 56 | " Y seconds that triggers the punishment." 57 | msgstr "Muodossa XpY, missä X on numero %s per Y sekunteja, joka laukaisee rangaistuksen." 58 | 59 | #: config.py:106 60 | #, fuzzy 61 | msgid "" 62 | "Determines the punishment applied when a\n" 63 | " %s flood is detected." 64 | msgstr "Määrittää rangaistuksen, joka toteutetaan, kun %s tulva on havaittu." 65 | 66 | #: plugin.py:107 67 | msgid "This plugin protects channels against spam and flood" 68 | msgstr "Tämä lisäosa suojelee kanavaa spämmiä ja tulvaa vastaan" 69 | 70 | #: plugin.py:180 71 | msgid "%s flood detected" 72 | msgstr "%s tulva havaittu." 73 | 74 | -------------------------------------------------------------------------------- /Kickme/plugin.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2012, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import supybot.utils as utils 32 | from supybot.commands import * 33 | import supybot.plugins as plugins 34 | import supybot.ircmsgs as ircmsgs 35 | import supybot.ircutils as ircutils 36 | import supybot.callbacks as callbacks 37 | from supybot.i18n import PluginInternationalization, internationalizeDocstring 38 | 39 | _ = PluginInternationalization('Kickme') 40 | 41 | @internationalizeDocstring 42 | class Kickme(callbacks.Plugin): 43 | """Add the help for "@plugin help Kickme" here 44 | This should describe *how* to use this plugin.""" 45 | def kickme(self, irc, msg, args, reason): 46 | """[] 47 | 48 | Kick yourself.""" 49 | if ircutils.isChannel(msg.args[0]): 50 | irc.queueMsg(ircmsgs.kick(msg.args[0], msg.nick, reason or '')) 51 | else: 52 | irc.error(_("This command must be run in a channel.")) 53 | kickme = wrap(kickme, [optional('text')]) 54 | 55 | 56 | Class = Kickme 57 | 58 | 59 | # vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: 60 | -------------------------------------------------------------------------------- /PingTime/config.py: -------------------------------------------------------------------------------- 1 | ### 2 | # Copyright (c) 2013, Valentin Lorentz 3 | # All rights reserved. 4 | # 5 | # Redistribution and use in source and binary forms, with or without 6 | # modification, are permitted provided that the following conditions are met: 7 | # 8 | # * Redistributions of source code must retain the above copyright notice, 9 | # this list of conditions, and the following disclaimer. 10 | # * Redistributions in binary form must reproduce the above copyright notice, 11 | # this list of conditions, and the following disclaimer in the 12 | # documentation and/or other materials provided with the distribution. 13 | # * Neither the name of the author of this software nor the name of 14 | # contributors to this software may be used to endorse or promote products 15 | # derived from this software without specific prior written consent. 16 | # 17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | # POSSIBILITY OF SUCH DAMAGE. 28 | 29 | ### 30 | 31 | import supybot.conf as conf 32 | import supybot.registry as registry 33 | try: 34 | from supybot.i18n import PluginInternationalization 35 | _ = PluginInternationalization('PingTime') 36 | except: 37 | # Placeholder that allows to run the plugin on a bot 38 | # without the i18n module 39 | _ = lambda x:x 40 | 41 | def configure(advanced): 42 | # This will be called by supybot to configure this module. advanced is 43 | # a bool that specifies whether the user identified himself as an advanced 44 | # user or not. You should effect your configuration by manipulating the 45 | # registry as appropriate. 46 | from supybot.questions import expect, anything, something, yn 47 | conf.registerPlugin('PingTime', True) 48 | 49 | 50 | PingTime = conf.registerPlugin('PingTime') 51 | conf.registerChannelValue(PingTime, 'enable', 52 | registry.Boolean(False, _("""Determines whether this plugin should 53 | be enabled."""))) 54 | 55 | # vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: 56 | --------------------------------------------------------------------------------