Compare commits

..

40 Commits
3.3.4 ... 3.3.6

Author SHA1 Message Date
Kowlin
b92d61e154 Update version to 3.3.6 (#3798) 2020-04-27 20:06:42 +02:00
jack1142
70ff884ebb Red 3.3.6 - Changelog (#3738)
* Add 3.3.6 section

* PR 3746

* commit b8ac70e

* PR 3747

* PR 3759 (issue 3758)

* PR 3764

* PR 3766

* PR 3767

* PR 3776

* PR 3757

* PR 3773 (issue 3772)

* PR 3740

* PR 3774

* PR 3784 (issue 3778)

* PR 3782

* PR 3783

* PR 3783

* PR 3718

* PR 3742

* PR 3791

* PR 3792

* PR 3794

* PR 3780

* PR 3790

* PR 3795

* PR 3714 (issue 3115)

* PR 3788

* Add release date
2020-04-27 19:58:41 +02:00
TrustyJAID
6f6c536236 [Alias] Create caching to call config less frequently (#3788) 2020-04-27 02:25:41 +02:00
jack1142
a1095285e4 Fix migrations from JSON driver (#3714) 2020-04-27 01:32:52 +02:00
Neuro Assassin
00d20f14b9 Add [p]cc raw command giving raw (escaped) response (#3795) 2020-04-27 01:31:43 +02:00
jack1142
560e0f7334 Add docs for updating Red (#3790)
* wip

* Add 3.0.2 or older instructions

* rephrase

* emphasis

* another rephrase

* Add 3.2.0+ instructions for Linux & Mac

* change indents
2020-04-26 19:35:59 +02:00
Draper
fc2dce6882 [Driver] Ensure JSON driver has a singular lock per cog name (#3780) 2020-04-26 18:21:48 +02:00
Draper
bd3d0dd64d Show current driver in [p]debuginfo (#3794)
Co-Authored-By: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-04-26 16:07:57 +02:00
jack1142
f824d09ed3 Update install docs to include Ubuntu 20.04 (#3792) 2020-04-25 01:54:07 +02:00
aikaterna
d7c5f86ce7 [Audio] Update Lavalink.jar version (#3791) 2020-04-24 19:15:19 +02:00
PredaaA
c760b43e5a Allow to disable escaping in chat formatting utils (#3742)
Co-Authored-By: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-04-24 18:17:19 +02:00
jack1142
b1fe807b47 Don't run command checks on each message starting with a prefix (#3718) 2020-04-24 18:12:25 +02:00
jack1142
0d6a7eb797 Stop fetching bans when checking for tempban expiration (#3783) 2020-04-24 18:11:41 +02:00
Kowlin
bf6390d72e Fix Owner ID failsafe (#3782)
* Fix Owner ID failsafe

* Update redbot/core/bot.py

Co-Authored-By: jack1142 <6032823+jack1142@users.noreply.github.com>

* Let's go with a different approach (first commit)

* Let's go with a different approach (last commit)

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-04-24 18:03:58 +02:00
jack1142
e595f1859a Handle the ints for user objects in Modlog appropriately (#3784) 2020-04-24 04:08:08 +02:00
jack1142
06930ebe2c Patched the Patch where the Patch patched too much 2020-04-24 03:33:12 +02:00
jack1142
08c96a6794 Change pyenv instructions to update pyenv when it's already installed (#3740)
* Change pyenv instructions to update pyenv when it's already installed

* Use latest Python version
2020-04-24 03:30:11 +02:00
github-actions[bot]
61db89e89d Automated Crowdin downstream (#3785)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-04-23 14:44:20 +02:00
Draper
a2c0e4ca2e Fix sleeping and improve documentation for AsyncIter (#3776)
* welp

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* moar docs

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* moar docs

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* Remove unnecessary items in `:exclude-members:`

* Make whitespace in docstrings consistent

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-04-21 13:45:03 +02:00
jack1142
b08a950c37 Stop using localised display name in stream url (#3773) 2020-04-20 20:03:34 +02:00
Draper
ad979180e5 Make the largest loops lazier and async to avoid blocking (#3767)
* lets reduce config calls here

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* Lets normalize how we name config attributes across the bot.

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* ....

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* Just a tiny PR improving config call in a lot of places (Specially events and Help)

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* stop using `bot.guilds` in `on_command_add`

* Just a tiny PR improving config call in a lot of places (Specially events and Help)

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* missed this one

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* nothing to see here

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* lets reduce config calls here

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* Just a tiny PR improving config call in a lot of places (Specially events and Help)

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* stop using `bot.guilds` in `on_command_add`

* missed this one

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* welp

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* welp

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* welp

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* jack

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* Update redbot/cogs/mod/kickban.py

Co-Authored-By: jack1142 <6032823+jack1142@users.noreply.github.com>

* Update redbot/cogs/filter/filter.py

Co-Authored-By: jack1142 <6032823+jack1142@users.noreply.github.com>

* jack

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* make all large loops async to avoid blocking larger bots

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* ...

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* okay now working AsyncGen

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* may or may not have forgotten black

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* Apply suggestions from code review

Co-Authored-By: jack1142 <6032823+jack1142@users.noreply.github.com>

* jack's review

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* DOCS

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* DOCS

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* Apply suggestions from code review

Co-Authored-By: jack1142 <6032823+jack1142@users.noreply.github.com>

* jack

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* Apply suggestions from code review

Co-Authored-By: jack1142 <6032823+jack1142@users.noreply.github.com>

* Update redbot/core/utils/__init__.py

Co-Authored-By: jack1142 <6032823+jack1142@users.noreply.github.com>

* Update redbot/core/utils/__init__.py

Co-Authored-By: jack1142 <6032823+jack1142@users.noreply.github.com>

* avoid loop if possible and if not only iterate once

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-04-20 19:56:28 +02:00
jack1142
465812b673 Add a command to remove bot's avatar (#3757)
* Add a command to remove bot's avatar

* blah
2020-04-20 19:40:14 +02:00
Draper
f59e77002b Optimize config calls in few places (#3766)
* Just a tiny PR improving config call in a lot of places (Specially events and Help)

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* missed this one

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* welp

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* welp

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* welp

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* jack

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* Update redbot/cogs/mod/kickban.py

Co-Authored-By: jack1142 <6032823+jack1142@users.noreply.github.com>

* jack

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-04-20 19:29:36 +02:00
Draper
e4018ec677 Normalize names of attributes with Config instances (#3765)
* Lets normalize how we name config attributes across the bot.

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* ....

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* nothing to see here

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
2020-04-20 19:12:57 +02:00
Draper
df7ca65108 Reduce calls to config in the on_command_add event (#3764)
* lets reduce config calls here

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>

* stop using `bot.guilds` in `on_command_add`

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-04-20 19:10:58 +02:00
github-actions[bot]
d12fcac9af Automated Crowdin downstream (#3761)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-04-18 17:16:57 +02:00
Ryan
66fc28ec1b [Trivia] Correct spelling of compact disc in games.yaml (#3759) 2020-04-15 00:08:17 +02:00
Kowlin
10ad2a559a [Core] Support setting avatar via attachment (#3747)
* [Core] Support avatars via attachments

* Fix the thing I was actually annoyed about.

* Updated error texts

* English is a damn annoying language.
2020-04-13 02:27:55 +02:00
MiniJennJenn
b8ac70e59a Update leagueoflegends.yaml 2020-04-12 17:41:42 -04:00
jack1142
7492636818 Fix ignored channels list in [p]ignore (#3746)
* Fix ignored channels list

* Update settings_caches.py

* Update core_commands.py
2020-04-12 00:09:05 +02:00
github-actions[bot]
36a0eabf4a Automated Crowdin downstream (#3739)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-04-09 21:27:35 +02:00
jack1142
cf4fdbbab1 dev bump (#3736) 2020-04-09 00:39:48 +02:00
Kowlin
f1b6b5f6f9 Update changelog_3_3_0.rst (#3737) 2020-04-09 00:32:20 +02:00
Kowlin
e06b3fceb5 Version bump (#3735) 2020-04-09 00:26:43 +02:00
jack1142
4628dd07e4 Red 3.3.5 - Changelog (#3727)
* Add 3.3.5 section

* PR 3730

* PR 3734

* Remove empty sections and add release date
2020-04-09 00:24:09 +02:00
jack1142
55a3d9b157 Properly check for command's existence in [p]alias add (#3734) 2020-04-09 00:19:14 +02:00
jack1142
c70c1d97e5 Revert "[CI] Less weekly churn from automated tasks (#3548)" (#3732)
This reverts commit f6c85cd37a.
2020-04-08 17:25:30 +02:00
Kowlin
da4e4d4ad0 Stop Outdated field from showing in [p]info when up-to-date (#3730)
* Oudated-B-Gone!

* Meh

* mehhh
2020-04-07 10:01:51 +02:00
Kowlin
3d9ee3f2b4 Dev version bump, for realzies (#3726)
* Damn tests that keep breaking if you forget a single damn number!

Who designed this shit?!

* Update __init__.py
2020-04-05 04:10:32 +02:00
Kowlin
b9331ffa55 Update __init__.py (#3725) 2020-04-05 04:05:53 +02:00
844 changed files with 19621 additions and 20436 deletions

View File

@@ -35,9 +35,6 @@ jobs:
- name: Download translations
run: |
make download_translations
- name: Remove files from PR which only have a date changed
run: |
git checkout HEAD -- $(git diff HEAD --numstat | awk 'BEGIN {ORS=" "} $1 == "1" && $2 == "1" && $3 ~ /.po$/ {print $3}')
- name: Create Pull Request
uses: peter-evans/create-pull-request@v2
with:

View File

@@ -1,5 +1,114 @@
.. 3.3.x Changelogs
Redbot 3.3.6 (2020-04-27)
=========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Drapersniper`, :ghuser:`jack1142`, :ghuser:`Kowlin`, :ghuser:`MiniJennJenn`, :ghuser:`NeuroAssassin`, :ghuser:`PredaaA`, :ghuser:`TrustyJAID`, :ghuser:`yamikaitou`
End-user changelog
------------------
Core Bot
********
- Converting from and to Postgres driver with ``redbot-setup convert`` have been fixed (:issue:`3714`, :issue:`3115`)
- Fixed big delays in commands that happened when the bot was owner-less (or if it only used co-owners feature) and command caller wasn't the owner (:issue:`3782`)
- Various optimizations
- Reduced calls to data backend when loading bot's commands (:issue:`3764`)
- Reduced calls to data backend when showing help for cogs/commands (:issue:`3766`)
- Improved performance for bots with big amount of guilds (:issue:`3767`)
- Mod cog no longer fetches guild's bans every 60 seconds when handling unbanning for tempbans (:issue:`3783`)
- Reduced the bot load for messages starting with a prefix when fuzzy search is disabled (:issue:`3718`)
- Aliases in Alias cog are now cached for better performance (:issue:`3788`)
Core Commands
*************
- ``[p]set avatar`` now supports setting avatar using attachment (:issue:`3747`)
- Added ``[p]set avatar remove`` subcommand for removing bot's avatar (:issue:`3757`)
- Fixed list of ignored channels that is shown in ``[p]ignore``/``[p]unignore`` (:issue:`3746`)
Audio
*****
- Age-restricted tracks, live streams, and mix playlists from YouTube should work in Audio again (:issue:`3791`)
- Soundcloud's sets and playlists with more than 50 tracks should work in Audio again (:issue:`3791`)
CustomCommands
**************
- Added ``[p]cc raw`` command that gives you the raw response of a custom command for ease of copy pasting (:issue:`3795`)
Modlog
******
- Fixed ``AttributeError`` for cases whose moderator doesn't share the server with the bot (:issue:`3784`, :issue:`3778`)
Streams
*******
- Fixed incorrect stream URLs for Twitch channels that have localised display name (:issue:`3773`, :issue:`3772`)
Trivia
******
- Fixed the error in ``[p]trivia stop`` that happened when there was no ongoing trivia session in the channel (:issue:`3774`)
Trivia Lists
************
- Updated ``leagueoflegends`` list with new changes to League of Legends (`b8ac70e <https://github.com/Cog-Creators/Red-DiscordBot/commit/b8ac70e59aa1328f246784f14f992d6ffe00d778>`_)
Developer changelog
-------------------
Utility Functions
*****************
- Added `redbot.core.utils.AsyncIter` utility class which allows you to wrap regular iterable into async iterator yielding items and sleeping for ``delay`` seconds every ``steps`` items (:issue:`3767`, :issue:`3776`)
- `bold()`, `italics()`, `strikethrough()`, and `underline()` now accept ``escape_formatting`` argument that can be used to disable escaping of markdown formatting in passed text (:issue:`3742`)
Documentation changes
---------------------
- Added `document about updating Red <update_red>` (:issue:`3790`)
- ``pyenv`` instructions will now update ``pyenv`` if it's already installed (:issue:`3740`)
- Updated Python version in ``pyenv`` instructions (:issue:`3740`)
- Updated install docs to include Ubuntu 20.04 (:issue:`3792`)
Miscellaneous
-------------
- **Config** - JSON driver will now properly have only one lock per cog name (:issue:`3780`)
- **Core Commands** - ``[p]debuginfo`` now shows used storage type (:issue:`3794`)
- **Trivia** - Corrected spelling of Compact Disc in ``games`` list (:issue:`3759`, :issue:`3758`)
Redbot 3.3.5 (2020-04-09)
=========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`jack1142`, :ghuser:`Kowlin`
End-user changelog
------------------
Core Bot
********
- "Outdated" field no longer shows in ``[p]info`` when Red is up-to-date (:issue:`3730`)
Alias
*****
- Fixed regression in ``[p]alias add`` that caused it to reject commands containing arguments (:issue:`3734`)
Redbot 3.3.4 (2020-04-05)
=========================
@@ -409,4 +518,4 @@ Mod
Permissions
-----------
- Now has stronger enforcement of prioritizing botwide settings.
- Now has stronger enforcement of prioritizing botwide settings.

View File

@@ -202,15 +202,15 @@ the built-in Economy credits::
class Pets:
def __init__(self):
self.conf = Config.get_conf(self, 1234567890)
self.config = Config.get_conf(self, 1234567890)
# Here we'll assign some default costs for the pets
self.conf.register_global(
self.config.register_global(
dog=100,
cat=100,
bird=50
)
self.conf.register_user(
self.config.register_user(
pets={}
)
@@ -229,7 +229,7 @@ And now that the cog is set up we'll need to create some commands that allow use
# We will need to use "get_raw"
try:
cost = await self.conf.get_raw(pet_type)
cost = await self.config.get_raw(pet_type)
except KeyError:
# KeyError is thrown whenever the data you try to access does not
# exist in the registered defaults or in the saved data.
@@ -241,15 +241,15 @@ assign a new pet to the user. This is very easily done using the V3 bank API and
# continued
if await bank.can_spend(ctx.author, cost):
await self.conf.user(ctx.author).pets.set_raw(
await self.config.user(ctx.author).pets.set_raw(
pet_name, value={'cost': cost, 'hunger': 0}
)
# this is equivalent to doing the following
pets = await self.conf.user(ctx.author).pets()
pets = await self.config.user(ctx.author).pets()
pets[pet_name] = {'cost': cost, 'hunger': 0}
await self.conf.user(ctx.author).pets.set(pets)
await self.config.user(ctx.author).pets.set(pets)
Since the pets can get hungry we're gonna need a command that let's pet owners check how hungry their pets are::
@@ -257,7 +257,7 @@ Since the pets can get hungry we're gonna need a command that let's pet owners c
@commands.command()
async def hunger(self, ctx, pet_name: str):
try:
hunger = await self.conf.user(ctx.author).pets.get_raw(pet_name, 'hunger')
hunger = await self.config.user(ctx.author).pets.get_raw(pet_name, 'hunger')
except KeyError:
# Remember, this is thrown if something in the provided identifiers
# is not found in the saved data or the defaults.
@@ -274,7 +274,7 @@ We're responsible pet owners here, so we've also got to have a way to feed our p
# This is a bit more complicated because we need to check if the pet is
# owned first.
try:
pet = await self.conf.user(ctx.author).pets.get_raw(pet_name)
pet = await self.config.user(ctx.author).pets.get_raw(pet_name)
except KeyError:
# If the given pet name doesn't exist in our data
await ctx.send("You don't own that pet!")
@@ -285,12 +285,12 @@ We're responsible pet owners here, so we've also got to have a way to feed our p
# Determine the new hunger and make sure it doesn't go negative
new_hunger = max(hunger - food, 0)
await self.conf.user(ctx.author).pets.set_raw(
await self.config.user(ctx.author).pets.set_raw(
pet_name, 'hunger', value=new_hunger
)
# We could accomplish the same thing a slightly different way
await self.conf.user(ctx.author).pets.get_attr(pet_name).hunger.set(new_hunger)
await self.config.user(ctx.author).pets.get_attr(pet_name).hunger.set(new_hunger)
await ctx.send("Your pet is now at {}/100 hunger!".format(new_hunger)
@@ -300,7 +300,7 @@ Of course, if we're less than responsible pet owners, there are consequences::
@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)
pet = await self.config.user(member).pets.get_raw(pet_name)
except KeyError:
await ctx.send("That person doesn't own that pet!")
return
@@ -310,15 +310,15 @@ Of course, if we're less than responsible pet owners, there are consequences::
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)
await self.config.user(member).pets.clear_raw(pet_name)
# this is equivalent to doing the following
pets = await self.conf.user(member).pets()
pets = await self.config.user(member).pets()
del pets[pet_name]
await self.conf.user(member).pets.set(pets)
await self.config.user(member).pets.set(pets)
await self.conf.user(ctx.author).pets.set_raw(pet_name, value=pet)
await self.config.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."
@@ -351,15 +351,15 @@ much the same way they would in V2. The following examples will demonstrate how
class ExampleCog:
def __init__(self):
self.conf = Config.get_conf(self, 1234567890)
self.config = Config.get_conf(self, 1234567890)
self.data = {}
async def load_data(self):
self.data = await self.conf.custom("V2", "V2").all()
self.data = await self.config.custom("V2", "V2").all()
async def save_data(self):
await self.conf.custom("V2", "V2").set(self.data)
await self.config.custom("V2", "V2").set(self.data)
async def setup(bot):
@@ -407,13 +407,13 @@ API Reference
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()
>>> config = Config.get_conf(self, identifier=999)
>>> config.register_global(foo={})
>>> await config.foo.set_raw(123, value=True)
>>> await config.foo()
{'123': True}
>>> await conf.foo.set({123: True, 456: {789: False}}
>>> await conf.foo()
>>> await config.foo.set({123: True, 456: {789: False}}
>>> await config.foo()
{'123': True, '456': {'789': False}}
.. automodule:: redbot.core.config

View File

@@ -10,6 +10,18 @@ General Utility
.. automodule:: redbot.core.utils
:members: deduplicate_iterables, bounded_gather, bounded_gather_iter
.. autoclass:: AsyncIter
:members:
:special-members: __await__
:exclude-members: enumerate, filter
.. automethod:: enumerate
:async-for:
.. automethod:: filter
:async-for:
Chat Formatting
===============

View File

@@ -14,6 +14,7 @@ Welcome to Red - Discord Bot's documentation!
install_windows
install_linux_mac
update_red
about_venv
autostart_systemd
autostart_pm2

View File

@@ -239,9 +239,9 @@ Continue by `creating-venv-linux`.
.. _install-ubuntu:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ubuntu LTS versions (18.04 and 16.04)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ubuntu LTS versions (20.04, 18.04, and 16.04)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We recommend adding the ``git-core`` ppa to install Git 2.11 or greater:
@@ -313,7 +313,7 @@ virtual environment.
.. code-block:: none
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
command -v pyenv && pyenv update || curl https://pyenv.run | 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.
@@ -322,7 +322,7 @@ Then run the following command:
.. code-block:: none
CONFIGURE_OPTS=--enable-optimizations pyenv install 3.8.1 -v
CONFIGURE_OPTS=--enable-optimizations pyenv install 3.8.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
@@ -334,7 +334,7 @@ After that is finished, run:
.. code-block:: none
pyenv global 3.8.1
pyenv global 3.8.2
Pyenv is now installed and your system should be configured to run Python 3.8.

124
docs/update_red.rst Normal file
View File

@@ -0,0 +1,124 @@
============
Updating Red
============
Updating to the latest version of Red has several benefits:
- New features and improvements are added.
- Bugs are fixed.
- Your bot is safe from security vulnerabilities that have been found.
Here are some things to consider to help make your upgrade as smooth as possible.
.. note::
If you're developing for Red, you should also look for "Breaking changes" sections in release notes for each minor (X.Y.0) version that's been released since you last updated Red.
Updating differs depending on the version you currently have. Next sections will explain how to upgrade to latest version of Red (|version|) from the version that is in the header of the section.
Red 3.2.0 or newer
******************
Windows
-------
If you have Red 3.2.0 or newer, all you have to do to upgrade Red is running 2 commands.
1. Activate your venv with the following command:
.. code:: none
"%userprofile%\redenv\Scripts\activate.bat"
2. Update Red with this command:
.. code:: none
python -m pip install -U Red-DiscordBot
.. attention::
If you're using PostgreSQL data backend, replace ``Red-DiscordBot`` in the second command with ``Red-DiscordBot[postgres]``
Linux & Mac
-----------
If you have Red 3.2.0 or newer, all you have to do to upgrade Red is running 2 commands.
1. Activate your virtual environment.
If you used ``venv`` for your virtual environment, use:
.. code:: none
source ~/redenv/bin/activate
If you used ``pyenv`` for your virtual environment, use:
.. code:: none
pyenv shell <name>
2. Update Red with this command:
.. code:: none
python -m pip install -U Red-DiscordBot
.. attention::
If you're using PostgreSQL data backend, replace ``Red-DiscordBot`` in the second command with ``Red-DiscordBot[postgres]``
Red 3.1.X
*********
If you have Red 3.1.X, you will need to follow the install instructions for your operating system:
- `Windows <install_windows>`
- `Linux & Mac <install_linux_mac>`
Follow every step to ensure you have all dependencies up-to-date and only skip ``redbot-setup`` step as you already have a bot instance.
If you already have Red installed in a virtual environment, you will need to delete it before starting this process.
.. attention::
Red 3.2 dropped support for the MongoDB driver
- If you were not using the MongoDB driver, this does not affect you.
- If you were using a 3rd party cog which required MongoDB, it probably still does.
- If you were using the MongoDB driver, **prior to launching your instance after update**,
you will need to run the following commands to convert:
.. code::
python -m pip install dnspython~=1.16.0 motor~=2.0.0 pymongo~=3.8.0
redbot-setup convert [instancename] json
Red 3.0.2 and older
*******************
.. important::
Red 3.2 dropped support for the MongoDB driver
- If you were not using the MongoDB driver, this does not affect you.
- If you were using a 3rd party cog which required MongoDB, it probably still does.
- If you were using the MongoDB driver, **prior to updating**, you will need to convert your data to JSON backend,
using following command:
.. code::
redbot-setup --edit
If you have Red 3.0.2 or older, you will need to follow the install instructions for your operating system:
- `Windows <install_windows>`
- `Linux & Mac <install_linux_mac>`
Follow every step to ensure you have all dependencies up-to-date and only skip ``redbot-setup`` step as you already have a bot instance.
If you already have Red installed in a virtual environment, you will need to delete it before starting this process.

View File

@@ -191,7 +191,7 @@ def _update_event_loop_policy():
_asyncio.set_event_loop_policy(_uvloop.EventLoopPolicy())
__version__ = "3.3.4"
__version__ = "3.3.6"
version_info = VersionInfo.from_str(__version__)
# Filter fuzzywuzzy slow sequence matcher warning

View File

@@ -70,11 +70,11 @@ class Admin(commands.Cog):
"""A collection of server administration utilities."""
def __init__(self):
self.conf = Config.get_conf(self, 8237492837454039, force_registration=True)
self.config = Config.get_conf(self, 8237492837454039, force_registration=True)
self.conf.register_global(serverlocked=False)
self.config.register_global(serverlocked=False)
self.conf.register_guild(
self.config.register_guild(
announce_ignore=False,
announce_channel=None, # Integer ID
selfroles=[], # List of integer ID's
@@ -290,7 +290,7 @@ class Admin(commands.Cog):
async def announce(self, ctx: commands.Context, *, message: str):
"""Announce a message to all servers the bot is in."""
if not self.is_announcing():
announcer = Announcer(ctx, message, config=self.conf)
announcer = Announcer(ctx, message, config=self.config)
announcer.start()
self.__current_announcer = announcer
@@ -325,7 +325,7 @@ class Admin(commands.Cog):
"""
if channel is None:
channel = ctx.channel
await self.conf.guild(ctx.guild).announce_channel.set(channel.id)
await self.config.guild(ctx.guild).announce_channel.set(channel.id)
await ctx.send(
_("The announcement channel has been set to {channel.mention}").format(channel=channel)
)
@@ -333,8 +333,8 @@ class Admin(commands.Cog):
@announceset.command(name="ignore")
async def announceset_ignore(self, ctx):
"""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)
ignored = await self.config.guild(ctx.guild).announce_ignore()
await self.config.guild(ctx.guild).announce_ignore.set(not ignored)
if ignored:
await ctx.send(
_("The server {guild.name} will receive announcements.").format(guild=ctx.guild)
@@ -352,14 +352,14 @@ class Admin(commands.Cog):
:param guild:
:return:
"""
selfrole_ids = set(await self.conf.guild(guild).selfroles())
selfrole_ids = set(await self.config.guild(guild).selfroles())
guild_roles = guild.roles
valid_roles = tuple(r for r in guild_roles if r.id in selfrole_ids)
valid_role_ids = set(r.id for r in valid_roles)
if selfrole_ids != valid_role_ids:
await self.conf.guild(guild).selfroles.set(list(valid_role_ids))
await self.config.guild(guild).selfroles.set(list(valid_role_ids))
# noinspection PyTypeChecker
return valid_roles
@@ -427,7 +427,7 @@ class Admin(commands.Cog):
).format(role=role)
)
return
async with self.conf.guild(ctx.guild).selfroles() as curr_selfroles:
async with self.config.guild(ctx.guild).selfroles() as curr_selfroles:
if role.id not in curr_selfroles:
curr_selfroles.append(role.id)
await ctx.send(_("Added."))
@@ -449,7 +449,7 @@ class Admin(commands.Cog):
).format(role=role)
)
return
async with self.conf.guild(ctx.guild).selfroles() as curr_selfroles:
async with self.config.guild(ctx.guild).selfroles() as curr_selfroles:
curr_selfroles.remove(role.id)
await ctx.send(_("Removed."))
@@ -458,8 +458,8 @@ class Admin(commands.Cog):
@checks.is_owner()
async def serverlock(self, ctx: commands.Context):
"""Lock a bot to its current servers only."""
serverlocked = await self.conf.serverlocked()
await self.conf.serverlocked.set(not serverlocked)
serverlocked = await self.config.serverlocked()
await self.config.serverlocked.set(not serverlocked)
if serverlocked:
await ctx.send(_("The bot is no longer serverlocked."))
@@ -468,7 +468,7 @@ class Admin(commands.Cog):
# region Event Handlers
async def on_guild_join(self, guild: discord.Guild):
if await self.conf.serverlocked():
if await self.config.serverlocked():
await guild.leave()

View File

@@ -3,6 +3,7 @@ import asyncio
import discord
from redbot.core import commands
from redbot.core.i18n import Translator
from redbot.core.utils import AsyncIter
from redbot.core.utils.chat_formatting import humanize_list, inline
_ = Translator("Announcer", __file__)
@@ -55,7 +56,7 @@ class Announcer:
async def announcer(self):
guild_list = self.ctx.bot.guilds
failed = []
for g in guild_list:
async for g in AsyncIter(guild_list, delay=0.5):
if not self.active:
return
@@ -68,7 +69,6 @@ class Announcer:
await channel.send(self.message)
except discord.Forbidden:
failed.append(str(g.id))
await asyncio.sleep(0.5)
if failed:
msg = (

View File

@@ -14,8 +14,7 @@ class SelfRole(commands.Converter):
role_converter = commands.RoleConverter()
role = await role_converter.convert(ctx, arg)
conf = admin.conf
selfroles = await conf.guild(ctx.guild).selfroles()
selfroles = await admin.config.guild(ctx.guild).selfroles()
if role.id not in selfroles:
raise commands.BadArgument(_("The provided role is not a valid selfrole."))

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:11\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Afrikaans\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: af\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: af_ZA\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:11\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"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-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ar\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: ar_SA\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr "لم يتم تحميل وحدة الأدمن cog."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr "الرتبة المذكورة ليست على قائمة الرتب الذاتية."

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:11\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bulgarian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: bg\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: bg_BG\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:11\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ca\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: ca_ES\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-03-05 12:11\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Czech\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: cs\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: cs_CZ\n"
#: redbot/cogs/admin/admin.py:17
@@ -158,7 +156,7 @@ msgstr "Aplikovat self-role."
#: redbot/cogs/admin/admin.py:375
#, docstring
msgid "\\n Add a selfrole to yourself.\\n\\n Server admins must have configured the role as user settable.\\n NOTE: The role is case sensitive!\\n "
msgstr "\\n Odstraní vám self-roli.\\n\\n Administrátoři serveru musí mít nastavenou roli podle nastaveného uživatele.\\n POZNÁMKA: Role je citlivá na malá a velká písmena!\\n "
msgstr "\\n Přidá vám self-roli.\\n\\n Administrátoři serveru musí mít nastavenou roli podle nastaveného uživatele.\\n POZNÁMKA: Role je citlivá na malá a velká písmena!\\n "
#: redbot/cogs/admin/admin.py:386
#, docstring
@@ -234,7 +232,7 @@ msgstr "Nemohu oznámit následujícím serverům: "
msgid "The Admin cog is not loaded."
msgstr "Admin cog není načten."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr "Daná role není platná self-role."

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:12\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Danish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: da\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: da_DK\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: de\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: de_DE\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr "Ich konnte die Ankündigung auf diesen Servern nicht ausführen: "
msgid "The Admin cog is not loaded."
msgstr "Das Admin-Cog ist nicht geladen."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr "Die angegebene Rolle ist keine gültige selbst auswählbare Rolle."

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:13\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Greek\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: el\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: el_GR\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:16\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: es-ES\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: es_ES\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr "El cog Admin no está cargado."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr "El rol proporcionado no es un selfrole válido."

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:13\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: fi\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: fi_FI\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-03-12 12:12\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: fr\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: fr_FR\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr "Je n'ai pas pu annoncer aux serveurs suivants : "
msgid "The Admin cog is not loaded."
msgstr "Le cog Admin n'est pas chargé."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
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,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:13\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hebrew\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: he\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: he_IL\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:13\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hungarian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: hu\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: hu_HU\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:14\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Indonesian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: id\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: id_ID\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:14\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: it\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: it_IT\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr "Il cog Admin non è caricato."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr "Il ruolo fornito non è un ruolo autoassegnabile valido."

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:14\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Japanese\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ja\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: ja_JP\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:14\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Korean\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ko\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: ko_KR\n"
#: redbot/cogs/admin/admin.py:17
@@ -190,7 +188,7 @@ msgstr ""
#: redbot/cogs/admin/admin.py:433
msgid "Added."
msgstr ""
msgstr "추가됐어요."
#: redbot/cogs/admin/admin.py:436
msgid "That role is already a selfrole."
@@ -207,7 +205,7 @@ msgstr ""
#: redbot/cogs/admin/admin.py:455
msgid "Removed."
msgstr ""
msgstr "제거됐어요."
#: redbot/cogs/admin/admin.py:460
#, docstring
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:12\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: nl\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: nl_NL\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr "Ik kon de volgende servers niet aankondigen: "
msgid "The Admin cog is not loaded."
msgstr "De admin cog is niet geladen."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr "De ingevulde rol is geen beschikbare selfrole."

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:14\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Norwegian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: no\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: no_NO\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:14\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Polish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"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-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
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr "Moduł Admin nie jest załadowany."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-03-26 12:56\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Portuguese, Brazilian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: pt-BR\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: pt_BR\n"
#: redbot/cogs/admin/admin.py:17
@@ -232,9 +230,9 @@ msgstr "Não pude anunciar nos seguintes servidores: "
#: redbot/cogs/admin/converters.py:12
msgid "The Admin cog is not loaded."
msgstr "A engrenagem Admin não está carregada."
msgstr "O cog 'Admin' não está carregado."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr "O cargo fornecido não é um cargo autoatribuível válido."

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:15\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Portuguese\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: pt-PT\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: pt_PT\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr "O cog 'Admin' não está carregado."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr "O cargo indicado não é um cargo definível válido."

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:15\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Romanian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ro\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: ro_RO\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-03-05 12:14\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Russian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"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-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ru\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: ru_RU\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr "Я не могу сделать объявление на следующ
msgid "The Admin cog is not loaded."
msgstr "Модуль Admin не загружен."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr "Предоставленная роль не является допустимой ролью."

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:16\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Slovak\n"
"MIME-Version: 1.0\n"
@@ -12,16 +11,15 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\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 ""
msgstr "Pokúsil som sa urobiť niečo, pre čo mi Discord odoprel povolenie. Váš príkaz sa nepodarilo úspešne dokončiť."
#: redbot/cogs/admin/admin.py:22
msgid "I can not give {role.name} to {member.display_name} because that role is higher than or equal to my highest role in the Discord hierarchy."
msgstr ""
msgstr "Nemôžem dať {role.name} na {member.display_name} pretože táto rola je vyššia alebo rovná mojej najvyššej rolí v Discord hierarchií."
#: redbot/cogs/admin/admin.py:28
msgid "I can not remove {role.name} from {member.display_name} because that role is higher than or equal to my highest role in the Discord hierarchy."
@@ -49,20 +47,22 @@ msgstr ""
#: redbot/cogs/admin/admin.py:60
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
msgstr "Už niečo oznamujem. Ak by ste chceli urobiť iné oznámenie, prosím, najskôr použite `{prefix} oznámiť zrušenie`."
#: redbot/cogs/admin/admin.py:70
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
msgstr "\n"
"Zbierka obslužných programov pre správu servera."
#: redbot/cogs/admin/admin.py:126
msgid "{member.display_name} already has the role {role.name}."
msgstr ""
msgstr "{member.display_name} už má rolu {role.name}."
#: redbot/cogs/admin/admin.py:146
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
msgstr "\n"
"Úspešne som pridal {role.name} do {member.display_name}"
#: redbot/cogs/admin/admin.py:156
msgid "{member.display_name} does not have the role {role.name}."
@@ -234,7 +234,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:15\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Serbian (Cyrillic)\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: sr\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: sr_SP\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:16\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Swedish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: sv-SE\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: sv_SE\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr "Admin cog är inte laddad."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr "Den angivna rollen är inte en giltig självroll."

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:16\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Turkish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\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
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr "The Admin eklentisi yüklenmedi."
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr "Girilen selfrol geçerli değil."

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:16\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Ukrainian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"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-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: uk\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: uk_UA\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:16\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Vietnamese\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: vi\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: vi_VN\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:11\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese Simplified\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: zh-CN\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: zh_CN\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:12\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese Traditional, Hong Kong\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: zh-HK\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: zh_HK\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -1,8 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:12\n"
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese Traditional\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: zh-TW\n"
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
"Language: zh_TW\n"
#: redbot/cogs/admin/admin.py:17
@@ -234,7 +232,7 @@ msgstr ""
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:21
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""

View File

@@ -2,5 +2,7 @@ from .alias import Alias
from redbot.core.bot import Red
def setup(bot: Red):
bot.add_cog(Alias(bot))
async def setup(bot: Red):
cog = Alias(bot)
await cog.initialize()
bot.add_cog(cog)

View File

@@ -1,16 +1,15 @@
from copy import copy
from re import findall, search
from re import search
from string import Formatter
from typing import Generator, Tuple, Iterable, Optional
from typing import Dict
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
from redbot.core.bot import Red
from .alias_entry import AliasEntry
from .alias_entry import AliasEntry, AliasCache, ArgParseError
_ = Translator("Alias", __file__)
@@ -26,10 +25,6 @@ class _TrackingFormatter(Formatter):
return super().get_value(key, args, kwargs)
class ArgParseError(Exception):
pass
@cog_i18n(_)
class Alias(commands.Cog):
"""Create aliases for commands.
@@ -42,51 +37,23 @@ class Alias(commands.Cog):
and append them to the stored alias.
"""
default_global_settings = {"entries": []}
default_global_settings: Dict[str, list] = {"entries": []}
default_guild_settings = {"enabled": False, "entries": []} # Going to be a list of dicts
default_guild_settings: Dict[str, list] = {"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)
self.config = Config.get_conf(self, 8927348724)
self._aliases.register_global(**self.default_global_settings)
self._aliases.register_guild(**self.default_guild_settings)
self.config.register_global(**self.default_global_settings)
self.config.register_guild(**self.default_guild_settings)
self._aliases: AliasCache = AliasCache(config=self.config, cache_enabled=True)
async def unloaded_aliases(self, guild: discord.Guild) -> Generator[AliasEntry, None, None]:
return (AliasEntry.from_json(d) for d in (await self._aliases.guild(guild).entries()))
async def unloaded_global_aliases(self) -> Generator[AliasEntry, None, None]:
return (AliasEntry.from_json(d) for d in (await self._aliases.entries()))
async def loaded_aliases(self, guild: discord.Guild) -> Generator[AliasEntry, None, None]:
return (
AliasEntry.from_json(d, bot=self.bot)
for d in (await self._aliases.guild(guild).entries())
)
async def loaded_global_aliases(self) -> Generator[AliasEntry, None, None]:
return (AliasEntry.from_json(d, bot=self.bot) for d in (await self._aliases.entries()))
async def is_alias(
self,
guild: Optional[discord.Guild],
alias_name: str,
server_aliases: Iterable[AliasEntry] = (),
) -> Tuple[bool, Optional[AliasEntry]]:
if not server_aliases and guild is not None:
server_aliases = await self.unloaded_aliases(guild)
global_aliases = await self.unloaded_global_aliases()
for aliases in (server_aliases, global_aliases):
for alias in aliases:
if alias.name == alias_name:
return True, alias
return False, None
async def initialize(self):
# This can be where we set the cache_enabled attribute later
if not self._aliases._loaded:
await self._aliases.load_aliases()
def is_command(self, alias_name: str) -> bool:
"""
@@ -100,56 +67,6 @@ class Alias(commands.Cog):
def is_valid_alias_name(alias_name: str) -> bool:
return not bool(search(r"\s", alias_name)) and alias_name.isprintable()
async def add_alias(
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_:
settings = self._aliases
else:
settings = self._aliases.guild(ctx.guild)
await settings.enabled.set(True)
async with settings.entries() as curr_aliases:
curr_aliases.append(alias.to_json())
return alias
async def delete_alias(
self, ctx: commands.Context, alias_name: str, global_: bool = False
) -> bool:
if global_:
settings = self._aliases
else:
settings = self._aliases.guild(ctx.guild)
async with settings.entries() as aliases:
for alias in aliases:
alias_obj = AliasEntry.from_json(alias)
if alias_obj.name == alias_name:
aliases.remove(alias)
return True
return False
async def get_prefix(self, message: discord.Message) -> str:
"""
Tries to determine what prefix is used in a message object.
@@ -167,57 +84,11 @@ class Alias(commands.Cog):
return p
raise ValueError(_("No prefix found."))
def get_extra_args_from_alias(
self, message: discord.Message, prefix: str, alias: AliasEntry
) -> str:
"""
When an alias is executed by a user in chat this function tries
to get any extra arguments passed in with the call.
Whitespace will be trimmed from both ends.
:param message:
:param prefix:
:param alias:
:return:
"""
known_content_length = len(prefix) + len(alias.name)
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(
self, message: discord.Message, aliases: Iterable[AliasEntry] = None
):
try:
prefix = await self.get_prefix(message)
except ValueError:
return
try:
potential_alias = message.content[len(prefix) :].split(" ")[0]
except IndexError:
return False
is_alias, alias = await self.is_alias(
message.guild, potential_alias, server_aliases=aliases
)
if is_alias:
await self.call_alias(message, prefix, alias)
async def call_alias(self, message: discord.Message, prefix: str, alias: AliasEntry):
new_message = copy(message)
try:
args = self.get_extra_args_from_alias(message, prefix, alias)
except commands.BadArgument as bae:
args = alias.get_extra_args_from_alias(message, prefix)
except commands.BadArgument:
return
trackform = _TrackingFormatter()
@@ -257,8 +128,8 @@ class Alias(commands.Cog):
)
return
is_alias, something_useless = await self.is_alias(ctx.guild, alias_name)
if is_alias:
alias = await self._aliases.get_alias(ctx.guild, alias_name)
if alias:
await ctx.send(
_(
"You attempted to create a new alias"
@@ -280,7 +151,7 @@ class Alias(commands.Cog):
)
return
given_command_exists = self.bot.get_command(command) is not None
given_command_exists = self.bot.get_command(command.split(maxsplit=1)[0]) is not None
if not given_command_exists:
await ctx.send(
_("You attempted to create a new alias for a command that doesn't exist.")
@@ -292,7 +163,7 @@ class Alias(commands.Cog):
# and that the alias name is valid.
try:
await self.add_alias(ctx, alias_name, command)
await self._aliases.add_alias(ctx, alias_name, command)
except ArgParseError as e:
return await ctx.send(" ".join(e.args))
@@ -316,8 +187,8 @@ class Alias(commands.Cog):
)
return
is_alias, something_useless = await self.is_alias(ctx.guild, alias_name)
if is_alias:
alias = await self._aliases.get_alias(ctx.guild, alias_name)
if alias:
await ctx.send(
_(
"You attempted to create a new global alias"
@@ -341,7 +212,7 @@ class Alias(commands.Cog):
# endregion
try:
await self.add_alias(ctx, alias_name, command, global_=True)
await self._aliases.add_alias(ctx, alias_name, command, global_=True)
except ArgParseError as e:
return await ctx.send(" ".join(e.args))
@@ -355,8 +226,8 @@ class Alias(commands.Cog):
@commands.guild_only()
async def _help_alias(self, ctx: commands.Context, alias_name: str):
"""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:
alias = await self._aliases.get_alias(ctx.guild, alias_name=alias_name)
if alias:
if self.is_command(alias.command):
base_cmd = alias.command
else:
@@ -372,9 +243,9 @@ class Alias(commands.Cog):
@commands.guild_only()
async def _show_alias(self, ctx: commands.Context, alias_name: str):
"""Show what command the alias executes."""
is_alias, alias = await self.is_alias(ctx.guild, alias_name)
alias = await self._aliases.get_alias(ctx.guild, alias_name)
if is_alias:
if alias:
await ctx.send(
_("The `{alias_name}` alias will execute the command `{command}`").format(
alias_name=alias_name, command=alias.command
@@ -388,14 +259,11 @@ class Alias(commands.Cog):
@commands.guild_only()
async def _del_alias(self, ctx: commands.Context, alias_name: str):
"""Delete an existing alias on this server."""
aliases = await self.unloaded_aliases(ctx.guild)
try:
next(aliases)
except StopIteration:
if not await self._aliases.get_guild_aliases(ctx.guild):
await ctx.send(_("There are no aliases on this server."))
return
if await self.delete_alias(ctx, alias_name):
if await self._aliases.delete_alias(ctx, alias_name):
await ctx.send(
_("Alias with the name `{name}` was successfully deleted.").format(name=alias_name)
)
@@ -406,14 +274,11 @@ class Alias(commands.Cog):
@global_.command(name="delete", aliases=["del", "remove"])
async def _del_global_alias(self, ctx: commands.Context, alias_name: str):
"""Delete an existing global alias."""
aliases = await self.unloaded_global_aliases()
try:
next(aliases)
except StopIteration:
await ctx.send(_("There are no aliases on this bot."))
if not await self._aliases.get_global_aliases():
await ctx.send(_("There are no global aliases on this bot."))
return
if await self.delete_alias(ctx, alias_name, global_=True):
if await self._aliases.delete_alias(ctx, alias_name, global_=True):
await ctx.send(
_("Alias with the name `{name}` was successfully deleted.").format(name=alias_name)
)
@@ -424,32 +289,34 @@ class Alias(commands.Cog):
@commands.guild_only()
async def _list_alias(self, ctx: commands.Context):
"""List the available aliases on this server."""
names = [_("Aliases:")] + sorted(
["+ " + a.name for a in (await self.unloaded_aliases(ctx.guild))]
)
if len(names) == 0:
await ctx.send(_("There are no aliases on this server."))
else:
await ctx.send(box("\n".join(names), "diff"))
guild_aliases = await self._aliases.get_guild_aliases(ctx.guild)
if not guild_aliases:
return await ctx.send(_("There are no aliases on this server."))
names = [_("Aliases:")] + sorted(["+ " + a.name for a in guild_aliases])
await ctx.send(box("\n".join(names), "diff"))
@global_.command(name="list")
async def _list_global_alias(self, ctx: commands.Context):
"""List the available global aliases on this bot."""
names = [_("Aliases:")] + sorted(
["+ " + a.name for a in await self.unloaded_global_aliases()]
)
if len(names) == 0:
await ctx.send(_("There are no aliases on this server."))
else:
await ctx.send(box("\n".join(names), "diff"))
global_aliases = await self._aliases.get_global_aliases()
if not global_aliases:
return await ctx.send(_("There are no global aliases."))
names = [_("Aliases:")] + sorted(["+ " + a.name for a in global_aliases])
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:
aliases = aliases + list(await self.unloaded_aliases(message.guild))
if len(aliases) == 0:
async def on_message_without_command(self, message: discord.Message):
try:
prefix = await self.get_prefix(message)
except ValueError:
return
await self.maybe_call_alias(message, aliases=aliases)
try:
potential_alias = message.content[len(prefix) :].split(" ")[0]
except IndexError:
return
alias = await self._aliases.get_alias(message.guild, potential_alias)
if alias:
await self.call_alias(message, prefix, alias)

View File

@@ -1,25 +1,37 @@
from typing import Tuple
from typing import Tuple, Dict, Optional, List, Union
from re import findall
import discord
from redbot.core import commands
from discord.ext.commands.view import StringView
from redbot.core import commands, Config
from redbot.core.i18n import Translator
from redbot.core.utils import AsyncIter
_ = Translator("Alias", __file__)
class ArgParseError(Exception):
pass
class AliasEntry:
"""An object containing all required information about an alias"""
name: str
command: Union[Tuple[str], str]
creator: int
guild: Optional[int]
uses: int
def __init__(
self, name: str, command: Tuple[str], creator: discord.Member, global_: bool = False
self, name: str, command: Union[Tuple[str], str], creator: int, guild: Optional[int],
):
super().__init__()
self.has_real_data = False
self.name = name
self.command = command
self.creator = creator
self.global_ = global_
self.guild = None
if hasattr(creator, "guild"):
self.guild = creator.guild
self.guild = guild
self.uses = 0
def inc(self):
@@ -30,34 +42,182 @@ class AliasEntry:
self.uses += 1
return self.uses
def get_extra_args_from_alias(self, message: discord.Message, prefix: str) -> str:
"""
When an alias is executed by a user in chat this function tries
to get any extra arguments passed in with the call.
Whitespace will be trimmed from both ends.
:param message:
:param prefix:
:param alias:
:return:
"""
known_content_length = len(prefix) + len(self.name)
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
def to_json(self) -> dict:
try:
creator = str(self.creator.id)
guild = str(self.guild.id)
except AttributeError:
creator = self.creator
guild = self.guild
return {
"name": self.name,
"command": self.command,
"creator": creator,
"guild": guild,
"global": self.global_,
"creator": self.creator,
"guild": self.guild,
"uses": self.uses,
}
@classmethod
def from_json(cls, data: dict, bot: commands.Bot = None):
ret = cls(data["name"], data["command"], data["creator"], global_=data["global"])
if bot:
ret.has_real_data = True
ret.creator = bot.get_user(int(data["creator"]))
guild = bot.get_guild(int(data["guild"]))
ret.guild = guild
else:
ret.guild = data["guild"]
def from_json(cls, data: dict):
ret = cls(data["name"], data["command"], data["creator"], data["guild"])
ret.uses = data.get("uses", 0)
return ret
class AliasCache:
def __init__(self, config: Config, cache_enabled: bool = True):
self.config = config
self._cache_enabled = cache_enabled
self._loaded = False
self._aliases: Dict[Optional[int], Dict[str, AliasEntry]] = {None: {}}
async def load_aliases(self):
if not self._cache_enabled:
self._loaded = True
return
for alias in await self.config.entries():
self._aliases[None][alias["name"]] = AliasEntry.from_json(alias)
all_guilds = await self.config.all_guilds()
async for guild_id, guild_data in AsyncIter(all_guilds.items(), steps=100):
if guild_id not in self._aliases:
self._aliases[guild_id] = {}
for alias in guild_data["entries"]:
self._aliases[guild_id][alias["name"]] = AliasEntry.from_json(alias)
self._loaded = True
async def get_aliases(self, ctx: commands.Context) -> List[AliasEntry]:
"""Returns all possible aliases with the given context"""
global_aliases: List[AliasEntry] = []
server_aliases: List[AliasEntry] = []
global_aliases = await self.get_global_aliases()
if ctx.guild and ctx.guild.id in self._aliases:
server_aliases = await self.get_guild_aliases(ctx.guild)
return global_aliases + server_aliases
async def get_guild_aliases(self, guild: discord.Guild) -> List[AliasEntry]:
"""Returns all guild specific aliases"""
aliases: List[AliasEntry] = []
if self._cache_enabled:
if guild.id in self._aliases:
for _, alias in self._aliases[guild.id].items():
aliases.append(alias)
else:
aliases = [AliasEntry.from_json(d) for d in await self.config.guild(guild).entries()]
return aliases
async def get_global_aliases(self) -> List[AliasEntry]:
"""Returns all global specific aliases"""
aliases: List[AliasEntry] = []
if self._cache_enabled:
for _, alias in self._aliases[None].items():
aliases.append(alias)
else:
aliases = [AliasEntry.from_json(d) for d in await self.config.entries()]
return aliases
async def get_alias(
self, guild: Optional[discord.Guild], alias_name: str,
) -> Optional[AliasEntry]:
"""Returns an AliasEntry object if the provided alias_name is a registered alias"""
server_aliases: List[AliasEntry] = []
if self._cache_enabled:
if alias_name in self._aliases[None]:
return self._aliases[None][alias_name]
if guild is not None:
if guild.id in self._aliases:
if alias_name in self._aliases[guild.id]:
return self._aliases[guild.id][alias_name]
else:
if guild:
server_aliases = [
AliasEntry.from_json(d) for d in await self.config.guild(guild.id).entries()
]
global_aliases = [AliasEntry.from_json(d) for d in await self.config.entries()]
all_aliases = global_aliases + server_aliases
for alias in all_aliases:
if alias.name == alias_name:
return alias
return None
async def add_alias(
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)))
if global_:
alias = AliasEntry(alias_name, command, ctx.author.id, None)
settings = self.config
if self._cache_enabled:
self._aliases[None][alias.name] = alias
else:
alias = AliasEntry(alias_name, command, ctx.author.id, ctx.guild.id)
settings = self.config.guild(ctx.guild)
if self._cache_enabled:
if ctx.guild.id not in self._aliases:
self._aliases[ctx.guild.id] = {}
self._aliases[ctx.guild.id][alias.name] = alias
async with settings.entries() as curr_aliases:
curr_aliases.append(alias.to_json())
return alias
async def delete_alias(
self, ctx: commands.Context, alias_name: str, global_: bool = False
) -> bool:
if global_:
settings = self.config
else:
settings = self.config.guild(ctx.guild)
async with settings.entries() as aliases:
for alias in aliases:
if alias["name"] == alias_name:
aliases.remove(alias)
if self._cache_enabled:
if global_:
del self._aliases[None][alias_name]
else:
del self._aliases[ctx.guild.id][alias_name]
return True
return False

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:10\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Afrikaans\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: af\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: af_ZA\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:10\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"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-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ar\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: ar_SA\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:10\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bulgarian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: bg\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: bg_BG\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:10\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ca\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: ca_ES\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Czech\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: cs\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: cs_CZ\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Danish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: da\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: da_DK\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: de\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: de_DE\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Greek\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: el\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: el_GR\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: es-ES\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: es_ES\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: fi\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: fi_FI\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: fr\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: fr_FR\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hebrew\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: he\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: he_IL\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hungarian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: hu\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: hu_HU\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Indonesian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: id\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: id_ID\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: it\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: it_IT\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Japanese\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ja\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: ja_JP\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Korean\n"
"MIME-Version: 1.0\n"
@@ -12,21 +11,20 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ko\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: ko_KR\n"
#: redbot/cogs/alias/alias.py:35
#, 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 ""
msgstr "명령어에 대한 별칭을 만들어주세요.\\n\\n 별칭들은 해당 명령어들을 바로 실행할 수 있는 대체적인 이름들이에요. 그것들은\\n 람다(반복되어 사용되는 인수를 저장)\\n 또는 단순히 \\\"x y z\\\"라고 말하는 바로가기 역할을 할 수 있어요.\\n\\n 실행할 시, 별칭들은 추가된 인수들을 승인할거예요.\\n 그리고 저장된 별칭들에 추가할거예요. "
#: redbot/cogs/alias/alias.py:111
msgid "Arguments must be specified with a number."
msgstr ""
msgstr "인수는 숫자로 지정해줘야해요."
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
msgstr "인수는 순차적이어야해요. 미확인된 인수: "
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found."
@@ -35,17 +33,17 @@ msgstr "접두사가 발견되지 않았습니다."
#: redbot/cogs/alias/alias.py:235
#, docstring
msgid "Manage command aliases."
msgstr ""
msgstr "명령어 별칭들을 관리하세요."
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Manage global aliases."
msgstr ""
msgstr "글로벌 별칭들을 관리하세요."
#: redbot/cogs/alias/alias.py:247
#, docstring
msgid "Add an alias for a command."
msgstr ""
msgstr "명령어에 대한 별칭을 등록해주세요."
#: redbot/cogs/alias/alias.py:252
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
@@ -70,7 +68,7 @@ msgstr ""
#: redbot/cogs/alias/alias.py:306
#, docstring
msgid "Add a global alias for a command."
msgstr ""
msgstr "명령어에 대한 글로벌 별칭을 등록해주세요."
#: redbot/cogs/alias/alias.py:311
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
@@ -91,7 +89,7 @@ msgstr ""
#: redbot/cogs/alias/alias.py:357
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
msgstr "별칭의 기본 명령어에 대한 도움말을 실행해 보세요."
#: redbot/cogs/alias/alias.py:369
msgid "No such alias exists."
@@ -100,7 +98,7 @@ msgstr "그런 별칭은 등록되어 있지 않아요."
#: redbot/cogs/alias/alias.py:374
#, docstring
msgid "Show what command the alias executes."
msgstr ""
msgstr "별칭이 실행하는 명령어를 표시해주세요."
#: redbot/cogs/alias/alias.py:379
msgid "The `{alias_name}` alias will execute the command `{command}`"
@@ -113,7 +111,7 @@ msgstr ""
#: redbot/cogs/alias/alias.py:390
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
msgstr "이 서버에 있는 기존 별칭을 삭제해주세요."
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
#: redbot/cogs/alias/alias.py:442
@@ -131,7 +129,7 @@ msgstr ""
#: redbot/cogs/alias/alias.py:408
#, docstring
msgid "Delete an existing global alias."
msgstr ""
msgstr "기존 글로벌 별칭들을 삭제해주세요."
#: redbot/cogs/alias/alias.py:413
msgid "There are no aliases on this bot."
@@ -140,7 +138,7 @@ msgstr "이 봇에 등록된 별칭이 없어요."
#: redbot/cogs/alias/alias.py:426
#, docstring
msgid "List the available aliases on this server."
msgstr ""
msgstr "이 서버에서 사용할 수 있는 별칭들을 나열해주세요."
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
msgid "Aliases:"
@@ -149,5 +147,5 @@ msgstr "등록된 별칭 리스트 :"
#: redbot/cogs/alias/alias.py:437
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""
msgstr "이 봇에서 사용할 수 있는 글로벌 별칭들을 나열해주세요."

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: nl\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: nl_NL\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Norwegian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: no\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: no_NO\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Polish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"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-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: pl\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: pl_PL\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Portuguese, Brazilian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: pt-BR\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: pt_BR\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Portuguese\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: pt-PT\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: pt_PT\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Romanian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ro\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: ro_RO\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Russian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"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-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ru\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: ru_RU\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Slovak\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: sk\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: sk_SK\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Serbian (Cyrillic)\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: sr\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: sr_SP\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:13\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Swedish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: sv-SE\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: sv_SE\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:13\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Turkish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: tr\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: tr_TR\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:13\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Ukrainian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"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-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: uk\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: uk_UA\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:13\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Vietnamese\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: vi\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: vi_VN\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:10\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese Simplified\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: zh-CN\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: zh_CN\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese Traditional, Hong Kong\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: zh-HK\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: zh_HK\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:10\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese Traditional\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: zh-TW\n"
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
"Language: zh_TW\n"
#: redbot/cogs/alias/alias.py:35

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Afrikaans\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: af\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: af_ZA\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"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-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ar\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: ar_SA\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bulgarian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: bg\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: bg_BG\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ca\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: ca_ES\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-03-05 12:11\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Czech\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: cs\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: cs_CZ\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Danish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: da\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: da_DK\n"
#: redbot/cogs/audio/apis.py:213

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:13\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Greek\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: el\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: el_GR\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:16\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: es-ES\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: es_ES\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:13\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: fi\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: fi_FI\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-03-12 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: fr\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: fr_FR\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:13\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hebrew\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: he\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: he_IL\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:13\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hungarian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: hu\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: hu_HU\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:14\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Indonesian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: id\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: id_ID\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:14\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: it\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: it_IT\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:14\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Japanese\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ja\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: ja_JP\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-03-19 12:10\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Korean\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ko\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: ko_KR\n"
#: redbot/cogs/audio/apis.py:213
@@ -56,7 +54,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:82
#, docstring
msgid "Play audio through voice channels."
msgstr ""
msgstr "음성체널을 통해 음악을 재생합니다."
#: redbot/cogs/audio/audio.py:177
msgid "You have attempted to run Audio's Lavalink server on an unsupported architecture. Only settings related commands will be available."
@@ -64,7 +62,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:201
msgid "No DJ role found. Disabling DJ mode."
msgstr ""
msgstr "DJ역할을 찾지 못했습니다. DJ역할을 비활성화합니다."
#: redbot/cogs/audio/audio.py:433
msgid "music in {} servers"
@@ -76,7 +74,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:505
msgid "Auto Play Started."
msgstr ""
msgstr "자동재생 시작됨"
#: redbot/cogs/audio/audio.py:520 redbot/cogs/audio/audio.py:2566
#: redbot/cogs/audio/audio.py:6296
@@ -85,27 +83,27 @@ msgstr "지금 재생 중"
#: redbot/cogs/audio/audio.py:522
msgid "Track length: {length} | Requested by: {user}"
msgstr ""
msgstr "곡 길이: {length} | 신청자: {user}"
#: redbot/cogs/audio/audio.py:543
msgid "Queue Ended."
msgstr ""
msgstr "큐 끝남"
#: redbot/cogs/audio/audio.py:585
msgid "Multiple errors detected"
msgstr ""
msgstr "여러가지 오류 검출됨"
#: redbot/cogs/audio/audio.py:586
msgid "Closing the audio player due to multiple errors being detected. If this persists, please inform the bot owner as the Audio cog may be temporally unavailable."
msgstr ""
msgstr "오디오 플레이어를 오류로 중지합니다. 오디오 명령어가 작동되지 않을수 있습니다."
#: redbot/cogs/audio/audio.py:598
msgid "Track Stuck"
msgstr ""
msgstr "트랙 걸림"
#: redbot/cogs/audio/audio.py:602
msgid "Track Error"
msgstr ""
msgstr "트랙 에러"
#: redbot/cogs/audio/audio.py:672
#, docstring
@@ -134,11 +132,11 @@ msgstr ""
#: redbot/cogs/audio/audio.py:7876 redbot/cogs/audio/audio.py:7891
#: redbot/cogs/audio/audio.py:7907 redbot/cogs/audio/audio.py:7923
msgid "Setting Changed"
msgstr ""
msgstr "설정 변경됨"
#: redbot/cogs/audio/audio.py:689
msgid "Daily queues: {true_or_false}."
msgstr ""
msgstr "일간 재생목록: {true_or_false}."
#: redbot/cogs/audio/audio.py:690 redbot/cogs/audio/audio.py:706
#: redbot/cogs/audio/audio.py:1100 redbot/cogs/audio/audio.py:1254
@@ -157,7 +155,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:7397 redbot/cogs/audio/audio.py:7440
#: redbot/cogs/audio/audio.py:7850 redbot/cogs/audio/audio.py:7861
msgid "Enabled"
msgstr ""
msgstr "활성화됨"
#: redbot/cogs/audio/audio.py:690 redbot/cogs/audio/audio.py:706
#: redbot/cogs/audio/audio.py:1100 redbot/cogs/audio/audio.py:1254
@@ -176,7 +174,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:7397 redbot/cogs/audio/audio.py:7440
#: redbot/cogs/audio/audio.py:7850 redbot/cogs/audio/audio.py:7861
msgid "Disabled"
msgstr ""
msgstr "비활성화됨"
#: redbot/cogs/audio/audio.py:697
#, docstring
@@ -189,185 +187,185 @@ msgstr ""
#: redbot/cogs/audio/audio.py:709
msgid "\\nAuto-play has been disabled."
msgstr ""
msgstr "자동재생이 비활성화되었습니다."
#: redbot/cogs/audio/audio.py:719
#, docstring
msgid "Manages the keyword whitelist and blacklist."
msgstr ""
msgstr "키워드 블랙리스트나 화이트리스트를 관리합니다."
#: redbot/cogs/audio/audio.py:724
#, docstring
msgid "Manages the global keyword whitelist/blacklist."
msgstr ""
msgstr "전체 키워드 블랙리스트나 화이트리스트를 관리합니다."
#: redbot/cogs/audio/audio.py:728
#, docstring
msgid "Manages the global keyword whitelist."
msgstr ""
msgstr "전체 키워드 화이트리스트를 관리합니다."
#: redbot/cogs/audio/audio.py:732
#, docstring
msgid "Manages the global keyword blacklist."
msgstr ""
msgstr "전체 키워드 블랙리스트를 관리합니다."
#: redbot/cogs/audio/audio.py:736 redbot/cogs/audio/audio.py:917
#, docstring
msgid "Adds a keyword to the blacklist."
msgstr ""
msgstr "블랙리스트에 키워드를 추가합니다."
#: redbot/cogs/audio/audio.py:747 redbot/cogs/audio/audio.py:928
msgid "Keyword already in the blacklist."
msgstr ""
msgstr "그 키워드는 이미 블랙리스트에 있습니다."
#: redbot/cogs/audio/audio.py:751 redbot/cogs/audio/audio.py:800
#: redbot/cogs/audio/audio.py:903 redbot/cogs/audio/audio.py:932
#: redbot/cogs/audio/audio.py:981 redbot/cogs/audio/audio.py:1084
msgid "Blacklist Modified"
msgstr ""
msgstr "블랙리스트 수정됨"
#: redbot/cogs/audio/audio.py:752 redbot/cogs/audio/audio.py:933
msgid "Added: `{blacklisted}` to the blacklist."
msgstr ""
msgstr "추가됨: `{blacklisted}` 가 블랙리스트에 추가되었습니다."
#: redbot/cogs/audio/audio.py:759
#, docstring
msgid "Adds a keyword to the whitelist.\\n\\n If anything is added to whitelist, it will blacklist everything else.\\n "
msgstr ""
msgstr "화이트리스트에 키워드를 추가합니다.\\n\\n 하나라도 화이트리스트에 등록이 된다면, 다른 모든석을 블랙리스트처리합니다.\\n "
#: redbot/cogs/audio/audio.py:773 redbot/cogs/audio/audio.py:819
#: redbot/cogs/audio/audio.py:954 redbot/cogs/audio/audio.py:1000
msgid "Keyword already in the whitelist."
msgstr ""
msgstr "그 키워드는 이미 화이트리스트에 있습니다."
#: redbot/cogs/audio/audio.py:777 redbot/cogs/audio/audio.py:823
#: redbot/cogs/audio/audio.py:890 redbot/cogs/audio/audio.py:958
#: redbot/cogs/audio/audio.py:1004 redbot/cogs/audio/audio.py:1071
msgid "Whitelist Modified"
msgstr ""
msgstr "화이트리스트 수정됨"
#: redbot/cogs/audio/audio.py:778 redbot/cogs/audio/audio.py:959
msgid "Added: `{whitelisted}` to the whitelist."
msgstr ""
msgstr "추가됨: `{whitelisted}` 이/가 화이트리스트에 추가되었습니다."
#: redbot/cogs/audio/audio.py:785 redbot/cogs/audio/audio.py:966
#, docstring
msgid "Removes a keyword from the blacklist."
msgstr ""
msgstr "키워드를 블랙리스트에서 제거합니다."
#: redbot/cogs/audio/audio.py:796 redbot/cogs/audio/audio.py:977
msgid "Keyword is not in the blacklist."
msgstr ""
msgstr "키워드가 블랙리스트에 없습니다."
#: redbot/cogs/audio/audio.py:801 redbot/cogs/audio/audio.py:982
msgid "Removed: `{blacklisted}` from the blacklist."
msgstr ""
msgstr "삭제됨: `{blacklisted}` 이/가 블랙리스트에서 제거되었습니다."
#: redbot/cogs/audio/audio.py:808 redbot/cogs/audio/audio.py:989
#, docstring
msgid "Removes a keyword from the whitelist."
msgstr ""
msgstr "키워드를 화이트리스트에서 제거합니다."
#: redbot/cogs/audio/audio.py:824 redbot/cogs/audio/audio.py:1005
msgid "Removed: `{whitelisted}` from the whitelist."
msgstr ""
msgstr "삭제됨: `{blacklisted}` 이/가 화이트리스트에서 제거되었습니다."
#: redbot/cogs/audio/audio.py:831 redbot/cogs/audio/audio.py:1012
#, docstring
msgid "List all keywords added to the whitelist."
msgstr ""
msgstr "화이트리스트에 추가된 모든 키워드의 목록."
#: redbot/cogs/audio/audio.py:834 redbot/cogs/audio/audio.py:886
#: redbot/cogs/audio/audio.py:1015 redbot/cogs/audio/audio.py:1067
msgid "Nothing in the whitelist."
msgstr ""
msgstr "화이트리스트에 아무것도 없어요."
#: redbot/cogs/audio/audio.py:857 redbot/cogs/audio/audio.py:1038
#, docstring
msgid "List all keywords added to the blacklist."
msgstr ""
msgstr "블랙리스트에 추가된 모든 키워드의 목록."
#: redbot/cogs/audio/audio.py:860 redbot/cogs/audio/audio.py:899
#: redbot/cogs/audio/audio.py:1041 redbot/cogs/audio/audio.py:1080
msgid "Nothing in the blacklist."
msgstr ""
msgstr "블랙리스트에 아무것도 없어요."
#: redbot/cogs/audio/audio.py:883 redbot/cogs/audio/audio.py:1064
#, docstring
msgid "Clear all keywords from the whitelist."
msgstr ""
msgstr "화이트리스트에 있는 모든 키워드를 삭제합니다."
#: redbot/cogs/audio/audio.py:891 redbot/cogs/audio/audio.py:1072
msgid "All entries have been removed from the whitelist."
msgstr ""
msgstr "화이트리스트에 있는 모든 키워드가 삭제되었습니다."
#: redbot/cogs/audio/audio.py:896 redbot/cogs/audio/audio.py:1077
#, docstring
msgid "Clear all keywords added to the blacklist."
msgstr ""
msgstr "블랙리스트에 있는 모든 키워드를 삭제합니다."
#: redbot/cogs/audio/audio.py:904 redbot/cogs/audio/audio.py:1085
msgid "All entries have been removed from the blacklist."
msgstr ""
msgstr "블랙리스트에 있는 모든 키워드가 삭제되었습니다."
#: redbot/cogs/audio/audio.py:909
#, docstring
msgid "Manages the keyword whitelist."
msgstr ""
msgstr "키워드 화이트리스트를 관리합니다."
#: redbot/cogs/audio/audio.py:913
#, docstring
msgid "Manages the keyword blacklist."
msgstr ""
msgstr "키워드 블랙리스트를 관리합니다."
#: redbot/cogs/audio/audio.py:940
#, docstring
msgid "Adds a keyword to the whitelist.\\n\\n If anything is added to whitelist, it will blacklist everything else.\\n "
msgstr ""
msgstr "화이트리스트에 키워드를 추가합니다.\\n\\n 하나라도 화이트리스트에 등록이 된다면, 다른 모든석을 블랙리스트처리합니다.\\n "
#: redbot/cogs/audio/audio.py:1091
#, docstring
msgid "Change auto-play setting."
msgstr ""
msgstr "자동재생 설정을 변경합니다."
#: redbot/cogs/audio/audio.py:1095
#, docstring
msgid "Toggle auto-play when there no songs in queue."
msgstr ""
msgstr "큐에 곡이 없을때 곡을 자동으로 재생할지 설정합니다."
#: redbot/cogs/audio/audio.py:1099
msgid "Auto-play when queue ends: {true_or_false}."
msgstr ""
msgstr "큐가 끝날때 자동으로 재생: {true_or_false}."
#: redbot/cogs/audio/audio.py:1104
msgid "\\nRepeat has been disabled."
msgstr ""
msgstr "\\n반복재생이 비활성화되었습니다."
#: redbot/cogs/audio/audio.py:1107
msgid "\\nAuto-disconnecting at queue end has been disabled."
msgstr ""
msgstr "\\n큐에있는 곡이 다 재생되면 자동으로 연결해제 기능이 비활성화되었습니다."
#: redbot/cogs/audio/audio.py:1122
#, docstring
msgid "Set a playlist to auto-play songs from.\\n\\n **Usage**:\\n `[p]audioset autoplay playlist_name_OR_id [args]`\\n\\n **Args**:\\n The following are all optional:\\n --scope <scope>\\n --author [user]\\n --guild [guild] **Only the bot owner can use this**\\n\\n **Scope** is one of the following:\\n Global\\n Guild\\n User\\n\\n **Author** can be one of the following:\\n User ID\\n User Mention\\n User Name#123\\n\\n **Guild** can be one of the following:\\n Guild ID\\n Exact guild name\\n\\n Example use:\\n `[p]audioset autoplay MyGuildPlaylist`\\n `[p]audioset autoplay MyGlobalPlaylist --scope Global`\\n `[p]audioset autoplay PersonalPlaylist --scope User --author Draper`\\n "
msgstr ""
msgstr "자동 재생곡의 재생목록을 정합니다.\\n\\n **사용법**:\\n `[p]audioset 재생목록_이름_혹은_ID [args]`\\n\\n **Args**:\\n 옵션들:\\n --scope <scope>\\n --author [user]\\n --guild [guild] **오직 봇 소유자만 명령어를 사용할수 있습니다.**\\n\\n **Scope** is one of the following:\\n Global\\n Guild\\n User\\n\\n **Author** can be one of the following:\\n User ID\\n User Mention\\n User Name#123\\n\\n **Guild** can be one of the following:\\n Guild ID\\n Exact guild name\\n\\n Example use:\\n `[p]audioset autoplay MyGuildPlaylist`\\n `[p]audioset autoplay MyGlobalPlaylist --scope Global`\\n `[p]audioset autoplay PersonalPlaylist --scope User --author Draper`\\n "
#: redbot/cogs/audio/audio.py:1165 redbot/cogs/audio/audio.py:1182
msgid "No Playlist Found"
msgstr ""
msgstr "재생목록을 찾을수 없음"
#: redbot/cogs/audio/audio.py:1166 redbot/cogs/audio/audio.py:4080
#: redbot/cogs/audio/audio.py:5395
msgid "Could not match '{arg}' to a playlist"
msgstr ""
msgstr "재생목록과 '{arg}'를 매칭할수 없습니다."
#: redbot/cogs/audio/audio.py:1174
msgid "No Tracks Found"
msgstr ""
msgstr "곡 찾을수 없음."
#: redbot/cogs/audio/audio.py:1175
msgid "Playlist {name} has no tracks."
msgstr ""
msgstr "재생목록 {name}에는 곡이 없습니다."
#: redbot/cogs/audio/audio.py:1183 redbot/cogs/audio/audio.py:4088
#: redbot/cogs/audio/audio.py:4282 redbot/cogs/audio/audio.py:4452
@@ -375,7 +373,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:4829 redbot/cogs/audio/audio.py:5185
#: redbot/cogs/audio/audio.py:5481 redbot/cogs/audio/audio.py:5579
msgid "Playlist {id} does not exist in {scope} scope."
msgstr ""
msgstr "재생 목록 {id} 이/가 {scope} 범위에 없습니다."
#: redbot/cogs/audio/audio.py:1190 redbot/cogs/audio/audio.py:4095
#: redbot/cogs/audio/audio.py:4556 redbot/cogs/audio/audio.py:4694
@@ -383,7 +381,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:5192 redbot/cogs/audio/audio.py:5489
#: redbot/cogs/audio/audio.py:5586 redbot/cogs/audio/audio.py:5863
msgid "Missing Arguments"
msgstr ""
msgstr "필수요소 누락됨"
#: redbot/cogs/audio/audio.py:1191 redbot/cogs/audio/audio.py:4096
#: redbot/cogs/audio/audio.py:4289 redbot/cogs/audio/audio.py:4458
@@ -392,11 +390,11 @@ msgstr ""
#: redbot/cogs/audio/audio.py:5193 redbot/cogs/audio/audio.py:5490
#: redbot/cogs/audio/audio.py:5587 redbot/cogs/audio/audio.py:5864
msgid "You need to specify the Guild ID for the guild to lookup."
msgstr ""
msgstr "조회할 길드의 길드 ID를 지정해야 합니다."
#: redbot/cogs/audio/audio.py:1197
msgid "Playlist {name} (`{id}`) [**{scope}**] will be used for autoplay."
msgstr ""
msgstr "재생목록 {name} (`{id}`) [**{scope}**]이 자동재생을 위해 사용될것입니다."
#: redbot/cogs/audio/audio.py:1210
#, docstring
@@ -405,85 +403,85 @@ msgstr ""
#: redbot/cogs/audio/audio.py:1216
msgid "Set auto-play playlist to default value."
msgstr ""
msgstr "자동재생 플레이리스트를 기본값으로 설정합니다."
#: redbot/cogs/audio/audio.py:1222
#, docstring
msgid "Toggle DJ mode.\\n\\n DJ mode allows users with the DJ role to use audio commands.\\n "
msgstr ""
msgstr "DJ전용모드를 활성화합니다.\\n\\n DJ모드는 DJ역할이 있는 사용자만이 음악 명령어를 사용할수있도록 합니다.\\n "
#: redbot/cogs/audio/audio.py:1233
msgid "Missing DJ Role"
msgstr ""
msgstr "DJ역할이 없습니다"
#: redbot/cogs/audio/audio.py:1234
msgid "Please set a role to use with DJ mode. Enter the role name or ID now."
msgstr ""
msgstr "DJ 모드에 사용할 역할을 지정해주세요. 지금 역할 이름이나 역할 ID를 입력해주세요."
#: redbot/cogs/audio/audio.py:1244
msgid "Response timed out, try again later."
msgstr ""
msgstr "시간이 초과되었습니다. 다시 시도해주세요."
#: redbot/cogs/audio/audio.py:1253
msgid "DJ role: {true_or_false}."
msgstr ""
msgstr "DJ 역할: {true_or_false}."
#: redbot/cogs/audio/audio.py:1261
#, docstring
msgid "Auto-disconnect from channel when bot is alone in it for x seconds, 0 to disable.\\n\\n `[p]audioset dc` takes precedence over this setting.\\n "
msgstr ""
msgstr "봇이 x초 이상 체널에 환자 있을때 체널에서 자동으로 나갑니다, 0으로 설정하면 비활성화됩니다.\\n\\n `[p]audioset dc` 설정이 우선권을 가집니다.\\n "
#: redbot/cogs/audio/audio.py:1267 redbot/cogs/audio/audio.py:1295
#: redbot/cogs/audio/audio.py:1689
msgid "Invalid Time"
msgstr ""
msgstr "잘못된 입력값"
#: redbot/cogs/audio/audio.py:1267 redbot/cogs/audio/audio.py:1295
#: redbot/cogs/audio/audio.py:1689
msgid "Seconds can't be less than zero."
msgstr ""
msgstr "0보다 작을수 없습니다."
#: redbot/cogs/audio/audio.py:1274
msgid "Empty disconnect disabled."
msgstr ""
msgstr "방이 비었을때 연결해제가 비활성화 되었습니다."
#: redbot/cogs/audio/audio.py:1281
msgid "Empty disconnect timer set to {num_seconds}."
msgstr ""
msgstr "방이 비었을때 나가기 타이머가 {num_seconds}초로 설정되었습니다."
#: redbot/cogs/audio/audio.py:1292
#, docstring
msgid "Auto-pause after x seconds when room is empty, 0 to disable."
msgstr ""
msgstr "방이 비었을때 x초 후에 자동 일시정지합니다. 0은 비활성화입니다."
#: redbot/cogs/audio/audio.py:1302
msgid "Empty pause disabled."
msgstr ""
msgstr "방이 비었을때 멈추기가 비활성화되었습니다."
#: redbot/cogs/audio/audio.py:1309
msgid "Empty pause timer set to {num_seconds}."
msgstr ""
msgstr "빈방 멈추기 타이머가 {num_seconds}초로 설정되었습니다."
#: redbot/cogs/audio/audio.py:1319
#, docstring
msgid "Set a price for queueing tracks for non-mods, 0 to disable."
msgstr ""
msgstr "음악을 신청하는데에 드는 비용을 설정합니다.(관리자 미포함), 0은 비활성화입니다."
#: redbot/cogs/audio/audio.py:1322
msgid "Invalid Price"
msgstr ""
msgstr "잘못된 가격"
#: redbot/cogs/audio/audio.py:1322
msgid "Price can't be less than zero."
msgstr ""
msgstr "가격은 0보다 적을수 없습니다."
#: redbot/cogs/audio/audio.py:1327
msgid "Jukebox mode disabled."
msgstr ""
msgstr "주크박스모드가 비활성화되었습니다."
#: redbot/cogs/audio/audio.py:1334
msgid "Track queueing command price set to {price} {currency}."
msgstr ""
msgstr "곡 신청 명령어의 가격이 {price} {currency}으로 설정되었습니다."
#: redbot/cogs/audio/audio.py:1345
#, docstring
@@ -579,7 +577,7 @@ msgstr "현재 설정을 표시할게요."
#: redbot/cogs/audio/audio.py:1532
msgid "Server Settings"
msgstr ""
msgstr "서버 설정"
#: redbot/cogs/audio/audio.py:1533
msgid "Auto-disconnect: [{dc}]\\n"
@@ -778,7 +776,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:1836
#, docstring
msgid "Audio stats."
msgstr ""
msgstr "오디오 정보"
#: redbot/cogs/audio/audio.py:1866 redbot/cogs/audio/audio.py:1901
#: redbot/cogs/audio/audio.py:1941 redbot/cogs/audio/audio.py:1979
@@ -793,11 +791,11 @@ msgstr ""
#: redbot/cogs/audio/audio.py:7676 redbot/cogs/audio/audio.py:7796
#: redbot/cogs/audio/audio.py:7830
msgid "Nothing playing."
msgstr ""
msgstr "아무것도 재생하고있지 않아요"
#: redbot/cogs/audio/audio.py:1870
msgid "Not connected anywhere."
msgstr ""
msgstr "어디에도 연결되어있지 않아요"
#: redbot/cogs/audio/audio.py:1876
msgid "Playing in {num}/{total} servers:"
@@ -806,16 +804,16 @@ msgstr ""
#: redbot/cogs/audio/audio.py:1895
#, docstring
msgid "Bump a track number to the top of the queue."
msgstr ""
msgstr "특정 트랙을 큐의 맨 위로 올립니다."
#: redbot/cogs/audio/audio.py:1908 redbot/cogs/audio/audio.py:1915
#: redbot/cogs/audio/audio.py:1921
msgid "Unable To Bump Track"
msgstr ""
msgstr "트랙을 올릴수 없습니다."
#: redbot/cogs/audio/audio.py:1909
msgid "You must be in the voice channel to bump a track."
msgstr ""
msgstr "음성체널에 들어가있어야만 트랙을 위로 옮길수 있습니다."
#: redbot/cogs/audio/audio.py:1916
msgid "You need the DJ role to bump tracks."
@@ -823,20 +821,20 @@ msgstr ""
#: redbot/cogs/audio/audio.py:1922 redbot/cogs/audio/audio.py:6828
msgid "Song number must be greater than 1 and within the queue limit."
msgstr ""
msgstr "음악 번호는 1보다 크고 큐에있는 곡 끝번호보다 작아야합니다."
#: redbot/cogs/audio/audio.py:1932
msgid "Moved track to the top of the queue."
msgstr ""
msgstr "트랙을 큐의 맨 위로 올렸습니다."
#: redbot/cogs/audio/audio.py:1939
#, docstring
msgid "Disconnect from the voice channel."
msgstr ""
msgstr "음성체널에서 나갑니다."
#: redbot/cogs/audio/audio.py:1952
msgid "Unable to disconnect"
msgstr ""
msgstr "나갈수 없습니다"
#: redbot/cogs/audio/audio.py:1953
msgid "You need the DJ role to disconnect."
@@ -844,16 +842,16 @@ msgstr ""
#: redbot/cogs/audio/audio.py:1957
msgid "There are other people listening to music."
msgstr ""
msgstr "음악을 듣고있는사람들이 있습니다."
#: redbot/cogs/audio/audio.py:1960
msgid "Disconnecting..."
msgstr ""
msgstr "나가는중..."
#: redbot/cogs/audio/audio.py:1976
#, docstring
msgid "Equalizer management."
msgstr ""
msgstr "이퀄라이져 관리"
#: redbot/cogs/audio/audio.py:2012
#, docstring
@@ -1026,43 +1024,43 @@ msgstr ""
#: redbot/cogs/audio/audio.py:2542
#, docstring
msgid "Now playing."
msgstr ""
msgstr "현재 재생중."
#: redbot/cogs/audio/audio.py:2556
msgid "\\n Requested by: **{track.requester}**"
msgstr ""
msgstr "\\n 신청자: **{track.requester}**"
#: redbot/cogs/audio/audio.py:2560
msgid "Nothing."
msgstr ""
msgstr "아무것도 없습니다."
#: redbot/cogs/audio/audio.py:2576 redbot/cogs/audio/audio.py:6306
#: redbot/cogs/audio/audio.py:6484
msgid "Auto-Play"
msgstr ""
msgstr "자동 재생"
#: redbot/cogs/audio/audio.py:2582 redbot/cogs/audio/audio.py:6312
#: redbot/cogs/audio/audio.py:6490
msgid "Shuffle"
msgstr ""
msgstr "곡 섞기"
#: redbot/cogs/audio/audio.py:2588 redbot/cogs/audio/audio.py:6318
#: redbot/cogs/audio/audio.py:6496
msgid "Repeat"
msgstr ""
msgstr "반복"
#: redbot/cogs/audio/audio.py:2642
#, docstring
msgid "Pause or resume a playing track."
msgstr ""
msgstr "멈추거나 곡을 이어서 재생합니다."
#: redbot/cogs/audio/audio.py:2654 redbot/cogs/audio/audio.py:2661
msgid "Unable To Manage Tracks"
msgstr ""
msgstr "트랙을 관리할수 없습니다"
#: redbot/cogs/audio/audio.py:2655
msgid "You must be in the voice channel to pause or resume."
msgstr ""
msgstr "멈추거나 다시 재생하기 위해서는 음성체널에 있어야만 합니다."
#: redbot/cogs/audio/audio.py:2662
msgid "You need the DJ role to pause or resume tracks."
@@ -1070,29 +1068,29 @@ msgstr ""
#: redbot/cogs/audio/audio.py:2671
msgid "Track Paused"
msgstr ""
msgstr "트랙 일시정지됨"
#: redbot/cogs/audio/audio.py:2674
msgid "Track Resumed"
msgstr ""
msgstr "트랙 재생됨"
#: redbot/cogs/audio/audio.py:2682
#, docstring
msgid "Queue percentage."
msgstr ""
msgstr "큐 재생정도"
#: redbot/cogs/audio/audio.py:2709
msgid "There's nothing in the queue."
msgstr ""
msgstr "큐에 아무것도 없습니다."
#: redbot/cogs/audio/audio.py:2731
msgid "Queued and playing tracks:"
msgstr ""
msgstr "큐에있는 트랙과 재생중인 트랙들:"
#: redbot/cogs/audio/audio.py:2738
#, docstring
msgid "Play a URL or search for a track."
msgstr ""
msgstr "URL을 재생하거나 트랙을 검색합니다."
#: redbot/cogs/audio/audio.py:2747 redbot/cogs/audio/audio.py:2752
#: redbot/cogs/audio/audio.py:2769 redbot/cogs/audio/audio.py:2778
@@ -1116,37 +1114,37 @@ msgstr ""
#: redbot/cogs/audio/audio.py:6939 redbot/cogs/audio/audio.py:7000
#: redbot/cogs/audio/audio.py:7133
msgid "Unable To Play Tracks"
msgstr ""
msgstr "트랙을 재생할수 없습니다"
#: redbot/cogs/audio/audio.py:2748 redbot/cogs/audio/audio.py:2854
#: redbot/cogs/audio/audio.py:6934
msgid "That URL is not allowed."
msgstr ""
msgstr "그 URL은 허용되지 않습니다."
#: redbot/cogs/audio/audio.py:2752 redbot/cogs/audio/audio.py:2858
#: redbot/cogs/audio/audio.py:6940
msgid "That track is not allowed."
msgstr ""
msgstr "그 음악은 허용되지 않습니다."
#: redbot/cogs/audio/audio.py:2756 redbot/cogs/audio/audio.py:2862
#: redbot/cogs/audio/audio.py:3112 redbot/cogs/audio/audio.py:3286
#: redbot/cogs/audio/audio.py:6051 redbot/cogs/audio/audio.py:6877
msgid "Connection to Lavalink has failed"
msgstr ""
msgstr "라바링크와 연결에 실패했습니다."
#: redbot/cogs/audio/audio.py:2759 redbot/cogs/audio/audio.py:2865
#: redbot/cogs/audio/audio.py:3115 redbot/cogs/audio/audio.py:3289
#: redbot/cogs/audio/audio.py:3683 redbot/cogs/audio/audio.py:6054
#: redbot/cogs/audio/audio.py:6880 redbot/cogs/audio/audio.py:7117
msgid "Please check your console or logs for details."
msgstr ""
msgstr "관리자에게 문의해주세요"
#: redbot/cogs/audio/audio.py:2770 redbot/cogs/audio/audio.py:2876
#: redbot/cogs/audio/audio.py:3126 redbot/cogs/audio/audio.py:3300
#: redbot/cogs/audio/audio.py:6066 redbot/cogs/audio/audio.py:6713
#: redbot/cogs/audio/audio.py:6891 redbot/cogs/audio/audio.py:7757
msgid "I don't have permission to connect to your channel."
msgstr ""
msgstr "그 체널에 연결할 권한이 없어요."
#: redbot/cogs/audio/audio.py:2779 redbot/cogs/audio/audio.py:2885
#: redbot/cogs/audio/audio.py:3135 redbot/cogs/audio/audio.py:3309
@@ -1154,7 +1152,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:6900 redbot/cogs/audio/audio.py:7124
#: redbot/cogs/audio/audio.py:7774
msgid "Connect to a voice channel first."
msgstr ""
msgstr "먼저 음성체널에 연결하세요."
#: redbot/cogs/audio/audio.py:2785 redbot/cogs/audio/audio.py:2891
#: redbot/cogs/audio/audio.py:3141 redbot/cogs/audio/audio.py:3315
@@ -1162,7 +1160,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:6906 redbot/cogs/audio/audio.py:7127
#: redbot/cogs/audio/audio.py:7781
msgid "Connection to Lavalink has not yet been established."
msgstr ""
msgstr "라바링크와 연결되지 않았습니다."
#: redbot/cogs/audio/audio.py:2792 redbot/cogs/audio/audio.py:2898
#: redbot/cogs/audio/audio.py:3148 redbot/cogs/audio/audio.py:3323
@@ -1172,19 +1170,19 @@ msgstr ""
#: redbot/cogs/audio/audio.py:2806 redbot/cogs/audio/audio.py:2912
msgid "You must be in the voice channel to use the play command."
msgstr ""
msgstr "음성체널에 있어야 재생 명령어를 사용할수 있습니다."
#: redbot/cogs/audio/audio.py:2812 redbot/cogs/audio/audio.py:2918
#: redbot/cogs/audio/audio.py:2943
msgid "No tracks found for `{query}`."
msgstr ""
msgstr "`{query}`에 대한 검색결과가 없습니다."
#: redbot/cogs/audio/audio.py:2818 redbot/cogs/audio/audio.py:2924
#: redbot/cogs/audio/audio.py:3209 redbot/cogs/audio/audio.py:3341
#: redbot/cogs/audio/audio.py:3566 redbot/cogs/audio/audio.py:3635
#: redbot/cogs/audio/audio.py:7133
msgid "Queue size limit reached."
msgstr ""
msgstr "큐 최대 제한에 도달했습니다."
#: redbot/cogs/audio/audio.py:2838
#, docstring
@@ -1234,7 +1232,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:3022 redbot/cogs/audio/audio.py:3686
#: redbot/cogs/audio/audio.py:7162
msgid "Track Enqueued"
msgstr ""
msgstr "트랙 추가됨"
#: redbot/cogs/audio/audio.py:3036
#, docstring
@@ -1279,13 +1277,13 @@ msgstr ""
#: redbot/cogs/audio/audio.py:3261
msgid "tracks"
msgstr ""
msgstr "트랙"
#: redbot/cogs/audio/audio.py:3272 redbot/cogs/audio/audio.py:5615
#: redbot/cogs/audio/audio.py:5635 redbot/cogs/audio/audio.py:6553
#: redbot/cogs/audio/audio.py:7267
msgid "Page {page_num}/{total_pages}"
msgstr ""
msgstr "{page_num}/{total_pages} 페이지"
#: redbot/cogs/audio/audio.py:3283
#, docstring
@@ -1323,14 +1321,14 @@ msgstr ""
#: redbot/cogs/audio/audio.py:6160 redbot/cogs/audio/audio.py:6976
#: redbot/cogs/audio/audio.py:7074
msgid "Nothing found."
msgstr ""
msgstr "아무것도 찾지 못했습니다."
#: redbot/cogs/audio/audio.py:3434 redbot/cogs/audio/audio.py:3521
#: redbot/cogs/audio/audio.py:5976 redbot/cogs/audio/audio.py:6151
#: redbot/cogs/audio/audio.py:6178 redbot/cogs/audio/audio.py:6952
#: redbot/cogs/audio/audio.py:6968 redbot/cogs/audio/audio.py:7066
msgid "Unable to Get Track"
msgstr ""
msgstr "트랙을 찾을수 없습니다"
#: redbot/cogs/audio/audio.py:3435 redbot/cogs/audio/audio.py:3522
#: redbot/cogs/audio/audio.py:5977 redbot/cogs/audio/audio.py:6152
@@ -1386,7 +1384,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:3719
msgid "Approximate time remaining: {seconds}"
msgstr ""
msgstr "남은시간: {seconds}"
#: redbot/cogs/audio/audio.py:3790
msgid "You do not have the permissions to manage {name} (`{id}`) [**{scope}**]."
@@ -1831,7 +1829,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:6293
msgid "\\n Requested by: **{track.requester}**"
msgstr ""
msgstr "\\n 신청자: **{track.requester}**"
#: redbot/cogs/audio/audio.py:6405
msgid "**Currently livestreaming:**\\n"
@@ -1868,7 +1866,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:6475
msgid "Page {page_num}/{total_pages} | {num_tracks} tracks, {num_remaining} remaining\\n"
msgstr ""
msgstr "{page_num}/{total_pages} 페이지 | {num_tracks}곡 , {num_remaining} 남음\\n"
#: redbot/cogs/audio/audio.py:6550
msgid "Matching Tracks:"
@@ -1877,7 +1875,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:6564
#, docstring
msgid "Clears the queue."
msgstr ""
msgstr "큐를 지웁니다."
#: redbot/cogs/audio/audio.py:6578
msgid "Unable To Clear Queue"
@@ -1889,11 +1887,11 @@ msgstr ""
#: redbot/cogs/audio/audio.py:6583
msgid "Queue Modified"
msgstr ""
msgstr "큐 수정됨"
#: redbot/cogs/audio/audio.py:6583
msgid "The queue has been cleared."
msgstr ""
msgstr "큐가 정리되었습니다."
#: redbot/cogs/audio/audio.py:6589
#, docstring
@@ -1981,7 +1979,7 @@ msgstr ""
#: redbot/cogs/audio/audio.py:6788
msgid "\\nAuto-play has been disabled."
msgstr ""
msgstr "자동재생이 비활성화되었습니다."
#: redbot/cogs/audio/audio.py:6800
#, docstring
@@ -2053,11 +2051,11 @@ msgstr ""
#: redbot/cogs/audio/audio.py:7255
msgid "Tracks Found:"
msgstr ""
msgstr "트랙 발견됨"
#: redbot/cogs/audio/audio.py:7256
msgid "search results"
msgstr ""
msgstr "검색 결과"
#: redbot/cogs/audio/audio.py:7258
msgid "Folders Found:"
@@ -2363,13 +2361,13 @@ msgstr ""
#: redbot/cogs/audio/utils.py:539
msgid "Global"
msgstr ""
msgstr "전체"
#: redbot/cogs/audio/utils.py:541
msgid "Server"
msgstr ""
msgstr "서버"
#: redbot/cogs/audio/utils.py:543
msgid "User"
msgstr ""
msgstr "사용자"

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:12\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: nl\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: nl_NL\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:14\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Norwegian\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: no\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: no_NO\n"
#: redbot/cogs/audio/apis.py:213

View File

@@ -2,7 +2,6 @@ msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
"PO-Revision-Date: 2020-02-13 12:15\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Polish\n"
"MIME-Version: 1.0\n"
@@ -12,7 +11,6 @@ msgstr ""
"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-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: pl\n"
"X-Crowdin-File: /cogs/audio/locales/messages.pot\n"
"Language: pl_PL\n"
#: redbot/cogs/audio/apis.py:213

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