Compare commits

...

411 Commits

Author SHA1 Message Date
Michael H
2d22ee7ccc 🎉 (#2673) 2019-05-14 21:30:52 -08:00
Michael H
9a243a1454 [Utils] Tools for marking things unsafe for general use (#2326)
* Tools for marking things unsafe for general use

* I'm facepalming so much...

Actually, make the two do something different 
instead of getting distracted writing different docs for both based on intended usage.

* local scopes mmkay + tests

* Move file to adress feedback

* typo fix

* Update __init__.py

* Fix issue with exported names in __init__

* changelog
2019-05-14 20:56:41 -07:00
Will
165e40c0db [Mongo] Unescape dict keys when rebuild (#2671)
* Unescape dict keys when rebuilding

* update pipfile

* Really update pipfile now
2019-05-14 23:50:51 -04:00
Michael H
7f1c2b475b [Core] Help Redesign (#2628)
* [Bot] Support new design

* [Context] use the new help in `ctx.send_help`

* [Commands] Update Cog and Group for help compat

- Removes a trap with all_commands, this isn't a good way to check this
- Adds a help property
- Fixes command parsing in invoke

* Redesigns red's help

* handle fuzzy help

* style

* handle a specific ugly hidden interaction

* fix bot-wide help grouping

* changelog

* remove no longer needed -
2019-05-14 20:49:51 -07:00
palmtree5
a5f38fa6e6 Add my 3.1 contributions (#2670) 2019-05-14 19:38:18 -08:00
Michael H
598968bf74 [Audio] Lavalink jar bump (#2669) 2019-05-14 20:35:09 -07:00
Will
ee661b0a9f [Docs] Add release notes for major functionality changes and instructions (#2668)
* Add release notes for major functionality changes and instructions

* Update docs/changelog_3_1_0.rst

Co-Authored-By: Michael H <michael@michaelhall.tech>
2019-05-14 20:30:17 -07:00
Michael H
7d7b3413bc Add contributions to changelog (#2666)
* Put some stuff in the changelog

* explicit note on d.py ver
2019-05-14 23:07:22 -04:00
Flame442
7400008384 Adds [p]datapath to print the bot's data path (#2652)
* Add `[p]datapath` to print the bot's datapath

* Adds 2652
2019-05-14 01:05:52 -04:00
TrustyJAID
4e564e8ce4 [V3 Economy] lookup users from the guild instead of using stored names (#2637)
* [V3 Economy] lookup users from the guild instead of using stored names

* Make user ID only appear when owner calls the leaderboard and the user is not in the guild also black formatting

* Slight optimizations in formatting and fix error when no banks exist
2019-05-14 00:52:08 -04:00
aikaterna
8691fdc533 [Docs] Update Mac install instructions for Java (#2663) 2019-05-14 06:46:30 +02:00
Flame442
7d103f1d32 [Docs] Typo fix (#2658) 2019-05-14 00:34:19 -04:00
Kowlin
3de1a265ea [Core] Added co-owners to outdated message warnings (#2664)
* Added co-owners to potentially DMd users

* Fetch the cached of every guild, see comments of #2664

* Ensure owners can be DM'd.

* Refactoring try block.
2019-05-14 00:33:05 -04:00
entchen66
3b6d4d9df6 [Cleanup] Fix for 3.1 (#2661)
cleanup before use get_message wich isn't possible anymore in dp 1.0.1. so I changed it to fetch_message
2019-05-13 05:39:28 -04:00
Michael H
e96e5374b4 Update intershpinx refs (#2660) 2019-05-13 12:02:57 +10:00
Toby Harradine
5c91709ac8 Remove vendoring note in README 2019-05-10 10:34:17 +10:00
NIXC
96a91b9d0e [Audio] Add ability to skip to a specified track by number (#2584)
* add skip to track functionality

* formatting

* Change some strings

* missing return, variable naming

* add variable names for translations

* change handling of skipping 1 track

* minor semantic adjustments

skiptotrack -> skip_to_track
2019-05-08 01:34:37 -04:00
aikaterna
65b88c09fb [Audio] Update for Red-Lavalink 0.3.x (#2547)
* [Audio] Update for Red-Lavalink #55

* Update setup.cfg

* Catch all the exceptions

* Update version range on Red-Lavalink

* Catch excepts on Spotify tracks/playlist upload

* No prefix needed
2019-05-08 00:56:40 -04:00
Flame442
80ff07f53d [Core] Fix two typos in API Token Converter (#2650) 2019-05-07 16:12:08 -04:00
Flame442
4f6485d1f9 [i18n] Changes default locale value from en to en-US (#2642)
* Changes default locale value to `en-US`

* Added this PR

Also fixed slight inconsistency in what is in a code block (if this is merged)
2019-05-06 12:19:57 -04:00
Flame442
d1c903f36f Fix grammar mistake by changing "to large" to "too large" (#2646) 2019-05-06 12:18:57 -04:00
Kowlin
516ebcfa2b Fixed missing imports. (#2643)
* Added changelog

* Fixed missing imports.
2019-05-03 10:22:06 -04:00
Kowlin
9414de24d4 [Mod] Added voice kicking. (#2639)
* Added voice kicking.

* Reversed exceptions.

* Lets use a check that works for this task 👀

* Update abc.py

* Black formatting
2019-05-03 10:08:25 -04:00
Michael H
16990071cb [V3 core] on_message_without_command dispatch (#2338)
* conveinience and performance addition with new dispatch

* I promise, I read the specs first.

* Really, I read the fucking specs.
2019-05-02 16:25:35 -04:00
James
52433d253f String format failure when set invoked without subcommand (#2638) 2019-05-02 15:44:33 -04:00
Will
bb6327d969 [Audio] Fix architecture blacklisting (#2634) 2019-04-30 12:32:16 -04:00
Toby Harradine
476f441c9b [Audio] Refactor internal Lavalink server management (#2495)
* Refactor internal Lavalink server management

Killing many birds with one stone here.
- Made server manager into class-based API with two public methods: `start()` and `shutdown()`. Must be re-instantiated each time it is restarted.
- Using V3 universal Lavalink.jar hosted on Cog-Creators/Lavalink-Jars repository.
- Uses output of `java -jar Lavalink.jar --version` to check if a new jar needs to be downloaded.
- `ServerManager.start()` won't return until server is ready, i.e. when "Started Launcher in X seconds" message is printed to STDOUT.
- `shlex.quote()` is used so spaces in path to Lavalink.jar don't cause issues.
- Enabling external Lavalink will cause internal server to be terminated.
- Disabling internal Lavalink will no longer reset settings in config - instead, hard-coded values will be used when connecting to an internal server.
- Internal server will now run both WS and REST servers on port 2333, meaning one less port will need to be taken up.
- Now using `asyncio.subprocess` module so waiting on and reading from subprocesses can be done asynchronously.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Don't use shlex.quote on Windows

Signed-off-by: Toby <tobyharradine@gmail.com>

* Don't use shlex.quote at all

I misread a note in the python docs and assumed it was best to use it. Turns out the note only applies to `asyncio.create_subprocess_shell`.

Signed-off-by: Toby <tobyharradine@gmail.com>

* Missed the port on the rebase

* Ignore invalid architectures and inform users when commands are used.

* Style fix
2019-04-29 21:31:28 -04:00
Neuro Assassin
c79b5e6179 [Core Commands] Add patch for invalid path with [p]backup (#2626)
* Add patch
2019-04-29 19:38:36 -04:00
aikaterna
c1bee3fee5 [V3 Audio] Add settable path for external Lavalink (#2480) 2019-04-29 18:34:09 -04:00
aikaterna
d786103d8d [Audio] Set cwd for localtracks on playlist start (#2534) 2019-04-29 18:28:44 -04:00
Neuro Assassin
b3850f6bb7 [Cleanup] Add [p]cleanup between (#2617)
* Add `[p]cleanup between`

At the moment, only deletes the messages in between, does not delete the messages specified when running the command.

* Create converter for message IDs; remove f-strings; use converters in a few extra commands

* Sacrifice to the style gods
2019-04-29 15:55:23 -04:00
PredaaA
e3db3c0341 [Core_commands] Fix some missing i18n strings (#2631)
* Update core_commands.py

* Update core_commands.py
2019-04-29 15:21:58 -04:00
jack1142
1ce3bc2870 [Downloader] Suppress commands.ExtensionNotLoaded for bot.unload_extension() call (#2625)
fix(downloader): suppress `commands.ExtensionNotLoaded` for `bot.unload_extension()` call (#2625)
2019-04-29 12:42:36 -04:00
jack1142
24ac111782 [V3 Downloader] Allow to specify minimum and maximum bot version in info.json (#2605)
* feat(downloader): add `min_bot_version` and `max_bot_version`

Adds actually working way of specifying minimum and maximum bot version and removes not working
`bot_version`

BREAKING CHANGE: - removal of `bot_version` attribute in `Installable`

* test(downloader): `Installable` tests fix for new bot version attributes

* docs(changelog): added changelog entries for this PR
2019-04-29 12:33:49 -04:00
Flame442
07f127ffe4 [Docs] Changelog entries for contributions by Flame (#2627) 2019-04-29 12:06:02 -04:00
Will
c58f566047 [CustomCom] Update command generator to work with dpy update (#2616)
* I think this works?

* Let's do it

Co-Authored-By: tekulvw <tekulvw@users.noreply.github.com>
2019-04-25 12:31:58 -04:00
Tyler Adam
f28d6dff32 [Streams] Add ability to exclude rerun streams from alerts (#2620)
* [Streams] Add ability to exclude rerun streams from alerts

* [Docs] Changelog entries for contributions by EgonSpengler

* Changelog entry for #2620 [Streams] Ignore Reruns In Alerts
2019-04-25 11:58:58 -04:00
Neuro Assassin
7e49ce9a7b [Mod] Remove error when unbanning an unknown user (#2619)
Fix for #2542
2019-04-25 11:57:26 -04:00
Will
59115cd1c7 [Commands] Fix built in check decorator order affecting permissions (#2621)
OOOoooooOOOoOOOooOoOOOOoooo
2019-04-25 11:51:02 -04:00
PredaaA
1d93fe4cf9 Update changelog_3_1_0.rst (#2615) 2019-04-25 05:44:34 +02:00
aikaterna
3f1f7640cb [Docs] Changelog entries for contributions by aikaterna (#2614) 2019-04-24 20:55:32 -04:00
TrustyJAID
83ee7c5e92 [V3 Dev] Fix repl command sanitize api keys (#2613) 2019-04-24 20:54:50 -04:00
jack1142
b95ddf18ba [Docs] Changelog entries for contributions by jack1142 (#2612)
* docs(changelog): [Mod] Allow admin to choose amount of repeats for "deleterepeats" #2437

* docs(changelog): Spelling correction of method name in Tunnel #2496

* docs(changelog): Tunnel fix - When tunnel closes, message should be sent to other end #2507

* docs(changelog): [V3 Downloader] Tell user how to load the cog after [p]cog install #2523

* docs(changelog): [V3 Audio] If bot has move members perm, it can join to user-limited channels #2525

* docs(changelog): [Trivia] Fix of dead image link (world flags) #2540

* docs(changelog): [V3 Test] Make sure that trivia test will use utf-8 encoding #2565

* docs(changelog): [V3 Core] Print actual version, when `--version` flag is used #2567

* docs(changelog): [V3 Downloader] Stop including subpackages in cog list #2590

* docs(changelog): [V3 Downloader] Uninstall multiple cogs #2592

* docs(changelog): [V3 Downloader] Always remove cog from installed in `[p]cog uninstall` #2595
2019-04-24 20:06:51 -04:00
Will
61d255726c [Docs] Add initial changelog document (#2611)
* Add initial changelog document

* add initial links

* oops
2019-04-24 17:08:55 -04:00
Will
05e2851c67 [Config] Migrate UUID for JSON backend (#2604)
* Migrate UUID for JSON backend

* Interesting...

* black

* Simplify UUID creation
2019-04-24 16:03:27 -04:00
Will
f20a174038 Fix the check to raise the correct message (#2603) 2019-04-24 21:24:31 +02:00
Michael H
ec108e7c02 [Alias] cleanup issues missed with #2587 (#2610) 2019-04-24 11:43:47 -04:00
Michael H
ad114295e7 Discord.py dep update 3.1 (#2587)
* Dependency update

discord.py==1.0.1
websockets<7

[style]
black==19.3b0

[Docs]
jinja==2.10.1
urllib3==1.24.2

Changes related to breaking changes from discord.py have also been made
to match

As of this commit, help formatter is back to discord.py's default
2019-04-23 21:40:38 -04:00
aikaterna
0ff7259bc3 [Audio] DJ role should ask for a role (#2606) 2019-04-23 18:41:46 -04:00
TrustyJAID
49af94334e Add Central API Key Documentation (#2574) 2019-04-23 23:51:37 +02:00
Flame442
22c318fda3 [Core] Adds a check to [p]set locale (#2553)
* Adds a check to [p]set locale

Fixes #2552
I would like a little bit of feedback on this change.
- Right now, `locale_name` is case sensitive. Should that remain case sensitive or should I allow it to accept it case insensitively?
- I made the invalid locale string an i18n string, however I don't know the process for how those are supposed to be made or if that will break anything. Should that remain an i18n string or should I make it a normal string?

* Case insensitivity and explicit en-US

-`[p]set locale` is now case insensitive
-`en-US` added to `[p]listlocales` instead of only existing in `[p]set locale`'s help text

* Remove spacing
2019-04-23 17:43:50 -04:00
jack1142
da5fd7699e [V3 Downloader] Always remove cog from installed when using cog uninstall (#2595) 2019-04-23 14:26:16 -04:00
Michael H
3d498a74ba [Docs] Update docs for redbot.core.humanize_list (#2598)
closes #2546
2019-04-23 14:16:15 -04:00
jack1142
460b4bb3f2 [Mod] Allow admins to choose amount of repeats for "deleterepeats" (#2437)
* feat(mod): configurable amount of repeats for "deleterepeats"

resolves #2267

* fix(mod): check user input instead of changing it if it's invalid

* fix(mod): only purge cache when argument is valid

* perf(mod): fetch repeats from config only when guild not in cache
2019-04-23 10:01:20 -04:00
Tyler Adam
47723cee33 [Mod] make [p]ban days parameter optional as per the doc (#2602) 2019-04-23 09:45:28 -04:00
Tyler Adam
a1b03be27e Add support for custom stream alert messages per guild (#2600) 2019-04-23 02:57:46 -08:00
Michael H
012d99c05c [Utils] Better error handling for humanize_list (#2597) 2019-04-22 22:34:38 -04:00
jack1142
2c8a425f87 [V3 Downloader] Uninstall multiple cogs (#2592)
* feat(downloader): Uninstall multiple cogs

* refactor(downloader): Put everything in one message
2019-04-22 20:17:30 -04:00
Flame442
8555f8c28c [Downloader] Pretties up the output when libraries fail to install (#2576)
* Pretties up the output when libraries fail to install

* Stupid double quote bullshit

* Added jack1142's suggestion

* I will never satisfy the eldritch being named black
2019-04-22 20:15:26 -04:00
jack1142
46413c2c52 [V3 Downloader] Stop including subpackages in cog list (#2590)
Before this change, `Repo.available_modules` would also contain subpackages, which is unintended
2019-04-22 20:07:52 -04:00
TrustyJAID
eaeaf9dd69 [V3 Streams] Change twitch and youtube top level commands (#2479) 2019-04-22 20:06:50 -04:00
zephyrkul
ee11d7da63 [V3 Audio] Cancel emptydisconnect when no longer alone (#2519)
* [audio] cancel disconnect when no longer alone

* [audio] fix modifying while iterating
2019-04-22 20:05:37 -04:00
NIXC
0ac93aacd5 [V3 Economy] Add default cooldown to slots (#2561)
* Add default cooldown to slots

To prevent abuse

* slight boost in time

1 second actually doesn't help, needs a bit more.
2019-04-22 19:44:05 -04:00
TrustyJAID
691d8af26d [V3 Warnings] Utilize modlog cases (#2471)
* [V3 Warnings] Utilize modlog cases

This update utilizes modlog cases for warnings and slightly improves usage of custom warnings if enabled.

* remove BadArgument error response

* Utilize Optional and consume-rest for points and reason

* black format

* Remove unnecessary imports, cleanup error handling, and improve docstrings
2019-04-22 19:34:36 -04:00
TrustyJAID
87c66b2423 [V3 Admin] Fix errors when hierarchy issues are raised (#2498)
* Fix addrole mentioning who we're trying to add the role to

* More things are broken, huh

* formatting...
2019-04-22 19:25:44 -04:00
aikaterna
005123a371 [Audio] Fix for playlist queue when not playing (#2586) 2019-04-22 19:17:44 -04:00
aikaterna
bb8ce43cc0 [Audio] Track search and append fixes (#2591)
* [Audio] Track search and append fixes

* Appeasing the style gods
2019-04-22 19:17:17 -04:00
palmtree5
13611e34d2 Fix extras in launcher (#2588)
Now non-existent voice extra was still hanging around in the launcher while the style extra was never added in
2019-04-22 14:46:07 -08:00
Neuro Assassin
b8190c44a8 [Dev] Sanitize API tokens in debug and eval (#2585)
* Sanitize API tokens in debug and eval

* Not sure what happened there
2019-04-22 18:43:02 -04:00
Will
95d5ec5f0e [Setup] Fix the mongo name to create instances using new driver (#2594)
* oops

* damn you
2019-04-22 18:33:52 -04:00
zephyrkul
874204bf18 [mongo setup] utilize getpass (#2593) 2019-04-21 07:04:08 -08:00
Will
6c296a9a17 [V3 Setup] Overhaul backend conversion process through setup scripts (#2579)
* swap to click for setup

* Initial changes

* expose some stuff to allow for per-driver optimizations

* overwrite base config

* add red log

* add one print juuuust in case

* fix this

* thanks kowlin

* damn

* oops

* fix thing

* partial commit

* Working mongo -> json conversion, it sucks tho

* remove unused line

* Wrote initial optimized json importer

* optimized json importer

* remove useless line

* update mongo to json converter

* lets try writing the correct entry

* oops

* style fix

* add some garbage data filters going from old mongo to json

* ignore garbage data in mongov2 conversions

* simplify code a bit and add a completion message

* missed one

* Update pipfile lock

* Lock click version
2019-04-20 20:10:44 -04:00
PredaaA
ad06b0e723 [Audio] Fix issue on audiostats command when more than 20 servers to display (#2533)
* Update audio.py

* Fix of pages counter.
2019-04-18 12:12:16 -04:00
Will
0652dd344b [V3 Mongo] Correct dictionary rebuilding process for global all case (#2581) 2019-04-13 15:51:49 -04:00
Will
8b3c3e89e9 [V3 Mongo] Fix all behavior (#2580) 2019-04-13 15:24:50 -04:00
Will
c82ac5ae68 Add some errors for backend conversions and only allow MongoV2 creation (#2570)
* Add some errors for conversions and only allow mongoV2 creation

* Add another message

* Fixed message to be more clear
2019-04-10 20:42:28 -04:00
jack1142
2776db0cf9 [V3 Core] Print actual version, when version flag is used (#2567) 2019-04-10 19:32:20 -04:00
Will
ba19179e4f [V3 Config] Record custom group information using cog_add event (#2550)
* Do things differently

* Uncomment critical lines

* Reduce, reuse, recycle

* Check groups on all new config objects after a cog loads

* I don't know why this is failing now or why we need the global keyword

* gotta fix this too
2019-04-09 22:02:50 -04:00
jack1142
e347ffa336 Bot can join voice channel with user limit if it has move members perm (#2525) 2019-04-09 20:33:19 -04:00
kennnyshiwa
c85af62401 Fix message when user hits max credits (#2563)
* Fix message when user hits max credits

Fixes the error message when a users issues the payday command when having max credits

* Update economy.py

Changed message when user hits max payday and bank is global to match message when bank is per server

* Update economy.py

made statements match
2019-04-09 18:54:44 -04:00
aikaterna
39b64b7570 [Audio] Fix for localtrack playing (#2557) 2019-04-09 17:13:57 -04:00
aikaterna
56b220b92e [Audio] Fix for prev command display (#2556) 2019-04-09 17:10:25 -04:00
jack1142
972fbecc94 [V3 Trivia] Make sure that test will use utf-8 encoding (#2565) 2019-04-09 17:03:34 -04:00
Michael H
136e781c7f Kill DataConverter (#2554)
* Kill DataConverter

* remove the tests
2019-04-09 17:01:04 -04:00
Will
0852d1be9f [V3 Config] Require custom group initialization before usage (#2545)
* Require custom group initialization before usage and write that data to disk

* Style

* add tests

* remove custom info update method from drivers

* clean up remnant

* Turn config objects into a singleton to deal with custom group identifiers

* Fix dumbassery

* Stupid stupid stupid
2019-04-04 21:47:08 -04:00
Will
fb722c79be [V3 ModLog] Change register_casetypes behavior (#2551)
* Ignore runtime error in register_casetypes

* Fix documentation
2019-04-04 18:59:14 -04:00
jack1142
c63d069f69 [Trivia] Fix of dead image link (world flags) (#2540)
* New image link for Sao Tome and Principe

Current link is dead

* Someone didn't pay attention on geography lessons
2019-04-03 11:40:20 -04:00
Will
1cd7e41f33 [V3 Config] Update Mongo document organization to bypass doc size restriction (#2536)
* modify config to use identifier data class and update json driver

* move identifier data attributes into read only properties

* Update mongo get and set methods

* Update get/set to use UUID separately, make clear work

* Remove not implemented and fix get_raw

* Update remaining untouched get/set/clear

* Fix get_raw

* Finally fix get_raw and set_raw

* style

* This is better

* Sorry guys

* Update get behavior to handle "all" calls as expected

* style again

* Why do you do this to me

* style once more

* Update mongo schema
2019-04-03 09:04:47 -04:00
zephyrkul
d6d6d14977 [V3 Alias] Customize Parameters (#2455)
* [alias] custom parameters

Signed-off-by: zephyrkul <zephyrkul@users.noreply.github.com>

* [alias] quoted words remain quoted

Signed-off-by: zephyrkul <zephyrkul@users.noreply.github.com>

* [alias] fix no-parameter aliases

Signed-off-by: zephyrkul <zephyrkul@users.noreply.github.com>

* [alias] remove unneeded error dispatch

it was expensive and did nothing anyway from my own testing
2019-04-02 23:08:28 -04:00
PredaaA
82cda4b57a Delete cooldown messages when expired (#2469) 2019-04-02 23:06:30 -04:00
Toby Harradine
301c800319 Logging enhancements and cleanup (#2502)
* Logging enhancements and cleanup

- Removed debug log messages every time `Config.get_conf` is used or a JSON file is read/saved. The basic configuration is now logged once with DEBUG when the bot starts up instead.
- Changed logging output format to reverse date order, include seconds, and use the logger's name instead of the module, function and line number.
- Log files are now kept in the `DATAPATH/core/logs` directory. Each time Red is restarted, a new log is created, and the old ones renamed in a rotating fashion. There can be a maximum of 9 logs in total.
- Each log file now has a smaller max size of 500KB before it will be split into multiple parts. There are also a maximum of 9 parts of each log.
- Discord.py logger now uses the same output formatter as red's loggers
- Moved logging setup code into `redbot.logging` module.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Reformat

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Implement discussed changes

- We maintain a red.log over multiple runtimes, alongside a latest.log and previous.log for individual runtimes.
- Naming convention changed a bit. E.g. when latest.log is just one part, it will be named latest.log. When it becomes two parts, they will both be named latest-part1.log and latest-part2.log.
- Rotation direction is reversed. This means as the files end up being named in chronological order.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-04-02 22:58:34 -04:00
DiscordLiz
30af83aa6a [Permissions] Allow for multiple IDs in permissions rule commands. (#2448)
Use `commands.Greedy` to apply multiple rules at once.

closes #2214
2019-04-02 22:53:07 -04:00
jack1142
0f9501f93a Tunnel - Send message after close (#2507) 2019-04-02 22:50:01 -04:00
Michael H
466b2b82d0 Fix localwhitelist/localblacklist add/remove (#2531) 2019-04-02 22:46:12 -04:00
Michael H
8ab39512d9 [Filter] Performance increases. (#2509)
* [Filter] Performance increases.

The filter was already using re to split words, this just does the entire search in re instead.

A further improvement to this would cache patterns used and update them if the wordlist changes.

* Add a pattern cache

* exit on no-words

* formatting pass

* keep the return type consistent, even though this doesnt break core since this is available to cogs

* ...

* Quit being an idiot

* Slight further improvements, a fix, and restructure

Moved actual set creation out of the inner portion.
Reduced config lookups in case of no filter.
Fixed channel wordlist fetching.

* I really should go back to using a pre-commit hook for the style stuff
2019-04-02 22:42:13 -04:00
jack1142
e08e95c04e [V3 Downloader] Tell user how to load the cog after [p]cog install (#2523)
* tell user how to load the cog after install

* use code block
2019-04-02 22:35:21 -04:00
FixedThink
e7b1fa5ab5 [V3 Trivia] Update "World" trivias to reflect legislative changes (#2526)
* Update worldmap.yaml

* Update worldflags.yaml

* Update worldcapitals.yaml
2019-04-02 22:33:40 -04:00
Flame442
14a2f98418 [Docs] Adds self recommendation to cog_data_path (#2539)
This change adds the help text of "If calling from a command or method of your cog, this should be self." from `bundled_data_path` to `cog_data_path`. This bit of text can help people who are unsure of what a "cog instance" is to understand how to use `cog_data_path`.
2019-04-02 22:24:20 -04:00
aikaterna
de7d08ee75 [Audio] Match v2 behavior for channel change (#2521)
* [Audio] Match v2 behavior for channel change

* Use move_to instead of connect
2019-04-02 22:22:57 -04:00
aikaterna
2a486cad66 [V3 Audio] Playlist info improvements (#2274)
* [V3 Audio] Playlist info improvements

* Add pagify import, reformat for Black

* Change from code block to embed with links
2019-04-02 21:48:21 -04:00
aikaterna
80fc639480 [V3 Audio] Queue clean and queue clear addition (#2476)
* [V3 Audio] Queue clean and queue clear addition

* Use DJ role and existing checks inst. of mod/admin

* Remove unneeded .format()
2019-04-02 21:12:55 -04:00
Michael H
c7608aeb17 [V3 Mod] Use a composite class for mod (#2501)
* [V3 Mod] Use a composite class for mod

This turns mod.py into acomposite class

I've split things in this up based on purpose, including `movetocore`

`movetocore` is a set of things which likely belong in the core bot and
not relying on mod being loaded.

This is part of #2500

Per discussion in discord, this should be the first thing in #2500
merged

* Move this back,
mod was importable,
and this was intended as non-breaking

* Prevent fix from being lost if merged before this.

see Cog-Creators/Red-DiscordBot#2510

* Move case creation to before sending

see #2515

* fix failed merge done in web
2019-04-01 03:34:27 -08:00
aikaterna
050300040c [V3 Audio] Add Spotify support (#2328)
* [V3 Audio] Add Spotify support

* [V3 Audio] Update LICENSE

* Appeasing the style gods

* Extra word removal on LICENSE

* Update for #2389

Thanks to TrustyJAID for the help.

* Playlist command support for Spotify URLs or codes

* Add exception for dc while loading Spotify tracks

* Allow Spotify urls by default in audioset restrict

Matches the behavior of Spotify codes already being allowed by default.

* Update audio.py

* .format() moving

* Added a character to try to make Travis behave
2019-03-28 13:41:17 -04:00
aikaterna
94c3a2fedd [Audio] Seek command can now seek to position (#2470)
- Seek can now seek to a specific position, formatted like 00:00:00 or 00:00. Using negative or positive ints still functions the same as previously and will seek ahead or behind by that value instead.
- This PR requires the `_time_convert` func added in #2465 and should be merged after that one.
2019-03-10 18:27:23 +11:00
aikaterna
421043d923 [Audio] Fix for audioset status (#2481)
Revert player.is_playing check added to the playing players list for audioset status in #2473. This addition would cause no status to be shown when a local track was played and skip was used.
2019-03-08 09:09:22 +11:00
aikaterna
1c22b212c2 [Audio] Add songs when search-queuing (#2513)
Searching for a song and pressing the reaction to queue a song would not add the song to the queue if `[p]audioset maxlength` was off. This was an omission from #2465.
2019-03-07 14:12:15 +11:00
Flame442
d52b3eaf21 Proper capitalization of [p]blacklist help text (#2511) 2019-03-07 08:57:06 +11:00
Flame442
30ca226e39 [Trivia] Fix typo in warcraft trivia (#2508)
teh -> the
2019-03-06 20:04:11 +11:00
aikaterna
15037013e7 [Audio] Add option for dc at queue end (#2472)
This addition adds a toggle for having the bot instantly disconnect when the queue ends. It takes precedence over the `[p]audioset emptydisconnect` setting as it disconnects immediately when the queue or single song is finished.
2019-03-04 14:16:26 +11:00
jack1142
30fa9303e8 Spelling correction of method name in Tunnel (#2496)
`Tunnel.files_from_attatch` was misspelled.

Kept old name as an alias for backwards compatibility.
2019-03-04 12:19:40 +11:00
Toby Harradine
b4753a02de Fix translations of multiline strings (#2504)
* Fix translations of multiline strings

Resolves #2408.

Also did a few little optimisations here and there, we're no longer just using copied code from another project.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Reformat

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-03-04 00:45:15 +01:00
Toby Harradine
628073cbe1 Update Translations (#2486)
Also included a Makefile recipe which makes use of the Crowdin CLI's `crowdin download` command. This requires whoever is using it to provide the project's API key in an environment variable, but we may automate this at some point.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-03-04 08:55:01 +11:00
aikaterna
2755592175 [Audio] Playlist download addition (#2482)
Bot owners can use `[p]playlist download playlistname` to download a playlist file that is compatible with the playlist upload command. Songs can also be exported for v2 use by using `[p]playlist download playlistname True`, which strips out tracks besides YouTube or Soundcloud URLs.
2019-03-03 14:29:42 +11:00
entchen66
6051ccb23c [Filter] Dispatch event on_filter_message_delete (#2483) 2019-02-27 16:27:10 +11:00
El Laggron
46f9cae0ef [Audio] Sort local files (#2358) 2019-02-27 16:22:10 +11:00
Seputaes
16614168a7 [Downloader] Install SHARED_LIBRARY requirements (#2384)
SHARED_LIBRARY Installable types did not have the requirements as
defined in info.json automatically installed. This change updates the
installation of libraries to also install their requirements.

Resolves #2381
2019-02-27 16:07:05 +11:00
El Laggron
5a15939f08 Bump aiohttp-json-rpc to version 0.12.1 (#2489) 2019-02-27 09:55:20 +11:00
Toby Harradine
bb5aab16c9 [Permissions] Exclude @everyone role when retrieving rules (#2484)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-25 10:19:00 +11:00
Toby Harradine
b38ac1d025 Bump version to 3.0.2
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-25 08:54:50 +11:00
Toby Harradine
22cf8e940c [Permissions] Fix typo in cog_add event 2019-02-25 08:27:49 +11:00
aikaterna
b0ab6bd7e2 [Audio] Add track length restriction (#2465)
* Added `[p]audioset maxlength`, which takes seconds or 00:00-style of formatted input for restricting the player to songs that have a length under that threshold.
2019-02-24 11:44:58 +11:00
aikaterna
7b9d85c1b5 [Audio] Emptydisconnect and status refactor (#2473)
- Refactored disconnect_timer, the function behind audioset emptydisconnect, to be more appropriately responsive (thanks to TrustyJAID)
- Refactored status clearing/status changing when emptydisconnect or other Lavalink player statuses would have a TRACK_END event but no QUEUE_END event. This should clear or modify the bot's status event appropriately when [p]audioset status is on and the bot disconnects due to emptydisconnect and ideally play a little nicer with other cogs that set statuses.
2019-02-23 08:45:01 +11:00
DiscordLiz
3637804929 Fix Command.error decorator (#2478)
This shouldn't be a coroutine.
2019-02-23 07:13:22 +11:00
DiscordLiz
c70a44e0fe Make on_command_error recognise custom error handlers (#2458)
Adds detection of custom error handlers to the global error handler.

Adds documentation of the updated behaviour.

Closes #2276.
2019-02-22 20:12:00 +11:00
Toby Harradine
cf18b601e2 [Mod] Use consume-rest in [p]casesfor 2019-02-22 17:52:30 +11:00
Lionir
139cc07bda Resolve network issue due to certificate failure (#2442)
There seems to have been a recurring problem with certificates on Macs, this is how you solve it *apparently*. 😎
2019-02-22 06:24:39 +01:00
DiscordLiz
619c3f28f7 fix case generation for cases which were not logged to modlog channel (#2477)
Add documentation for failure cases
Prevent an expected failure case.
2019-02-22 03:33:45 +01:00
DiscordLiz
9966668307 adds function to modlg API to get cases by member (#2453)
adds command using this to view all of a member's cases demonstrating this

closes #2266
2019-02-22 03:31:37 +01:00
palmtree5
77a0a67029 [Streams] Remove communities support (#2223)
See [this blog post](https://blog.twitch.tv/introducing-tags-and-new-categories-33744ef7b04f), communities on Twitch have been discontinued.
2019-02-21 17:37:28 +11:00
ZeLarpMaster
b65466cebd [Trivia] Fix typo in cars.yaml (#2475) 2019-02-21 09:49:43 +11:00
Toby Harradine
f1873e32d6 [Docs] Use correct perms cmd for setting default rules 2019-02-20 16:08:25 +11:00
Michael H
b7b4e65d2d [Permissions] Remove p alias (#2467)
People can re-add it with the alias cog, but core red should not monopolize short aliases.

What about those servers that want `[p]play` even shorter?
2019-02-19 10:43:02 +11:00
aikaterna
16bb334fba [Audio] Add playlist copy (#2205)
Bot owners can now copy playlists from one server to another using server IDs.
2019-02-19 10:36:20 +11:00
TrustyJAID
3f1d416526 Allow central storage of API keys (#2389)
This creates a central location to store external API tokens that can be used between cogs without requiring each cog to be loaded for it to work.

A new set option for `[p]set api` is created to assist in forming bot readable API token locations.

This also updates the Streams cog to utilize the central database.

Tokens are moved from the old data locations in core cogs on load.
2019-02-19 10:22:44 +11:00
Michael H
722aaa225b Improve Cooldown UX (#2412)
This improves the feedback given on `command_on_cool_down`, as well as automatically handling cooldowns under 1 second for the user.
2019-02-19 10:19:49 +11:00
aikaterna
7e2e37ab3f [Audio] Play local folders via text command (#2457)
`[p]local folder` will now accept folder names in the command instead of having to navigate through the reaction menu. Also added an alias of `[p]local start` to help users coming from v2 audio.
2019-02-19 10:16:41 +11:00
aikaterna
83411d0fa4 [Audio] Change pause to a toggle (#2461) 2019-02-19 10:10:11 +11:00
aikaterna
d608dd953b [Audio] Remove aliases (#2462) 2019-02-19 10:08:59 +11:00
Flame442
e5e0a024f9 Remove unnecessary "or" from Config doc (#2464) 2019-02-17 14:14:40 -09:00
Caleb Johnson
8e6db0829c [Audio] Connect to lavalink in the background (#2460)
Also:
- restart and reconnect if connection settings change
  - shutdown and restart if not configured to use external
- show a message in [p]play et al. when the connection hasn't been made
- move the JAR download to manager so audio.py can access it
- only start if no process exists
- bump red-lavalink to 0.2.3

Resolves #2306
2019-02-17 09:22:55 +11:00
Toby Harradine
5359fec195 Bump version to 3.0.1
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-16 12:21:25 +11:00
Toby Harradine
f2daf0be9a Revert "[Audio] Connect to lavalink in the background (#2335)" (#2459)
This reverts commit b633a33137.
2019-02-16 11:52:03 +11:00
Caleb Johnson
b633a33137 [Audio] Connect to lavalink in the background (#2335)
Also:
- restart and reconnect if connection settings change
  - shutdown and restart if not configured to use external
- show a message in [p]play et al. when the connection hasn't been made
- move the JAR download to manager so audio.py can access it
- only start if no process exists

Resolves #2306
2019-02-16 11:35:21 +11:00
Michael H
d13bf37845 [Utils] Add filters for spoiler markdown (#2401)
This also wraps some fields of the modlog with the same sanitization, as well as the `[p]names` command.
2019-02-16 11:34:38 +11:00
Michael H
4b831a634a [Audio] Remove players which no longer have a guild. (#2414)
Cleanup players when the bot has one for a guild it leaves.

Bumps Red-Lavalink to v0.2.2
2019-02-16 11:15:33 +11:00
DiscordLiz
f91e0a6546 Prevent error when ctx.send_interactive prompt is deleted (#2447)
Supress excpetions which may occur when attempting to delete a prompt.

fixes #2380
2019-02-16 07:46:36 +11:00
ZeLarpMaster
2e2d669fdf [Trivia] Fix typo in cars.yaml (#2456) 2019-02-16 07:39:49 +11:00
Toby Harradine
7ecdf7a7be Remove asyncio.Event creation from module level in Audio (#2454)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-15 14:27:01 +11:00
Twentysix
9b940de854 [Downloader] [p]pipinstall: Handle no args 2019-02-14 23:39:38 +01:00
zephyrkul
82807ffe69 [Downloader] Use shlex for subprocesses (#2421) 2019-02-14 23:32:11 +01:00
Toby Harradine
b1066ad58f Guard module-level creation of Config objects (#2449)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-14 15:36:48 +11:00
Caleb Johnson
ac8b1fc108 [Filter] Filter based on words for non-phrases (#2262)
Filters based strictly on words (ignoring punctuation) if filter entry isn't a phrase.
2019-02-13 14:14:12 +11:00
zephyrkul
820be2a0ae [Core] Utilize consume rest, Union (#2407) 2019-02-13 14:11:22 +11:00
Toby Harradine
9869f95bd6 Update dependencies and copyright year (#2436)
- aiohttp 3.5
- websockets 7
- Rapptz/discord.py@700dbb5
- A few others

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-13 10:49:11 +11:00
zephyrkul
c87286d3c6 [README] Update support channel (#2445) 2019-02-12 21:24:14 +01:00
Twentysix
7028ca9df3 [Docs] Link bot account guide (#2440) 2019-02-11 20:17:39 +01:00
Toby Harradine
435fc141ae Default rules for subcommands precede supercommands (#2422)
This incorporates default rules into the same resolution techniques used by concrete rules.

Resolves #2313.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-11 14:14:29 +11:00
Twentysix
889fa63aff Sentry removal (#2439)
Resolves #2430.
2019-02-11 11:19:02 +11:00
Toby Harradine
dae75521d3 [Audio] Enable logging on Lavalink V3 (#2438)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-10 18:36:02 +11:00
Toby Harradine
b9d440f2f7 Utilise setup.cfg, move version info to redbot package (#2411)
* Utilise setup.cfg, move version info to redbot package

- `redbot.__init__` now is safe to import without installing dependencies.
- Now deploying binary wheel distribution from travis
- Include locale files in sub-packages of cog packages
- python_requires now has no upper limit

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-09 12:08:22 +11:00
Toby Harradine
ec4c325efd Guard parsing of CLI args in launcher, setup scripts (#2432)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-08 18:08:10 +11:00
Twentysix
b350ac38dc Allow [p]info customization (#2417)
* Allow [p]info customization

* Style

* Naming
2019-02-08 02:38:26 +01:00
PredaaA
e88c82e7e0 Update help_formatter.py (#2431) 2019-02-08 02:24:59 +01:00
Twentysix
99ad01ae0d [p]userinfo: Handle target w/ 'None' Member.joined_at (#2426) 2019-02-07 22:40:40 +01:00
Toby Harradine
8f8c52d8c4 [Docs] Add note about pyenv optimisation flag (#2428)
Signed-off-by: Toby <tobyharradine@gmail.com>
2019-02-07 21:54:14 +11:00
Toby Harradine
c56fa5a320 Minor changes to install docs (#2427)
- When creating a venv, use `python3.7` instead of `python3`
- Remove unnecessary dependency from pyenv pre-requirements on Debian
- Use curl over wget for get-pip on Xenial

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-07 10:51:17 +11:00
Toby Harradine
7d5bae5a50 Use V2 of RTD's configuration file (#2418)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-07 10:30:01 +11:00
bobloy
7c404082f8 [Help] Group Fields respect page_char_limit (#2281)
It would groups the cogs until it is **greater** than the set `page_char_limit` in helpset. This leads to inconsistent page sizes when a large cog was appended to something barely under the limit.

I think this commit will reign in the weirdness by adjusting the secondary grouping to aim for **less than** `page_char_limit` grouping.
2019-02-06 18:59:54 +11:00
Toby Harradine
dc8e61cbe5 Always tick Voice requirements on startup screen (#2413)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-02-04 22:33:48 +11:00
zephyrkul
f2ebf52f6e Send help on empty [p]load/unload/reload (#2410)
Rather than attempting to load / reload / unload nothing, send command help on bare `[p]load`, etc. commands.
2019-02-04 17:39:03 +11:00
Redjumpman
fa223e22ed [Utils] Fix for MessagePredicate.lower_contained_in (#2399)
Added a missing str.lower() method when checking to see if the content is in the list.
2019-02-04 10:22:01 +11:00
PredaaA
6d22c8faa5 [Core cmds] [p]servers: handle message deletion (#2400) 2019-02-03 23:32:45 +01:00
Michael H
01ebf2835b Improve usability of warnings/unwarn\n resolves #2403 (#2404) 2019-02-03 02:37:01 -09:00
Michael H
3ef693a259 prevent traceback (#2406)
* prevent traceback related to  Rapptz/discord.py#1638

* formatting
2019-02-02 11:20:17 +01:00
Caleb Johnson
3a4d932d2b Use find_namespace_packages in setup.py (#2402) 2019-02-01 16:10:10 +11:00
Kowlin
571332ae18 Fixed our missing templates (#2398) 2019-01-31 10:36:14 +11:00
Toby Harradine
0607f5552a Use python-Levenshtein-wheels (#2393)
This removes the compiler detection logic in setup.py. python-Levenshtein-wheels includes pre-built wheels for virtually all operating systems and architectures we support.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-30 16:52:36 +11:00
Toby Harradine
016a6d3aa6 Bump minimum python version to 3.7.0 (#2394)
This is in anticipation of #2246, although I've written that PR to not break on 3.6, the feature itself is not usable on 3.6. So I think the best way forward is to simply require python 3.7. This also allows devs and cog creators to utilise all of the new features in 3.7, and it also updates the docs so all operating systems will have 3.7 installed.

Signed-off-by: Toby <tobyharradine@gmail.com>
2019-01-30 14:07:53 +11:00
Toby Harradine
c7d98f88e8 Update Travis badge in README to travis-ci.com (#2395)
Signed-off-by: Toby <tobyharradine@gmail.com>
2019-01-29 01:46:37 -09:00
Toby Harradine
b82756087a Merge V3/release/3.0.0 into V3/develop 2019-01-28 15:30:30 +11:00
Toby Harradine
91258fea78 Bump version to 3.0.0
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-28 14:52:14 +11:00
Toby Harradine
5c1c6e1f03 Remove version from help message
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-28 14:49:55 +11:00
Toby Harradine
6d5762d711 Move Red-Lavalink to main requirements
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-28 14:38:43 +11:00
Toby Harradine
05bef917ae Vendor discord.py (#2387)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-28 14:14:36 +11:00
Caleb Johnson
348277bcbd [Audio] Lavalink 3.0/3.1 compatibility updates (#2272)
- Update to red-lavalink v0.2.0 (blocked by Cog-Creators/Red-Lavalink#41)
- Force lavalink to use TLSv1.2 on java 11+ (blocked by #2270)

I would add equalizer support, but there's no way to know the full
Lavalink version and thus whether it's supported ahead of time.
2019-01-28 12:43:21 +11:00
El Laggron
3b62572c89 Graceful shutdown when SIGTERM is received (#2286)
Only works on Unix.
2019-01-23 10:28:30 +11:00
Iangit1
158c4f741b Grammar in ask_sentry and interactive_config (#2383) 2019-01-21 09:07:55 +11:00
bobloy
abcf179042 [CogManager] Fix return type-hint (#2319) 2019-01-19 11:47:58 +11:00
Michael H
3dba09d19d [Docs] Chocolately/PowerShell install instructions for Windows (#2364) 2019-01-19 11:45:22 +11:00
Michael H
1c4193cce2 [Permissions] Quick extra comment of importance (#2379) 2019-01-18 14:48:00 +11:00
Michael H
849ade6e58 Reconcile permission hooks with ctx.permission_state (#2375)
Resolves #2374.

See mod.py's voice mute for an example of why this may be necessary.
2019-01-18 14:45:34 +11:00
Toby Harradine
0d4e6a0865 Fix MongoDB to JSON migration and warn about Mongo driver (#2373)
Resolves #2372.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-18 11:26:33 +11:00
Toby Harradine
e07408161a Merge branch 'V3/release/3.0.0' into V3/develop
# Conflicts:
#	redbot/cogs/mod/mod.py
2019-01-11 16:42:42 +11:00
Toby Harradine
32bd47e105 Bump version to 3.0.0rc3.post1
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-11 13:09:40 +11:00
Toby Harradine
1bb5d698cc Make Travis only do py36 tox when deploying
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-11 13:04:00 +11:00
Toby Harradine
9752a9c719 Bump version to 3.0.0rc3 (#2367)
Also updated some dependencies, including discord.py.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-11 11:10:01 +11:00
Toby Harradine
7973babe4b Catch exceptions in [p]backup (#2363)
Resolves #2354.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-11 09:07:37 +11:00
Michael H
78e4b578e2 [Utils] Tunnel minor fixes (#2366)
- Tunnel uses a safe max size (Max size is related to maximum payload, not maximum file size)
  - Checks attachment sizes prior to download
2019-01-10 19:46:49 +11:00
Toby Harradine
8eb8848898 [Mod] Context-based voice checks (#2351)
- Removed `redbot.cogs.mod.checks` module
- Moved logic for formatting a user-friendly list of permissions to `redbot.core.utils.chat_formatting`
- `[p]voice(un)ban` and `[p](un)mute voice` now check permissions in the user's voice channel

Resolves #2296.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-10 11:35:37 +11:00
Toby Harradine
aac1460240 [Utils] Exit menu silently when message is deleted (#2344)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-10 11:33:38 +11:00
Toby Harradine
dde5582669 [CogManager] Removal of implicit paths and general cleanup (#2345)
- Removed memory-sided `CogManager._paths` attribute, as it has no practical use.
- `[p]removepath` now removes the actual path displayed with the index specified in `[p]paths`.
- New method for retreiving a deduplicated list of user-defined paths as `Path` objects
- General cleanup so we don't have to do so much head-scratching next time an issue arises here

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2019-01-06 11:02:58 +11:00
Twentysix
937d2fe0f6 [Mod] Enhanced [p]hackban (#2164) 2019-01-05 03:29:05 +01:00
Toby Harradine
aa854cf1f9 [CustomCom] Insert space before newline separating CC previews (#2350)
Resolves #2295.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-12-29 16:54:32 +01:00
Toby Harradine
2bd05a5a04 Fix JSON to Mongo migration (#2346)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-12-29 10:51:31 +11:00
palmtree5
bcc50557a9 [V3 Readme] Update cog list links (#2347) 2018-12-23 00:17:20 -09:00
Toby Harradine
3a8da1f82b [Cleanup] Fix cleanup after
Resolves #2343.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-12-22 09:19:25 +11:00
Toby Harradine
bdcb69ad37 Merge branch 'V3/release/3.0.0' into V3/develop
# Conflicts:
#	redbot/cogs/audio/audio.py
2018-12-21 13:37:32 +11:00
Toby Harradine
811634a2b0 [Permissions] Help menu respects rules (#2339)
Resolves #2249.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-12-21 13:30:13 +11:00
Toby Harradine
2512320b30 [DataManager] Don't copy bundled data to cog data folder (#2342)
- `load_bundled_data` is now deprecated and obselete
- Bundled data is now no longer copied to the cog's data folder, greatly simplifying its operations under the hood. Instead, `bundled_data_path` will now return the path to the folder from which the files would have previously been copied.

Resolves #2329.

Resolves #2280.
2018-12-21 13:26:00 +11:00
Michael H
db03faf042 Make webhooks automod immune (#2337)
Resolves #2336.
2018-12-21 11:43:46 +11:00
Toby Harradine
701259158f [Permissions] Always respect default rules (#2341)
Resolves #2340.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-12-21 10:35:17 +11:00
Kowlin
a5efdc6492 [Mod] Handle invalid nicknames in [p]rename (#2311) 2018-12-16 11:21:36 +11:00
Kowlin
38b15ded87 [Mod] Fixed loud RuntimeError on modlog cases (#2331) 2018-12-16 10:26:48 +11:00
Michael H
351749dff6 [Permissions] Find things uniquely for models (#2258)
This is a safety measure to prevent accidentally passing a model which has the same name as another model, potentially modifying rules for the unwanted one.
2018-12-16 10:09:18 +11:00
Michael H
2d9912cea7 prevent locking out owner (#2317) 2018-12-13 18:38:03 +01:00
aikaterna
3b50ed8192 [V3 Audio] Restrict toggle for commercial sites (#2245)
* [V3 Audio] Restrict toggle for commercial sites

* Different url parsing

* Allow local tracks

* No self needed

* Change Twitch url
2018-12-13 18:31:24 +01:00
NNTin
c4ab34a049 V3: regex extension on java -version (#2316)
* regex extension on java -version

* make it a non capturing group

* alphanumeric matching

* Match specification: Style, line length

* Update manager.py
2018-12-13 18:28:00 +01:00
Michael H
985e7b3c6d swap unsafe yaml.load usage for yaml.safe_load (#2324)
Related to #2323

Recommend additionally adding a step in CI
ensuring use of `yaml.load` is prevented from existing in the code base.
2018-12-13 18:19:27 +01:00
palmtree5
7546c50226 [Streams] Toggle mentions on for roles being alerted (#2252)
Resolves #1831.
2018-11-24 10:46:38 +11:00
aikaterna
6435f6b882 [Audio] Match openJDK 11 on Ubuntu (#2270)
Using the OpenJDK 11 from java.net on Ubuntu 18 reports "11" as the version, which failed the Java version check on loading audio on a new instance. This change will return "11 0" as the version, passing the check, instead of just "11".
2018-11-24 10:45:37 +11:00
aikaterna
bbccb671b8 [Audio] Disallow seek during active vote (#2290)
Users were able to use seek to skip songs while voteskip was active. This change prevents users from doing so.
2018-11-24 10:43:23 +11:00
Twentysix
8abb24bc01 [Core] [p]leave: Fix incorrect response handling (#2302) 2018-11-24 10:42:05 +11:00
aikaterna
419008f644 [Downloader] Findcog fix with no repo installed (#2304)
The findcog command errored out if a repo was removed. This change informs the user that the repo is not installed instead of erroring out.
2018-11-24 10:39:54 +11:00
odinair
d17c2430d7 [Streams] Fix alerts with no configured mentions (#2305) 2018-11-24 10:14:43 +11:00
Michael H
ca533f8937 [JsonIO] race condition fix (#2308)
* race condition fix

* style fix
2018-11-24 10:11:59 +11:00
Michael H
30c3a4c7c1 [Docs] CentOS correct git version (#2309)
Resolves #2260.
2018-11-24 10:06:59 +11:00
Michael H
9d22d5b7b5 [Cleanup] Correct handling of command message (#2310)
Resolves #2307
2018-11-24 10:04:08 +11:00
Kowlin
2846dce6ea [Mod] [p]modset: Fix KeyError (#2279)
Co-authored-by: aikaterna <20862007+aikaterna@users.noreply.github.com>
2018-11-14 23:35:56 +01:00
aikaterna
9973b2e3b8 [General] [p]urban: Handle no embeds (#2285) 2018-11-14 23:21:11 +01:00
aikaterna
d008a2559a [General] Clearer error message for [p]rps (#2284) 2018-11-14 22:56:08 +01:00
FixedThink
6470bc1cda [Mod] [p]userinfo: Get avatar format with proper method (#2291) 2018-11-14 22:46:01 +01:00
Michael H
221b636f3f Prevent locking out owner from commands (#2257) 2018-11-06 11:32:40 +11:00
aikaterna
7f3a0b8a88 [Streams] Add help for streamset (#2287) 2018-11-06 10:26:55 +11:00
FixedThink
f7e41063bf [Trivia] Change Swaziland to its new name, eSwatini (#2275) 2018-11-06 09:52:25 +11:00
aikaterna
d0fca373ba [Audio] Local track verify on playlist start (#2271) 2018-11-06 09:44:26 +11:00
FixedThink
451c4c9d54 [Trivia] Fix text formatting issue (#2269)
The "Question number {}" message was being emboldened twice from the left side, making the bot send messages with two redundant asterisks.
2018-11-06 08:58:10 +11:00
zephyrkul
a59002275d [Economy] Fix TypeError in [p]payouts (#2263) 2018-11-06 08:55:29 +11:00
bobloy
d6cd959a2b [Docs] Update example cog to include base cog class (#2256) 2018-11-06 08:41:34 +11:00
Toby Harradine
99bbde7be9 Reject bad perm kwargs in check decorators (#2289)
Also fixed a misspelled kwarg in reports.

Also now raising TypeError for an empty `@checks.has_permissions()` decorator.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-11-05 15:07:56 +11:00
Kowlin
92dbd14006 Fixes typos in permissions (#2288)
causing the checks to be thrown out of the window.
2018-11-05 04:19:54 +01:00
aikaterna
57f078925e [V3] Update CODEOWNERS for audio (#2277) 2018-10-30 18:19:16 +01:00
palmtree5
6e9243f6e9 Drop unneeded .format in [p]triviaset override (#2268) 2018-10-23 17:40:51 -08:00
Toby Harradine
8b4e12da81 Merge branch 'V3/release/3.0.0' into V3/develop
# Conflicts:
#	redbot/cogs/customcom/customcom.py
#	redbot/core/errors.py
2018-10-16 09:42:38 +11:00
Toby Harradine
8bba860f85 Bump version to 3.0.0rc2
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-16 09:37:23 +11:00
Toby Harradine
d2d26835c3 [Economy] Detect max balance and prevent OverflowError (#2211)
Resolves #2091.

This doesn't fix every OverflowError with MongoDB; but at least the seemingly easiest one to achieve with core cogs.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-16 09:30:53 +11:00
Toby Harradine
aff62a8006 [Downloader] Unload extensions on uninstall (#2243)
Resolves #2216.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-16 09:19:32 +11:00
Toby Harradine
b5fd28ef7c [CustomCom] Better display for [p]cc list (#2215)
Uses a menu, optionally embedded with respect to the embed settings, for scrolling through the custom command list, each cc with a ~50 character preview. Format is purposefully similar to the help menu.

Resolves #2104.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-16 08:39:44 +11:00
Michael H
c510ebe5e5 [Downloader] Only prompt reload of loaded cogs (#2233) 2018-10-15 23:29:56 +11:00
Toby Harradine
5ba95090d9 [Streams] Suppress HTTPExceptions on load (#2228)
Resolves #2227.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-15 22:31:14 +11:00
Toby Harradine
ad51fa830b [Cleanup] [p]cleanup bot includes aliases and CCs (#2213)
Resolves #1920.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-15 22:29:07 +11:00
Christopher Rice
1ba922eba2 [Downloader] Add missing prefix format kwarg (#2238)
Fixes #2237.
2018-10-14 17:11:16 +11:00
Christopher Rice
9588a5740c [Downloader] Define Translator in converters module (#2239)
Fixes #2236
2018-10-14 17:09:54 +11:00
Toby Harradine
7cd765d548 Fix permissions hook removal (#2234)
Some in-progress work slipped through #2149, and I figure it should be fixed before RC2.

I've also just decided to allow discovery of permissions hooks from superclasses as well. We should try to be more aware of the possibility of cog superclasses moving forward.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-14 11:52:39 +11:00
zephyrkul
6022c0f7d7 [Mod] Mute/unmute bugfixes (#2230)
- Helper methods mute_user and unmute_user now take GuildChannel instead of solely TextChannel.
- The bot will not attempt to mute a member with the Administrator permission, as that permission bypasses channel overwrites anyway. The bot will still unmute members with the Administrator permission (see #2076).
- Audit reasons are now specified for mass mutes / unmutes.
- A few typos and missing keyword specifiers were corrected.
- Streamlined some logic and used some already-existing functions.
2018-10-12 15:47:39 +11:00
Toby Harradine
5ed8be9998 Merge V3/release/3.0.0 into V3/develop 2018-10-12 08:59:14 +11:00
Michael H
4357fe1ba9 [Core] Fixes reload, and prompted reload on cog update (#2226)
Fix something missed when QAing #2207
2018-10-12 07:23:04 +11:00
palmtree5
0548744e94 [V3 Cleanup] fix error in cleanup user (#2225) 2018-10-11 14:36:45 +02:00
Toby Harradine
8b2d115335 [Audio] Rename current_build to current_version in Config (#2219)
Renames the `current_build` key to `current_version`. This means the `current_version` key will always be a dict and never a list, and `current_build` having no defaults means it won't mess with `[p]audioset settings`.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-11 12:02:02 +11:00
El Laggron
a64db76b4d [Core] Specify an error message on package loading (#2207)
Allows cog creators to explain clearly why a cog cannot load by raising  `redbot.core.errors.CogLoadError`. Instead of having to check in the console what's wrong, the message will directly be sent in the context channel.
2018-10-11 11:57:11 +11:00
Toby Harradine
094735566d [Warnings] Fix actions not being taken (#2218)
When multiple warning actions were registered, and the user didn't exceed the points for the highest action on the list, no action was taken.

Resolves #2106.

Also commented out the casetype registration for warnings, since it's not actually using modlog yet.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-11 11:54:11 +11:00
Toby Harradine
f7b1f9f0dc [MongoDB] Escape special characters in keys (#2212)
Essentially resolves #2038, although this is escaping and not rejecting keys as that issue implies.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-11 11:20:42 +11:00
Toby Harradine
ce25011f0d [Config] Cast keys to str on get/set/clear (#2217)
This is a step towards a more consistent front-end behaviour of Config, where errors are either circumvented or raised in the same way regardless of the driver being used.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-11 11:18:57 +11:00
Twentysix
c464f5e7dc [CustomCommands] Add [p]cc show (#2204) 2018-10-10 10:27:25 +11:00
bobloy
f85034eb27 [Trivia] Add On/Off as alternatives for YAML bools (#2177) 2018-10-09 22:05:37 +11:00
Toby Harradine
849755ecd2 [Core] Fix errors with [p]backup on MongoDB (#2210)
Resolves #2094.

This command needs some more fixing and cleaning up than this, this is just a simple bugfix which gets it mostly working for now.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-09 15:30:27 +11:00
Toby Harradine
9217275908 [Permissions] Fix ValueError for "default" rule in config/ACL (#2200)
This was thrown when the "default" key existed and Permissions tried to iterate over the list mapping keys as ints.

Also fixed some issues with saving config with keys as `int` instead of `str`.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-09 15:14:59 +11:00
Toby Harradine
00bc3c86b1 Merge V3/release/3.0.0 into V3/develop (#2209) 2018-10-09 09:10:05 +11:00
zephyrkul
9e13ca45e6 [Mod] Fix KeyError in modset (#2208) 2018-10-09 09:04:51 +11:00
aikaterna
46c38a28eb [Alias] Fix alias help (#2194)
Alias help would only return the first character of the invoked command previously. This change shows help for basic commands that are aliased (i.e. just `ping`) or aliased commands that have an argument included (i.e. `audioset role beep` with `beep` being a role name)
2018-10-08 18:23:32 +11:00
El Laggron
76bbcf2f8c [Core] Support already loaded packages in [p]load (#2116) 2018-10-08 08:18:28 +11:00
ASSASSIN0831
ee7e8aa782 [Economy] Revert change to payday message (#2203)
in the updates were for the i18n translation strings the payday command message was accidentally changed to +(amount) (new balance). This changes it back to its original message +(amount) (currency name)
2018-10-08 07:39:30 +11:00
Toby Harradine
ba605495ac [Dev] Use isawaitable over iscoroutine for [p]debug (#2202)
Allows for non-coroutine awaitables (such as config's `_ValueCtxManager`) to be awaited from debug.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-07 19:36:35 +11:00
Toby Harradine
fd0abc250d [Audio] Fix type mismatch between config defaults and set value (#2201)
current_build is now set as a dict, but its default was a list.

This resolves the error an `[p]audioset settings`.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-07 19:33:04 +11:00
Toby Harradine
847f9fc8d1 [CustomCommands] Find default converters properly (#2199)
The new `redbot.core.commands.converter` module was causing default converters to never be found.

Also cleaned up some of the other code (made some methods static, fixed some typing violations)

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-07 12:58:08 +11:00
Toby Harradine
748847d5bf Merge changes for RC1 into V3/develop 2018-10-07 12:06:28 +11:00
zephyrkul
046e98565e [Cleanup] use message_filter() over check() param (#2180)
Cleanup's helper method to collect messages to delete was incorrectly filtering by check rather than message_filter, causing delete_after to be ignored.
2018-10-07 10:19:56 +11:00
Toby Harradine
71eddc89ea [Mod] Fix unresolved reference to Member.permissions in reinvite logic
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-07 09:42:25 +11:00
aikaterna
9730a424ec [Admin] Selfrole list formatting (#2193)
Selfrole list needed a return in between the header and the list.
2018-10-07 08:46:32 +11:00
aikaterna
7b260cdafc [Audio] Playlist list, local queue, DJ Role fix (#2191)
Fix for `playlist list`: added forgotten variable plus return for formatting (fixes #2190)

i18n addditions: DJ Role toggle, Thumbnail display toggle

`audioset settings`: added missed end of line return

`queue` fix: added indentation to not have the currently playing song info repeated in the queue display when playing local songs

`local play` and `local folder` now display the appropriate menu when DJ role is on.
2018-10-07 08:42:13 +11:00
aikaterna
4369095a51 [Economy] Fix for bank set (#2192)
i18n variable was wrong.
2018-10-07 08:26:33 +11:00
Toby Harradine
1c706e8c45 Bump version to 3.0.0rc1.post1
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-06 19:25:14 +10:00
Toby Harradine
91029b73e5 Use our own redbot.core.VersionInfo over distutils.StrictVersion (#2188)
* Implements our required subset of PEP 440 in redbot.core.VersionInfo
* Added unit tests for version string parsing and comparisons

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-06 19:11:05 +10:00
zephyrkul
de4b42a11e [mongo] fix missing URI variable assignment (#2186) 2018-10-06 14:48:03 +10:00
Toby Harradine
03230b6386 Remove branch condition from Travis deployment
So we can automatically deploy from release branches
2018-10-06 14:07:27 +10:00
Toby Harradine
4dbf2796c0 Bump version to 3.0.0rc1
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-06 10:26:59 +10:00
Twentysix
03892f5ef1 [Utils] Markdown helpers escape special chars (#2182)
Escaping italics (`*`) that get passed to `italics()` doesn't work, the string still won't show up properly.
2018-10-06 10:14:11 +10:00
bobloy
fdf3f86ab0 [Utils] Allow menu() to be used DM (#2183)
`ctx.me` handles using `ctx.guild.me` if `ctx.guild is not None`
`ctx.guild.me` directly errors in DMs.
2018-10-06 10:02:09 +10:00
Toby Harradine
7b15ad5989 Merge branch V3/feature/i18n_pass into V3/develop (#2024)
[i18n] Improves the coverage and quality of extracted user-facing string literals in the `redbot.core` package and makes them less ambiguous for the translator.
2018-10-06 09:58:45 +10:00
Toby Harradine
443f2ca556 [i18n] Pass over modlog, permissions, reports, streams, trivia, warnings
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-06 09:01:04 +10:00
Toby Harradine
fa692ccc0b [i18n] Pass over economy, filter, general, image, mod
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-06 09:00:31 +10:00
Toby Harradine
0c3d8af8f4 [i18n] Pass over bank, cleanup, customcom, dataconverter, downloader
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-06 08:57:49 +10:00
Toby Harradine
3a20c11331 [i18n] User-facing string pass over admin, alias and audio 2018-10-06 08:43:19 +10:00
Michael H
aa8c9c350e [i18n] Start work on named format arguments (#1795) 2018-10-06 08:42:38 +10:00
Michael H
139329233a [Utils/Trivia] Handle smart quotes (#2162)
Adds a new filter function for substituting out smart-quotes.

Makes trivia use it.
2018-10-06 08:39:52 +10:00
Michael H
d79996aeea [Downloader] Better user facing feedback on cog update (#2165) 2018-10-06 08:24:55 +10:00
Toby Harradine
fb839084fe Merge branch V3/feature/predicates into V3/develop (#1986)
Predicate utility to replace common boilerplate predicates for event waiting.
2018-10-06 08:15:25 +10:00
Toby Harradine
dea9dde637 [Utils] Finish and Refactor Predicate Utility (#2169)
* Uses classmethods to create predicates
* Classmethods allow using a combination of different parameters to describe context
* Some predicates assign a captured `result` to the predicate object on success
* Added `ReactionPredicate` equivalent to `MessagePredicate`
* Added `utils.menus.start_adding_reactions`, a non-blocking method for adding reactions asynchronously
* Added documentation
* Uses these new utils throughout the core bot
Happened to also find some bugs in places, and places where we were waiting for events without catching `asyncio.TimeoutError`

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-06 08:07:09 +10:00
zephyrkul
ebc657dcc6 [Config] Add Group.clear_raw method (#2178)
Adds a `clear_raw` method to Group objects, similar to the existing `get_raw` and `set_raw` methods.
Documentation included.
2018-10-05 13:03:27 +10:00
zephyrkul
80506856fb [Checks] Preserve backwards compatibility in deprecated functions (#2176)
* [checks] preserve backwards compatability

* [checks] use correct ctx.author
2018-10-04 10:26:44 +10:00
palmtree5
93a0e45c34 [Filter] implement exempting channels from the filter (#2064) 2018-10-03 08:43:04 +10:00
bobloy
3cb2b95121 [V3 Cleanup] Cleanup Before command (#2171)
Adds the ability to cleanup before a specified message id. Requires passing a number of messages to delete to keep with syntax of cleanup self/user
2018-10-03 08:28:10 +10:00
bobloy
a04869ab27 [Trivia] Fix misuse of list.append (#2172) 2018-10-03 08:22:42 +10:00
Twentysix
c69b1185d3 [Black] Don't normalize underscores in numeric literals (#2174) 2018-10-03 08:19:30 +10:00
Toby Harradine
ad7466a026 Dependency Update (#2175)
##### Core requirements
* _discord.py_ Rapptz/discord.py@77239e4 -> Rapptz/discord.py@836ae73
* _aiohttp-json-rpc_ 0.11.1 -> 0.11.2
* _aiohttp_ 3.3.2 -> 3.4.4

##### [test]
* _pytest_ 3.8.1 -> 3.8.2

##### [docs]
* _packaging_ 17.1 -> 18.0
* _pyparsing_ 2.2.1 -> 2.2.2
* _six_ Removed duplicate entry

##### [style]
* _black_ 18.6b4 -> 18.9b0
* _click_ 6.7 -> 7.0

### Notes
- `extra_requires` in setup.py is now a module-level global
- Some style changes have occurred after the _black_ update

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-03 08:10:13 +10:00
zephyrkul
54dad2a604 [Mod] Use list.copy() for tempban expirations (#2166)
Fixes an error left behind from #2161 (modifying a list while iterating over it)
2018-10-02 18:46:11 +10:00
bobloy
d5899fae83 [RPC] Add missing await in rpc_load (#2167) 2018-10-02 18:44:38 +10:00
Redjumpman
5d44bfabed [Utils] Initial Work on Predicate Utility (#1985)
* Add files via upload

* Update predicates.py

Changed sender from a discord.Member object to ctx.
Added a channel check.
Combined the same method and channel method into a validator and applied through-out.
valid_role and has_role methods now check for either an id or a name.
contained now uses string.lower() when testing for membership in a collection.

Signed-off-by: Redjumpman <redjumpman@users.noreply.github.com>
2018-10-02 16:19:40 +10:00
Ryan
b6c8be5f43 [MongoDB] Support mongodb+srv protocol (#2159) 2018-10-01 16:49:29 +10:00
aikaterna
b2abfc5710 [Audio] Playlist list and notify msg changes (#2155) 2018-10-01 16:44:46 +10:00
zephyrkul
a9b328ff3c [Mod] Remove tempban from data after unbanning (#2161)
Resolves #2160.

Also resolves another issue where the bot will error out when getting the guild's invites when it doesn't have the Manage Server permission.
2018-10-01 14:15:51 +10:00
Toby Harradine
0870403299 Permissions redesign (#2149)
API changes:
- Cogs must now inherit from `commands.Cog` (see #2151 for discussion and more details)
- All functions which are not decorators in the `redbot.core.checks` module are now deprecated in favour of their counterparts in `redbot.core.utils.mod`. This is to make this module more consistent and end the confusing naming convention.
- `redbot.core.checks.check_overrides` function is now gone, overrideable checks can now be created with the `@commands.permissions_check` decorator
- Command, Group, Cog and Context have some new attributes and methods, but they are for internal use so shouldn't concern cog creators (unless they're making a permissions cog!).
- `__permissions_check_before` and `__permissions_check_after` have been replaced:  A cog method named `__permissions_hook` will be evaluated as permissions hooks in the same way `__permissions_check_before` previously was. Permissions hooks can also be added/removed/verified through the new `*_permissions_hook()` methods on the bot object, and they will be verified even when permissions is unloaded.
- New utility method `redbot.core.utils.chat_formatting.humanize_list`
- New dependency [`schema`](https://github.com/keleshev/schema)

User-facing changes:
- When a `@bot_has_permissions` check fails, the bot will respond saying what permissions were actually missing.
- All YAML-related `[p]permissions` subcommands now reside under the `[p]permissions acl` sub-group (tbh I still think the whole cog has too many top-level commands)
- The YAML schema for these commands has been changed
- A rule cannot be set as allow and deny at the same time (previously this would just default to allow)

Documentation:
- New documentation for `redbot.core.commands.requires` and `redbot.core.checks` modules
- Renewed documentation for the permissions cog
- `sphinx.ext.doctest` is now enabled

Note: standard discord.py checks will still behave exactly the same way, in fact they are checked before `Requires` is looked at, so they are not overrideable. 

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-10-01 13:19:25 +10:00
Toby Harradine
f07b78bd0d Fix help command with cogs (#2156)
This bug was introduced in #2122 (whoops)

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-30 14:19:25 +10:00
Toby Harradine
b2497386bb Update dependencies (#2148)
Core dependencies:
- discord.py: Rapptz/discord.py@00a659c6 -> Rapptz/discord.py@00a659c6
- multidict: 4.4.0 -> 4.4.2

[docs]
- pyparsing: 2.2.0 -> 2.2.1
- sphinx: 1.7.8 -> 1.7.9

[test]
- pytest: 3.7.4 -> 3.8.1

[style]
- toml: 0.9.4 -> 0.9.6

----

I've also replaced usages of `discord.utils.get(guild.roles, id=id)` with the new O(1) `guild.get_role(id)` method.

Signed-off-by: Toby <tobyharradine@gmail.com>
2018-09-25 16:09:36 +10:00
Michael H
f8558b98c1 Automated mod action immunity settings (#2129)
Refactors, and fixes some logic in filter which was encountered while
applying the settings to core
2018-09-25 11:30:28 +10:00
Michael H
84ac5f3952 JsonIO atomic write improvements (#2132)
Use `async with Lock` instead of deprecated `with await lock` usage.

Forces a file fsync prior and a directory fsync (where available) after rename to prevent issues with left behind temp files.

Also should clarify: this is not threadsafe. Comments were clarified, function names remain misleading.
2018-09-24 18:29:14 +10:00
Michael H
404800c556 Hackban fixes (#2128)
If the member is in the guild, delegates to existing ban logic.

Additionally, check that we have ban perms prior to attempting to fetch the existing ban list.

Fixes #2127.
2018-09-24 18:21:21 +10:00
Toby Harradine
415385b747 [Downloader] Fix git pull command (#2146)
I somehow managed to botch this in #2121

Signed-off-by: Toby Harradine <t.harradine@student.unsw.edu.au>
2018-09-24 13:20:30 +10:00
Toby Harradine
f7dbaca340 Refactor fuzzy help and clean up help command (#2122)
What's changed:
- Fixed issues mentioned on #2031
- Fuzzy help displays more like help manual
- Fuzzy help is easier and more flexible to use
- Fuzzy help string-matching ratio lowered to 80
- Help formatter is more extendable
- Help command has been optimized, cleaned up and better incorporates fuzzy help
- Added async_filter and async_enumerate utility functions because I was using them for this PR, then no longer needed them, but decided they might be useful anyway.
- Added `Context.me` property which is a shortcut to `Context.guild.me` or `Context.bot.user`, depending on the channel type.
2018-09-24 10:34:39 +10:00
bobloy
32b4c6ce86 [Image] Remove V2 relics from command decorators (#2138) 2018-09-23 23:44:01 +10:00
zephyrkul
a3c36d4bde NoneType check for module in should_log_sentry (#2139)
Allows for a lack of module (which returns False) for `should_log_sentry`. This allows for, say, commands to be added by the Dev cog. ( ͡ಠ ʖ̯ ͡ಠ)
2018-09-23 23:42:25 +10:00
bobloy
fc4703ef80 [Launcher] Don't ask for CLI flags when no instances (#2142)
Seems to have been fixed in #1497 but accidentally reverted at a later date.
2018-09-23 23:39:32 +10:00
zephyrkul
a301b2c758 Add missing @staticmethod to Red.send_filtered (#2143)
Method was previously missing `self` argument but was missing static decorator.
2018-09-23 23:34:57 +10:00
Toby Harradine
e27682abd3 [Downloader] More robust repo loading (#2121)
Previously, when downloader was loaded, the RepoManager would spawn a task to load available repos. If one repo failed loading for some reason, the function would raise and the remaining repos would never be loaded, however downloader would still appear to load correctly.

This change handles exceptions better during repo loading, but also, if an unhandled exception is raised, downloader will fail to load as it should.

Also included, as requested in #1968, is the --recurse-submodules flag in cloning/pulling repositories.

This change resolves #1950.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-22 15:05:42 +10:00
Toby Harradine
df922a0e3e [Audio] More robust startup and unload (#2118)
* More robust cleanup for audio and streams

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Remove copied code from streams

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-22 15:04:46 +10:00
aikaterna
51c83d958c [Audio] Check if player is playing when pausing (#2130) 2018-09-18 23:54:32 +10:00
Toby Harradine
17139ce439 Fix compiler detection on Windows (#2136)
Signed-off-by: Toby Harradine <t.harradine@student.unsw.edu.au>
2018-09-18 14:07:50 +10:00
zephyrkul
61652a0306 [V3 CustomCommands] Cooldowns (#2124)
* customcom cooldowns

allows you to set multiple different cooldowns for custom commands

* black formatting

* [docs] cooldowns
2018-09-17 17:47:45 +02:00
Michael H
113b97b9c9 Fix role check in local blacklist/whitelist (#2134)
fixes #2133 , 

`discord.Role.is_default` is a method, not a property.
2018-09-17 17:30:56 +10:00
zephyrkul
2784730f7f [V3] Utilize shorten_by (#2131)
* utilize shorten_by

otherwise you get errors

* trivia shorten_by

* warnings shorten_by

max username length is 32 characters

* black formatting
2018-09-15 01:48:31 +02:00
Toby Harradine
1a9216b522 Set 3.6.6 as minimum python version on Windows (#2117)
* Set 3.6.6 as minimum python version on Windows

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Conditional python_requires in setup.py

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Should probably add the comment too

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-14 21:22:43 +10:00
Toby Harradine
08fc732b7b [Downloader] Fix URL parsing for non-GitHub/GitLab links (#2123)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-12 11:01:54 +10:00
Toby Harradine
54baf687ec [Downloader] Parse tree URLs when cloning repos (#2119)
* [Downloader] Parse tree URLs when cloning repos

Signed-off-by: Toby <tobyharradine@gmail.com>

* Only match GitHub and GitLab URLs

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-12 10:03:15 +10:00
Toby Harradine
8096cd803e Bump version to 3.0.0b21 (#2115)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-10 00:44:11 +10:00
Toby Harradine
27b0d606c8 Fix CCs with no args (#2114)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-10 00:35:53 +10:00
aikaterna
af220e497f [Docs] Update sample cog (#2072)
* [V3 Docs] Update sample cog

* Remove self.bot assignment

We don't really do this any more unless we need to
2018-09-09 23:35:22 +10:00
Toby Harradine
892b2487f5 Dependency update (#2100)
aiohttp-json-rpc 0.11 -> 0.11.1
atomicwrites 1.1.5 -> 1.2.1
attrs 18.1.0 -> 18.2.0
certifi 2018.4.16 -> 2018.8.24
discord.py 8ccb98d395537b1c9acc187e1647dfdd07bb831b -> 00a659c6526b2445162b52eaf970adbd22c6d35d
fuzzywuzzy 0.16.0 -> 0.17.0
imagesize 1.0.0 -> 1.1.0
multidict 4.3.1 -> 4.4.0
py 1.5.4 -> 1.6.0
pytest 3.7.0 -> 3.7.4
sphinx 1.7.6 -> 1.7.8

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-09 23:21:48 +10:00
Kowlin
7971c02dc5 Escape user and passwords for mongo (#2111)
* Escape user and passwords for mongo.

* Quote -> Quote_Plus

* formatting
2018-09-09 23:07:40 +10:00
zephyrkul
c1d8272b49 [CustomCommands] Show parameter name correctly in help (#2102) 2018-09-09 23:05:33 +10:00
aikaterna
bce5dd26f3 [Audio] Local playback (#2097)
* [V3 Audio] Local playback

* Formatting

* Update application.yml

* Add catch for an empty localtracks directory

* Linebreak in help for i18n
2018-09-09 23:02:53 +10:00
zephyrkul
04e97f3516 [CustomCom] Custom Command Parameters (#2051)
* [V3 CustomCom] Custom Command Parameters

Allows specifying more parameters for CC's via {0}, {1}, etc. that will be filled by the user invoking the CC. Python-style type hinting and attribute access is also allowed for Discord and builtin types.

> [p]cc add simple greet Hi, {0.mention:Member}!
> ...
> [p]greet zephyrkul
> Hi, @zephyrkul!

The bot will reply with the standard help messages if the cc is incorrectly executed.

> [p]greet me
> Member "me" not found

* black formatting

* check command failure

Only call the custom command if the faked command succeeded.

* misc fixes

1) don't str.strip all the time, it's not family-friendly and doesn't match transform_parameter
2) transform_arg now actually returns strings in every case
3) improve prepare_args parsing security
4) help parameters will show what type they expect
5) make linter less angery

* customcom documentation

I hate rst

* don't require repeated type hinting

If a parameter was type hinted previously, don't require it again.
Ex: `{0.display_name:Member}#{0.discriminator}` is now possible.

* add cog_customcom.rts to index

I despise rst

* don't enforce order

Allow type hinting and attribute access to be in either order.
Ex. `{0:Member.mention}` is now valid.

* clean up on_message

We're building context anyway, may as well use it.

* [doc] correct cog name

Cog class is named CustomCommands, not CustomCom

* minor on_message optimization

only build context if it's needed

* update cc_add docstring

Old one wasn't user-friendly. Replaced with a link to the new docs.
Link will not function until PR is merged and docs refreshed.

* [doc] change repeat to say

repeat is an audio command, use say in the example instead

* compare ctx.prefix to None

allows for null prefixes, which is a bad idea but who am I to judge

* address review

* raise error on conflicting colon notation

bugfix I was working on but failed to actually commit
2018-09-07 00:14:02 +10:00
Toby Harradine
7eed033c9e Prettify README and translate to MarkDown (#2101)
Signed-off-by: Redjumpman <redjumpman@users.noreply.github.com>
2018-09-06 21:53:18 +10:00
Richard Guan
a2fe1a8757 [Audio] Don't allow duplicate links in playlists (#2071)
* Just a test

* another test

* undoing my test

* First solution, style issue

* Works functionally, but there are is a minor style issue

* style fixed

* Revert README changes
2018-09-06 16:25:27 +10:00
Toby Harradine
9ee860c3f0 [Core] Command disable feature (#2099)
* [Core] Command disable feature

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* [Core] Allow user to set the "command disabled" message

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Reformat

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-06 12:52:19 +10:00
Toby Harradine
1dbe9537e9 Ignore fuzzywuzzy slow sequence matcher warning (#2096)
* Ignore fuzzywuzzy slow sequence matcher warning

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Add log.info call instead

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-06 12:50:30 +10:00
Toby Harradine
775f4ce69a Use ProactorEventLoop on Windows (#2062)
* Use ProactorEventLoop on Windows

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Set the actual loop instead of the policy

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-06 00:40:15 +10:00
zephyrkul
e83beeef34 [Audio] Add [p]sing (#2067)
* port [p]sing

* [p]sing in alphabetical order

what even is an alphabet
2018-09-04 13:23:50 +10:00
Brramble
e77cfff892 [p]serverinfo respects set embed colour (#2083) 2018-09-04 13:01:50 +10:00
Michael H
9495432b8f More mention filtering (#2081)
* more filters

* note to future people touching this

* chan mentions were almost missed...

* Swap strategies as the previous escaped the mention, while still pinging the user/role
2018-09-04 12:59:59 +10:00
palmtree5
d71c334a34 [Filter] Fix issue with filtering sentences (#2065) 2018-09-04 12:55:18 +10:00
Michael H
aa8cc90ad0 Update minimum Python version to 3.6.2 (#2093)
* Correct minimum version

see #2092 

While this is needed because of an import just for typing, I see no reason not to bump the minimum version since this is a minor version difference since this is several minor version behind the latest 3.6, and there have been both security and performance improvements since.

That said, we need to be testing on our lowest supported version to ensure we don't have this happen again, right now our tests run on whatever Travis grabs for 3.6, which I assume is 3.6.6, but could be wrong.

* Update other mentions of min version to 3.6.2
2018-09-04 11:38:56 +10:00
palmtree5
589041556e [Streams] Fix excessive writes to config (#2095)
Resolves #2052.
2018-09-04 11:01:48 +10:00
El Laggron
85354f2722 Support missing .po files (#2068)
* [V3 Core] Support missing .po files

* Modified if-state

* Use PEP8 recommendation for empty list check

https://www.python.org/dev/peps/pep-0008/#programming-recommendations
2018-09-03 15:44:58 +10:00
Toby Harradine
c0c5535005 [Warnings] Help users understand custom reasons (#2049)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-09-03 14:57:14 +10:00
zephyrkul
e126cf9f4e [Launcher] use "python -m" to run Red (#2080)
friendlier for virtual environments
2018-09-03 10:44:50 +10:00
aikaterna
c2d23b37a7 [Audio] Fix for using [p]now with thumbnail (#2063) 2018-08-28 13:02:40 +10:00
aikaterna
3a968d707f Fix Travis deployment attempt 2 (#2061) 2018-08-27 10:24:03 +10:00
aikaterna
b07c44c8b4 Fix travis deployment (#2060) 2018-08-27 10:09:02 +10:00
aikaterna
43b0a58649 [Audio] Fix for embed color (no, COLOUR) on notify messages (#2059) 2018-08-27 09:44:19 +10:00
Toby Harradine
f258e93cf7 Bump version to 3.0.0b20 (#2050)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-08-27 09:28:37 +10:00
Toby Harradine
93138b04cb [Streams] Set YouTube channel name when added by ID (#2047)
* [Streams] Set YouTube channel name when added by ID

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Move unset token raise to correct place

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Correct logic in get_stream

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Fetch name explicitly instead

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-08-26 23:53:47 +10:00
Toby Harradine
0cf54ec9c2 [Audio] Do less strict matching for java version (#2035)
* [Audio] Do less strict matching for java version

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* [Audio] Fix java version bounds to account for Oracle's bullshit

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-08-26 23:49:27 +10:00
Toby Harradine
ce031cf7bd [Docs] Add virtualenv guide and compress install guides (#2029)
* [Docs] Add virtualenv guide and compress install guides

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* [Docs] Better cross-referencing

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Fix pyenv-installer link

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Use sudo -e instead of sudo nano

* Add note about launcher for linux/mac

* Include launcher notes in Windows guide

* Add missing colon
2018-08-26 23:44:56 +10:00
Toby Harradine
e6495bc7c0 [Trivia] Move Trivia lists back home (#2028)
* [Trivia] Move trivia lists back home

Removes red-trivia as a dependency.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Include package data in distribution

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Add test from red-trivia repo, and fix package data setup

* The distribution will now include all files under any data/ sub-directory of a package, as well as all *.po files under any locales/ sub-directory (as it should have been before).

* MANIFEST.in has been simplified to comply with these changes and redbot/cogs/audio/application.yml has been moved to the data/ sub-directory to maintain consistency in how we declare package data.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-08-26 23:39:46 +10:00
Toby Harradine
1b196bf0fb [i18n] Use redgettext over pygettext (#2023)
* [i18n] Use redgettext over pygettext

* Clear out autogenerated `messages.pot` files

* Remove redundant `regen_messages.py` files

* Refactor `generate_strings.py` to use redgettext

* Install redgettext in Travis Crowdin job

* Clean up some problematic usages of gettext function

* Reformat

* Replace generate_strings.py with Makefile argument

* Update to redgettext 2.1, use exclusion pattern

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-08-26 23:35:42 +10:00
Toby Harradine
dbed24aaca [Config] Group.__call__() has same behaviour as Group.all() (#2018)
* Make calling groups useful

This makes config.Group.__call__ effectively an alias for Group.all(),
with the added bonus of becoming a context manager.

get_raw has been updated as well to reflect the new behaviour of
__call__.

* Fix unintended side-effects of new behaviour

* Add tests

* Add test for get_raw mixing in defaults

* Another cleanup for relying on old behaviour internally

* Fix bank relying on old behaviour

* Reformat
2018-08-26 23:30:36 +10:00
Toby Harradine
48a7a21aca [Commands] Refactor command and group decorators (#1818)
* [V3 Commands] Refactor command and group decorators

* Add some tests

* Fix docs reference

* Tweak Group's MRO
2018-08-26 23:25:25 +10:00
Toby Harradine
f595afab18 [Streams] [p]streamalert twitch channel is not for Discord channels (#2048)
Resolves #2003.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-08-26 23:18:22 +10:00
Brramble
0aca00b245 [Audio] Embed colours respect user settings (#2046)
* Embed colours now respect what the user set

* Formatting

* Get embed colour when ctx is unavailable
2018-08-26 13:09:03 +10:00
Toby Harradine
9af58d3abf [Permissions] Remove hook from is_owner check (#2053)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-08-25 21:56:40 +10:00
aikaterna
dd5ef3696f [Audio] Add thumbnail display with toggle (#1998)
* [V3 Audio] Add thumbnail display with toggle

* [V3 Audio] Add thumbnail to notify messages

* Formatting

* Update thumbnail fetching

* Update thumbnail fetching

* Track thumbnail moved to Red-Lavalink

* Formatting
2018-08-25 10:47:20 +10:00
Toby Harradine
03d49bac53 Update Red-Lavalink to version 0.1.2 (#2034)
Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-08-24 16:28:01 +02:00
Toby Harradine
6c082a10b1 Fix sync check causing errors (#2045)
* Fix sync check causing errors

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>

* Import timedelta...

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
2018-08-24 16:23:52 +02:00
Michael H
77944e195a Output sanitisation (#1942)
* Add output sanitization defaults to context.send
Add some common regex filters in redbot.core.utils.common_filters
Add a wrapper for ease of use in bot.send_filtered
Sanitize ModLog Case's user field (other's considered trusted as moderator input)
Sanitize Usernames/Nicks in userinfo command.
Santize Usernames in closing of tunnels.

* Add documentation
2018-08-24 23:50:38 +10:00
Michael H
6ebfdef025 Remove self-bot support (#2008) 2018-08-24 22:51:03 +10:00
El Laggron
bc39a6741c [Launcher] append --user if the bot isn't in a venv (#2027)
* [V3 Launcher] --user CLI flag

* Better handling of the sys arguments

* Black reformat to -l 99

* Update launcher to PR#2025

* Always append --user if not in a virtualenv

* Remove --user flag
2018-08-24 22:33:57 +10:00
Michael H
bda7e08208 Handle time innacuracy by warning owner (#2036)
* handle time innacuracy by warning owner

* Fix typo and add space
2018-08-23 11:28:05 +10:00
Michael H
aa69dd381f [Core] Use autohelp properly in local blacklist/whitelist (#2042) 2018-08-23 11:22:03 +10:00
Michael H
1fd8a8e0a6 [Cleanup] Refactor internals (#2013)
* Revert "[Cleanup] Hotfix for [p]cleanup after (#2004)"

This reverts commit 7959654dc8.

* refactor cleanup

* formatting pass

* put back in try/except block
2018-08-21 12:31:48 +10:00
Caleb Johnson
1329fa1b09 [CogManager, Utils] Handle missing cogs correctly, add some helpful algorithms (#1989)
* Handle missing cogs correctly, add some helpful algorithms

For cog loading, only show "cog not found" if the module in question was the one
that failed to import. ImportErrors within cogs will show an error as they should.

- deduplicator, benchmarked to be the fastest
- bounded gather and bounded async as_completed
- tests for all additions

* Requested changes + wrap as_completed instead

So I went source diving and realized as_completed works the way I want it to,
and I don't need to reinvent the wheel for cancelling tasks that remain
if the generator is `break`ed out of. So there's that.
2018-08-21 11:26:04 +10:00
Michael H
b550f38eed [Reports] Add guild-only command check (#2016)
Resolves #2015
2018-08-17 00:00:24 +10:00
Toby Harradine
ae7b912ac8 Major dependency update (#1974)
* [V3] Stop `tmp` dir showing up

* [V3] Remove requirements.txt and declare in install_requires

* Remove requirements.txt from tox.ini

* Update and pin all dependencies and sub-dependencies

* Update for breaking changes

* Reformat

* Update docs/requirements.txt and tox.ini requirements

* Add 3.7 to identifiers and travis/tox builds

* Attempt at fixing the travis build matrix

* Attempt #2

* Attempt 3

* aiohttp.ClientSession.close() -> detach() in sync code

* Add raven-aiohttp to requirements

* Fix stuff in setup.py

 - Added discord.py back into requirements list
 - Fix typo in alabaster extra requirement

Also in the Pipfile:
 - Removed allow_prereleases and explicitly pinned black, since this is the only dep we want a prerelease for.

* Update to Rapptz/discord.py@8ccb98d395

* Add proper 3.7 build in Travis

See travis-ci/travis-ci#9815

* Which version of 3.6 does Xenial install then?

* Maybe we should stop pipenv installing useless stuff

* Nevermind, back to specific minor version

* Remove lots of WET dependency stuff

* Fix egg fragment for dependency link
2018-08-15 12:10:55 +10:00
Michael H
af9478922e Correct errormsg when using discord.ext.commands (#2021)
resolves #2020
2018-08-15 03:05:18 +10:00
Michael H
7acea29cdb [Dev] Friendlier code-block strip for [p]eval(#2017)
not relying on newlines where they aren't required by discord, retaining py highlight support.

Resolves #1928.
2018-08-14 16:31:42 +10:00
Michael H
6082eb21e3 [V3] Enforce use of redbot.core.commands (#1971)
* enforce commands as ours

* clearer user feedback

* No more 'one more tweak' commits without verifying anyway

* more detailed error with docs link + docs update

Resolves #1972.
2018-08-13 11:10:13 +10:00
Toby Harradine
a91cda4995 Version bump 3.0.0b19 (#2005) 2018-08-13 10:32:39 +10:00
Toby Harradine
7959654dc8 [Cleanup] Hotfix for [p]cleanup after (#2004)
* [Cleanup] Hotfix for [p]cleanup after

* Reformat

* Log warning for any 3rd party devs using broken helper
2018-08-12 14:46:30 +10:00
Toby Harradine
dc9a85ca98 [Streams] Add docstring for [p]streamalert list (#2001) 2018-08-12 12:09:38 +10:00
Kowlin
591ed50ac3 [Mod] Omit empty fields from [p]userinfo (#1829)
* Hide roles if none are found.

* Clarify about omitted fields in help doc
2018-08-11 13:59:43 +10:00
Toby Harradine
47350328e6 [CogManager] Correctly separate core, install and other cog paths (#1983)
* [CogManager] Correctly manage core and install paths

This keeps the core and install paths separate from those set in the
config.

It also displays the core path separately in `[p]paths`

Resolves #1982.

* [CogManager] Fix old reference to method removed in previous commit

Also did a bit of a general cleanup of cog_manager.py's code

* Make the core path a class attribute

* [CogManager] Paths should default to a list
2018-08-11 13:31:26 +10:00
Toby Harradine
75ed749cb3 [Admin] Fix [p]addrole error when a hierarchy issue occurs (#1995) 2018-08-11 12:11:15 +10:00
Toby Harradine
f44ea8b749 [ModLog] Call correct method for case message content (#1981) 2018-08-11 12:06:58 +10:00
Toby Harradine
76c0071f57 Pin lavalink to 0.1.0 (#2000) 2018-08-11 12:01:23 +10:00
El Laggron
2a396b4438 [Modlog] Make the case number optional in [p]reason (#1979)
* [V3 Modlog] Make the case number optional

If not specified, it will be the latest case.

* Fix some errors

* Black reformat

* More info for usage string

* Use isdigit instead of isnumeric
2018-08-11 11:44:17 +10:00
Toby Harradine
51a54863c5 [Streams] Don't raise KeyError on missing token (#1994)
Some streaming services don't require a token/clientID.

Resolves #1932
2018-08-10 15:07:30 +10:00
Redjumpman
06f986b92e [General] Fix lmgtfy with '+' in search (#1991) 2018-08-10 14:41:23 +10:00
Toby Harradine
652ceba845 [Bank] Raise TypeError when passing a non-int transaction amount (#1976)
* Raise TypeError when passing a non-int bank amount

* Add a test

* Add some full stops
2018-08-09 22:13:31 +10:00
Michael H
16d0f54d8f [V3 Crowdin] dont upload tox/tests/etc (#1849) 2018-08-09 15:10:30 +10:00
Caleb Johnson
872cce784a [V3 Core] Fix unload_extension for module-less cogs (#1984)
Fixes #1943

This just skips cogs when  `__module__` is None. Also:
- backported rapptz/discord.py#621
- moved RPC handler unregister to remove_cog()
- raise an exception when a load would overwrite an existing extension
2018-08-08 10:26:14 +10:00
Toby Harradine
aec3ad382a [CI] Re-enable and fix linkchecking for docs build (#1990) 2018-08-07 18:24:44 +10:00
lionirdeadman
9d4f9ef73c [General] UI improvements to [p]urban (#1871)
* Changed urban dictionary for my embed version

* Used black for formatting

* Fixed everything according to Tobotimus's review

* Fixed the description limit to 2048 characters

* Better fix adding "..." at the end if neccessary

* Add non-embed version

* Blackify
2018-08-07 16:33:39 +10:00
Caleb Johnson
cf7cafc261 [sentry] use raven-aiohttp (#1967) 2018-08-04 15:44:58 +10:00
Kowlin
e3bff7e87c Version bump v3.0.0b18 (#1959)
Administrative Merge: Solo beta release.
2018-07-25 06:15:36 +02:00
Michael H
4b19421075 [V3] use uvloop if available (#1935)
* use uvloop if available

* Update __main__.py

requested changes made
2018-07-25 05:55:55 +02:00
Michael H
cf371e8093 fix invalidation (#1945) 2018-07-25 04:44:25 +02:00
Kowlin
5eeadc6399 Commented out the link checking (#1958) 2018-07-25 04:33:43 +02:00
Redjumpman
f6823ea3d1 Update bank.py (#1937) 2018-07-25 02:57:25 +02:00
aikaterna
f24290c423 [V3 Help] Exception for help when bot is blocked (#1955)
Fix for #1901.
Administrative merge: Travis CI failed due to docs issue, see #1957
2018-07-25 02:39:51 +02:00
Michael H
f8a36885fe doc string corretion (#1944)
Administrative merge: Travis CI failed due to docs issue, see #1957
2018-07-25 02:33:17 +02:00
Kowlin
a555eff2cc Fixed a bug with the JSON Driver (#1953)
Administrative merge: Travis CI failed due to docs issue, see #1957
2018-07-25 02:18:54 +02:00
Kowlin
05c389623c Removed warnings as errors argument (#1954) 2018-07-23 02:04:30 +02:00
Michael H
bf00f5e9a2 [V3] tox match pinned version d.py (#1930) 2018-07-12 05:51:00 +02:00
797 changed files with 171246 additions and 28680 deletions

6
.github/CODEOWNERS vendored
View File

@@ -9,6 +9,7 @@ redbot/core/config.py @tekulvw
redbot/core/cog_manager.py @tekulvw
redbot/core/core_commands.py @tekulvw
redbot/core/context.py @Tobotimus
redbot/core/commands/* @mikeshardmind
redbot/core/data_manager.py @tekulvw
redbot/core/dev_commands.py @tekulvw
redbot/core/drivers/* @tekulvw
@@ -18,18 +19,18 @@ redbot/core/i18n.py @tekulvw
redbot/core/json_io.py @tekulvw
redbot/core/modlog.py @palmtree5
redbot/core/rpc.py @tekulvw
redbot/core/sentry_setup.py @Kowlin @tekulvw
redbot/core/utils/chat_formatting.py @tekulvw
redbot/core/utils/mod.py @palmtree5
redbot/core/utils/data_converter.py @mikeshardmind
redbot/core/utils/antispam.py @mikeshardmind
redbot/core/utils/tunnel.py @mikeshardmind
redbot/core/utils/caching.py @mikeshardmind
redbot/core/utils/common_filters.py @mikeshardmind
# Cogs
redbot/cogs/admin/* @tekulvw
redbot/cogs/alias/* @tekulvw
redbot/cogs/audio/* @aikaterna @atiwiex
redbot/cogs/audio/* @aikaterna
redbot/cogs/bank/* @tekulvw
redbot/cogs/cleanup/* @palmtree5
redbot/cogs/customcom/* @palmtree5
@@ -42,7 +43,6 @@ redbot/cogs/mod/* @palmtree5
redbot/cogs/modlog/* @palmtree5
redbot/cogs/streams/* @Twentysix26 @palmtree5
redbot/cogs/trivia/* @Tobotimus
redbot/cogs/dataconverter/* @mikeshardmind
redbot/cogs/reports/* @mikeshardmind
redbot/cogs/permissions/* @mikeshardmind
redbot/cogs/warnings/* @palmtree5

View File

@@ -31,7 +31,7 @@ We love receiving contributions from our community. Any assistance you can provi
# 2. Ground Rules
We've made a point to use [ZenHub](https://www.zenhub.com/) (a plugin for GitHub) as our main source of collaboration and coordination. Your experience contributing to Red will be greatly improved if you go get that plugin.
1. Ensure cross compatibility for Windows, Mac OS and Linux.
2. Ensure all Python features used in contributions exist and work in Python 3.6 and above.
2. Ensure all Python features used in contributions exist and work in Python 3.7 and above.
3. Create new tests for code you add or bugs you fix. It helps us help you by making sure we don't accidentally break anything :grinning:
4. Create any issues for new features you'd like to implement and explain why this feature is useful to everyone and not just you personally.
5. Don't add new cogs unless specifically given approval in an issue discussing said cog idea.
@@ -53,7 +53,7 @@ Red's repository is configured to follow a particular development workflow, usin
### 4.1 Setting up your development environment
The following requirements must be installed prior to setting up:
- Python 3.6
- Python 3.7.0 or greater
- git
- pip
- pipenv
@@ -79,7 +79,7 @@ Note: If you haven't used `pipenv` before but are comfortable with virtualenvs,
We've recently started using [tox](https://github.com/tox-dev/tox) to run all of our tests. It's extremely simple to use, and if you followed the previous section correctly, it is already installed to your virtual environment.
Currently, tox does the following, creating its own virtual environments for each stage:
- Runs all of our unit tests with [pytest](https://github.com/pytest-dev/pytest) on python 3.6 (test environment `py36`)
- Runs all of our unit tests with [pytest](https://github.com/pytest-dev/pytest) on python 3.7 (test environment `py37`)
- Ensures documentation builds without warnings, and all hyperlinks have a valid destination (test environment `docs`)
- Ensures that the code meets our style guide with [black](https://github.com/ambv/black) (test environment `style`)
@@ -92,7 +92,7 @@ Your PR will not be merged until all of these tests pass.
### 4.3 Style
Our style checker of choice, [black](https://github.com/ambv/black), actually happens to be an auto-formatter. The checking functionality simply detects whether or not it would try to reformat something in your code, should you run the formatter on it. For this reason, we recommend using this tool as a formatter, regardless of any disagreements you might have with the style it enforces.
Use the command `black --help` to see how to use this tool. The full style guide is explained in detail on [black's GitHub repository](https://github.com/ambv/black). **There is one exception to this**, however, which is that we set the line length to 99, instead of black's default 88. When using `black` on the command line, simply use it like so: `black -l 99 <src>`.
Use the command `black --help` to see how to use this tool. The full style guide is explained in detail on [black's GitHub repository](https://github.com/ambv/black). **There is one exception to this**, however, which is that we set the line length to 99, instead of black's default 88. When using `black` on the command line, simply use it like so: `black -l 99 -N <src>`.
### 4.4 Make
You may have noticed we have a `Makefile` and a `make.bat` in the top-level directory. For now, you can do two things with them:

5
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,5 @@
<!--
Please be sure to use the correct template,
if your report doesn't have the correct template please open an issue describing your issue in detail
For support regarding the bot itself please visit the discord server over at https://discord.gg/red
-->

View File

@@ -1,3 +1,9 @@
---
name: Bug reports for commands
about: For bugs that involve commands found within Red
---
# Command bugs
<!--

View File

@@ -1,3 +1,9 @@
---
name: Feature request
about: For feature requests regarding Red itself.
---
# Feature request
<!-- This template is for feature requests. Please fill out the following: -->

View File

@@ -1,3 +1,9 @@
---
name: Bug report
about: For bugs that don't involve a command.
---
# Other bugs
<!--
@@ -18,4 +24,4 @@ Did you find a bug with something other than a command? Fill out the following:
#### How can we reproduce this issue?
<!-- Replace with numbered steps to reproduce the issue -->
<!-- Replace with numbered steps to reproduce the issue -->

7
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,7 @@
### Type
- [ ] Bugfix
- [ ] Enhancement
- [ ] New feature
### Description of the changes

View File

@@ -1,6 +1,7 @@
# Bugfix request
<!--
THIS TEMPLATE IS CURRENTLY UNUSED DUE TO GITHUB LIMITATIONS!
To be used for pull requests that fix a bug
-->

View File

@@ -1,6 +1,7 @@
# Enhancement request
<!--
THIS TEMPLATE IS CURRENTLY UNUSED DUE TO GITHUB LIMITATIONS!
To be used for PRs which enhance existing features
-->
@@ -17,4 +18,4 @@ If adding commands, describe any restrictions on their usage.
<!-- To check a box, replace the space between the [] with a x -->
- [ ] Yes
- [ ] No
- [ ] No

View File

@@ -1,6 +1,7 @@
# New feature addition
<!--
THIS TEMPLATE IS CURRENTLY UNUSED DUE TO GITHUB LIMITATIONS!
To be used for PRs which add a new feature
Examples of this include new APIs, new core cogs, etc.
-->
@@ -18,4 +19,4 @@ Examples of this include new APIs, new core cogs, etc.
<!--
If you are adding a cog, describe its commands in detail (functionality, usage restrictions, etc).
If the new feature introduces new requirements, please try to explain why they are necessary.
-->
-->

View File

@@ -1,6 +1,7 @@
# New release
<!--
THIS TEMPLATE IS CURRENTLY UNUSED DUE TO GITHUB LIMITATIONS!
To be used by collaborators for doing releases.
Most contributors will not need to use this.
-->
@@ -13,4 +14,3 @@ Most contributors will not need to use this.
- [ ] Yes
- [ ] No

View File

@@ -1,5 +1,6 @@
# Translations update
<!--
THIS TEMPLATE IS CURRENTLY UNUSED DUE TO GITHUB LIMITATIONS!
Used for PRs updating translations from Crowdin
-->
-->

1
.gitignore vendored
View File

@@ -1,6 +1,7 @@
*.json
*.exe
*.dll
*.pot
.data
!/tests/cogs/dataconverter/data/**/*.json

View File

@@ -1,13 +1,17 @@
version: 2
formats:
- pdf
build:
image: latest
requirements_file: docs/requirements.txt
python:
version: 3.6
pip_install: true
extra_requirements:
- mongo
version: 3.7
install:
- requirements: docs/requirements.txt
- method: pip
path: .
extra_requirements:
- docs
- mongo

View File

@@ -1,62 +1,60 @@
dist: trusty
dist: xenial
language: python
cache: pip
notifications:
email: false
python:
- 3.6.5
- 3.7.2
env:
global:
PIPENV_IGNORE_VIRTUALENVS=1
- PIPENV_IGNORE_VIRTUALENVS=1
matrix:
- TOXENV=py
- TOXENV=docs
- TOXENV=style
install:
- pip install --upgrade pip pipenv
- pipenv install --dev
- pip install --upgrade pip tox
script:
- pipenv run tox
- tox
jobs:
include:
# These jobs only occur on tag creation for V3/develop if the prior ones succeed
# These jobs only occur on tag creation if the prior ones succeed
- stage: PyPi Deployment
if: tag IS present
python: 3.6.5
python: 3.7.2
env:
- DEPLOYING=true
- TOXENV=py36
deploy:
- provider: pypi
distributions: sdist bdist_wheel
user: Red-DiscordBot
password:
secure: Ty9vYnd/wCuQkVC/OsS4E2jT9LVDVfzsFrQc4U2hMYcTJnYbl/3omyObdCWCOBC40vUDkVHAQU8ULHzoCA+2KX9Ds/7/P5zCumAA0uJRR9Smw7OlRzSMxJI+/lGq4CwXKzxDZKuo5rsxXEbW5qmYjtO8Mk6KuLkvieb1vyr2DcqWEFzg/7TZNDfD1oP8et8ITQ26lLP1dtQx/jlAiIBzgK9wziuwj1Divb9A///VsGz43N8maZ+jfsDjYqrfUVWTy3ar7JPUplletenYCR1PmQ5C46XfV0kitKd1aITJ48YPAKyYgKy8AIT+Uz1JArTnqdzLSFRNELS57qS00lzgllbteCyWQ8Uzy0Zpxb/5DDH8/mL1n0MyJrF8qjZd2hLNAXg3z/k9bGXeiMLGwoxRlGXkL2XpiVgI93UKKyVyooGNMgPTc/QdSc7krjAWcOtX/HgLR34jxeLPFEdzJNAFIimfDD8N+XTFcNBw6EvOYm/n5MXkckNoX/G+ThNobHZ7VKSASltZ9zBRAJ2dDh35G3CYmVEk33U77RKbL9le/Za9QVBcAO8i6rqVGYkdO7thHHKHc/1CB1jNnjsFSDt0bURtNfAqfwKCurQC8487zbEzT+2fog3Wygv7g3cklaRg4guY8UjZuFWStYGqbroTsOCd9ATNqeO5B13pNhllSzU=
skip_cleanup: true
on:
repo: Cog-Creators/Red-DiscordBot
branch: V3/develop
python: 3.6.5
tags: true
- stage: Crowdin Deployment
if: tag IS present
python: 3.6.5
python: 3.7.2
env:
- DEPLOYING=true
- TOXENV=py36
before_deploy:
- curl https://artifacts.crowdin.com/repo/GPG-KEY-crowdin | sudo apt-key add -
- echo "deb https://artifacts.crowdin.com/repo/deb/ /" | sudo tee -a /etc/apt/sources.list
- sudo apt-get update -qq
- sudo apt-get install -y crowdin
- pip install redgettext==2.2
deploy:
- provider: script
script: python3 ./generate_strings.py
script: make upload_translations
skip_cleanup: true
on:
repo: Cog-Creators/Red-DiscordBot
branch: V3/develop
python: 3.6.5
tags: true

32
LICENSE
View File

@@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Red - A fully customizable Discord bot
Copyright (C) 2015-2018 Twentysix
Copyright (C) 2015-2019 Twentysix
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Red-DiscordBot Copyright (C) 2015-2018 Twentysix
Red-DiscordBot Copyright (C) 2015-2019 Twentysix
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@@ -672,3 +672,31 @@ may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
The Red-DiscordBot project contains subcomponents in audio.py that have a
separate copyright notice and license terms. Your use of the source code for
these subcomponents is subject to the terms and conditions of the following
licenses.
This product bundles methods from https://github.com/Just-Some-Bots/MusicBot/
blob/master/musicbot/spotify.py which are available under an MIT license.
Copyright (c) 2015-2018 Just-Some-Bots (https://github.com/Just-Some-Bots)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@@ -1,5 +0,0 @@
include README.rst
include LICENSE
include requirements.txt
include discord/bin/*.dll
include redbot/cogs/audio/application.yml

View File

@@ -1,4 +1,14 @@
# Python Code Style
reformat:
black -l 99 `git ls-files "*.py"`
stylecheck:
black --check -l 99 `git ls-files "*.py"`
# Translations
gettext:
redgettext --command-docstrings --verbose --recursive redbot --exclude-files "redbot/pytest/**/*"
upload_translations:
$(MAKE) gettext
crowdin upload sources
download_translations:
crowdin download

13
Pipfile
View File

@@ -4,17 +4,8 @@ verify_ssl = true
name = "pypi"
[packages]
"discord.py" = { git = 'git://github.com/Rapptz/discord.py', ref = '7eb918b19e3e60b56eb9039eb267f8f3477c5e17', editable = true}
"e1839a8" = {path = ".", editable = true}
red-discordbot = {path = ".",editable = true,extras = ['mongo']}
[dev-packages]
tox = "*"
pytest = "*"
pytest-asyncio = "*"
sphinx = ">1.7"
sphinxcontrib-asyncio = "*"
sphinx-rtd-theme = "*"
black = "*"
[pipenv]
allow_prereleases = true
red-discordbot = {path = ".",editable = true,extras = ['docs', 'test', 'style', 'mongo']}

1009
Pipfile.lock generated

File diff suppressed because it is too large Load Diff

133
README.md Normal file
View File

@@ -0,0 +1,133 @@
<h1 align="center">
<br>
<a href="https://github.com/Cog-Creators/Red-DiscordBot/tree/V3/develop"><img src="https://imgur.com/pY1WUFX.png" alt="Red - Discord Bot"></a>
<br>
Red Discord Bot
<br>
</h1>
<h4 align="center">Music, Moderation, Trivia, Stream Alerts and Fully Modular.</h4>
<p align="center">
<a href="https://discord.gg/red">
<img src="https://discordapp.com/api/guilds/133049272517001216/widget.png?style=shield" alt="Discord Server">
</a>
<a href="https://www.patreon.com/Red_Devs">
<img src="https://img.shields.io/badge/Support-Red!-yellow.svg" alt="Support Red on Patreon!">
</a>
<a href="https://www.python.org/downloads/">
<img src="https://img.shields.io/badge/Made%20With-Python%203.7-blue.svg?style=for-the-badge" alt="Made with Python 3.7">
</a>
<a href="https://crowdin.com/project/red-discordbot">
<img src="https://d322cqt584bo4o.cloudfront.net/red-discordbot/localized.svg" alt="Localized with Crowdin">
</a>
<a href="https://github.com/Rapptz/discord.py/tree/rewrite">
<img src="https://img.shields.io/badge/discord-py-blue.svg" alt="discord.py">
</a>
</p>
<p align="center">
<a href="https://travis-ci.com/Cog-Creators/Red-DiscordBot">
<img src="https://api.travis-ci.com/Cog-Creators/Red-DiscordBot.svg?branch=V3/develop" alt="Travis CI">
</a>
<a href="http://red-discordbot.readthedocs.io/en/v3-develop/?badge=v3-develop">
<img src="https://readthedocs.org/projects/red-discordbot/badge/?version=v3-develop" alt="Red on readthedocs.org">
</a>
<a href="https://github.com/ambv/black">
<img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code Style: Black">
</a>
<a href="http://makeapullrequest.com">
<img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg">
</a>
</p>
<p align="center">
<a href="#overview">Overview</a>
<a href="#installation">Installation</a>
<a href="http://red-discordbot.readthedocs.io/en/v3-develop/index.html">Documentation</a>
<a href="#plugins">Plugins</a>
<a href="#join-the-community">Community</a>
<a href="#license">License</a>
</p>
# Overview
Red is a fully modular bot meaning all features and commands can be enabled/disabled to your
liking, making it completely customizable. This is also a *self-hosted bot* meaning you will need
to host and maintain your own instance. You can turn Red into an admin bot, music bot, trivia bot,
new best friend or all of these together!
[Installation](#installation) is easy, and you do **NOT** need to know anything about coding! Aside
from installation and updating, every part of the bot can be controlled from within Discord.
**The default set of modules includes and is not limited to:**
- Moderation features (kick/ban/softban/hackban, mod-log, filter, chat cleanup)
- Trivia (lists are included and can be easily added)
- Music features (YouTube, SoundCloud, local files, playlists, queues)
- Stream alerts (Twitch, Youtube, Mixer, Hitbox, Picarto)
- Bank (slot machine, user credits)
- Custom commands
- Imgur/gif search
- Admin automation (self-role assignment, cross-server announcements, mod-mail reports)
- Customisable command permissions
**Additionally, other [plugins](#plugins) (cogs) can be easily found and added from our growing
community of cog repositories.**
# Installation
**The following platforms are officially supported:**
- [Windows](https://red-discordbot.readthedocs.io/en/v3-develop/install_windows.html)
- [MacOS](https://red-discordbot.readthedocs.io/en/v3-develop/install_linux_mac.html)
- [Ubuntu](https://red-discordbot.readthedocs.io/en/v3-develop/install_linux_mac.html)
- [Debian Stretch](https://red-discordbot.readthedocs.io/en/v3-develop/install_linux_mac.html)
- [CentOS 7](https://red-discordbot.readthedocs.io/en/v3-develop/install_linux_mac.html)
- [Arch Linux](https://red-discordbot.readthedocs.io/en/v3-develop/install_linux_mac.html)
- [Raspbian Stretch](https://red-discordbot.readthedocs.io/en/v3-develop/install_linux_mac.html)
If after reading the guide you are still experiencing issues, feel free to join the
[Official Discord Server](https://discord.gg/red) and ask in the **#support** channel for help.
# Plugins
Red is fully modular, allowing you to load and unload plugins of your choice, and install 3rd party
plugins directly from Discord! A few examples are:
- Cleverbot integration (talk to Red and she talks back)
- Ban sync
- Welcome messages
- Casino
- Reaction roles
- Slow Mode
- Anilist
- And much, much more!
Feel free to take a [peek](https://cogboard.red/t/approved-repositories/210) at a list of
available 3rd party cogs!
# Join the community!
**Red** is in continuous development, and its supported by an active community which produces new
content (cogs/plugins) for everyone to enjoy. New features are constantly added. If you cant
[find](https://cogboard.red/t/approved-repositories/210) the cog youre looking for,
consult our [guide](https://red-discordbot.readthedocs.io/en/v3-develop/guide_cog_creation.html) on
building your own cogs!
Join us on our [Official Discord Server](https://discord.gg/red)!
# License
Released under the [GNU GPL v3](https://www.gnu.org/licenses/gpl-3.0.en.html) license.
Red is named after the main character of "Transistor", a video game by
[Super Giant Games](https://www.supergiantgames.com/games/transistor/).
Artwork created by [Sinlaire](https://sinlaire.deviantart.com/) on Deviant Art for the Red Discord
Bot Project.

View File

@@ -1,113 +0,0 @@
.. class:: center
.. image:: https://imgur.com/pY1WUFX.png
:target: https://github.com/Cog-Creators/Red-DiscordBot/tree/V3/develop
:alt: Red Discord Bot
.. class:: center
Music, Moderation, Trivia, Stream Alerts and fully customizable.
.. class:: center
.. image:: https://discordapp.com/api/guilds/133049272517001216/embed.png
:target: https://discord.gg/red
:alt: Discord server
.. image:: https://api.travis-ci.org/Cog-Creators/Red-DiscordBot.svg?branch=V3/develop
:target: https://travis-ci.org/Cog-Creators/Red-DiscordBot
:alt: Travis CI status
.. image:: https://readthedocs.org/projects/red-discordbot/badge/?version=v3-develop
:target: http://red-discordbot.readthedocs.io/en/v3-develop/?badge=v3-develop
:alt: Documentation Status
.. image:: https://img.shields.io/badge/discord-py-blue.svg
:target: https://github.com/Rapptz/discord.py
:alt: discord.py
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/ambv/black
:alt: Code style: black
.. image:: https://d322cqt584bo4o.cloudfront.net/red-discordbot/localized.svg
:target: https://crowdin.com/project/red-discordbot
:alt: Crowdin
.. image:: https://img.shields.io/badge/Support-Red!-orange.svg
:target: https://www.patreon.com/Red_Devs
:alt: Patreon
.. image:: https://img.shields.io/badge/PRs-welcome-brightgreen.svg
:target: http://makeapullrequest.com
:alt: PRs open
==========
Overview
==========
Red is a fully modular bot meaning all features and commands can be enabled/disabled to your liking, making it completely customizable.
This is also a *self-hosted bot* meaning you will need to host and maintain your own instance. You can turn Red into an admin bot, music bot, trivia bot, new best friend or all of these together!
`Installation <#installation>`_ is easy, and you do **NOT** need to know anything about coding! Aside from installation and updating, every part of the bot can be controlled from within Discord.
**The default set of modules includes and is not limited to:**
- Moderation features (kick/ban/softban/hackban, mod-log, filter, chat cleanup)
- Trivia (lists are included and can be easily added)
- Music features (YouTube, SoundCloud, local files, playlists, queues)
- Stream alerts (Twitch, Youtube, Mixer, Hitbox, Picarto)
- Slot machine
- Custom commands
- Imgur/gif search
**Additionally, other plugins (cogs) can be easily found and added from our growing community of cog repositories.**
- Cleverbot integration (talk to Red and she talks back)
- Ban sync
- Welcome messages
- Casino
- Reaction roles
- Slow Mode
- Anilist
- And much, much more!
Feel free to take a `peek <https://github.com/Cog-Creators/Red-DiscordBot/issues/1398>`_!
==============
Installation
==============
**The following platforms are officially supported:**
- `Windows <https://red-discordbot.readthedocs.io/en/v3-develop/install_windows.html>`_
- `MacOS <https://red-discordbot.readthedocs.io/en/v3-develop/install_mac.html>`_
- `Ubuntu <https://red-discordbot.readthedocs.io/en/v3-develop/install_ubuntu.html>`_
- `Debian Stretch <https://red-discordbot.readthedocs.io/en/v3-develop/install_debian.html>`_
- `CentOS 7 <https://red-discordbot.readthedocs.io/en/v3-develop/install_centos.html>`_
- `Arch Linux <https://red-discordbot.readthedocs.io/en/v3-develop/install_arch.html>`_
- `Raspbian Stretch <https://red-discordbot.readthedocs.io/en/v3-develop/install_raspbian.html>`_
Already using **Red** V2? Take a look at the `Data Converter <https://red-discordbot.readthedocs.io/en/v3-develop/cog_dataconverter.html>`_ to import your data to V3.
If `after reading the guides <https://red-discordbot.readthedocs.io/en/v3-develop/>`_ you are still experiencing issues, feel free to join the `Official Server <https://discord.gg/red>`_ and ask in the **#support** channel for help.
=====================
Join the community!
=====================
**Red** is in continuous development, and its supported by an active community which produces new content (cogs/plugins) for everyone to enjoy. New features are constantly added. If you cant `find <https://github.com/Cog-Creators/Red-DiscordBot/issues/1398>`_ what youre looking for, consult our `guide <https://red-discordbot.readthedocs.io/en/v3-develop/guide_cog_creation.html>`_ on building your own cogs!
Join us on our `Official Discord Server <https://discord.gg/red>`_!
=========
License
=========
Released under the `GNU GPL v3 <#License>`_.
Red is named after the main character of "Transistor", a videogame by `Super Giant Games <https://www.supergiantgames.com/games/transistor/>`_
Artwork created by `Sinlaire <https://sinlaire.deviantart.com/>`_ on Deviant Art for the Red Bot Project.

View File

@@ -1,5 +1,8 @@
api_key_env: CROWDIN_API_KEY
project_identifier_env: CROWDIN_PROJECT_ID
base_path: ./redbot/
files:
- source: /**/*.pot
- source: cogs/**/messages.pot
translation: /%original_path%/%locale%.po
- source: core/**/messages.pot
translation: /%original_path%/%locale%.po

View File

@@ -14,9 +14,6 @@ help:
.PHONY: help Makefile
init:
cd .. && pipenv lock -r --dev > docs/requirements.txt && echo 'git+https://github.com/Rapptz/discord.py@rewrite#egg=discord.py-1.0' >> docs/requirements.txt
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile

View File

@@ -10,7 +10,7 @@ Creating the service file
Create the new service file:
:code:`sudo nano /etc/systemd/system/red@.service`
:code:`sudo -e /etc/systemd/system/red@.service`
Paste the following and replace all instances of :code:`username` with the username your bot is running under (hopefully not root):
@@ -28,6 +28,7 @@ Paste the following and replace all instances of :code:`username` with the usern
Restart=always
RestartSec=15
RestartPreventExitStatus=0
TimeoutStopSec=10
[Install]
WantedBy=multi-user.target
@@ -48,6 +49,14 @@ To set the bot to start on boot, you must enable the service, again adding the i
:code:`sudo systemctl enable red@instancename`
If you need to shutdown the bot, you can use the ``[p]shutdown`` command or
type the following command in the terminal, still by adding the instance name after the **@**:
:code:`sudo systemctl stop red@instancename`
.. warning:: If the service doesn't stop in the next 10 seconds, the process is killed.
Check your logs to know the cause of the error that prevents the shutdown.
To view Reds log, you can acccess through journalctl:
:code:`sudo journalctl -u red@instancename`

232
docs/changelog_3_1_0.rst Normal file
View File

@@ -0,0 +1,232 @@
.. v3.1.0 Changelog
####################
v3.1.0 Release Notes
####################
----------------------
Mongo Driver Migration
----------------------
Due to the required changes of the Mongo driver for Config, all existing Mongo users will need to
complete the below instructions to continue to use Mongo after updating to 3.1.
This includes **all** users, regardless of any prior migration attempt to a development version of
3.1.
#. Upgrade to 3.1
#. Convert all existing Mongo instances to JSON using the new converters
#. Start each bot instance while using JSON and load any and all cogs you have in order to successfully preserve data.
#. Turn each instance off and convert back to Mongo.
**NOTE:** No data is wiped from your Mongo database when converting to JSON.
You may want to use a *new* database name when converting back to Mongo in order to not have duplicate data.
-------------
Setup Utility
-------------
New commands were introduced to simplify the conversion/editing/removal process both on our end and the users end.
Please use ``redbot-setup --help`` to learn how to use the new features.
.. HINT::
Converting to JSON: ``redbot-setup convert <instance_name> json``
Converting to Mongo: ``redbot-setup convert <instance_name> mongo``
################
v3.1.0 Changelog
################
-----
Audio
-----
* Add Spotify support (`#2328`_)
* Play local folders via text command (`#2457`_)
* Change pause to a toggle (`#2461`_)
* Remove aliases (`#2462`_)
* Add track length restriction (`#2465`_)
* Seek command can now seek to position (`#2470`_)
* Add option for dc at queue end (`#2472`_)
* Emptydisconnect and status refactor (`#2473`_)
* Queue clean and queue clear addition (`#2476`_)
* Fix for audioset status (`#2481`_)
* Playlist download addition (`#2482`_)
* Add songs when search-queuing (`#2513`_)
* Match v2 behavior for channel change (`#2521`_)
* Bot will no longer complain about permissions when trying to connect to user-limited channel, if it has "Move Members" permission (`#2525`_)
* Fix issue on audiostats command when more than 20 servers to display (`#2533`_)
* Fix for prev command display (`#2556`_)
* Fix for localtrack playing (`#2557`_)
* Fix for playlist queue when not playing (`#2586`_)
* Track search and append fixes (`#2591`_)
* DJ role should ask for a role (`#2606`_)
----
Core
----
* Warn on usage of ``yaml.load`` (`#2326`_)
* New Event dispatch: ``on_message_without_command`` (`#2338`_)
* Improve output format of cooldown messages (`#2412`_)
* Delete cooldown messages when expired (`#2469`_)
* Fix local blacklist/whitelist management (`#2531`_)
* ``[p]set locale`` now only accepts actual locales (`#2553`_)
* ``[p]listlocales`` now displays ``en-US`` (`#2553`_)
* ``redbot --version`` will now give you current version of Red (`#2567`_)
* Redesign help and related formatter (`#2628`_)
* Default locale changed from ``en`` to ``en-US`` (`#2642`_)
* New command ``[p]datapath`` that prints the bot's datapath (`#2652`_)
------
Config
------
* Updated Mongo driver to support large guilds (`#2536`_)
* Introduced ``init_custom`` method on Config objects (`#2545`_)
* We now record custom group primary key lengths in the core config object (`#2550`_)
* Migrated internal UUIDs to maintain cross platform consistency (`#2604`_)
-------------
DataConverter
-------------
* It's dead jim (Removal) (`#2554`_)
----------
discord.py
----------
* No longer vendoring discord.py (`#2587`_)
* Upgraded discord.py dependency to version 1.0.1 (`#2587`_)
----------
Downloader
----------
* ``[p]cog install`` will now tell user that cog has to be loaded (`#2523`_)
* The message when libraries fail to install is now formatted (`#2576`_)
* Fixed bug, that caused Downloader to include submodules on cog list (`#2590`_)
* ``[p]cog uninstall`` allows to uninstall multiple cogs now (`#2592`_)
* ``[p]cog uninstall`` will now remove cog from installed cogs even if it can't find the cog in install path anymore (`#2595`_)
* ``[p]cog install`` will not allow to install cogs which aren't suitable for installed version of Red anymore (`#2605`_)
* Cog Developers now have to use ``min_bot_version`` in form of version string instead of ``bot_version`` in info.json and they can also use ``max_bot_version`` to specify maximum version of Red, more in :doc:`framework_downloader`. (`#2605`_)
------
Filter
------
* Filter performs significantly better on large servers. (`#2509`_)
--------
Launcher
--------
* Fixed extras in the launcher (`#2588`_)
---
Mod
---
* Admins can now decide how many times message has to be repeated before ``deleterepeats`` removes it (`#2437`_)
* Fix: make ``[p]ban [days]`` optional as per the doc (`#2602`_)
* Added the command ``voicekick`` to kick members from a voice channel with optional mod case. (`#2639`_)
-----------
Permissions
-----------
* Removed: ``p`` alias for ``permissions`` command (`#2467`_)
-------------
Setup Scripts
-------------
* ``redbot-setup`` now uses the click CLI library (`#2579`_)
* ``redbot-setup convert`` now used to convert between libraries (`#2579`_)
* Backup support for Mongo is currently broken (`#2579`_)
-------
Streams
-------
* Add support for custom stream alert messages per guild (`#2600`_)
* Add ability to exclude rerun Twitch streams, and note rerun streams in embed status (`#2620`_)
-----
Tests
-----
* Test for ``trivia`` cog uses explicitly utf-8 encoding for checking yaml files (`#2565`_)
------
Trivia
------
* Fix of dead image link for Sao Tome and Principe in ``worldflags`` trivia (`#2540`_)
-----------------
Utility Functions
-----------------
* New: ``chat_formatting.humaize_timedelta`` (`#2412`_)
* ``Tunnel`` - Spelling correction of method name - changed ``files_from_attatch`` to ``files_from_attach`` (old name is left for backwards compatibility) (`#2496`_)
* ``Tunnel`` - fixed behavior of ``react_close()``, now when tunnel closes message will be sent to other end (`#2507`_)
* ``chat_formatting.humanize_list`` - Improved error handling of empty lists (`#2597`_)
.. _#2326: https://github.com/Cog-Creators/Red-DiscordBot/pull/2326
.. _#2328: https://github.com/Cog-Creators/Red-DiscordBot/pull/2328
.. _#2338: https://github.com/Cog-Creators/Red-DiscordBot/pull/2338
.. _#2412: https://github.com/Cog-Creators/Red-DiscordBot/pull/2412
.. _#2437: https://github.com/Cog-Creators/Red-DiscordBot/pull/2437
.. _#2457: https://github.com/Cog-Creators/Red-DiscordBot/pull/2457
.. _#2461: https://github.com/Cog-Creators/Red-DiscordBot/pull/2461
.. _#2462: https://github.com/Cog-Creators/Red-DiscordBot/pull/2462
.. _#2465: https://github.com/Cog-Creators/Red-DiscordBot/pull/2465
.. _#2467: https://github.com/Cog-Creators/Red-DiscordBot/pull/2467
.. _#2469: https://github.com/Cog-Creators/Red-DiscordBot/pull/2469
.. _#2470: https://github.com/Cog-Creators/Red-DiscordBot/pull/2470
.. _#2472: https://github.com/Cog-Creators/Red-DiscordBot/pull/2472
.. _#2473: https://github.com/Cog-Creators/Red-DiscordBot/pull/2473
.. _#2476: https://github.com/Cog-Creators/Red-DiscordBot/pull/2476
.. _#2481: https://github.com/Cog-Creators/Red-DiscordBot/pull/2481
.. _#2482: https://github.com/Cog-Creators/Red-DiscordBot/pull/2482
.. _#2496: https://github.com/Cog-Creators/Red-DiscordBot/pull/2496
.. _#2507: https://github.com/Cog-Creators/Red-DiscordBot/pull/2507
.. _#2509: https://github.com/Cog-Creators/Red-DiscordBot/pull/2509
.. _#2513: https://github.com/Cog-Creators/Red-DiscordBot/pull/2513
.. _#2521: https://github.com/Cog-Creators/Red-DiscordBot/pull/2521
.. _#2523: https://github.com/Cog-Creators/Red-DiscordBot/pull/2523
.. _#2525: https://github.com/Cog-Creators/Red-DiscordBot/pull/2525
.. _#2531: https://github.com/Cog-Creators/Red-DiscordBot/pull/2531
.. _#2533: https://github.com/Cog-Creators/Red-DiscordBot/pull/2533
.. _#2536: https://github.com/Cog-Creators/Red-DiscordBot/pull/2536
.. _#2540: https://github.com/Cog-Creators/Red-DiscordBot/pull/2540
.. _#2545: https://github.com/Cog-Creators/Red-DiscordBot/pull/2545
.. _#2550: https://github.com/Cog-Creators/Red-DiscordBot/pull/2550
.. _#2553: https://github.com/Cog-Creators/Red-DiscordBot/pull/2553
.. _#2554: https://github.com/Cog-Creators/Red-DiscordBot/pull/2554
.. _#2556: https://github.com/Cog-Creators/Red-DiscordBot/pull/2556
.. _#2557: https://github.com/Cog-Creators/Red-DiscordBot/pull/2557
.. _#2565: https://github.com/Cog-Creators/Red-DiscordBot/pull/2565
.. _#2567: https://github.com/Cog-Creators/Red-DiscordBot/pull/2567
.. _#2576: https://github.com/Cog-Creators/Red-DiscordBot/pull/2576
.. _#2579: https://github.com/Cog-Creators/Red-DiscordBot/pull/2579
.. _#2586: https://github.com/Cog-Creators/Red-DiscordBot/pull/2586
.. _#2587: https://github.com/Cog-Creators/Red-DiscordBot/pull/2587
.. _#2588: https://github.com/Cog-Creators/Red-DiscordBot/pull/2588
.. _#2590: https://github.com/Cog-Creators/Red-DiscordBot/pull/2590
.. _#2591: https://github.com/Cog-Creators/Red-DiscordBot/pull/2591
.. _#2592: https://github.com/Cog-Creators/Red-DiscordBot/pull/2592
.. _#2595: https://github.com/Cog-Creators/Red-DiscordBot/pull/2595
.. _#2597: https://github.com/Cog-Creators/Red-DiscordBot/pull/2597
.. _#2600: https://github.com/Cog-Creators/Red-DiscordBot/pull/2600
.. _#2602: https://github.com/Cog-Creators/Red-DiscordBot/pull/2602
.. _#2604: https://github.com/Cog-Creators/Red-DiscordBot/pull/2604
.. _#2605: https://github.com/Cog-Creators/Red-DiscordBot/pull/2605
.. _#2606: https://github.com/Cog-Creators/Red-DiscordBot/pull/2606
.. _#2620: https://github.com/Cog-Creators/Red-DiscordBot/pull/2620
.. _#2628: https://github.com/Cog-Creators/Red-DiscordBot/pull/2628
.. _#2639: https://github.com/Cog-Creators/Red-DiscordBot/pull/2639
.. _#2642: https://github.com/Cog-Creators/Red-DiscordBot/pull/2642
.. _#2652: https://github.com/Cog-Creators/Red-DiscordBot/pull/2652

109
docs/cog_customcom.rst Normal file
View File

@@ -0,0 +1,109 @@
.. CustomCommands Cog Reference
============================
CustomCommands Cog Reference
============================
------------
How it works
------------
CustomCommands allows you to create simple commands for your bot without requiring you to code your own cog for Red.
If the command you attempt to create shares a name with an already loaded command, you cannot overwrite it with this cog.
---------
Cooldowns
---------
You can set cooldowns for your custom commands. If a command is on cooldown, it will not be triggered.
You can set cooldowns per member or per channel, or set a cooldown guild-wide. You can also set multiple types of cooldown on a single custom command. All cooldowns must pass before the command will trigger.
------------------
Context Parameters
------------------
You can enhance your custom command's response by leaving spaces for the bot to substitute.
+-----------+----------------------------------------+
| Argument | Substitute |
+===========+========================================+
| {message} | The message the bot is responding to. |
+-----------+----------------------------------------+
| {author} | The user who called the command. |
+-----------+----------------------------------------+
| {channel} | The channel the command was called in. |
+-----------+----------------------------------------+
| {server} | The server the command was called in. |
+-----------+----------------------------------------+
| {guild} | Same as with {server}. |
+-----------+----------------------------------------+
You can further refine the response with dot notation. For example, {author.mention} will mention the user who called the command.
------------------
Command Parameters
------------------
You can further enhance your custom command's response by leaving spaces for the user to substitute.
To do this, simply put {#} in the response, replacing # with any number starting with 0. Each number will be replaced with what the user gave the command, in order.
You can refine the response with colon notation. For example, {0:Member} will accept members of the server, and {0:int} will accept a number. If no colon notation is provided, the argument will be returned unchanged.
+-----------------+--------------------------------+
| Argument | Substitute |
+=================+================================+
| {#:Member} | A member of your server. |
+-----------------+--------------------------------+
| {#:TextChannel} | A text channel in your server. |
+-----------------+--------------------------------+
| {#:Role} | A role in your server. |
+-----------------+--------------------------------+
| {#:int} | A whole number. |
+-----------------+--------------------------------+
| {#:float} | A decimal number. |
+-----------------+--------------------------------+
| {#:bool} | True or False. |
+-----------------+--------------------------------+
You can specify more than the above with colon notation, but those are the most common.
As with context parameters, you can use dot notation to further refine the response. For example, {0.mention:Member} will mention the Member specified.
----------------
Example commands
----------------
Showing your own avatar
.. code-block:: none
[p]customcom add simple avatar {author.avatar_url}
[p]avatar
https://cdn.discordapp.com/avatars/133801473317404673/be4c4a4fe47cb3e74c31a0504e7a295e.webp?size=1024
Repeating the user
.. code-block:: none
[p]customcom add simple say {0}
[p]say Pete and Repeat
Pete and Repeat
Greeting the specified member
.. code-block:: none
[p]customcom add simple greet Hello, {0.mention:Member}!
[p]greet Twentysix
Hello, @Twentysix!
Comparing two text channel's categories
.. code-block:: none
[p]customcom add simple comparecategory {0.category:TextChannel} | {1.category:TextChannel}
[p]comparecategory #support #general
Red | Community

View File

@@ -1,62 +0,0 @@
.. Importing data from a V2 install
================================
Importing data from a V2 install
================================
----------------
What you'll need
----------------
1. A Running V3 bot
2. The path where your V2 bot is installed
--------------
Importing data
--------------
.. important::
Unless otherwise specified, the V2 data will take priority over V3 data for the same entires
.. important::
For the purposes of this guide, your prefix will be denoted as
[p]
You should swap whatever you made your prefix in for this.
All of the below are commands to be entered in discord where the bot can
see them.
The dataconverter cog is not loaded by default. To start, load it with
.. code-block:: none
[p]load dataconverter
Next, you'll need to give it the path where your V2 install is.
On linux and OSX, it may look something like:
.. code-block:: none
/home/username/Red-DiscordBot/
On Windows it will look something like:
.. code-block:: none
C:\Users\yourusername\Red-DiscordBot
Once you have that path, give it to the bot with the following command
(make sure to swap your own path in)
.. code-block:: none
[p]convertdata /home/username/Red-DiscordBot/
From here, if the path is correct, you will be prompted with an interactive menu asking you
what data you would like to import
You can select an entry by number, or quit with any of 'quit', 'exit', 'q', '-1', or 'cancel'

View File

@@ -8,100 +8,90 @@ Permissions Cog Reference
How it works
------------
When loaded, the permissions cog will allow you
to define extra custom rules for who can use a command
When loaded, the permissions cog will allow you to define extra custom rules for who can use a
command.
If no applicable rules are found, the command will behave as if
the cog was not loaded.
If no applicable rules are found, the command will behave normally.
Rules can also be added to cogs, which will affect all commands from that cog. The cog name can be
found from the help menu.
-------------
Rule priority
-------------
Rules set will be checked in the following order
Rules set for subcommands will take precedence over rules set for the parent commands, which
lastly take precedence over rules set for the cog. So for example, if a user is denied the Core
cog, but allowed the ``[p]set token`` command, the user will not be able to use any command in the
Core cog except for ``[p]set token``.
In terms of scope, global rules will be checked first, then server rules.
1. Owner level command specific settings
2. Owner level cog specific settings
3. Server level command specific settings
4. Server level cog specific settings
For each of those, the first rule pertaining to one of the following models will be used:
For each of those, settings have varying priorities (listed below, highest to lowest priority)
1. User
2. Voice channel
3. Text channel
4. Channel category
5. Roles, highest to lowest
6. Server (can only be in global rules)
7. Default rules
1. User whitelist
2. User blacklist
3. Voice Channel whitelist
4. Voice Channel blacklist
5. Text Channel whitelist
6. Text Channel blacklist
7. Role settings (see below)
8. Server whitelist
9. Server blacklist
10. Default settings
For the role whitelist and blacklist settings,
roles will be checked individually in order from highest to lowest role the user has
Each role will be checked for whitelist, then blacklist. The first role with a setting
found will be the one used.
In private messages, only global rules about a user will be checked.
-------------------------
Setting Rules from a file
Setting Rules From a File
-------------------------
The permissions cog can set rules from a yaml file:
All entries are based on ID.
An example of the expected format is shown below.
The permissions cog can also set, display or update rules with a YAML file with the
``[p]permissions yaml`` command. Models must be represented by ID. Rules must be ``true`` for
allow, or ``false`` for deny. Here is an example:
.. code-block:: yaml
cogs:
COG:
Admin:
allow:
- 78631113035100160
deny:
- 96733288462286848
78631113035100160: true
96733288462286848: false
Audio:
allow:
- 133049272517001216
default: deny
commands:
133049272517001216: true
default: false
COMMAND:
cleanup bot:
allow:
- 78631113035100160
default: deny
78631113035100160: true
default: false
ping:
deny:
- 96733288462286848
default: allow
96733288462286848: false
default: true
----------------------
Example configurations
----------------------
Locking Audio cog to approved server(s) as a bot owner
Locking the ``[p]play`` command to approved server(s) as a bot owner:
.. code-block:: none
[p]permissions setglobaldefault Audio deny
[p]permissions addglobalrule allow Audio [server ID or name]
[p]permissions setdefaultglobalrule deny play
[p]permissions addglobalrule allow play [server ID or name]
Locking Audio to specific voice channel(s) as a serverowner or admin:
Locking the ``[p]play`` command to specific voice channel(s) as a serverowner or admin:
.. code-block:: none
[p]permissions setguilddefault deny play
[p]permissions setguilddefault deny "playlist start"
[p]permissions addguildrule allow play [voice channel ID or name]
[p]permissions addguildrule allow "playlist start" [voice channel ID or name]
[p]permissions setdefaultserverrule deny play
[p]permissions setdefaultserverrule deny "playlist start"
[p]permissions addserverrule allow play [voice channel ID or name]
[p]permissions addserverrule allow "playlist start" [voice channel ID or name]
Allowing extra roles to use cleanup
Allowing extra roles to use ``[p]cleanup``:
.. code-block:: none
[p]permissions addguildrule allow Cleanup [role ID]
[p]permissions addserverrule allow cleanup [role ID]
Preventing cleanup from being used in channels where message history is important:
Preventing ``[p]cleanup`` from being used in channels where message history is important:
.. code-block:: none
[p]permissions addguildrule deny Cleanup [channel ID or mention]
[p]permissions addserverrule deny cleanup [channel ID or mention]

View File

@@ -39,6 +39,7 @@ extensions = [
"sphinx.ext.intersphinx",
"sphinx.ext.viewcode",
"sphinx.ext.napoleon",
"sphinx.ext.doctest",
"sphinxcontrib.asyncio",
]
@@ -190,9 +191,23 @@ texinfo_documents = [
]
# Example configuration for intersphinx: refer to the Python standard library.
# -- Options for linkcheck builder ----------------------------------------
# A list of regular expressions that match URIs that should not be
# checked when doing a linkcheck build.
linkcheck_ignore = [r"https://java.com*", r"https://chocolatey.org*"]
# -- Options for extensions -----------------------------------------------
# Intersphinx
intersphinx_mapping = {
"python": ("https://docs.python.org/3.6", None),
"dpy": ("https://discordpy.readthedocs.io/en/rewrite/", None),
"python": ("https://docs.python.org/3", None),
"dpy": ("https://discordpy.readthedocs.io/en/v1.0.1/", None),
"motor": ("https://motor.readthedocs.io/en/stable/", None),
}
# Doctest
# If this string is non-empty, all blocks with ``>>>`` in them will be
# tested, not just the ones explicitly marked with ``.. doctest::``
doctest_test_doctest_blocks = ""

View File

@@ -0,0 +1,48 @@
.. V3 Shared API Key Reference
===============
Shared API Keys
===============
Red has a central API key storage utilising the core bots config. This allows cog creators to add a single location to store API keys for their cogs which may be shared between other cogs.
There needs to be some consistency between cog creators when using shared API keys between cogs. To help make this easier service should be all **lowercase** and the key names should match the naming convetion of the API being accessed.
Example:
Twitch has a client ID and client secret so a user should be asked to input
``[p]set api twitch client_id,1234ksdjf client_secret,1234aldlfkd``
and when accessed in the code it should be done by
.. code-block:: python
await self.bot.db.api_tokens.get_raw("twitch", default={"client_id": None, "client_secret": None})
Each service has its own dict of key, value pairs for each required key type. If there's only one key required then a name for the key is still required for storing and accessing.
Example:
``[p]set api youtube api_key,1234ksdjf``
and when accessed in the code it should be done by
.. code-block:: python
await self.bot.db.api_tokens.get_raw("youtube", default={"api_key": None})
***********
Basic Usage
***********
.. code-block:: python
class MyCog:
@commands.command()
async def youtube(self, ctx, user: str):
apikey = await self.bot.db.api_tokens.get_raw("youtube", default={"api_key": None})
if apikey["api_key"] is None:
return await ctx.send("The YouTube API key has not been set.")
# Use the API key to access content as you normally would

11
docs/framework_checks.rst Normal file
View File

@@ -0,0 +1,11 @@
.. _checks:
========================
Command Check Decorators
========================
The following are all decorators for commands, which add restrictions to where and when they can be
run.
.. automodule:: redbot.core.checks
:members:

View File

@@ -5,8 +5,9 @@ Commands Package
================
This package acts almost identically to :doc:`discord.ext.commands <dpy:ext/commands/api>`; i.e.
they both have the same attributes. Some of these attributes, however, have been slightly modified,
as outlined below.
all of the attributes from discord.py's are also in ours.
Some of these attributes, however, have been slightly modified, while others have been added to
extend functionlities used throughout the bot, as outlined below.
.. autofunction:: redbot.core.commands.command
@@ -20,3 +21,6 @@ as outlined below.
.. autoclass:: redbot.core.commands.Context
:members:
.. automodule:: redbot.core.commands.requires
:members: PrivilegeLevel, PermState, Requires

View File

@@ -187,6 +187,7 @@ This usage guide will cover the following features:
- :py:meth:`Group.get_raw`
- :py:meth:`Group.set_raw`
- :py:meth:`Group.clear_raw`
For this example let's suppose that we're creating a cog that allows users to buy and own multiple pets using
the built-in Economy credits::
@@ -290,6 +291,37 @@ We're responsible pet owners here, so we've also got to have a way to feed our p
await ctx.send("Your pet is now at {}/100 hunger!".format(new_hunger)
Of course, if we're less than responsible pet owners, there are consequences::
#continued
@commands.command()
async def adopt(self, ctx, pet_name: str, *, member: discord.Member):
try:
pet = await self.conf.user(member).pets.get_raw(pet_name)
except KeyError:
await ctx.send("That person doesn't own that pet!")
return
hunger = pet.get("hunger")
if hunger < 80:
await ctx.send("That pet is too well taken care of to be adopted.")
return
await self.conf.user(member).pets.clear_raw(pet_name)
# this is equivalent to doing the following
pets = await self.conf.user(member).pets()
del pets[pet_name]
await self.conf.user(member).pets.set(pets)
await self.conf.user(ctx.author).pets.set_raw(pet_name, value=pet)
await ctx.send(
"Your request to adopt this pet has been granted due to "
"how poorly it was taken care of."
)
*************
V2 Data Usage
*************
@@ -342,6 +374,21 @@ API Reference
inside the bot itself! Simply take a peek inside of the :code:`tests/core/test_config.py` file for examples of using
Config in all kinds of ways.
.. important::
When getting, setting or clearing values in Config, all keys are casted to `str` for you. This
includes keys within a `dict` when one is being set, as well as keys in nested dictionaries
within that `dict`. For example::
>>> conf = Config.get_conf(self, identifier=999)
>>> conf.register_global(foo={})
>>> await conf.foo.set_raw(123, value=True)
>>> await conf.foo()
{'123': True}
>>> await conf.foo.set({123: True, 456: {789: False}}
>>> await conf.foo()
{'123': True, '456': {'789': False}}
.. automodule:: redbot.core.config
Config

View File

@@ -30,7 +30,10 @@ Keys common to both repo and cog info.json (case sensitive)
Keys specific to the cog info.json (case sensitive)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- ``bot_version`` (list of integer) - Min version number of Red in the format ``(MAJOR, MINOR, PATCH)``
- ``min_bot_version`` (string) - Min version number of Red in the format ``MAJOR.MINOR.MICRO``
- ``max_bot_version`` (string) - Max version number of Red in the format ``MAJOR.MINOR.MICRO``,
if ``min_bot_version`` is newer than ``max_bot_version``, ``max_bot_version`` will be ignored
- ``hidden`` (bool) - Determines if a cog is visible in the cog list for a repo.

View File

@@ -4,6 +4,12 @@
Utility Functions
=================
General Utility
===============
.. automodule:: redbot.core.utils
:members: deduplicate_iterables, bounded_gather, bounded_gather_iter
Chat Formatting
===============
@@ -16,26 +22,32 @@ Embed Helpers
.. automodule:: redbot.core.utils.embed
:members:
Menu Helpers
============
Reaction Menus
==============
.. automodule:: redbot.core.utils.menus
:members:
Event Predicates
================
.. automodule:: redbot.core.utils.predicates
:members:
Mod Helpers
===========
.. automodule:: redbot.core.utils.mod
:members:
V2 Data Conversion
==================
.. automodule:: redbot.core.utils.data_converter
:members: DataConverter
Tunnel
======
.. automodule:: redbot.core.utils.tunnel
:members: Tunnel
:members: Tunnel
Common Filters
==============
.. automodule:: redbot.core.utils.common_filters
:members:

View File

@@ -17,8 +17,8 @@ you in the process.
Getting started
---------------
To start off, be sure that you have installed Python 3.6 or higher. Open a terminal or command prompt and type
:code:`pip install --process-dependency-links -U git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=redbot[test]`
To start off, be sure that you have installed Python 3.7.
Open a terminal or command prompt and type :code:`pip install -U git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=redbot[test]`
(note that if you get an error with this, try again but put :code:`python -m` in front of the command
This will install the latest version of V3.
@@ -44,9 +44,9 @@ In that file, place the following code:
.. code-block:: python
from discord.ext import commands
from redbot.core import commands
class Mycog:
class Mycog(commands.Cog):
"""My custom cog"""
@commands.command()

View File

@@ -1,154 +0,0 @@
.. Converting Data from a V2 cog
.. role:: python(code)
:language: python
============================
Importing Data From a V2 Cog
============================
This guide serves as a tutorial on using the DataConverter class
to import settings from a V2 cog.
------------------
Things you'll need
------------------
1. The path where each file holding related settings in v2 is
2. A conversion function to take the data and transform it to conform to Config
-----------------------
Getting your file paths
-----------------------
You should probably not try to find the files manually.
Asking the user for the base install path and using a relative path to where the
data should be, then testing that the file exists there is safer. This is especially
True if your cog has multiple settings files
Example
.. code-block:: python
from discord.ext import commands
from pathlib import Path
@commands.command(name="filefinder")
async def file_finding_command(self, ctx, filepath):
"""
this finds a file based on a user provided input and a known relative path
"""
base_path = Path(filepath)
fp = base_path / 'data' / 'mycog' / 'settings.json'
if not fp.is_file():
pass
# fail, prompting user
else:
pass
# do something with the file
---------------
Converting data
---------------
Once you've gotten your v2 settings file, you'll want to be able to import it
There are a couple options available depending on how you would like to convert
the data.
The first one takes a data path, and a conversion function and does the rest for you.
This is great for simple data that just needs to quickly be imported without much
modification.
Here's an example of that in use:
.. code-block:: python
from pathlib import Path
from discord.ext import commands
from redbot.core.utils.data_converter import DataConverter as dc
from redbot.core.config import Config
...
async def import_v2(self, file_path: Path):
"""
to be called from a command limited to owner
This should be a coroutine as the convert function will
need to be awaited
"""
# First we give the converter our cog's Config instance.
converter = dc(self.config)
# next we design a way to get all of the data into Config's internal
# format. This should be a generator, but you can also return a single
# list with identical results outside of memory usage
def conversion_spec(v2data):
for guild_id in v2.data.keys():
yield {(Config.GUILD, guild_id): {('blacklisted',): True}}
# This is yielding a dictionary that is designed for config's set_raw.
# The keys should be a tuple of Config scopes + the needed Identifiers. The
# values should be another dictionary whose keys are tuples representing
# config settings, the value should be the value to set for that.
# Then we pass the file and the conversion function
await converter.convert(file_path, conversion_spec)
# From here, our data should be imported
You can also choose to convert all of your data and pass it as a single dict
This can be useful if you want finer control over the dataconversion or want to
preserve any data from v3 that may share the same entry and set it aside to prompt
a user
.. code-block:: python
from pathlib import Path
from discord.ext import commands
from redbot.core.utils.data_converter import DataConverter as dc
from redbot.core.config import Config
...
await dc(config_instance).dict_import(some_processed_dict)
The format of the items of the dict is the same as in the above example
-----------------------------------
Config Scopes and their Identifiers
-----------------------------------
This section is provided as a quick reference for the identifiers for default
scopes available in Config. This does not cover usage of custom scopes, though the
data converter is compatible with those as well.
Global::
:code:`(Config.GLOBAL,)`
Guild::
:code:`(Config.GUILD, guild_id)`
Channel::
:code:`(Config.CHANNEL, channel_id)`
User::
:code:`(Config.USER, user_id)`
Member::
:code:`(Config.MEMBER, guild_id, user_id)`
Role::
:code:`(Config.ROLE, role_id)`
-----------------------------
More information and Examples
-----------------------------
For a more in depth look at how all of these commands function
You may want to take a look at how core data is being imported
:code:`redbot/cogs/dataconverter/core_specs.py`

View File

@@ -7,7 +7,7 @@
Migrating Cogs to V3
====================
First, be sure to read `discord.py's migration guide <http://discordpy.readthedocs.io/en/rewrite/migrating.html>`_
First, be sure to read `discord.py's migration guide <https://discordpy.readthedocs.io/en/v1.0.1/migrating.html>`_
as that covers all of the changes to discord.py that will affect the migration process
----------------

View File

@@ -11,20 +11,15 @@ Welcome to Red - Discord Bot's documentation!
:caption: Installation Guides:
install_windows
install_mac
install_ubuntu_xenial
install_ubuntu_bionic
install_debian
install_centos
install_arch
install_raspbian
cog_dataconverter
install_linux_mac
venv_guide
autostart_systemd
.. toctree::
:maxdepth: 2
:caption: Cog Reference:
cog_customcom
cog_downloader
cog_permissions
@@ -34,20 +29,26 @@ Welcome to Red - Discord Bot's documentation!
guide_migration
guide_cog_creation
guide_data_conversion
framework_apikeys
framework_bank
framework_bot
framework_checks
framework_cogmanager
framework_commands
framework_config
framework_datamanager
framework_downloader
framework_events
framework_i18n
framework_modlog
framework_commands
framework_rpc
framework_utils
.. toctree::
:maxdepth: 2
:caption: Changelogs:
changelog_3_1_0
Indices and tables

View File

@@ -1,55 +0,0 @@
.. arch install guide
==============================
Installing Red on Arch Linux
==============================
.. warning:: For safety reasons, DO NOT install Red with a root user. Instead, make a new one.
:code:`https://wiki.archlinux.org/index.php/Users_and_groups`
-------------------------------
Installing the pre-requirements
-------------------------------
.. code-block:: none
sudo pacman -Syu python-pip git base-devel jre8-openjdk
------------------
Installing the bot
------------------
To install without audio:
:code:`pip3 install -U --process-dependency-links red-discordbot --user`
To install with audio:
:code:`pip3 install -U --process-dependency-links red-discordbot[voice] --user`
To install the development version (without audio):
:code:`pip3 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot --user`
To install the development version (with audio):
:code:`pip3 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot[voice] --user`
------------------------
Setting up your instance
------------------------
Run :code:`redbot-setup` and follow the prompts. It will ask first for where you want to
store the data (the default is :code:`~/.local/share/Red-DiscordBot`) and will then ask
for confirmation of that selection. Next, it will ask you to choose your storage backend
(the default here is JSON). It will then ask for a name for your instance. This can be
anything as long as it does not contain spaces; however, keep in mind that this is the
name you will use to run your bot, and so it should be something you can remember.
-----------
Running Red
-----------
Run :code:`redbot <your instance name>` and run through the initial setup. This will ask for
your token and a prefix.

View File

@@ -1,55 +0,0 @@
.. centos install guide
==========================
Installing Red on CentOS 7
==========================
.. warning:: For safety reasons, DO NOT install Red with a root user. Instead, `make a new one <https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Step_by_Step_Guide/s1-starting-create-account.html>`_.
---------------------------
Installing pre-requirements
---------------------------
.. code-block:: none
yum -y groupinstall development
yum -y install https://centos7.iuscommunity.org/ius-release.rpm
yum -y install yum-utils wget which python36u python36u-pip python36u-devel openssl-devel libffi-devel git java-1.8.0-openjdk
--------------
Installing Red
--------------
Without audio:
:code:`pip3 install -U --process-dependency-links red-discordbot --user`
With audio:
:code:`pip3 install -U --process-dependency-links red-discordbot[voice] --user`
To install the development version (without audio):
:code:`pip3 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot --user`
To install the development version (with audio):
:code:`pip3 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot[voice] --user`
----------------------
Setting up an instance
----------------------
Run :code:`redbot-setup` and follow the prompts. It will ask first for where you want to
store the data (the default is :code:`~/.local/share/Red-DiscordBot`) and will then ask
for confirmation of that selection. Next, it will ask you to choose your storage backend
(the default here is JSON). It will then ask for a name for your instance. This can be
anything as long as it does not contain spaces; however, keep in mind that this is the
name you will use to run your bot, and so it should be something you can remember.
-----------
Running Red
-----------
Run :code:`redbot <your instance name>` and run through the initial setup. This will ask for
your token and a prefix.

View File

@@ -1,70 +0,0 @@
.. debian install guide
================================
Installing Red on Debian Stretch
================================
.. warning:: For safety reasons, DO NOT install Red with a root user. Instead, `make a new one <https://manpages.debian.org/stretch/adduser/adduser.8.en.html>`_.
---------------------------
Installing pre-requirements
---------------------------
.. code-block:: none
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev git unzip default-jre
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
After that last command, you may see a warning about 'pyenv' not being in the load path. Follow the instructions given to fix that, then close and reopen your shell
Then run the following command:
.. code-block:: none
CONFIGURE_OPTS=--enable-optimizations pyenv install 3.6.5 -v
This may take a long time to complete.
After that is finished, run:
.. code-block:: none
pyenv global 3.6.5
------------------
Installing the bot
------------------
To install without audio:
:code:`pip3 install -U --process-dependency-links red-discordbot`
To install with audio:
:code:`pip3 install -U --process-dependency-links red-discordbot[voice]`
To install the development version (without audio):
:code:`pip3 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot`
To install the development version (with audio):
:code:`pip3 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot[voice]`
------------------------
Setting up your instance
------------------------
Run :code:`redbot-setup` and follow the prompts. It will ask first for where you want to
store the data (the default is :code:`~/.local/share/Red-DiscordBot`) and will then ask
for confirmation of that selection. Next, it will ask you to choose your storage backend
(the default here is JSON). It will then ask for a name for your instance. This can be
anything as long as it does not contain spaces; however, keep in mind that this is the
name you will use to run your bot, and so it should be something you can remember.
-----------
Running Red
-----------
Run :code:`redbot <your instance name>` and run through the initial setup. This will ask for
your token and a prefix.

250
docs/install_linux_mac.rst Normal file
View File

@@ -0,0 +1,250 @@
.. _linux-mac-install-guide:
==============================
Installing Red on Linux or Mac
==============================
.. warning::
For safety reasons, DO NOT install Red with a root user. If you are unsure how to create
a new user, see the man page for the ``useradd`` command.
-------------------------------
Installing the pre-requirements
-------------------------------
Please install the pre-requirements using the commands listed for your operating system.
The pre-requirements are:
- Python 3.7.0 or greater
- pip 9.0 or greater
- git
- Java Runtime Environment 8 or later (for audio support)
.. _install-arch:
~~~~~~~~~~
Arch Linux
~~~~~~~~~~
.. code-block:: none
sudo pacman -Syu python-pip git base-devel jre8-openjdk
.. _install-centos:
.. _install-fedora:
.. _install-rhel:
~~~~~~~~~~~~~~~~~~~~~~~~~~
CentOS 7, Fedora, and RHEL
~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: none
yum -y groupinstall development
yum -y install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
openssl-devel xz xz-devel libffi-devel git2u java-1.8.0-openjdk
Complete the rest of the installation by `installing Python 3.7 with pyenv <install-python-pyenv>`.
.. _install-debian:
.. _install-raspbian:
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Debian and Raspbian Stretch
~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. warning::
Audio will not work on Raspberry Pi's **below** 2B. This is a CPU problem and
*cannot* be fixed.
We recommend installing pyenv as a method of installing non-native versions of python on
Debian/Raspbian Stretch. This guide will tell you how. First, run the following commands:
.. code-block:: none
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git unzip default-jre
Complete the rest of the installation by `installing Python 3.7 with pyenv <install-python-pyenv>`.
.. _install-mac:
~~~
Mac
~~~
Install Brew: in Finder or Spotlight, search for and open *Terminal*. In the terminal, paste the
following, then press Enter:
.. code-block:: none
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
After the installation, install the required packages by pasting the commands and pressing enter,
one-by-one:
.. code-block:: none
brew install python --with-brewed-openssl
brew install git
brew tap caskroom/versions
brew cask install homebrew/cask-versions/adoptopenjdk8
It's possible you will have network issues. If so, go in your Applications folder, inside it, go in the Python 3.7 folder then double click ``Install certificates.command``
.. _install-ubuntu:
.. _install-ubuntu-bionic:
.. _install-ubuntu-cosmic:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ubuntu 18.04 Bionic Beaver and 18.10 Cosmic Cuttlefish
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: none
sudo apt install python3.7 python3.7-dev python3.7-venv python3-pip build-essential \
libssl-dev libffi-dev git unzip default-jre -y
.. _install-ubuntu-xenial:
~~~~~~~~~~~~~~~~~~~~~~~~~
Ubuntu 16.04 Xenial Xerus
~~~~~~~~~~~~~~~~~~~~~~~~~
We recommend adding the ``deadsnakes`` apt repository to install Python 3.7 or greater:
.. code-block:: none
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
Now, install python, pip, git and java with the following commands:
.. code-block:: none
sudo apt install python3.7 python3.7-dev build-essential libssl-dev libffi-dev git \
unzip default-jre curl -y
curl https://bootstrap.pypa.io/get-pip.py | sudo python3.7
.. _install-python-pyenv:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Installing Python with pyenv
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On distributions where Python 3.7 needs to be compiled from source, we recommend the use of pyenv.
This simplifies the compilation process and has the added bonus of simplifying setting up Red in a
virtual environment.
.. code-block:: none
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
After this command, you may see a warning about 'pyenv' not being in the load path. Follow the
instructions given to fix that, then close and reopen your shell.
Then run the following command:
.. code-block:: none
CONFIGURE_OPTS=--enable-optimizations pyenv install 3.7.2 -v
This may take a long time to complete, depending on your hardware. For some machines (such as
Raspberry Pis and micro-tier VPSes), it may take over an hour; in this case, you may wish to remove
the ``CONFIGURE_OPTS=--enable-optimizations`` part from the front of the command, which will
drastically reduce the install time. However, be aware that this will make Python run about 10%
slower.
After that is finished, run:
.. code-block:: none
pyenv global 3.7.2
Pyenv is now installed and your system should be configured to run Python 3.7.
------------------------------
Creating a Virtual Environment
------------------------------
We **strongly** recommend installing Red into a virtual environment. See the section
`installing-in-virtual-environment`.
.. _installing-red-linux-mac:
--------------
Installing Red
--------------
Choose one of the following commands to install Red.
.. note::
If you're not inside an activated virtual environment, include the ``--user`` flag with all
``python3.7 -m pip`` commands.
To install without audio support:
.. code-block:: none
python3.7 -m pip install -U Red-DiscordBot
Or, to install with audio support:
.. code-block:: none
python3.7 -m pip install -U Red-DiscordBot[voice]
Or, install with audio and MongoDB support:
.. code-block:: none
python3.7 -m pip install -U Red-DiscordBot[voice,mongo]
.. note::
To install the development version, replace ``Red-DiscordBot`` in the above commands with the
following link:
.. code-block:: none
git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=Red-DiscordBot
--------------------------
Setting Up and Running Red
--------------------------
After installation, set up your instance with the following command:
.. code-block:: none
redbot-setup
This will set the location where data will be stored, as well as your
storage backend and the name of the instance (which will be used for
running the bot).
Once done setting up the instance, run the following command to run Red:
.. code-block:: none
redbot <your instance name>
It will walk through the initial setup, asking for your token and a prefix.
You can find out how to obtain a token with
`this guide <https://discordpy.readthedocs.io/en/v1.0.1/discord.html#creating-a-bot-account>`_,
section "Creating a Bot Account".
You may also run Red via the launcher, which allows you to restart the bot
from discord, and enable auto-restart. You may also update the bot from the
launcher menu. Use the following command to run the launcher:
.. code-block:: none
redbot-launcher

View File

@@ -1,53 +0,0 @@
.. mac install guide
=====================
Installing Red on Mac
=====================
---------------------------
Installing pre-requirements
---------------------------
* Install Brew
* In Finder or Spotlight, search for and open terminal. In the window that will open, paste this:
:code:`/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`
and press enter.
* After the installation, install the required packages by pasting the commands and pressing enter, one-by-one:
* :code:`brew install python3 --with-brewed-openssl`
* :code:`brew install git`
* :code:`brew tap caskroom/versions`
* :code:`brew cask install java8`
--------------
Installing Red
--------------
Without audio:
:code:`pip3 install -U --process-dependency-links red-discordbot`
With audio:
:code:`pip3 install -U --process-dependency-links red-discordbot[voice]`
To install the development version (without audio):
:code:`pip3 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot`
To install the development version (with audio):
:code:`pip3 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot[voice]`
----------------------
Setting up an instance
----------------------
To set up an instance, run :code:`redbot-setup` and follow the steps there, providing the requested information
or accepting the defaults. Keep in mind that the instance name will be the one you use when running the bot, so
make it something you can remember
-----------
Running Red
-----------
Run :code:`redbot <your instance name>` and go through the initial setup (it will ask for the token and a prefix).

View File

@@ -1,72 +0,0 @@
.. raspbian install guide
==================================
Installing Red on Raspbian Stretch
==================================
.. warning:: For safety reasons, DO NOT install Red with a root user. Instead, `make a new one <https://www.raspberrypi.org/documentation/linux/usage/users.md>`_.
---------------------------
Installing pre-requirements
---------------------------
.. code-block:: none
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev git unzip default-jre
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
After that last command, you may see a warning about 'pyenv' not being in the load path. Follow the instructions given to fix that, then close and reopen your shell
Then run the following command:
.. code-block:: none
CONFIGURE_OPTS=--enable-optimizations pyenv install 3.6.5 -v
This may take a long time to complete.
After that is finished, run:
.. code-block:: none
pyenv global 3.6.5
--------------
Installing Red
--------------
Without audio:
:code:`pip3 install -U --process-dependency-links red-discordbot --user`
With audio:
:code:`pip3 install -U --process-dependency-links red-discordbot[voice] --user`
To install the development version (without audio):
:code:`pip3 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot --user`
To install the development version (with audio):
:code:`pip3 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot[voice] --user`
----------------------
Setting up an instance
----------------------
Run :code:`redbot-setup` and follow the prompts. It will ask first for where you want to
store the data (the default is :code:`~/.local/share/Red-DiscordBot`) and will then ask
for confirmation of that selection. Next, it will ask you to choose your storage backend
(the default here is JSON). It will then ask for a name for your instance. This can be
anything as long as it does not contain spaces; however, keep in mind that this is the
name you will use to run your bot, and so it should be something you can remember.
-----------
Running Red
-----------
Run :code:`redbot <your instance name>` and run through the initial setup. This will ask for
your token and a prefix.
.. warning:: Audio will not work on Raspberry Pi's **below** 2B. This is a CPU problem and *cannot* be fixed.

View File

@@ -1,54 +0,0 @@
.. ubuntu bionic install guide
==============================
Installing Red on Ubuntu 18.04
==============================
.. warning:: For safety reasons, DO NOT install Red with a root user. Instead, `make a new one <http://manpages.ubuntu.com/manpages/artful/man8/adduser.8.html>`_.
-------------------------------
Installing the pre-requirements
-------------------------------
.. code-block:: none
sudo apt install python3.6-dev python3-pip build-essential libssl-dev libffi-dev git unzip default-jre -y
------------------
Installing the bot
------------------
To install without audio:
:code:`pip3 install -U --process-dependency-links red-discordbot --user`
To install with audio:
:code:`pip3 install -U --process-dependency-links red-discordbot[voice] --user`
To install the development version (without audio):
:code:`pip3 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot --user`
To install the development version (with audio):
:code:`pip3 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot[voice] --user`
------------------------
Setting up your instance
------------------------
Run :code:`redbot-setup` and follow the prompts. It will ask first for where you want to
store the data (the default is :code:`~/.local/share/Red-DiscordBot`) and will then ask
for confirmation of that selection. Next, it will ask you to choose your storage backend
(the default here is JSON). It will then ask for a name for your instance. This can be
anything as long as it does not contain spaces; however, keep in mind that this is the
name you will use to run your bot, and so it should be something you can remember.
-----------
Running Red
-----------
Run :code:`redbot <your instance name>` and run through the initial setup. This will ask for
your token and a prefix.

View File

@@ -1,59 +0,0 @@
.. ubuntu xenial install guide
==============================
Installing Red on Ubuntu 16.04
==============================
.. warning:: For safety reasons, DO NOT install Red with a root user. Instead, `make a new one <http://manpages.ubuntu.com/manpages/artful/man8/adduser.8.html>`_.
-------------------------------
Installing the pre-requirements
-------------------------------
.. code-block:: none
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.6-dev build-essential libssl-dev libffi-dev git unzip default-jre wget -y
wget https://bootstrap.pypa.io/get-pip.py
sudo python3.6 get-pip.py
------------------
Installing the bot
------------------
To install without audio:
:code:`pip3.6 install -U --process-dependency-links red-discordbot --user`
To install with audio:
:code:`pip3.6 install -U --process-dependency-links red-discordbot[voice] --user`
To install the development version (without audio):
:code:`pip3.6 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot --user`
To install the development version (with audio):
:code:`pip3.6 install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot[voice] --user`
------------------------
Setting up your instance
------------------------
Run :code:`redbot-setup` and follow the prompts. It will ask first for where you want to
store the data (the default is :code:`~/.local/share/Red-DiscordBot`) and will then ask
for confirmation of that selection. Next, it will ask you to choose your storage backend
(the default here is JSON). It will then ask for a name for your instance. This can be
anything as long as it does not contain spaces; however, keep in mind that this is the
name you will use to run your bot, and so it should be something you can remember.
-----------
Running Red
-----------
Run :code:`redbot <your instance name>` and run through the initial setup. This will ask for
your token and a prefix.

View File

@@ -1,4 +1,4 @@
.. windows installation docs
.. _windows-install-guide:
=========================
Installing Red on Windows
@@ -8,7 +8,33 @@ Installing Red on Windows
Needed Software
---------------
* `Python <https://python.org/downloads/>`_ - Red needs Python 3.6
The following software dependencies can all be installed quickly and easily through powershell,
using a trusted package manager for windows called `Chocolatey <https://chocolatey.org>`_
We also provide instructions for manually installing all of the dependencies.
******************************************
Installing using powershell and chocolatey
******************************************
To install via powershell, search "powershell" in the windows start menu,
right-click on it and then click "Run as administrator"
Then run each of the following commands:
.. code-block:: none
Set-ExecutionPolicy Bypass -Scope Process -Force
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco install git --params "/GitOnlyOnPath /WindowsTerminal" -y
choco install jre8 python -y; exit
********************************
Manually installing dependencies
********************************
* `Python <https://www.python.org/downloads/>`_ - Red needs Python 3.7.0 or greater
.. note:: Please make sure that the box to add Python to PATH is CHECKED, otherwise
you may run into issues when trying to run Red
@@ -21,23 +47,77 @@ Needed Software
.. attention:: Please choose the "Windows Online" installer
.. _installing-red-windows:
--------------
Installing Red
--------------
1. Open a command prompt (open Start, search for "command prompt", then click it)
2. Run the appropriate command, depending on if you want audio or not
2. Create and activate a virtual environment (strongly recommended), see the section `using-venv`
3. Run **one** of the following commands, depending on what extras you want installed
* No audio: :code:`python -m pip install -U --process-dependency-links Red-DiscordBot`
* Audio: :code:`python -m pip install -U --process-dependency-links Red-DiscordBot[voice]`
* Development version (without audio): :code:`python -m pip install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot`
* Development version (with audio): :code:`python -m pip install -U --process-dependency-links git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=red-discordbot[voice]`
.. note::
3. Once that has completed, run :code:`redbot-setup` to set up your instance
If you're not inside an activated virtual environment, include the ``--user`` flag with all
``pip`` commands.
* This will set the location where data will be stored, as well as your
storage backend and the name of the instance (which will be used for
running the bot)
* No audio:
4. Once done setting up the instance, run :code:`redbot <your instance name>` to run Red.
It will walk through the initial setup, asking for your token and a prefix
.. code-block:: none
python -m pip install -U Red-DiscordBot
* With audio:
.. code-block:: none
python -m pip install -U Red-DiscordBot[voice]
* With audio and MongoDB support:
.. code-block:: none
python -m pip install -U Red-DiscordBot[voice,mongo]
.. note::
To install the development version, replace ``Red-DiscordBot`` in the above commands with the
following link:
.. code-block:: none
git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=Red-DiscordBot
--------------------------
Setting Up and Running Red
--------------------------
After installation, set up your instance with the following command:
.. code-block:: none
redbot-setup
This will set the location where data will be stored, as well as your
storage backend and the name of the instance (which will be used for
running the bot).
Once done setting up the instance, run the following command to run Red:
.. code-block:: none
redbot <your instance name>
It will walk through the initial setup, asking for your token and a prefix.
You can find out how to obtain a token with
`this guide <https://discordpy.readthedocs.io/en/v1.0.1/discord.html#creating-a-bot-account>`_,
section "Creating a Bot Account".
You may also run Red via the launcher, which allows you to restart the bot
from discord, and enable auto-restart. You may also update the bot from the
launcher menu. Use the following command to run the launcher:
.. code-block:: none
redbot-launcher

View File

@@ -1,37 +1,2 @@
-i https://pypi.org/simple
alabaster==0.7.10
appdirs==1.4.3
atomicwrites==1.1.5
attrs==18.1.0
babel==2.6.0
black==18.6b2
certifi==2018.4.16
chardet==3.0.4
click==6.7
docutils==0.14
idna==2.6
imagesize==1.0.0
jinja2==2.10
markupsafe==1.0
more-itertools==4.2.0
packaging==17.1
pluggy==0.6.0
py==1.5.3
pygments==2.2.0
pyparsing==2.2.0
pytest-asyncio==0.8.0
pytest==3.6.1
pytz==2018.4
requests==2.18.4
six==1.11.0
snowballstemmer==1.2.1
sphinx-rtd-theme==0.4.0
sphinx==1.7.5
sphinxcontrib-asyncio==0.2.0
sphinxcontrib-websupport==1.1.0
toml==0.9.4
tox==3.0.0
urllib3==1.22
virtualenv==16.0.0
yarl==0.18.0
git+https://github.com/Rapptz/discord.py@7eb918b19e3e60b56eb9039eb267f8f3477c5e17#egg=discord.py-1.0
# We still need this because RTD is special
setuptools==40.8.0

132
docs/venv_guide.rst Normal file
View File

@@ -0,0 +1,132 @@
.. _installing-in-virtual-environment:
=======================================
Installing Red in a Virtual Environment
=======================================
Virtual environments allow you to isolate red's library dependencies, cog dependencies and python
binaries from the rest of your system. It is strongly recommended you use this if you use python
for more than just Red.
.. _using-venv:
--------------
Using ``venv``
--------------
This is the quickest way to get your virtual environment up and running, as `venv` is shipped with
python.
First, choose a directory where you would like to create your virtual environment. It's a good idea
to keep it in a location which is easy to type out the path to. From now, we'll call it
``path/to/venv/`` (or ``path\to\venv\`` on Windows).
~~~~~~~~~~~~~~~~~~~~~~~~
``venv`` on Linux or Mac
~~~~~~~~~~~~~~~~~~~~~~~~
Create your virtual environment with the following command::
python3.7 -m venv path/to/venv/
And activate it with the following command::
source path/to/venv/bin/activate
.. important::
You must activate the virtual environment with the above command every time you open a new
shell to run, install or update Red.
Continue reading `below <after-activating-virtual-environment>`.
~~~~~~~~~~~~~~~~~~~
``venv`` on Windows
~~~~~~~~~~~~~~~~~~~
Create your virtual environment with the following command::
python -m venv path\to\venv\
And activate it with the following command::
path\to\venv\Scripts\activate.bat
.. important::
You must activate the virtual environment with the above command every time you open a new
Command Prompt to run, install or update Red.
Continue reading `below <after-activating-virtual-environment>`.
.. _using-pyenv-virtualenv:
--------------------------
Using ``pyenv virtualenv``
--------------------------
.. note::
This is for non-Windows users only.
Using ``pyenv virtualenv`` saves you the headache of remembering where you installed your virtual
environments. If you haven't already, install pyenv with `pyenv-installer`_.
First, ensure your pyenv interpreter is set to python 3.7.0 or greater with the following command::
pyenv version
Now, create a virtual environment with the following command::
pyenv virtualenv <name>
Replace ``<name>`` with whatever you like. If you forget what you named it, use the command ``pyenv
versions``.
Now activate your virtualenv with the following command::
pyenv shell <name>
.. important::
You must activate the virtual environment with the above command every time you open a new
shell to run, install or update Red.
Continue reading `below <after-activating-virtual-environment>`.
.. _pyenv-installer: https://github.com/pyenv/pyenv-installer/blob/master/README.rst
----
.. _after-activating-virtual-environment:
Once activated, your ``PATH`` environment variable will be modified to use the virtual
environment's python executables, as well as other executables like ``pip``.
From here, install Red using the commands listed on your installation guide (`Windows
<installing-red-windows>` or `Non-Windows <installing-red-linux-mac>`).
.. note::
The alternative to activating the virtual environment each time you open a new shell is to
provide the full path to the executable. This will automatically use the virtual environment's
python interpreter and installed libraries.
--------------------------------------------
Virtual Environments with Multiple Instances
--------------------------------------------
If you are running multiple instances of Red on the same machine, you have the option of either
using the same virtual environment for all of them, or creating separate ones.
.. note::
This only applies for multiple instances of V3. If you are running a V2 instance as well,
You **must** use separate virtual environments.
The advantages of using a *single* virtual environment for all of your V3 instances are:
- When updating Red, you will only need to update it once for all instances (however you will still need to restart all instances for the changes to take effect)
- It will save space on your hard drive
On the other hand, you may wish to update each of your instances individually.
.. important::
Windows users with multiple instances should create *separate* virtual environments, as
updating multiple running instances at once is likely to cause errors.

View File

@@ -1,37 +0,0 @@
#!/usr/bin/env python3
import subprocess
import os
import sys
def main():
interpreter = sys.executable
print(interpreter)
root_dir = os.getcwd()
cogs = [i for i in os.listdir("redbot/cogs") if os.path.isdir(os.path.join("redbot/cogs", i))]
for d in cogs:
if "locales" in os.listdir(os.path.join("redbot/cogs", d)):
os.chdir(os.path.join("redbot/cogs", d, "locales"))
if "regen_messages.py" not in os.listdir(os.getcwd()):
print(
f"Directory 'locales' exists for {d} but no 'regen_messages.py' is available!"
)
return 1
else:
print("Running 'regen_messages.py' for {}".format(d))
retval = subprocess.run([interpreter, "regen_messages.py"])
if retval.returncode != 0:
return 1
os.chdir(root_dir)
os.chdir("redbot/core/locales")
print("Running 'regen_messages.py' for core")
retval = subprocess.run([interpreter, "regen_messages.py"])
if retval.returncode != 0:
return 1
os.chdir(root_dir)
subprocess.run(["crowdin", "upload"])
return 0
if __name__ == "__main__":
sys.exit(main())

View File

@@ -1,6 +1,6 @@
@echo off
if "%1"=="" goto help
if [%1] == [] goto help
REM This allows us to expand variables at execution
setlocal ENABLEDELAYEDEXPANSION

View File

@@ -1,14 +1,181 @@
import sys
import discord
from colorama import init, Back
import re as _re
import sys as _sys
import warnings as _warnings
from math import inf as _inf
from typing import (
Any as _Any,
ClassVar as _ClassVar,
Dict as _Dict,
List as _List,
Optional as _Optional,
Pattern as _Pattern,
Tuple as _Tuple,
Union as _Union,
)
init()
# Let's do all the dumb version checking in one place.
if discord.version_info.major < 1:
MIN_PYTHON_VERSION = (3, 7, 0)
__all__ = ["MIN_PYTHON_VERSION", "__version__", "version_info", "VersionInfo"]
if _sys.version_info < MIN_PYTHON_VERSION:
print(
"You are not running the rewritten version of discord.py.\n\n"
"In order to use Red v3 you MUST be running d.py version"
" >= 1.0.0."
f"Python {'.'.join(map(str, MIN_PYTHON_VERSION))} is required to run Red, but you have "
f"{_sys.version}! Please update Python."
)
sys.exit(1)
_sys.exit(1)
class VersionInfo:
ALPHA = "alpha"
BETA = "beta"
RELEASE_CANDIDATE = "release candidate"
FINAL = "final"
_VERSION_STR_PATTERN: _ClassVar[_Pattern[str]] = _re.compile(
r"^"
r"(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<micro>0|[1-9]\d*)"
r"(?:(?P<releaselevel>a|b|rc)(?P<serial>0|[1-9]\d*))?"
r"(?:\.post(?P<post_release>0|[1-9]\d*))?"
r"(?:\.dev(?P<dev_release>0|[1-9]\d*))?"
r"$",
flags=_re.IGNORECASE,
)
_RELEASE_LEVELS: _ClassVar[_List[str]] = [ALPHA, BETA, RELEASE_CANDIDATE, FINAL]
_SHORT_RELEASE_LEVELS: _ClassVar[_Dict[str, str]] = {
"a": ALPHA,
"b": BETA,
"rc": RELEASE_CANDIDATE,
}
def __init__(
self,
major: int,
minor: int,
micro: int,
releaselevel: str,
serial: _Optional[int] = None,
post_release: _Optional[int] = None,
dev_release: _Optional[int] = None,
) -> None:
self.major: int = major
self.minor: int = minor
self.micro: int = micro
if releaselevel not in self._RELEASE_LEVELS:
raise TypeError(f"'releaselevel' must be one of: {', '.join(self._RELEASE_LEVELS)}")
self.releaselevel: str = releaselevel
self.serial: _Optional[int] = serial
self.post_release: _Optional[int] = post_release
self.dev_release: _Optional[int] = dev_release
@classmethod
def from_str(cls, version_str: str) -> "VersionInfo":
"""Parse a string into a VersionInfo object.
Raises
------
ValueError
If the version info string is invalid.
"""
match = cls._VERSION_STR_PATTERN.match(version_str)
if not match:
raise ValueError(f"Invalid version string: {version_str}")
kwargs: _Dict[str, _Union[str, int]] = {}
for key in ("major", "minor", "micro"):
kwargs[key] = int(match[key])
releaselevel = match["releaselevel"]
if releaselevel is not None:
kwargs["releaselevel"] = cls._SHORT_RELEASE_LEVELS[releaselevel]
else:
kwargs["releaselevel"] = cls.FINAL
for key in ("serial", "post_release", "dev_release"):
if match[key] is not None:
kwargs[key] = int(match[key])
return cls(**kwargs)
@classmethod
def from_json(
cls, data: _Union[_Dict[str, _Union[int, str]], _List[_Union[int, str]]]
) -> "VersionInfo":
if isinstance(data, _List):
# For old versions, data was stored as a list:
# [MAJOR, MINOR, MICRO, RELEASELEVEL, SERIAL]
return cls(*data)
else:
return cls(**data)
def to_json(self) -> _Dict[str, _Union[int, str]]:
return {
"major": self.major,
"minor": self.minor,
"micro": self.micro,
"releaselevel": self.releaselevel,
"serial": self.serial,
"post_release": self.post_release,
"dev_release": self.dev_release,
}
def _generate_comparison_tuples(
self, other: "VersionInfo"
) -> _List[
_Tuple[int, int, int, int, _Union[int, float], _Union[int, float], _Union[int, float]]
]:
tups: _List[
_Tuple[int, int, int, int, _Union[int, float], _Union[int, float], _Union[int, float]]
] = []
for obj in (self, other):
tups.append(
(
obj.major,
obj.minor,
obj.micro,
obj._RELEASE_LEVELS.index(obj.releaselevel),
obj.serial if obj.serial is not None else _inf,
obj.post_release if obj.post_release is not None else -_inf,
obj.dev_release if obj.dev_release is not None else _inf,
)
)
return tups
def __lt__(self, other: "VersionInfo") -> bool:
tups = self._generate_comparison_tuples(other)
return tups[0] < tups[1]
def __eq__(self, other: "VersionInfo") -> bool:
tups = self._generate_comparison_tuples(other)
return tups[0] == tups[1]
def __le__(self, other: "VersionInfo") -> bool:
tups = self._generate_comparison_tuples(other)
return tups[0] <= tups[1]
def __str__(self) -> str:
ret = f"{self.major}.{self.minor}.{self.micro}"
if self.releaselevel != self.FINAL:
short = next(
k for k, v in self._SHORT_RELEASE_LEVELS.items() if v == self.releaselevel
)
ret += f"{short}{self.serial}"
if self.post_release is not None:
ret += f".post{self.post_release}"
if self.dev_release is not None:
ret += f".dev{self.dev_release}"
return ret
def __repr__(self) -> str:
return (
"VersionInfo(major={major}, minor={minor}, micro={micro}, "
"releaselevel={releaselevel}, serial={serial}, post={post_release}, "
"dev={dev_release})".format(**self.to_json())
)
__version__ = "3.1.0"
version_info = VersionInfo.from_str(__version__)
# Filter fuzzywuzzy slow sequence matcher warning
_warnings.filterwarnings("ignore", module=r"fuzzywuzzy.*")

View File

@@ -2,23 +2,39 @@
# Discord Version check
import asyncio
import logging
import os
import sys
import discord
import redbot.logging
from redbot.core.bot import Red, ExitCodes
from redbot.core.cog_manager import CogManagerUI
from redbot.core.data_manager import create_temp_config, load_basic_configuration, config_file
from redbot.core.json_io import JsonIO
from redbot.core.global_checks import init_global_checks
from redbot.core.events import init_events
from redbot.core.cli import interactive_config, confirm, parse_cli_flags, ask_sentry
from redbot.core.cli import interactive_config, confirm, parse_cli_flags
from redbot.core.core_commands import Core
from redbot.core.dev_commands import Dev
from redbot.core import __version__
import asyncio
import logging.handlers
import logging
import os
from redbot.core import __version__, modlog, bank, data_manager
from signal import SIGTERM
# Let's not force this dependency, uvloop is much faster on cpython
if sys.implementation.name == "cpython":
try:
import uvloop
except ImportError:
uvloop = None
pass
else:
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
if sys.platform == "win32":
asyncio.set_event_loop(asyncio.ProactorEventLoop())
log = logging.getLogger("red.main")
#
# Red - Discord Bot v3
@@ -27,50 +43,6 @@ import os
#
def init_loggers(cli_flags):
# d.py stuff
dpy_logger = logging.getLogger("discord")
dpy_logger.setLevel(logging.WARNING)
console = logging.StreamHandler()
console.setLevel(logging.WARNING)
dpy_logger.addHandler(console)
# Red stuff
logger = logging.getLogger("red")
red_format = logging.Formatter(
"%(asctime)s %(levelname)s %(module)s %(funcName)s %(lineno)d: %(message)s",
datefmt="[%d/%m/%Y %H:%M]",
)
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_handler.setFormatter(red_format)
if cli_flags.debug:
os.environ["PYTHONASYNCIODEBUG"] = "1"
logger.setLevel(logging.DEBUG)
else:
logger.setLevel(logging.WARNING)
from redbot.core.data_manager import core_data_path
logfile_path = core_data_path() / "red.log"
fhandler = logging.handlers.RotatingFileHandler(
filename=str(logfile_path), encoding="utf-8", mode="a", maxBytes=10 ** 7, backupCount=5
)
fhandler.setFormatter(red_format)
logger.addHandler(fhandler)
logger.addHandler(stdout_handler)
# Sentry stuff
sentry_logger = logging.getLogger("red.sentry")
sentry_logger.setLevel(logging.WARNING)
return logger, sentry_logger
async def _get_prefix_and_token(red, indict):
"""
Again, please blame <@269933075037814786> for this.
@@ -79,18 +51,17 @@ async def _get_prefix_and_token(red, indict):
"""
indict["token"] = await red.db.token()
indict["prefix"] = await red.db.prefix()
indict["enable_sentry"] = await red.db.enable_sentry()
def list_instances():
if not config_file.exists():
if not data_manager.config_file.exists():
print(
"No instances have been configured! Configure one "
"using `redbot-setup` before trying to run the bot!"
)
sys.exit(1)
else:
data = JsonIO(config_file)._load_json()
data = JsonIO(data_manager.config_file)._load_json()
text = "Configured Instances:\n\n"
for instance_name in sorted(data.keys()):
text += "{}\n".format(instance_name)
@@ -98,13 +69,19 @@ def list_instances():
sys.exit(0)
async def sigterm_handler(red, log):
log.info("SIGTERM received. Quitting...")
await red.shutdown(restart=False)
def main():
description = "Red - Version {}".format(__version__)
description = "Red V3"
cli_flags = parse_cli_flags(sys.argv[1:])
if cli_flags.list_instances:
list_instances()
elif cli_flags.version:
print(description)
print("Current Version: {}".format(__version__))
sys.exit(0)
elif not cli_flags.instance_name and not cli_flags.no_instance:
print("Error: No instance name was provided!")
@@ -112,21 +89,37 @@ def main():
if cli_flags.no_instance:
print(
"\033[1m"
"Warning: The data will be placed in a temporary folder and removed on next system reboot."
"Warning: The data will be placed in a temporary folder and removed on next system "
"reboot."
"\033[0m"
)
cli_flags.instance_name = "temporary_red"
create_temp_config()
load_basic_configuration(cli_flags.instance_name)
log, sentry_log = init_loggers(cli_flags)
red = Red(cli_flags=cli_flags, description=description, pm_help=None)
data_manager.create_temp_config()
data_manager.load_basic_configuration(cli_flags.instance_name)
redbot.logging.init_logging(
level=cli_flags.logging_level, location=data_manager.core_data_path() / "logs"
)
log.debug("====Basic Config====")
log.debug("Data Path: %s", data_manager._base_data_path())
log.debug("Storage Type: %s", data_manager.storage_type())
red = Red(
cli_flags=cli_flags, description=description, dm_help=None, fetch_offline_members=True
)
init_global_checks(red)
init_events(red, cli_flags)
red.add_cog(Core(red))
red.add_cog(CogManagerUI())
if cli_flags.dev:
red.add_cog(Dev())
# noinspection PyProtectedMember
modlog._init()
# noinspection PyProtectedMember
bank._init()
loop = asyncio.get_event_loop()
if os.name == "posix":
loop.add_signal_handler(SIGTERM, lambda: asyncio.ensure_future(sigterm_handler(red, log)))
tmp_data = {}
loop.run_until_complete(_get_prefix_and_token(red, tmp_data))
token = os.environ.get("RED_TOKEN", tmp_data["token"])
@@ -146,17 +139,10 @@ def main():
if cli_flags.dry_run:
loop.run_until_complete(red.http.close())
sys.exit(0)
if tmp_data["enable_sentry"]:
red.enable_sentry()
try:
loop.run_until_complete(red.start(token, bot=not cli_flags.not_bot))
loop.run_until_complete(red.start(token, bot=True))
except discord.LoginFailure:
log.critical(
"This token doesn't seem to be valid. If it belongs to "
"a user account, remember that the --not-bot flag "
"must be used. For self-bot functionalities instead, "
"--self-bot"
)
log.critical("This token doesn't seem to be valid.")
db_token = loop.run_until_complete(red.db.token())
if db_token and not cli_flags.no_prompt:
print("\nDo you want to reset the token? (y/n)")
@@ -169,14 +155,13 @@ def main():
red._shutdown_mode = ExitCodes.SHUTDOWN
except Exception as e:
log.critical("Fatal exception", exc_info=e)
sentry_log.critical("Fatal Exception", exc_info=e)
loop.run_until_complete(red.logout())
finally:
pending = asyncio.Task.all_tasks(loop=red.loop)
gathered = asyncio.gather(*pending, loop=red.loop, return_exceptions=True)
gathered.cancel()
try:
red.rpc.server.close()
loop.run_until_complete(red.rpc.close())
except AttributeError:
pass

View File

@@ -1,45 +1,59 @@
import logging
from typing import Tuple
import discord
from redbot.core import Config, checks, commands
import logging
from redbot.core.i18n import Translator, cog_i18n
from redbot.core.utils.chat_formatting import box
from .announcer import Announcer
from .converters import MemberDefaultAuthor, SelfRole
log = logging.getLogger("red.admin")
GENERIC_FORBIDDEN = (
T_ = Translator("Admin", __file__)
_ = lambda s: s
GENERIC_FORBIDDEN = _(
"I attempted to do something that Discord denied me permissions for."
" Your command failed to successfully complete."
)
HIERARCHY_ISSUE = (
"I tried to add {role.name} to {member.display_name} but that role"
HIERARCHY_ISSUE = _(
"I tried to {verb} {role.name} to {member.display_name} but that role"
" is higher than my highest role in the Discord hierarchy so I was"
" unable to successfully add it. Please give me a higher role and "
"try again."
)
USER_HIERARCHY_ISSUE = (
"I tried to add {role.name} to {member.display_name} but that role"
USER_HIERARCHY_ISSUE = _(
"I tried to {verb} {role.name} to {member.display_name} but that role"
" is higher than your highest role in the Discord hierarchy so I was"
" unable to successfully add it. Please get a higher role and "
"try again."
)
RUNNING_ANNOUNCEMENT = (
ROLE_USER_HIERARCHY_ISSUE = _(
"I tried to edit {role.name} but that role"
" is higher than your highest role in the Discord hierarchy so I was"
" unable to successfully add it. Please get a higher role and "
"try again."
)
RUNNING_ANNOUNCEMENT = _(
"I am already announcing something. If you would like to make a"
" different announcement please use `{prefix}announce cancel`"
" first."
)
_ = T_
class Admin:
@cog_i18n(_)
class Admin(commands.Cog):
"""A collection of server administration utilities."""
def __init__(self, config=Config):
super().__init__()
self.conf = config.get_conf(self, 8237492837454039, force_registration=True)
self.conf.register_global(serverlocked=False)
@@ -52,7 +66,7 @@ class Admin:
self.__current_announcer = None
def __unload(self):
def cog_unload(self):
try:
self.__current_announcer.cancel()
except AttributeError:
@@ -97,13 +111,16 @@ class Admin:
await member.add_roles(role)
except discord.Forbidden:
if not self.pass_hierarchy_check(ctx, role):
await self.complain(ctx, HIERARCHY_ISSUE, role=role, member=member)
await self.complain(
ctx, T_(HIERARCHY_ISSUE), role=role, member=member, verb=_("add")
)
else:
await self.complain(ctx, GENERIC_FORBIDDEN)
await self.complain(ctx, T_(GENERIC_FORBIDDEN))
else:
await ctx.send(
"I successfully added {role.name} to"
" {member.display_name}".format(role=role, member=member)
_("I successfully added {role.name} to {member.display_name}").format(
role=role, member=member
)
)
async def _removerole(self, ctx: commands.Context, member: discord.Member, role: discord.Role):
@@ -111,13 +128,16 @@ class Admin:
await member.remove_roles(role)
except discord.Forbidden:
if not self.pass_hierarchy_check(ctx, role):
await self.complain(ctx, HIERARCHY_ISSUE, role=role, member=member)
await self.complain(
ctx, T_(HIERARCHY_ISSUE), role=role, member=member, verb=_("remove")
)
else:
await self.complain(ctx, GENERIC_FORBIDDEN)
await self.complain(ctx, T_(GENERIC_FORBIDDEN))
else:
await ctx.send(
"I successfully removed {role.name} from"
" {member.display_name}".format(role=role, member=member)
_("I successfully removed {role.name} from {member.display_name}").format(
role=role, member=member
)
)
@commands.command()
@@ -126,8 +146,8 @@ class Admin:
async def addrole(
self, ctx: commands.Context, rolename: discord.Role, *, user: MemberDefaultAuthor = None
):
"""
Adds a role to a user.
"""Add a role to a user.
If user is left blank it defaults to the author of the command.
"""
if user is None:
@@ -136,7 +156,9 @@ class Admin:
# noinspection PyTypeChecker
await self._addrole(ctx, user, rolename)
else:
await self.complain(ctx, USER_HIERARCHY_ISSUE, member=ctx.author)
await self.complain(
ctx, T_(USER_HIERARCHY_ISSUE), member=user, role=rolename, verb=_("add")
)
@commands.command()
@commands.guild_only()
@@ -144,8 +166,8 @@ class Admin:
async def removerole(
self, ctx: commands.Context, rolename: discord.Role, *, user: MemberDefaultAuthor = None
):
"""
Removes a role from a user.
"""Remove a role from a user.
If user is left blank it defaults to the author of the command.
"""
if user is None:
@@ -154,50 +176,56 @@ class Admin:
# noinspection PyTypeChecker
await self._removerole(ctx, user, rolename)
else:
await self.complain(ctx, USER_HIERARCHY_ISSUE)
await self.complain(
ctx, T_(USER_HIERARCHY_ISSUE), member=user, role=rolename, verb=_("remove")
)
@commands.group()
@commands.guild_only()
@checks.admin_or_permissions(manage_roles=True)
async def editrole(self, ctx: commands.Context):
"""Edits roles settings"""
"""Edit role settings."""
pass
@editrole.command(name="colour", aliases=["color"])
async def editrole_colour(
self, ctx: commands.Context, role: discord.Role, value: discord.Colour
):
"""Edits a role's colour
"""Edit a role's colour.
Use double quotes if the role contains spaces.
Colour must be in hexadecimal format.
\"http://www.w3schools.com/colors/colors_picker.asp\"
[Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)
Examples:
!editrole colour \"The Transistor\" #ff0000
!editrole colour Test #ff9900"""
`[p]editrole colour "The Transistor" #ff0000`
`[p]editrole colour Test #ff9900`
"""
author = ctx.author
reason = "{}({}) changed the colour of role '{}'".format(author.name, author.id, role.name)
if not self.pass_user_hierarchy_check(ctx, role):
await self.complain(ctx, USER_HIERARCHY_ISSUE)
await self.complain(ctx, T_(ROLE_USER_HIERARCHY_ISSUE), role=role)
return
try:
await role.edit(reason=reason, color=value)
except discord.Forbidden:
await self.complain(ctx, GENERIC_FORBIDDEN)
await self.complain(ctx, T_(GENERIC_FORBIDDEN))
else:
log.info(reason)
await ctx.send("Done.")
await ctx.send(_("Done."))
@editrole.command(name="name")
@checks.admin_or_permissions(administrator=True)
async def edit_role_name(self, ctx: commands.Context, role: discord.Role, *, name: str):
"""Edits a role's name
"""Edit a role's name.
Use double quotes if the role or the name contain spaces.
Examples:
!editrole name \"The Transistor\" Test"""
`[p]editrole name \"The Transistor\" Test`
"""
author = ctx.message.author
old_name = role.name
reason = "{}({}) changed the name of role '{}' to '{}'".format(
@@ -205,73 +233,74 @@ class Admin:
)
if not self.pass_user_hierarchy_check(ctx, role):
await self.complain(ctx, USER_HIERARCHY_ISSUE)
await self.complain(ctx, T_(ROLE_USER_HIERARCHY_ISSUE), role=role)
return
try:
await role.edit(reason=reason, name=name)
except discord.Forbidden:
await self.complain(ctx, GENERIC_FORBIDDEN)
await self.complain(ctx, T_(GENERIC_FORBIDDEN))
else:
log.info(reason)
await ctx.send("Done.")
await ctx.send(_("Done."))
@commands.group(invoke_without_command=True)
@checks.is_owner()
async def announce(self, ctx: commands.Context, *, message: str):
"""
Announces a message to all servers the bot is in.
"""
"""Announce a message to all servers the bot is in."""
if not self.is_announcing():
announcer = Announcer(ctx, message, config=self.conf)
announcer.start()
self.__current_announcer = announcer
await ctx.send("The announcement has begun.")
await ctx.send(_("The announcement has begun."))
else:
prefix = ctx.prefix
await self.complain(ctx, RUNNING_ANNOUNCEMENT, prefix=prefix)
await self.complain(ctx, T_(RUNNING_ANNOUNCEMENT), prefix=prefix)
@announce.command(name="cancel")
@checks.is_owner()
async def announce_cancel(self, ctx):
"""
Cancels a running announce.
"""
"""Cancel a running announce."""
try:
self.__current_announcer.cancel()
except AttributeError:
pass
await ctx.send("The current announcement has been cancelled.")
await ctx.send(_("The current announcement has been cancelled."))
@announce.command(name="channel")
@commands.guild_only()
@checks.guildowner_or_permissions(administrator=True)
async def announce_channel(self, ctx, *, channel: discord.TextChannel = None):
"""
Changes the channel on which the bot makes announcements.
"""
"""Change the channel to which the bot makes announcements."""
if channel is None:
channel = ctx.channel
await self.conf.guild(ctx.guild).announce_channel.set(channel.id)
await ctx.send("The announcement channel has been set to {}".format(channel.mention))
await ctx.send(
_("The announcement channel has been set to {channel.mention}").format(channel=channel)
)
@announce.command(name="ignore")
@commands.guild_only()
@checks.guildowner_or_permissions(administrator=True)
async def announce_ignore(self, ctx):
"""
Toggles whether the announcements will ignore the current server.
"""
"""Toggle announcements being enabled this server."""
ignored = await self.conf.guild(ctx.guild).announce_ignore()
await self.conf.guild(ctx.guild).announce_ignore.set(not ignored)
verb = "will" if ignored else "will not"
await ctx.send(f"The server {ctx.guild.name} {verb} receive announcements.")
if ignored: # Keeping original logic....
await ctx.send(
_("The server {guild.name} will receive announcements.").format(guild=ctx.guild)
)
else:
await ctx.send(
_("The server {guild.name} will not receive announcements.").format(
guild=ctx.guild
)
)
async def _valid_selfroles(self, guild: discord.Guild) -> Tuple[discord.Role]:
"""
@@ -294,8 +323,9 @@ class Admin:
@commands.guild_only()
@commands.group(invoke_without_command=True)
async def selfrole(self, ctx: commands.Context, *, selfrole: SelfRole):
"""
Add a role to yourself that server admins have configured as user settable.
"""Add a role to yourself.
Server admins must have configured the role as user settable.
NOTE: The role is case sensitive!
"""
@@ -304,8 +334,7 @@ class Admin:
@selfrole.command(name="remove")
async def selfrole_remove(self, ctx: commands.Context, *, selfrole: SelfRole):
"""
Removes a selfrole from yourself.
"""Remove a selfrole from yourself.
NOTE: The role is case sensitive!
"""
@@ -315,8 +344,7 @@ class Admin:
@selfrole.command(name="add")
@checks.admin_or_permissions(manage_roles=True)
async def selfrole_add(self, ctx: commands.Context, *, role: discord.Role):
"""
Add a role to the list of available selfroles.
"""Add a role to the list of available selfroles.
NOTE: The role is case sensitive!
"""
@@ -324,20 +352,19 @@ class Admin:
if role.id not in curr_selfroles:
curr_selfroles.append(role.id)
await ctx.send("The selfroles list has been successfully modified.")
await ctx.send(_("The selfroles list has been successfully modified."))
@selfrole.command(name="delete")
@checks.admin_or_permissions(manage_roles=True)
async def selfrole_delete(self, ctx: commands.Context, *, role: SelfRole):
"""
Removes a role from the list of available selfroles.
"""Remove a role from the list of available selfroles.
NOTE: The role is case sensitive!
"""
async with self.conf.guild(ctx.guild).selfroles() as curr_selfroles:
curr_selfroles.remove(role.id)
await ctx.send("The selfroles list has been successfully modified.")
await ctx.send(_("The selfroles list has been successfully modified."))
@selfrole.command(name="list")
async def selfrole_list(self, ctx: commands.Context):
@@ -347,7 +374,7 @@ class Admin:
selfroles = await self._valid_selfroles(ctx.guild)
fmt_selfroles = "\n".join(["+ " + r.name for r in selfroles])
msg = "Available Selfroles:\n{}".format(fmt_selfroles)
msg = _("Available Selfroles:\n{selfroles}").format(selfroles=fmt_selfroles)
await ctx.send(box(msg, "diff"))
async def _serverlock_check(self, guild: discord.Guild) -> bool:
@@ -364,15 +391,14 @@ class Admin:
@commands.command()
@checks.is_owner()
async def serverlock(self, ctx: commands.Context):
"""
Locks a bot to its current servers only.
"""
"""Lock a bot to its current servers only."""
serverlocked = await self.conf.serverlocked()
await self.conf.serverlocked.set(not serverlocked)
verb = "is now" if not serverlocked else "is no longer"
await ctx.send("The bot {} serverlocked.".format(verb))
if serverlocked:
await ctx.send(_("The bot is no longer serverlocked."))
else:
await ctx.send(_("The bot is now serverlocked."))
# region Event Handlers
async def on_guild_join(self, guild: discord.Guild):

View File

@@ -2,6 +2,9 @@ import asyncio
import discord
from redbot.core import commands
from redbot.core.i18n import Translator
_ = Translator("Announcer", __file__)
class Announcer:
@@ -63,7 +66,9 @@ class Announcer:
try:
await channel.send(self.message)
except discord.Forbidden:
await bot_owner.send("I could not announce to server: {}".format(g.id))
await bot_owner.send(
_("I could not announce to server: {server.id}").format(server=g)
)
await asyncio.sleep(0.5)
self.active = False

View File

@@ -1,5 +1,8 @@
import discord
from redbot.core import commands
from redbot.core.i18n import Translator
_ = Translator("AdminConverters", __file__)
class MemberDefaultAuthor(commands.Converter):
@@ -17,9 +20,9 @@ class MemberDefaultAuthor(commands.Converter):
class SelfRole(commands.Converter):
async def convert(self, ctx: commands.Context, arg: str) -> discord.Role:
admin = ctx.command.instance
admin = ctx.command.cog
if admin is None:
raise commands.BadArgument("Admin is not loaded.")
raise commands.BadArgument(_("The Admin cog is not loaded."))
conf = admin.conf
selfroles = await conf.guild(ctx.guild).selfroles()
@@ -28,5 +31,5 @@ class SelfRole(commands.Converter):
role = await role_converter.convert(ctx, arg)
if role.id not in selfroles:
raise commands.BadArgument("The provided role is not a valid selfrole.")
raise commands.BadArgument(_("The provided role is not a valid selfrole."))
return role

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:41-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:06\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Arabic\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,209 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: ar_SA\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr "حاولت القيام بشيء لا أملك تصريح من ديسكورد لفعله. فشل أمرك في إكمال نجاحه."
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr "حاولت إضافة {role.name} إلى {member.display_name} ولكن هذه الرتبة هي أعلى من رتبتي في قائمة الرتب في السيرفر, لذلك فشل الأمر. حاول رفع رتبتي والمحاولة مجدداً."
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr "لقد حاولت إضافة {role.name} إلى {member.display_name} ولكن هذه الرتبة هي أعلى من رتبتك في قائمة الرتب في السيرفر, لذلك فشل الأمر. حاول رفع رتبتي والمحاولة مجدداً."
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr "أنا بالفعل أُعلن شيئاً. إذا كنت ترغب في إصدار إعلان مختلف الرجاء إستخدام `{prefix}announce cancel` أولاً."
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr "مجموعة من أدوات إدارة السيرفر."
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr "لقد قمت بنجاح بإضافة {role.name} إلى {member.display_name}"
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr "لقد قمت بنجاح بإزالة {role.name} من {member.display_name}"
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr " إذا تم ترك المستخدم فارغ, فسيكون إفتراضياً صاحب الأمر.\n"
" "
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr " إذا تم ترك المستخدم فارغ, فسيكون إفتراضياً صاحب الأمر.\n"
" "
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr "تعديل إعدادات الرتبة."
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr " استخدم علامة اقتباس مزدوجة إذا كانت الرتبة تحتوي على مسافات.\n"
" يجب أن يكون اللون بتنسيق سداسي عشري.\n"
" موقع لإختيار الألوان (http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" أمثلة:\n"
" `[p]editrole colour \"The Transistor\" #ff0000` \n"
" `[p]editrole colour Test #ff9900`\n"
" "
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr "تم."
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr "تعديل إسم الرتبة.\n\n"
" استخدم علامة اقتباس مزدوجة إذا كانت الرتبة تحتوي على مسافات.\n\n"
" أمثلة:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr "الإعلان عن رسالة إلى جميع السيرفرات المتواجد بها البوت."
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr "تم البدء في الإعلان."
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr "إلغاء إعلان جارٍ."
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr "تم إلغاء الإعلان الحالي."
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr "تعديل القناة التي يستخدمها البوت للإعلانات."
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr "تم تحديث قناة الإعلانات إلى {channel.mention}"
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr "تم تمكين الإعلانات في السيرفر."
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr "سيرفر {guild.name} سيتلقى إعلانات الآن."
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr "سيرفر {guild.name} لن يتلقى إعلانات."
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "إضافة رتبة لنفسك.\n\n"
" يجب على أدمن السيرفر أولاً إضافة الرتبة.\n\n"
" ملاحظة: الرتبة حساسة لحالة الأحرف!\n"
" "
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "إزالة رتبة ذاتية من نفسك.\n\n"
" ملاحظة: الرتبة حساسة لحالة الأحرف!\n"
" "
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "إضافة رتبة إلى قائمة الرتب الذاتية.\n\n"
" ملاحظة: الرتبة حساسة لحالة الأحرف!\n"
" "
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr "تم تحديث/تعديل قائمة الرتب الذاتية بنجاح."
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "إزالة الرتبة من قائمة الرتب الذاتية.\n\n"
" ملاحظة: الرتبة حساسة لحالة الأحرف!\n"
" "
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr "\n"
"قائمة بجميع الرتب الذاتية. "
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr "الرتب الذاتية المتوفرة:\n"
"{selfroles}"
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr "قفل البوت للسيرفر الحالي فقط."
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr "لم يعد البوت مقفول للسيرفر الحالي فقط."
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr "لقد تم قفل البوت للسيرفر الحالي فقط."
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr "لم أتمكن من الإعلان في السيرفر: {server.id}"
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr "لم يتم تحميل وحدة الأدمن cog."
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr "الرتبة المذكورة ليست على قائمة الرتب الذاتية."

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:06\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Bulgarian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: bg_BG\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Danish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: da_DK\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,211 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: de_DE\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr "Ich habe versucht etwas zu tun, für das mir Discord die Befugnis verweigerte. Dein Befehl konnte nicht erfolgreich ausgeführt werden."
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr "Ich versuchte die Rolle {role.name} an {member.display_name} zu geben, aber die Rolle ist höher als meine höchste Rolle in der Discord Hierarchie, daher war es mir nicht möglich sie hinzuzufügen. Bitte gib mir eine höhere Rolle und versuche es erneut."
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr "Ich versuchte die Rolle {role.name} an {member.display_name} zu geben, aber die Rolle ist höher als deine höchste Rolle in der Discord Hierarchie, daher war es mir nicht möglich sie hinzuzufügen. Bitte gib dir selbst eine höhere Rolle und versuche es erneut."
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr "Ich kündige bereits etwas an. Wenn du eine andere Ankündigung machen willst, benutze bitte zuerst `{prefix}announce cancel`."
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr "Eine Sammlung von administrativen Server-Verwaltungsprogramme."
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr "Ich habe erfolgreich {role.name} zu {member.display_name} hinzugefügt"
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr "Ich habe erfolgreich {role.name} von {member.display_name} entfernt"
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr "Gebe einem Benutzer ein Rolle.\n\n"
" Wenn kein Benutzer angegeben wird, wird standardmäßig der Autor des Befehls gewählt.\n"
" "
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr "Entferne eine Rolle von einem Benutzer.\n\n"
" Wenn kein Benutzer angegeben wird, wird standardmäßig der Autor des Befehls gewählt.\n"
" "
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr "Bearbeiten der Rollen Einstellungen."
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr "Bearbeite die Farbe einer Rolle.\n\n"
" Benutze Anführungszeichen wenn die Rolle ein Leerzeichen enthält.\n"
" Die Farbe muss im Hexadezimal Format angegeben werden.\n"
" [Online Farbwähler](<http://www.w3schools.com/colors/colors_picker.asp>)\n\n"
" Beispiele:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr "Erledigt."
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr "Bearbeite den Namen einer Rolle.\n\n"
" Benutze Anführungszeichen wenn die Rolle Leerzeichen enthält.\n\n"
" Beispiele:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr "Mache eine Ankündigung auf allen Servern auf denen der Bot ist."
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr "Die Ankündigung hat begonnen."
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr "Breche eine laufende Ankündigung ab."
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr "Die aktuelle Ankündigung wurde abgebrochen."
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr "Ändere den Kanal in dem der Bot Ankündigungen macht."
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr "Der für Ankündigungen gewählte Kanal wurde festgelegt auf {channel.mention}"
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr "Schaltet Ankündigungen auf diesem Server ein oder aus."
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr "Der Server {guild.name} wird Ankündigunen erhalten."
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr "Der Server {guild.name} wird keine Ankündigunen erhalten."
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Gib dir selbst eine Rolle.\n\n"
" Server Admins müssen die Rolle für Nutzer freigeben.\n\n"
" HINWEIS: Die Rolle beachtet Groß- und Kleinschreibung!\n"
" "
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Entferne eine auswählbare Rolle von dir selbst.\n\n"
" HINWEIS: Die Rolle beachtet Groß- und Kleinschreibung!\n"
" "
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Füge eine Rolle zur Liste der selbst auswählbaren Rollen hinzu.\n\n"
" HINWEIS: Die Rolle beachtet Groß- und Kleinschreibung!\n"
" "
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr "Die Liste selbst auswählbarer Rollen wurde erfolgreich bearbeitet."
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Entferne eine selbst auswählbare Rolle von der Liste für verfügbare Rollen.\n\n"
" HINWEIS: Die Rolle beachtet Groß- und Kleinschreibung!\n"
" "
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr "\n"
"Gibt eine Liste verfügbarer selbst auswählbarer Rollen aus. "
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr "Verfügbare selbst auswählbare Rollen: {selfroles}"
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr "Sperrt den Bot neuen Servern beizutreten."
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr "Der Bot ist nicht länger gesperrt neuen Servern beizutreten."
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr "Der Bot ist jetzt gesperrt neuen Servern beizutreten."
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr "Ich konnte keine Ankündigung auf diesem Server machen: {server.id}"
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr "Das Admin-Cog ist nicht geladen."
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr "Die vorausgesetzte Rolle ist keine berechtigte selbst auswählbare Rolle."

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Greek\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: el_GR\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:43-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:08\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Pirate English\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: en_PT\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:41-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:06\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,197 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: es_ES\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr "Intenté hacer algo que Discord me ha negado el permiso. Su comando no se pudo completar."
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr "He intentado agregar {role.name} a {member.display_name} pero ese rol es más alto que mi rol en la jerarquía de Discord, por lo que no he podido añadirlo con éxito. Por favor dame un rol más alto y vuelva a intentarlo."
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr "He añadido con éxito {role.name} a {member.display_name}"
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr "He retirado con éxito {role.name} de {member.display_name}"
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr "Editar configuración de rol."
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr "Editar el color de un rol.\n\n"
" Usa comillas dobles si el rol contiene espacios.\n"
" El color debe estar en formato hexadecimal.\n"
" [Selector de color En-Linea](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"El Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr "Listo."
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr "Editar el nombre de un rol.\n\n"
" Usa dobles comillas si el rol o el nombre contiene espacios.\n\n"
" Ejemplos:\n"
" `[p]editrole name \"El Transistor\" Test`\n"
" "
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr "Anunciar un mensaje a todos los servidores en que el bot está."
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Finnish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: fi_FI\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:41-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:06\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,212 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: fr_FR\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr "J'ai tenté de faire quelque chose que pour lequel Discord m'a refusé les permissions. La commande a échoué."
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr "J'ai tenté d'ajouter le rôle {role.name} à {member.display_name} mais ce rôle est plus élevé que le mien dans la hiérarchie des rôles de ce serveur. Je n'ai donc pas pu l'ajouter. Tu peux réessayer en me donnant un rôle plus élevé."
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr "J'ai tenté d'ajouter le rôle {role.name} à {member.display_name} mais ce rôle est plus élevé que le tien dans la hiérarchie des rôles de ce serveur. Je n'ai donc pas pu l'ajouter. Tu peux réessayer mais il faudra d'abord que tu obtiennes un rôle plus élevé."
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr "Je suis déjà en train d'annoncer quelque chose. Si tu souhaites faire une annonce différente, tu dois d'abord utiliser la commande `{prefix}announce cancel`."
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr "Un ensemble d'utilitaires d'administration du serveur."
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr "J'ai bien ajouté le rôle {role.name} à {member.display_name}"
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr "J'ai bien retiré le rôle {role.name} de {member.display_name}"
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr "Ajouter un rôle à un utilisateur.\n\n"
" Si aucun utilisateur n'est mentionné dans la commande, celle-ci fera effet sur l'auteur.\n"
" "
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr "Retirer un rôle à un utilisateur.\n\n"
" Si aucun utilisateur n'est mentionné dans la commande, celle-ci fera effet sur l'auteur.\n"
" "
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr "Modifier les paramètres d'un rôle."
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr "Modifier la couleur d'un rôle.\n\n"
" Utilise des guillemets si le nom du rôle contient des espaces.\n"
" La couleur doit être au format hexadécimal\n"
" [Sélecteur de couleur en ligne](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Exemples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr "Fait."
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr "Modifier le nom d'un rôle.\n\n"
" Utilise des guillemets si le nom du rôle contient des espaces.\n\n"
" Exemples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr "Faire une annonce à tous les serveurs dans lesquels le bot se trouve."
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr "Lannonce a commencé."
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr "Interrompre une annonce en cours."
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr "L'annonce actuelle a été interrompue."
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr "Changer le salon dans lequel le bot fait des annonces."
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr "Les annonces seront maintenant faites dans {channel.mention}"
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr "Activer ou désactiver les annonces sur ce serveur."
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr "Le serveur {guild.name} recevra maintenant les annonces."
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr "Le serveur {guild.name} ne recevra plus les annonces."
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "S'ajouter un rôle à soi-même.\n\n"
" Les administrateurs du serveur doivent avoir configuré le rôle en tant qu'ajoutable par les utilisateurs.\n\n"
" NOTE: Le nom du rôle est sensible à la casse!\n"
" "
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Se supprimer un auto-rôle.\n\n"
" NOTE: Le rôle est sensible à la casse! "
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Ajouter un rôle à la liste des auto-rôles disponibles.\n\n"
" NOTE : le nom du rôle est sensible à la casse !\n"
" "
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr "La liste des auto-rôles a été modifiée avec succès."
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Supprimer un rôle de la liste des auto-rôles.\n\n"
" NOTE : Le nom du rôle est sensible à la casse !\n"
" "
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr "\n"
" Liste de tous les auto-rôles disponibles.\n"
" "
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr "Auto-rôles disponibles :\n"
"{selfroles}"
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr "Verrouiller le bot sur les serveurs où il est actuellement présent."
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr "Le bot n'est plus verrouillé sur ses serveurs."
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr "Le bot est maintenant verrouillé sur ses serveurs."
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr "Je n'ai pas pu faire d'annonce dans le serveur: {server.id}"
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr "Le module Admin n'est pas chargé."
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr "Le rôle fourni n'est pas un auto-rôle valide."

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Hungarian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: hu_HU\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:43-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:08\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Indonesian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: id_ID\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Italian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: it_IT\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Japanese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: ja_JP\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr "私は不和が私に権限を拒否した何かをしようとしました。コマンドを正常に完了できませんでした。"
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr "{member.display_name} に {role.name} を追加してみましたが、その役割は不和階層で私の最高の役割よりも高いので、それを正常に追加できませんでした。私に高い役割を与えるし、もう一度やり直してください。"
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Korean\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,187 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: ko_KR\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr "\n"
"사용 가능한 역할들을 모두 나열할게요. "
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:43-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:08\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: LOLCAT\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: lol_US\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr "Discord sayed I can't do sometingz. Ur command faild 2 complete."
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,17 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Dutch\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,206 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: nl_NL\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr "Ik probeerde iets te doen, maar Discord weigerde mij toestemming te geven. Je command is geslaagd te mislukken."
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr "Ik probeerder {role.name} toe te voegen aan {member.display_name}, maar die rol is waarschijnlijk een hogere rol dan die van mij. Ik kan de rol daarom niet toevoegen. Geef mij een hogere rol en probeer het nog eens."
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr "Ik probeerder {role.name} toe te voegen aan {member.display_name}, maar die rol is waarschijnlijk een hogere rol dan die van jou. Ik kan de rol daarom niet toevoegen. Krijg een hogere rol en probeer het nog eens."
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr "Ik ben al iets aan het aankondigen. Als je iets anders wilt aankondigen, voer dan eerst deze command uit: '{prefix}announce cancel'."
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr "Een collectie van de server administratie voorzieningen."
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr "Ik heb succesvol {role.name} toegevoegd aan {member.display_name}"
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr "Ik heb succesvol {role.name} verwijderd van {member.display_name}"
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr "Een rol toevoegen aan een lid.\n\n"
" Als je geen lid invult, dan is het automatisch de auteur van de command."
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr "Een rol verwijderen van een lid.\n\n"
" Als je geen lid invult, dan is het automatisch de auteur van de command."
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr "Rol instellingen bewerken."
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr "Een rolkleur bewerken.\n\n"
" Gebruik dubbele aanhalingstekens als de rol een spatie bevat.\n"
" Een kleur moet van heximaal formaat zijn.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Voorbeelden:\n"
" `[p]editrole colour \"DP Bots\" #ff0000`\n"
" `[p]editrole colour Teamlid #ff9900`\n"
" "
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr "Klaar."
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr "Een rolnamen bewerken.\n\n"
" Gebruik dubbele aanhalingstekens als de rol een spatie bevat.\n\n"
" Voorbeeld: \n"
" `[p]editrole name \"DP Bots\" Bots`\n"
" "
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr "Kondig een bericht aan in alle servers."
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr "De aankondiging is begonnen."
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr "Annuleer een huidige aankondiging."
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr "De huidige aankondiging is geannuleerd."
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr "Bewerk het kanaal waar de bot aankondigingen maakt."
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr "Het aankondigingskanaal is aangepast naar {channel.mention}"
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr "Aankondigingen zijn geactiveerd in deze server."
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr "De server {guild.name} ontvangt aankondigingen."
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr "De server {guild.name} ontvangt geen aankondigingen."
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Voeg een rol aan jezelf toe. \n\n"
" Server teamleden moeten de rol als een user settable.\n\n"
" LET OP: De rolnaam is hoofdlettergevoelig. "
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Verwijder een rol van jezelf.\n\n"
" LET OP: De rolnaam is hoofdlettergevoelig. "
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Voeg een rol toe aan de lijst met beschikbare selfroles. \n\n"
" OPMERKING: De rol is hoofdlettergevoelig!"
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr "De selfroles lijst is succesvol aangepast."
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Verwijder een rol uit de lijst met beschikbare selfroles. \n\n"
" OPMERKING: De rol is hoofdlettergevoelig!"
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr "\n"
"Laat alle beschikbare selfroles zien."
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr "Beschikbare Selfroles:\n"
"{selfroles}"
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr "Vergrendel de bot voor alleen deze server."
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr "De bot is niet langer vergrendeld."
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr "De bot is vergrendeld."
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr "Ik kan geen bericht aankondigen in: {server.id}"
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr "De admin cog is niet geladen."
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr "De ingevulde rol is geen beschikbare selfrole."

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Norwegian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: no_NO\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,18 +1,201 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:43-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Polish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Plural-Forms: nplurals=4; plural=((n == 1) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || n%10 == 1 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 12 && n%100 <= 14)) ? 2 : 3));\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: pl\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: pl_PL\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr "Gotowe."
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr "Moduł Admin nie jest załadowany."
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:43-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:08\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Portuguese, Brazilian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: pt_BR\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr "Concluído."
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:43-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Portuguese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,213 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: pt_PT\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr "Tentei fazer uma coisa que o Discord negou permissão para fazer. O comando não foi concluído."
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr "Tentei adicionar {role.name} a {member.display_name} mas esse cargo é maior do que o meu maior cargo atual na hierarquia do Discord por isso não me é possível concluir a ação com sucesso. Dá-me um cargo maior e tenta novamente."
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr "Tentei adicionar {role.name} a {member.display_name} mas esse cargo é maior do que o teu maior cargo atual na hierarquia do Discord por isso não me é possível concluir a ação com sucesso. Obtém um cargo maior e tenta novamente."
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr "Já estou a anunciar algo. Se queres fazer um anúncio diferente usa `{prefix}announce cancel` antes de usares este comando."
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr "Uma coleção de utilidades para administração de servidores."
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr "Adicionei com sucesso {role.name} a {member.display_name}"
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr "Removi com sucesso {role.name} de {member.display_name}"
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr "Adiciona um cargo a um utilizador.\n\n"
" Se o utilizador for deixado em branco é utilizado por padrão o autor do comando.\n"
" "
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr "Remove um cargo a um utilizador.\n\n"
" Se o utilizador for deixado em branco é utilizado por padrão o autor do comando.\n"
" "
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr "Edite a cor do cargo\n\n"
" Use aspas se o cargo contiver espaços.\n"
" A cor deve ser em formato hexadecimal.\n"
" [Seleção de Cor Online](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Exemplos:\n"
" `[p]editrole colour \"Team rS\" #ff0000`\n"
" `[p]editrole colour Teste #ff9900`\n"
" "
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr "Concluído."
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr "Edite o nome do cargo.\n\n"
" Use aspas se o cargo contiver espaços.\n\n"
" Exemplos:\n"
" `[p]editrole name \"Team rS\" Test`\n"
" "
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr "Anuncia uma mensagem para todos os servidores em que o bot está."
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr "O anúncio foi iniciado."
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr "Cancelar um anúncio em curso."
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr "O anúncio atual foi cancelado."
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr "Mude o canal para o qual o bot faz os anúncios."
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr "O canal de anúncio foi definido para {channel.mention}"
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr "Ativar ou Desativar os anúncios neste servidor."
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr "O servidor {guild.name} vai receber anúncios."
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr "O servidor {guild.name} não vai receber anúncios."
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Adiciona um cargo a si próprio\n\n"
" Os administradores do servidor têm de ter configurado o cargo como definível.\n\n"
" NOTA: O cargo é sensível às maiúsculas e minúsculas!\n"
" "
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Remove um cargo a si próprio.\n\n"
" NOTA: O cargo é sensível às maiúsculas e minúsculas!\n"
" "
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Adiciona um cargo à lista de cargos definíveis.\n\n"
" NOTA: O cargo é sensível às maiúsculas e minúsculas!\n"
" "
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr "A lista de cargos definíveis foi modificada com sucesso."
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Remove um cargo da lista de cargos definíveis.\n\n"
" NOTA: O cargo é sensível às maiúsculas e minúsculas!\n"
" "
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr "\n"
" Lista de todos os cargos definíveis disponíveis.\n"
" "
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr "Cargos definíveis disponíveis:\n"
"{selfroles}"
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr "Bloquear o bot aos servidores atuais."
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr "O bot já não está bloqueado aos servidores atuais."
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr "O bot está agora bloqueado aos servidores atuais."
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr "Não me foi possível anunciar no servidor: {server.id}"
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr "O cog 'Admin' não está carregado."
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr "O cargo indicado não é um cargo definível válido."

View File

@@ -1,11 +0,0 @@
import subprocess
TO_TRANSLATE = ["../admin.py"]
def regen_messages():
subprocess.run(["pygettext", "-n"] + TO_TRANSLATE)
if __name__ == "__main__":
regen_messages()

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:43-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 05:52\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Russian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,213 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: ru_RU\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr "Я попытался сделать что-то, для чего Discord отказал мне в разрешениях. Ваша команда не была успешно выполнена."
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr "Я попытался добавить {member.display_name} в {role.name}, но эта роль выше, чем моя наивысшая роль в иерархии Discord, поэтому я не смог добавить ее успешно. Пожалуйста, дайте мне более высокую роль и повторите попытку."
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr "Я попытался добавить {member.display_name} в {role.name}, но эта роль выше, чем ваша наивысшая роль в иерархии Discord, поэтому я не смог добавить ее успешно. Пожалуйста, получите более высокую роль и повторите попытку."
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr "Я уже что-то объявляю. Если вы хотите сделать другое объявление, сначала используйте `{prefix}announce cancel`."
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr "Набор утилит администрирования сервера."
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr "Я успешно добавил {member.display_name} в {role.name}"
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr "Я успешно убрал {member.display_name} из {role.name}"
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr "Добавляет роль пользователю.\n\n"
" Если пользователь не указан, то по умолчанию используется отправитель.\n"
" "
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr "Забирает роль у пользователя.\n\n"
" Если пользователь не указан, то по умолчанию используется отправитель.\n"
" "
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr "Изменение параметров роли."
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr "Изменить цвет роли.\n\n"
" Используйте двойные кавычки, если роль содержит пробелы.\n"
" Цвет должен быть в шестнадцатеричном формате.\n"
" [Онлайн-палитра цветов](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Примеры:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr "Готово."
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr "Изменить имя роли.\n\n"
" Используйте двойные кавычки, если роль или имя содержат пробелы.\n\n"
" Примеры:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr "Объявить сообщение на всех серверах, к которым подключен бот."
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr "Объявление началось."
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr "Отменить текущее объявление."
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr "Текущее объявление было отменено."
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr "Изменить канал, на котором бот делает объявления."
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr "Канал объявления был установлен на {channel.mention}"
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr "Переключить объявления, когда этот сервер включен."
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr "Сервер {guild.name} будет получать объявления."
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr "Сервер {guild.name} не будет получать объявления."
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Добавить себе роль.\n\n"
" Администраторы сервера должны настроить роль как настраиваемую пользователем.\n\n"
" ПРИМЕЧАНИЕ: Роль чувствительна к регистру!\n"
" "
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Удалить свою роль.\n\n"
" ПРИМЕЧАНИЕ: Роль чувствительна к регистру!\n"
" "
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Добавить роль в список доступных ролей.\n\n"
" ПРИМЕЧАНИЕ: Роль чувствительна к регистру!\n"
" "
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr "Список ролей был изменен успешно."
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr "Удалить роль из списка доступных ролей.\n\n"
" ПРИМЕЧАНИЕ: Роль чувствительна к регистру!\n"
" "
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr "\n"
" Список всех доступных ролей.\n"
" "
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr "Доступные роли:\n"
"{selfroles}"
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr "Заблокировать бота только на его текущих серверах."
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr "Бот больше не заблокирован на сервере."
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr "Бот теперь заблокирован на сервере."
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr "Я не могу объявить на сервере: {server.id}"
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr "Плагин администрирования не загружен."
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr "Предоставленная роль не является допустимой ролью."

View File

@@ -0,0 +1,201 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Slovak\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: sk\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: sk_SK\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:43-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:08\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Swedish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: sv_SE\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -0,0 +1,201 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:08\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Turkish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: tr\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: tr_TR\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:43-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:08\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Chinese Simplified\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,3 +16,186 @@ msgstr ""
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: zh_CN\n"
#: redbot/cogs/admin/admin.py:17
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:22
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than my highest role in the Discord hierarchy so I was unable to successfully add it. Please give me a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:29
msgid "I tried to add {role.name} to {member.display_name} but that role is higher than your highest role in the Discord hierarchy so I was unable to successfully add it. Please get a higher role and try again."
msgstr ""
#: redbot/cogs/admin/admin.py:36
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:46
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:112
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:127
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:138
#, docstring
msgid "Add a role to a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:156
#, docstring
msgid "Remove a role from a user.\n\n"
" If user is left blank it defaults to the author of the command.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:172
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:179
#, docstring
msgid "Edit a role's colour.\n\n"
" Use double quotes if the role contains spaces.\n"
" Colour must be in hexadecimal format.\n"
" [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Examples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:202 redbot/cogs/admin/admin.py:230
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:207
#, docstring
msgid "Edit a role's name.\n\n"
" Use double quotes if the role or the name contain spaces.\n\n"
" Examples:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:235
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:242
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:250
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:256
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:262
#, docstring
msgid "Change the channel to which the bot makes announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:268
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:275
#, docstring
msgid "Toggle announcements being enabled this server."
msgstr ""
#: redbot/cogs/admin/admin.py:281
msgid "The server {guild.name} will receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:285
msgid "The server {guild.name} will not receive announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:311
#, docstring
msgid "Add a role to yourself.\n\n"
" Server admins must have configured the role as user settable.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:322
#, docstring
msgid "Remove a selfrole from yourself.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:340 redbot/cogs/admin/admin.py:352
msgid "The selfroles list has been successfully modified."
msgstr ""
#: redbot/cogs/admin/admin.py:345
#, docstring
msgid "Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:356
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:362
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:379
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:384
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:386
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to server: {server.id}"
msgstr ""
#: redbot/cogs/admin/converters.py:25
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:34
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,10 @@
from copy import copy
from re import search
from typing import Generator, Tuple, Iterable
from re import findall, search
from string import Formatter
from typing import Generator, Tuple, Iterable, Optional
import discord
from discord.ext.commands.view import StringView
from redbot.core import Config, commands, checks
from redbot.core.i18n import Translator, cog_i18n
from redbot.core.utils.chat_formatting import box
@@ -13,17 +15,31 @@ from .alias_entry import AliasEntry
_ = Translator("Alias", __file__)
class _TrackingFormatter(Formatter):
def __init__(self):
super().__init__()
self.max = -1
def get_value(self, key, args, kwargs):
if isinstance(key, int):
self.max = max((key, self.max))
return super().get_value(key, args, kwargs)
class ArgParseError(Exception):
pass
@cog_i18n(_)
class Alias:
"""
Alias
Aliases are per server shortcuts for commands. They
can act as both a lambda (storing arguments for repeated use)
or as simply a shortcut to saying "x y z".
class Alias(commands.Cog):
"""Create aliases for commands.
Aliases are alternative names shortcuts for commands. They
can act as both a lambda (storing arguments for repeated use)
or as simply a shortcut to saying "x y z".
When run, aliases will accept any additional arguments
and append them to the stored alias
and append them to the stored alias.
"""
default_global_settings = {"entries": []}
@@ -31,6 +47,7 @@ class Alias:
default_guild_settings = {"enabled": False, "entries": []} # Going to be a list of dicts
def __init__(self, bot: Red):
super().__init__()
self.bot = bot
self._aliases = Config.get_conf(self, 8927348724)
@@ -53,10 +70,13 @@ class Alias:
return (AliasEntry.from_json(d, bot=self.bot) for d in (await self._aliases.entries()))
async def is_alias(
self, guild: discord.Guild, alias_name: str, server_aliases: Iterable[AliasEntry] = ()
) -> (bool, AliasEntry):
self,
guild: Optional[discord.Guild],
alias_name: str,
server_aliases: Iterable[AliasEntry] = (),
) -> Tuple[bool, Optional[AliasEntry]]:
if not server_aliases:
if not server_aliases and guild is not None:
server_aliases = await self.unloaded_aliases(guild)
global_aliases = await self.unloaded_global_aliases()
@@ -77,8 +97,25 @@ class Alias:
return not bool(search(r"\s", alias_name)) and alias_name.isprintable()
async def add_alias(
self, ctx: commands.Context, alias_name: str, command: Tuple[str], global_: bool = False
self, ctx: commands.Context, alias_name: str, command: str, global_: bool = False
) -> AliasEntry:
indices = findall(r"{(\d*)}", command)
if indices:
try:
indices = [int(a[0]) for a in indices]
except IndexError:
raise ArgParseError(_("Arguments must be specified with a number."))
low = min(indices)
indices = [a - low for a in indices]
high = max(indices)
gaps = set(indices).symmetric_difference(range(high + 1))
if gaps:
raise ArgParseError(
_("Arguments must be sequential. Missing arguments: ")
+ ", ".join(str(i + low) for i in gaps)
)
command = command.format(*(f"{{{i}}}" for i in range(-low, high + low + 1)))
alias = AliasEntry(alias_name, command, ctx.author, global_=global_)
if global_:
@@ -139,7 +176,17 @@ class Alias:
:return:
"""
known_content_length = len(prefix) + len(alias.name)
extra = message.content[known_content_length:].strip()
extra = message.content[known_content_length:]
view = StringView(extra)
view.skip_ws()
extra = []
while not view.eof:
prev = view.index
word = view.get_quoted_word()
if len(word) < view.index - prev:
word = "".join((view.buffer[prev], word, view.buffer[view.index - 1]))
extra.append(word)
view.skip_ws()
return extra
async def maybe_call_alias(
@@ -164,41 +211,45 @@ class Alias:
async def call_alias(self, message: discord.Message, prefix: str, alias: AliasEntry):
new_message = copy(message)
args = self.get_extra_args_from_alias(message, prefix, alias)
try:
args = self.get_extra_args_from_alias(message, prefix, alias)
except commands.BadArgument as bae:
return
trackform = _TrackingFormatter()
command = trackform.format(alias.command, *args)
# noinspection PyDunderSlots
new_message.content = "{}{} {}".format(prefix, alias.command, args)
new_message.content = "{}{} {}".format(
prefix, command, " ".join(args[trackform.max + 1 :])
)
await self.bot.process_commands(new_message)
@commands.group()
@commands.guild_only()
async def alias(self, ctx: commands.Context):
"""Manage per-server aliases for commands"""
"""Manage command aliases."""
pass
@alias.group(name="global")
async def global_(self, ctx: commands.Context):
"""
Manage global aliases.
"""
"""Manage global aliases."""
pass
@checks.mod_or_permissions(manage_guild=True)
@alias.command(name="add")
@commands.guild_only()
async def _add_alias(self, ctx: commands.Context, alias_name: str, *, command):
"""
Add an alias for a command.
"""
"""Add an alias for a command."""
# region Alias Add Validity Checking
is_command = self.is_command(alias_name)
if is_command:
await ctx.send(
_(
"You attempted to create a new alias"
" with the name {} but that"
" with the name {name} but that"
" name is already a command on this bot."
).format(alias_name)
).format(name=alias_name)
)
return
@@ -207,9 +258,9 @@ class Alias:
await ctx.send(
_(
"You attempted to create a new alias"
" with the name {} but that"
" with the name {name} but that"
" alias already exists on this server."
).format(alias_name)
).format(name=alias_name)
)
return
@@ -218,10 +269,10 @@ class Alias:
await ctx.send(
_(
"You attempted to create a new alias"
" with the name {} but that"
" with the name {name} but that"
" name is an invalid alias name. Alias"
" names may not contain spaces."
).format(alias_name)
).format(name=alias_name)
)
return
# endregion
@@ -229,25 +280,28 @@ class Alias:
# At this point we know we need to make a new alias
# and that the alias name is valid.
await self.add_alias(ctx, alias_name, command)
try:
await self.add_alias(ctx, alias_name, command)
except ArgParseError as e:
return await ctx.send(" ".join(e.args))
await ctx.send(_("A new alias with the trigger `{}` has been created.").format(alias_name))
await ctx.send(
_("A new alias with the trigger `{name}` has been created.").format(name=alias_name)
)
@checks.is_owner()
@global_.command(name="add")
async def _add_global_alias(self, ctx: commands.Context, alias_name: str, *, command):
"""
Add a global alias for a command.
"""
"""Add a global alias for a command."""
# region Alias Add Validity Checking
is_command = self.is_command(alias_name)
if is_command:
await ctx.send(
_(
"You attempted to create a new global alias"
" with the name {} but that"
" with the name {name} but that"
" name is already a command on this bot."
).format(alias_name)
).format(name=alias_name)
)
return
@@ -256,9 +310,9 @@ class Alias:
await ctx.send(
_(
"You attempted to create a new global alias"
" with the name {} but that"
" with the name {name} but that"
" alias already exists on this server."
).format(alias_name)
).format(name=alias_name)
)
return
@@ -267,74 +321,82 @@ class Alias:
await ctx.send(
_(
"You attempted to create a new global alias"
" with the name {} but that"
" with the name {name} but that"
" name is an invalid alias name. Alias"
" names may not contain spaces."
).format(alias_name)
).format(name=alias_name)
)
return
# endregion
await self.add_alias(ctx, alias_name, command, global_=True)
try:
await self.add_alias(ctx, alias_name, command, global_=True)
except ArgParseError as e:
return await ctx.send(" ".join(e.args))
await ctx.send(
_("A new global alias with the trigger `{}` has been created.").format(alias_name)
_("A new global alias with the trigger `{name}` has been created.").format(
name=alias_name
)
)
@alias.command(name="help")
@commands.guild_only()
async def _help_alias(self, ctx: commands.Context, alias_name: str):
"""Tries to execute help for the base command of the alias"""
"""Try to execute help for the base command of the alias."""
is_alias, alias = await self.is_alias(ctx.guild, alias_name=alias_name)
if is_alias:
base_cmd = alias.command[0]
if self.is_command(alias.command):
base_cmd = alias.command
else:
base_cmd = alias.command.rsplit(" ", 1)[0]
new_msg = copy(ctx.message)
new_msg.content = "{}help {}".format(ctx.prefix, base_cmd)
new_msg.content = _("{prefix}help {command}").format(
prefix=ctx.prefix, command=base_cmd
)
await self.bot.process_commands(new_msg)
else:
ctx.send(_("No such alias exists."))
await ctx.send(_("No such alias exists."))
@alias.command(name="show")
@commands.guild_only()
async def _show_alias(self, ctx: commands.Context, alias_name: str):
"""Shows what command the alias executes."""
"""Show what command the alias executes."""
is_alias, alias = await self.is_alias(ctx.guild, alias_name)
if is_alias:
await ctx.send(
_("The `{}` alias will execute the command `{}`").format(alias_name, alias.command)
_("The `{alias_name}` alias will execute the command `{command}`").format(
alias_name=alias_name, command=alias.command
)
)
else:
await ctx.send(_("There is no alias with the name `{}`").format(alias_name))
await ctx.send(_("There is no alias with the name `{name}`").format(name=alias_name))
@checks.mod_or_permissions(manage_guild=True)
@alias.command(name="del")
@commands.guild_only()
async def _del_alias(self, ctx: commands.Context, alias_name: str):
"""
Deletes an existing alias on this server.
"""
"""Delete an existing alias on this server."""
aliases = await self.unloaded_aliases(ctx.guild)
try:
next(aliases)
except StopIteration:
await ctx.send(_("There are no aliases on this guild."))
await ctx.send(_("There are no aliases on this server."))
return
if await self.delete_alias(ctx, alias_name):
await ctx.send(
_("Alias with the name `{}` was successfully deleted.").format(alias_name)
_("Alias with the name `{name}` was successfully deleted.").format(name=alias_name)
)
else:
await ctx.send(_("Alias with name `{}` was not found.").format(alias_name))
await ctx.send(_("Alias with name `{name}` was not found.").format(name=alias_name))
@checks.is_owner()
@global_.command(name="del")
async def _del_global_alias(self, ctx: commands.Context, alias_name: str):
"""
Deletes an existing global alias.
"""
"""Delete an existing global alias."""
aliases = await self.unloaded_global_aliases()
try:
next(aliases)
@@ -344,17 +406,15 @@ class Alias:
if await self.delete_alias(ctx, alias_name, global_=True):
await ctx.send(
_("Alias with the name `{}` was successfully deleted.").format(alias_name)
_("Alias with the name `{name}` was successfully deleted.").format(name=alias_name)
)
else:
await ctx.send(_("Alias with name `{}` was not found.").format(alias_name))
await ctx.send(_("Alias with name `{name}` was not found.").format(name=alias_name))
@alias.command(name="list")
@commands.guild_only()
async def _list_alias(self, ctx: commands.Context):
"""
Lists the available aliases on this server.
"""
"""List the available aliases on this server."""
names = [_("Aliases:")] + sorted(
["+ " + a.name for a in (await self.unloaded_aliases(ctx.guild))]
)
@@ -365,9 +425,7 @@ class Alias:
@global_.command(name="list")
async def _list_global_alias(self, ctx: commands.Context):
"""
Lists the available global aliases on this bot.
"""
"""List the available global aliases on this bot."""
names = [_("Aliases:")] + sorted(
["+ " + a.name for a in await self.unloaded_global_aliases()]
)
@@ -376,6 +434,7 @@ class Alias:
else:
await ctx.send(box("\n".join(names), "diff"))
@commands.Cog.listener()
async def on_message(self, message: discord.Message):
aliases = list(await self.unloaded_global_aliases())
if message.guild is not None:

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:41-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:06\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Arabic\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,137 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: ar_SA\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr ""
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr ""
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr ""
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr ""
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr ""
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: ../alias.py:298
msgid "There are no aliases on this guild."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr ""
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr ""
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr ""
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr ""
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:06\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Bulgarian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,137 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: bg_BG\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr "Няма намерен префикс."
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr ""
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr ""
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
msgstr "Нов псевдоним със задействащия оператор `{}` беше създаден."
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
msgstr "Нов псевдоним, по всеобщо правило, със задействащия оператор `{}` беше създаден."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr ""
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr "Този псевдоним не съществува."
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
msgstr "`{}` псевдоним ще изпълни командата `{}`"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
msgstr "Псевдонимът под името `{}` не съществува"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: ../alias.py:298
msgid "There are no aliases on this guild."
msgstr "Няма псевдоними положени към тази гилдия."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr ""
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
msgstr "Псевдонимът с име `{}` беше успешно изтрит."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr "Псевдонимът с името `{}` не е намерен."
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr "Няма псевдоними положени към този бот."
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr "Псевдоними:"
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr "Няма използвани псевдоними на този сървър."
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr "Няма псевдоними положени към този бот."
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr "Псевдоними:"
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Danish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,137 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: da_DK\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr ""
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr ""
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr ""
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr ""
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr ""
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: ../alias.py:298
msgid "There are no aliases on this guild."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr ""
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr ""
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr ""
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr ""
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,143 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: de_DE\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr "Kreiere Aliasse für Befehle.\n\n"
" Aliasse sind alternative Namenskürzel für Befehle. Sie\n"
" können als Lambda dienen (Argumente speichern für wiederholten Gebrauch)\n"
" oder als Abkürzung um \"x y z\" zu sagen.\n\n"
" Wenn ausgeführt, akzeptieren Aliase jedes zusätzliche Argument\n"
" und fügen es dem gespeicherten Alias zu.\n"
" "
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr "Kein Präfix wurde gefunden."
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
msgstr "Sie haben versucht, einen neuen Alias mit dem Namen {} zu erstellen, aber dieser Name ist bereits ein Command für diesen Bot."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr "Verwalte die Alias Befehle."
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
msgstr "Sie haben versucht, einen neuen Alias mit dem Namen {} zu erstellen, aber dieser Alias existiert bereits auf diesem Server."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr "Verwalte die globalen Aliasse."
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Sie haben versucht, einen neuen Alias mit dem Namen {} zu erstellen, dieser Name ist jedoch ein ungültiger Aliasname. Alias-Namen dürfen keine Leerzeichen enthalten."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr "Füge einen Alias für einen Befehl hinzu."
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
msgstr "Ein neuer alias mit dem Trigger `{}` wurde hinzugefügt."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "Du hast versucht, einen neuen Alias mit dem Namen {name} zu erstellen, aber dieser Name ist bereits ein Befehl für diesen Bot."
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
msgstr "Sie haben versucht, einen neuen globalen Alias mit dem Namen {} zu erstellen, aber dieser Name ist bereits ein Command für diesen Bot."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr "Du hast versucht einen neuen Alias mit dem Namen {name} zu erstellen, aber dieser Alias existiert bereits auf dem Server."
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
msgstr "Sie haben versucht, einen neuen globalen Aliasnamen mit dem Namen {} zu erstellen, dieser Aliasname ist jedoch bereits auf diesem Server vorhanden."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Du hast versucht einen neuen Alias mit dem Namen {name} zu erstellen, aber dieser Name ist ein ungültiger Alias-Name. Alias-Namen dürfen keine Leerzeichen enthalten."
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Sie haben versucht, einen neuen globalen Aliasnamen mit dem Namen {} zu erstellen, dieser Name ist jedoch ein ungültiger Aliasname. Alias-Namen dürfen keine Leerzeichen enthalten."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr "Ein neuer alias mit dem Trigger `{name}` wurde erstellt."
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
msgstr "Ein neuer globaler Alias mit dem Trigger `{}` wurde erstellt."
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr "Füge einen globalen Alias für einen Befehl hinzu."
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Du hast versucht, einen neuen globalen Alias mit dem Namen {name} zu erstellen, aber dieser Name ist bereits ein Befehl für diesen Bot."
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr "Du hast versucht, einen neuen globalen Alias mit dem Namen {name} zu erstellen, dieser ist jedoch bereits auf diesem Server vorhanden."
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Du hast versucht, einen neuen globalen Alias mit dem Namen {name} zu erstellen, dieser Name ist jedoch ein ungültiger Alias-Name. Alias-Namen dürfen keine Leerzeichen enthalten."
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr "Ein neuer globaler Alias mit dem Trigger `{name}` wurde erstellt."
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr "Versuche die Hilfe für den Basisbefehl des Alias auszuführen."
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr "{prefix}help {command}"
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr "Kein solcher alias ist vorhanden."
msgstr "So ein Alias ist nicht vorhanden."
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
msgstr "Der `{}` alias wird den Befehl `{}` ausführen"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr "Zeige den Befehl, welchen der Alias ausführt."
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
msgstr "Es gibt keinen alias mit dem Namen `{}`"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "Der Alias '{alias_name}' führt den Befehl '{command}' aus"
#: ../alias.py:298
msgid "There are no aliases on this guild."
msgstr "Es gibt keine Aliase auf diesem Server."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr "Kein Alias mit dem Namen '{name}' gefunden"
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
msgstr "Der Alias mit dem Namen `{}` wurde erfolgreich gelöscht."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr "Lösche einen bereits existierenden Alias auf diesem Server."
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr "Der Alias mit dem Namen `{}` wurde nicht gefunden."
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr "Es gibt keine Aliase in diesem Bot."
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr "Aliase:"
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr "Es gibt keine Aliase in diesem Server."
msgstr "Es gibt keine Aliasse auf diesem Server."
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr "Der Alias mit dem Namen '{name}' wurde erfolgreich gelöscht."
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr "Kein Alias mit dem Namen '{name}' gefunden."
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr "Lösche einen bereits existierenden globalen Alias."
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr "Es gibt keine Aliasse in diesem Bot."
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr "Zeige die auf diesem Server verfügbaren Alias."
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr "Aliasse:"
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr "Zeige die verfügbaren globalen Alias von diesem Bot."

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Greek\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,137 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: el_GR\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr "Δεν βρέθηκε πρόθεμα."
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr ""
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr ""
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr ""
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr ""
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: ../alias.py:298
msgid "There are no aliases on this guild."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr ""
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr ""
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr ""
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr ""
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:43-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:08\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Pirate English\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,137 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: en_PT\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr "Arrr, no prefix found capt'n!"
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
msgstr "Ye try and make a squeeky-clean alias with the name {} but 'she be taken by another order."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr ""
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
msgstr "Ye try and make a Squeeky-clean alias with the name {} but 'she already be on the island."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr ""
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Ye try and make a Squeeky-clean alias with the name {} but 'she walk the plank! Spaces in an alias must walk the plank."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
msgstr "Arrr! A new alias with thee trigger `{}` has been created."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
msgstr "Ye try and make a squeeky-clean global alias with the name {} but 'she be taken by another order."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
msgstr "Ye try and make a Squeeky-clean global alias with the name {} but 'she already be on the island."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Ye try and make a Squeeky-clean global alias with the name {} but 'she walk the plank! Spaces in an alias must walk the plank."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
msgstr "Arrr! A new global alias with thee trigger `{}` has been created."
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr ""
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr "Yer scummy alias don't exist, matey!"
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
msgstr "Blimey! Thee `{}` alias will execute thee command `{}`"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
msgstr "Thar is no alias with thee name `{}`"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: ../alias.py:298
msgid "There are no aliases on this guild."
msgstr "Fool! Thar be no aliases on this guild."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr ""
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
msgstr "Yo-ho-ho! Alias with thee name `{}` has been sent to Davy Jones' locker."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr "Yo-ho-ho! Alias with thee name `{}`as been sent to Davy Jones' locker."
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr "Shiver me timbers! Thar be no aliases on this bot."
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr "Yar Aliases:"
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr "Alas! Thar be no aliases on this guild."
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr "Shiver me timbers! Thar be no aliases on this bot."
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr "Yar Aliases:"
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:41-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:06\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,137 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: es_ES\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr "Prefijo no encontrado."
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
msgstr "Has intentado crear un nuevo alias con el nombre {} pero ese nombre ya es un comando en este bot."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr ""
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
msgstr "Se ha intentado crear un nuevo alias con el nombre {} pero ese alias ya existe en este servidor."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr ""
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Has intentado crear un nuevo alias con el nombre {} pero ese nombre es un alias inválido. Los alias no deben contener espacios."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
msgstr "Un alias nuevo ha creado con el activación `{}`."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
msgstr "Has intentado crear un nuevo alias global con el nombre {} pero ese nombre ya es un comando en este bot."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
msgstr "Se ha intentado crear un nuevo alias global con el nombre {} pero ese alias ya existe en este servidor."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Has intentado crear un nuevo alias global con el nombre {} pero ese nombre es un alias inválido. Los alias no deben contener espacios."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
msgstr "Un alias nuevo global ha creado con el activación `{}`."
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr ""
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr "Un alias no existe."
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
msgstr "El alias de `{}` va a ejecutar el comando`{}`"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
msgstr "No hay el alias con el nombre de `{}`"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: ../alias.py:298
msgid "There are no aliases on this guild."
msgstr "No hay el alias dentro de este guild."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr ""
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
msgstr "El alias con el nombre de `{}` satisfactoriamente se ha eliminado."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr "Alias con el nombre `{}` no fue encontrado."
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr "No hay el los alias dentro de este bot."
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr "Alias:"
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr "No hay los aliases en este servidor."
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr "No hay el los alias dentro de este bot."
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr "Alias:"
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Finnish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,137 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: fi_FI\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr ""
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr ""
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr ""
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr ""
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr ""
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: ../alias.py:298
msgid "There are no aliases on this guild."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr ""
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr ""
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr ""
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr ""
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:41-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:06\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,143 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: fr_FR\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr "Créée des alias pour les commandes\n\n"
" Les alias sont des raccourcis de noms alternatifs pour les commandes. Ils\n"
" peuvent agir comme un lambda (stocker des arguments pour un usage répété)\n"
" ou comme simplement un raccourci pour dire \"x y z\".\n\n"
" Lors de leur exécution, les alias accepteront tous les arguments supplémentaires\n"
" et seront exécutés en plus des arguments stockés dans l'alias.\n"
" "
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr "Aucun préfixe trouvé."
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
msgstr "Vous avez tenté de créer un nouvel alias nommé {}, mais une commande existe déjà avec ce nom sur ce bot."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr "Gérer les alias de commandes."
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
msgstr "Vous avez tenté de créer un nouvel alias nommé {}, mais cet alias existe déjà sur cette guilde."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr "Gérer les alias globaux."
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Vous avez tenté de créer un nouvel alias nommé {}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr "Ajouter un alias à une commande."
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
msgstr "Un nouvel alias avec le déclencheur `{}` a bien été créé."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "Tu as tenté de créer un nouvel alias nommé {name}, mais une commande existe déjà avec ce nom sur ce bot."
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
msgstr "Vous avez tenté de créer un nouvel alias global nommé {}, mais une commande existe déjà avec ce nom sur ce bot."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr "Tu as tenté de créer un nouvel alias nommé {name}, mais cet alias existe déjà sur ce serveur."
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
msgstr "Vous avez tenté de créer un nouvel alias global nommé {}, mais cet alias existe déjà sur cette guilde."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Tu as tenté de créer un nouvel alias nommé {name}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces."
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Vous avez tenté de créer un nouvel alias global nommé {}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr "Un nouvel alias avec le déclencheur `{name}` a bien été créé."
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
msgstr "Un nouvel alias global avec le déclencheur `{}` a bien été créé."
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr "Ajouter un alias global à une commande."
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais une commande existe déjà avec ce nom sur ce bot."
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais cet alias existe déjà sur ce serveur."
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces."
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr "Un nouvel alias global avec le déclencheur `{name}` a bien été créé."
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr "Tente d'exécuter l'aide pour la commande de base de l'alias."
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr "{prefix}help {command}"
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr "Cet alias n'existe pas."
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
msgstr "L'alias `{}` va exécuter la commande `{}`"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr "Affiche la commande que l'alias exécute."
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
msgstr "Il n'y a pas d'alias nommé `{}`"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "L'alias `{alias_name}` exécute la commande `{command}`"
#: ../alias.py:298
msgid "There are no aliases on this guild."
msgstr "Il n'y a pas d'alias sur cette guilde."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr "Il n'y a pas d'alias nommé `{name}`"
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
msgstr "L'alias nommé `{}`a bien été supprimé."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr "Supprime un alias de ce serveur."
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr "L'alias nommé `{}`n'a pas été trouvé."
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr "Il n'y a pas d'alias sur ce bot."
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr "Alias:"
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr "Il n'y a pas d'alias sur ce serveur."
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr "L'alias nommé `{name}` a bien été supprimé."
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr "L'alias nommé `{name}` n'a pas été trouvé."
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr "Supprime un alias global existant."
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr "Il n'y a pas d'alias sur ce bot."
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr "Liste les alias disponibles sur ce serveur."
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr "Alias:"
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr "Liste les alias globaux disponibles sur ce bot."

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Hungarian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,137 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: hu_HU\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr "Nem találtható prefix."
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr ""
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr ""
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
msgstr "Egy új rövidítés `{}` létrehozva."
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
msgstr "Egy új globális rövidítés `{}` létrehozva."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr ""
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr "Nem létezik ilyen rövidítés."
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
msgstr "A(z) `{}` rövidítés a `{}` parancsot fogja végrehajtani"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
msgstr "Nem található olyan rövidítés melynek a neve `{}`"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: ../alias.py:298
msgid "There are no aliases on this guild."
msgstr "Nincsenek rövidítések ezen a szerveren."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr ""
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
msgstr "`{}` rövidítés sikeresen törölve."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr "Nem található olyan rövidítés melynek a neve `{}`."
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr "Nincsenek rövidítések ennél a botnál."
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr "Rövidítések:"
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr "Nincsenek rövidítések ezen a szerveren."
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr "Nincsenek rövidítések ennél a botnál."
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr "Rövidítések:"
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:43-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:08\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Indonesian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,137 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: id_ID\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr "Awalan tidak ditemukan."
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
msgstr "Anda mencoba untuk membuat sebuah alias baru dengan nama {} tetapi nama itu sudah menjadi perintah pada bot ini."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr ""
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
msgstr "Anda mencoba untuk membuat sebuah alias baru dengan nama {} tetapi alias itu sudah ada pada server ini."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr ""
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Anda mencoba untuk membuat sebuah alias baru dengan nama {} tetapi nama itu adalah sebuah nama alias yang tidak berlaku. Nama alias tidak boleh berisi spasi."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
msgstr "Alias baru dengan pemicu '{}' telah dibuat."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
msgstr "Anda mencoba untuk membuat sebuah alias global baru dengan nama {} tetapi nama itu sudah menjadi sebuah perintah pada bot ini."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
msgstr "Anda mencoba untuk membuat sebuah alias global baru dengan nama {} tetapi alias itu sudah ada pada server ini."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Anda mencoba untuk membuat sebuah alias global baru dengan nama {} tetapi nama itu adalah sebuah nama alias yang tidak berlaku. Nama alias tidak boleh berisi spasi."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
msgstr "Alias global baru dengan pemicu '{}' telah dibuat."
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr ""
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr "Alias tersebut tidak ditemukan."
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
msgstr "Alias '{}' akan mengeksekusi perintah '{}'"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
msgstr "Tidak ada alias dengan nama '{}'"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: ../alias.py:298
msgid "There are no aliases on this guild."
msgstr "Tidak ada alias pada guild ini."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr ""
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
msgstr "Alias dengan nama '{}' berhasil dihapus."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr "Alias dengan nama '{}' tidak ditemukan."
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr "Tidak ada alias pada bot ini."
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr "Alias:"
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr "Tidak ada alias pada server ini."
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr "Tidak ada alias pada bot ini."
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr "Alias:"
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Italian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,137 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: it_IT\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr "Nessun prefisso trovato."
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr ""
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr ""
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
msgstr "È stato creato un nuovo alias con il grilletto '{}'."
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
msgstr "È stato creato un nuovo alias globale con il grilletto '{}'."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr ""
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr "Non esiste nessun alias con questo nome."
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
msgstr "L'alias '{}' eseguirà il comando '{}'"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
msgstr "Non c'è nessun alias con il nome '{}'"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: ../alias.py:298
msgid "There are no aliases on this guild."
msgstr "Non ci sono nessun alias su questa gilda."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr ""
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
msgstr "Alias con il nome '{}' è stata eliminata."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr "Alias con il nome '{}' non è stato trovato."
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr "Non ci sono nessun alias su questo bot."
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr "Alias:"
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr "Non ci sono alias su questo server."
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr "Non ci sono nessun alias su questo bot."
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr "Alias:"
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Japanese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,137 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: ja_JP\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr "プレフィックスが見つかりません。"
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr ""
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr ""
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
msgstr "`{}`という新しいエイリアスが作成されました。"
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
msgstr "`{}`という新しいグローバルエイリアスが作成されました。"
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr ""
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr "そのようなエイリアスはありません。"
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
msgstr "`{}`のエイリアスは`{}`コマンドを実行します。"
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
msgstr "`{}`という名前のエイリアスはありません。"
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: ../alias.py:298
msgid "There are no aliases on this guild."
msgstr "このギルドにはエイリアスはありません。"
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr ""
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
msgstr "`{}`という名前のエイリアスは削除されました。"
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr "`{}`という名前のエイリアスが見つかりませんでした。"
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr "このボットにはエイリアスはありません。"
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr "アリアス:"
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr "このサーバにエイリアスはありません。"
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr "このボットにはエイリアスはありません。"
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr "アリアス:"
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2018-02-18 14:42+AKST\n"
"PO-Revision-Date: 2018-04-15 16:42-0400\n"
"POT-Creation-Date: 2019-01-11 02:18+0000\n"
"PO-Revision-Date: 2019-02-25 03:07\n"
"Last-Translator: Kowlin <boxedpp@gmail.com>\n"
"Language-Team: Korean\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 2.2\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: crowdin.com\n"
"X-Crowdin-Project: red-discordbot\n"
@@ -16,75 +16,137 @@ msgstr ""
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: ko_KR\n"
#: ../alias.py:129
#: redbot/cogs/alias/alias.py:18
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:130
msgid "No prefix found."
msgstr "프리픽스를 찾을 수 없어요."
#: ../alias.py:198
msgid "You attempted to create a new alias with the name {} but that name is already a command on this bot."
msgstr "이름이 {} 인 바로가기를 만들려고 했지만, 이 봇의 커맨드와 중복돼요."
#: redbot/cogs/alias/alias.py:179
#, docstring
msgid "Manage command aliases."
msgstr ""
#: ../alias.py:205
msgid "You attempted to create a new alias with the name {} but that alias already exists on this server."
msgstr "이름이 {} 인 바로가기를 만들려고 했지만, 해당 바로가기가 이미 이 서버에 등록되어 있어요."
#: redbot/cogs/alias/alias.py:184
#, docstring
msgid "Manage global aliases."
msgstr ""
#: ../alias.py:212
msgid "You attempted to create a new alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "이름이 {} 인 바로가기를 만들려고 했지만, 잘못된 바로가기 이름에요. 바로가기 이름에는 공백이 포함될 수 없어요."
#: redbot/cogs/alias/alias.py:191
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: ../alias.py:224
msgid "A new alias with the trigger `{}` has been created."
msgstr "트리거 `{}` 이(가) 포함된 별칭이 등록됐어요."
#: redbot/cogs/alias/alias.py:196
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: ../alias.py:236
msgid "You attempted to create a new global alias with the name {} but that name is already a command on this bot."
msgstr "이름이 {} 인 글로벌 별칭을 만들려고 했지만, 이 봇의 커맨드와 중복돼요."
#: redbot/cogs/alias/alias.py:207
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: ../alias.py:243
msgid "You attempted to create a new global alias with the name {} but that alias already exists on this server."
msgstr "이름이 {} 인 글로벌 별칭을 만들려고 했지만, 해당 별칭이 이미 이 서버에 등록되어 있어요."
#: redbot/cogs/alias/alias.py:218
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: ../alias.py:250
msgid "You attempted to create a new global alias with the name {} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "이름이 {} 인 글로벌 별칭을 만들려고 했지만, 잘못된 별칭 이름에요. 별칭 이름에는 공백이 포함될 수 없어요."
#: redbot/cogs/alias/alias.py:234
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: ../alias.py:259
msgid "A new global alias with the trigger `{}` has been created."
msgstr "트리거 `{}` 이(가) 포함된 글로벌 별칭이 등록됐어요."
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: ../alias.py:274
#: redbot/cogs/alias/alias.py:245
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:256
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr ""
#: redbot/cogs/alias/alias.py:280
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:288
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:297
msgid "{prefix}help {command}"
msgstr ""
#: redbot/cogs/alias/alias.py:302
msgid "No such alias exists."
msgstr "그런 별칭은 등록되어 있지 않아요."
#: ../alias.py:283
msgid "The `{}` alias will execute the command `{}`"
msgstr "`{}` 별칭이 `{}` 커맨드를 실행했어요."
#: redbot/cogs/alias/alias.py:307
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: ../alias.py:286
msgid "There is no alias with the name `{}`"
msgstr "`{}` 이란 이름으로 등록된 별칭이 없어요."
#: redbot/cogs/alias/alias.py:312
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: ../alias.py:298
msgid "There are no aliases on this guild."
msgstr "이 길드에 등록된 별칭이 없어요."
#: redbot/cogs/alias/alias.py:317
msgid "There is no alias with the name `{name}`"
msgstr ""
#: ../alias.py:302 ../alias.py:320
msgid "Alias with the name `{}` was successfully deleted."
msgstr "별칭 `{}` 이(가) 성공적으로 삭제됐어요."
#: redbot/cogs/alias/alias.py:323
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: ../alias.py:305 ../alias.py:323
msgid "Alias with name `{}` was not found."
msgstr "`{}` 바로가기가 등록되어 있지 않아요."
#: ../alias.py:316
msgid "There are no aliases on this bot."
msgstr "이 봇에 등록된 별칭이 없어요."
#: ../alias.py:331 ../alias.py:342
msgid "Aliases:"
msgstr "등록된 별칭 리스트 :"
#: ../alias.py:333 ../alias.py:344
#: redbot/cogs/alias/alias.py:328 redbot/cogs/alias/alias.py:364
#: redbot/cogs/alias/alias.py:375
msgid "There are no aliases on this server."
msgstr "이 서버에 등록된 별칭이 없어요."
#: redbot/cogs/alias/alias.py:333 redbot/cogs/alias/alias.py:351
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:336 redbot/cogs/alias/alias.py:354
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:341
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:346
msgid "There are no aliases on this bot."
msgstr "이 봇에 등록된 별칭이 없어요."
#: redbot/cogs/alias/alias.py:359
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:360 redbot/cogs/alias/alias.py:371
msgid "Aliases:"
msgstr "등록된 별칭 리스트 :"
#: redbot/cogs/alias/alias.py:370
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""

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