Compare commits

...

82 Commits
3.3.6 ... 3.3.9

Author SHA1 Message Date
jack1142
fa00314b77 Bump to 3.3.9 (#3959) 2020-06-12 01:24:06 +02:00
jack1142
7aad3ae3b5 Red 3.3.9 - Changelog (#3876)
* Add 3.3.9 or 3.4.0 section

* PR 3889

* PR 3890

* PR 3891

* PR 3781

* PR 3900

* PR 3899

* PR 3916

* PR 3892

* PR 3941 (issue 3940)

* PR 3907 (issue 3102)

* PR 3878 (issue 3877)

* PR 3880

* PR 3925

* PR 3923

* PR 3942

* PR 3935

* PR 3946

* PR 3954

* PR 3955 (issue 3107)

* Add "Read before updating" section

* PR 3957

* Update the changelog header with version number and date
2020-06-12 01:23:44 +02:00
jack1142
6c56e47083 An update to Windows docs structure for our beloved users! (#3894) 2020-06-12 01:23:06 +02:00
Michael H
6c048fad01 [Permissions] Prevent guild owner lockouts (#3955)
* [Permissions] Prevent guild owner lockouts

  - Guild owners will always be able to access the guild configuration
  commands in permissions
  - This includes `permissions explain` and `permissions canrun` as
  informational tools useful for ensuing a correct configuration

  resolves #3107

* minor nitpicking over ordering consistency

* a single new line for style compliance

* Fix a typo + alphabet went wrong

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-06-12 00:31:41 +02:00
Dav
593079dbbb [Mod] Make tempban more consistent with other ban commands. (#3957)
* add duration atribute

* sanity checks

* obviously that didn't work...

* insert facepalm here
2020-06-12 00:30:11 +02:00
aikaterna
2761244d2e [Bank] Display in settings if bank is global (#3954)
* [Bank] Display in settings if bank is global

* Address review

* Address review
2020-06-11 20:29:24 +02:00
Vexed
f58f6bb6d2 Update dm docstring for readability and grammar (+ period in contact) (#3946)
* update `dm` docstring

* few changes

* hmm

* cant make my mind up how to word it

* fk i forgot "and"

this is the last one, i promise

* add missing full stop in `contact` as im in this area of core_commands

* oh, see ^^^ review

* `click on` instead of `select`

Co-authored-by: Vexed01 <>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-06-11 19:31:49 +02:00
Draper
da83e02749 Show storage type in start up message (#3935)
* Lets show active storage on start up message

* Lets show active storage on start up message

* let's make it like in `[p]debuginfo`

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-06-11 19:05:32 +02:00
Draper
76efb16f96 [UX] Add "server" alias for commands that have "guild" in name (#3947) 2020-06-11 18:56:57 +02:00
Predeactor
d411873503 Only trigger cooldown when message is parsed in [p]contact (#3942) 2020-06-11 18:54:11 +02:00
Flame442
f0a4c1c252 [Core Commands] Fix [p]set custominfo error (#3923) 2020-06-11 18:46:30 +02:00
Flame442
1f845a4119 [Filter] Fix confusing behavior detecting quotes (#3925)
* Probably make filter better

* because I'm a stupid dumb idiot, *jack*
2020-06-11 17:00:55 +02:00
Draper
17496ff5cf [Audio] Fix DM Crash (#3880)
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
2020-06-11 16:50:23 +02:00
aikaterna
e3322af384 [Audio] Redefine max length with livestream exception (#3878)
* Redefine max length with livestream exception

* Address review

* is_track_too_long -> is_track_length_allowed for a more accurate description of what the function actually is doing
* we now rely on Track.is_stream for determining whether item is a livestream (or unseekable/non-known audio length like OGG files) for determining whether it can bypass the user-set max track length
* Removal of passing track length/an int to is_track_length_allowed - will always pass the full Track object now

* Address review
2020-06-11 16:38:43 +02:00
Draper
b1d394eac5 [Core] Add a text only version to [p]info (#3907)
* ...

* Finish implementation

* some people think an embedless world brings joy ... I agree to disagree.
2020-06-11 15:07:27 +02:00
jack1142
fd8ff7d7cf Add missing class docstrings in Downloader, Reports and Streams (#3892)
* add class docstring to downloader

idk what to say rly
um hi all nice to be back after about 6 months
pls no hate my PRs
apoligies if i get in the way
if you read this far then you deserve an achievement um i dunno what err how about the achievement of unboredness

* add class docstring to reports

* add class docstring to streams

* black formatting

oops lets not forget what tox checks for

* wording changes

* add cog board link

* hmm actually no (undo)

* wait grammar exists? who knew...

* remove admin only commands

* Review

* Remove always
  - and consequently reorganise the words
* Add "one or more"
* Fix spelling of creator
  - changed from creater
2020-06-11 15:01:06 +02:00
Dav
bc19b0d103 [Alias] Remove guild_only deco from main alias command group (#3941)
* Update alias.py

* alias help and show

* well... avoid the dumb
2020-06-11 15:00:38 +02:00
Vexed
aea6f68598 [Docs] Add Oracle to VPS Hosting, new specific links (#3916)
* Add the rst

* Add Oracle
* Add links to Always Free VPSes
* Add mention EC2 is 12 months only

* more description + update AWS link
2020-06-09 21:23:44 +02:00
Vexed01
332bcae24f Review
* Remove always
  - and consequently reorganise the words
* Add "one or more"
* Fix spelling of creator
  - changed from creater
2020-06-05 19:47:45 +01:00
github-actions[bot]
4335b3b2d4 Automated Crowdin downstream (#3913)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-06-04 14:22:16 +02:00
Draper
d6435eff85 make audioset autoplay guild-only (#3899) 2020-06-04 13:33:33 +02:00
Predeactor
2c313594da Typo Fix (#3900)
As always, a new typo is fixed forever.
2020-06-03 21:13:44 +02:00
Neuro Assassin
bc21f77976 Fix setting guild prefixes when the prefixes aren't in cache (#3897) 2020-06-02 03:02:35 +02:00
Dav
dbcb179523 Allow to hide moderator from warnings sent to the users + warn channel fix (#3781)
* add toggle to allow switching off sending the name of the person who uhhh used? the warning

* the Kowlin way of life

* reduced config calls to stay in line with #3766 and hopefully didn't break anything (as per Draper suggestion)

* more performance magic

* found an error + black

* forgot warning channel existed

* await... seriously... how long have you done async stuff now dav?

* unify (most) config calls in ``[p]warn``

* fix all the things
2020-06-01 02:58:36 +02:00
Vexed01
35e83855a8 remove admin only commands 2020-05-31 13:15:38 +01:00
Vexed01
6b086e3eb2 wait grammar exists? who knew... 2020-05-31 11:16:39 +01:00
Vexed01
049f23071c hmm actually no (undo) 2020-05-31 10:18:58 +01:00
Vexed01
e6c46bf4da add cog board link 2020-05-31 09:21:34 +01:00
Flame442
6984dca394 [Mod] Preemptive fix for the next dpy update (#3891) 2020-05-31 03:56:21 +02:00
Neuro Assassin
7a86cc4bf3 [Core] Add bot.set_prefixes() (#3890)
* Add bot.set_prefixes; change set serverprefix and set prefix to new method

* Address requested changes

* Apply suggestions from code review

* One more

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-05-31 00:57:49 +02:00
Vexed01
219586d55d wording changes 2020-05-30 19:57:34 +01:00
Vexed01
6a00c0ee7e black formatting
oops lets not forget what tox checks for
2020-05-30 19:42:33 +01:00
Vexed01
873c7be99e add class docstring to streams 2020-05-30 19:34:01 +01:00
Vexed01
c9cfa92b04 add class docstring to reports 2020-05-30 19:33:32 +01:00
Vexed01
ff46ca546d add class docstring to downloader
idk what to say rly
um hi all nice to be back after about 6 months
pls no hate my PRs
apoligies if i get in the way
if you read this far then you deserve an achievement um i dunno what err how about the achievement of unboredness
2020-05-30 17:19:54 +01:00
Draper
f1ba57b78b [Audio] Lyrics typo - p.s It feels dirty making a PR this small (#3889) 2020-05-30 15:39:50 +02:00
jack1142
4cf83b9ef4 Remove 26 from CODEOWNERS (#3886)
* Update the wildcard to Stonedestroyer

* Or maybe remove it
2020-05-30 02:54:35 +02:00
Kowlin
3702e2e998 Bump to 3.3.9.dev1 (#3875)
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-05-29 01:27:40 +02:00
Kowlin
30c1adfe5b Bump to 3.3.8 (#3874) 2020-05-29 01:11:02 +02:00
jack1142
c75035bf6e Red 3.3.8 - Changelog (Bonus changelog for 3.3.7 included) (#3800)
* Add 3.3.7 changelog

* Add 3.3.8 or 3.4.0 section

* PR 3815 (issue 3814)

* PR 3822

* PR 3817, 3823, 3837

* PR 3816

* PR 3819

* PR 3829 (issue 3796)

* PR 3844 (issue 3834)

* PR 3851

* PR 3855 (issue 3854)

* PR 3857

* PR 3459 (issue 3353, 3459, 3467, 3471, 3485, 3501, 3506)

* PR 3861

* PR 3862

* PR 3744

* PR 3873

* PR 3847

* PR 3856

* PR 3867

* PR 3843

* PR 3826 (issue 3825)

* PR 3864

* PR 3849

* PR 3793

* PR 3805 (issue 3778)

* Update version in header and add release date
2020-05-29 01:10:28 +02:00
jack1142
59358e7bac Stop showing instance names in redbot-setup help's syntax (#3838) 2020-05-29 01:08:37 +02:00
Dav
19fa0b968f Mention the need of shutdown/startup in update docs (#3849)
* [Docs] Update docs now mention need to restart

Previously the update docs never mentioned that you have to restart yur bot for the update to take effect.

* That actually makes sense...

* Aaand those should probably be turned off as well

* jack and draper.... oi

* Update docs/update_red.rst

* Update docs/update_red.rst

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-05-29 00:14:41 +02:00
jack1142
f2d02a6f46 (again) Handle the ints for user objects in Modlog appropriately (#3805)
* Handle the ints for user objects in Modlog appropriately (#3784)

* God, this is stupid

* Add logging of unexpected exceptions

* Add more specific info for Forbidden error

* add i18n support
2020-05-29 00:09:37 +02:00
jack1142
05ec73266c Fix behavior of is_owner for team applications and put all owner IDs in one attribute (#3793)
* blah

* you idiot

* Me likey Danny's way

* Add a warning when bot has no owner set
2020-05-29 00:03:23 +02:00
jack1142
a9acb80132 Use bot.send_help_for in [p]alias help instead of "hacky way" (#3864)
* Use `bot.send_help_for` instead of this "hack" in `[p]alias help`

* This isn't needed here
2020-05-28 23:58:52 +02:00
jack1142
ed89f70f98 Fix uses of re.sub() (#3826)
* Fix uses of `re.sub()` (pt. 1)

* Fix uses of `re.sub()` (pt. 2)

* Fix uses of `re.sub()` (pt. 3)

* Fix uses of `re.sub()` (pt. 4)

* Revert commands.py
2020-05-28 23:51:53 +02:00
jack1142
45afaa8ec8 Make the checks in [p]alias global add and [p]alias add consistent (#3797) 2020-05-28 23:50:44 +02:00
jack1142
4757c2c945 Add get_babel_regional_format() to redbot.core.i18n.__all__ (#3827) 2020-05-28 23:44:57 +02:00
jack1142
65395185c3 Add lib folder to pkg_resources's working set (#3843) 2020-05-28 23:41:06 +02:00
Draper
f2f3ac7d42 Special case new RLL message (RLL 0.5.1 bump inside) (#3868)
* specialcase new RLL message

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

* Bump RLL to 0.5.1

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-05-28 23:33:43 +02:00
jack1142
cb999bda7b Stop being destructive on generic DownloaderException (#3867) 2020-05-28 23:33:20 +02:00
Draper
cd14bccdc8 Get fucked Java 8. Long live Java 11 (till we kill you for your big brother Java 13) (#3873)
* Get fucked Java 8. Long live Java 11 (Till we kill you for your big brother Java 13)

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

* welp lets simplify this

Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
2020-05-28 23:02:23 +02:00
jack1142
cf6966058e Revise install instructions (+ install Java 11 everywhere, and update pyenv to use Python 3.8.3) (#3847)
* Use `openjdk-r` ppa for Ubuntu 16.04

* Don't add `deadsnakes` ppa for Ubuntu 20.04

* Use Java 11 for Arch Linux

* Update getting started guide to recommend Ubuntu 20.04 over 18

* Use Java 11 for Fedora Linux

* Use Java 11 for openSUSE Tumbleweed

* remove unneded `-u` for ubuntu 20.04 and 18.04

* use `openjdk-11-jre-headless` in all ubuntus

* use headless jre everywhere

* add non interactive flag to zypper calls

* Add emphasis on info about pyenv's warning

* reverse order of Ubuntu LTS versions

* Install Git 2.11+ with `yum replace` on CentOS/RHEL 7

* Add `--gpg-auto-import-keys` flag to non-interactive `zypper ar` usage

* update pyenv instructions to use Python 3.8.3

* Install git after installing everything else in CentOS 7 instructions

* use zypper flags properly

* improve the sentence a little

* I like consistency

* add missing `sudo`s in CentOS instructions

* add tk-devel to CentOS instructions per pyenv's recommendations

* Install gcc 8 from SCL in CentOS 7

* use git222 instead of git2u on CentOS 7

* Add missing `source ~/.bashrc` line

* use git224 instead of git222 on CentOS 7

* use yum swap over yum-plugin-replace in CentOS 7
2020-05-28 22:59:25 +02:00
jack1142
74b209bcc8 Add a TOC tree for version sections + emphasise venv removal in older versions (#3856)
* Add a TOC tree for version sections

* Add emphasis on virtual environment removal
2020-05-28 22:51:30 +02:00
jack1142
4a97020b78 Remove the docstring remains of regex in [p]cleanup self (#3871) 2020-05-28 22:51:04 +02:00
github-actions[bot]
e0d8942741 Automated Crowdin downstream (#3872)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-05-28 22:44:32 +02:00
Draper
4f25e6c1ad Add information on how to update to out of date message (#3744)
* add a more detailed update help

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

* ...

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

* a bit more clarity

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

* sure thing Jack

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

* add a disclaimer to the update command saying if the user faces any difficulties to check the system appropriate docs and/or support server

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

* add translation support

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

* better translation support for these

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

* Update redbot/core/events.py

Co-Authored-By: Flame442 <34169552+Flame442@users.noreply.github.com>

* Apply suggestions from code review

Co-Authored-By: Flame442 <34169552+Flame442@users.noreply.github.com>

* review

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

* Revert black fuckery

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

* aaaaaaaaaaaaaaaaaaaaaaaaaaa

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

* address jacks review

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

* 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>

* Update redbot/core/events.py

* Update redbot/core/events.py

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>

* Update redbot/core/utils/_internal_utils.py

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>

Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-05-27 08:39:53 +02:00
jack1142
81b4a1978b Update CODEOWNERS for subpackages in Audio cog (#3869) 2020-05-26 21:08:50 +02:00
Neuro Assassin
87d828a1b0 [Docs] Add information about provisional status of RPC (#3862) 2020-05-25 21:26:46 +02:00
github-actions[bot]
e52ff98cad Automated Crowdin downstream (#3860)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-05-25 00:09:55 +02:00
Predeactor
7cabc876f5 [Audio] Typo fix (#3861) 2020-05-22 17:54:40 +02:00
Draper
8fa47cb789 Merge V3/feature/audio into V3/develop (a.k.a. audio refactor) (#3459) 2020-05-20 22:30:06 +02:00
Neuro Assassin
ef76affd77 Fix local blacklist and whitelist commands (#3857) 2020-05-19 02:22:05 +02:00
Sean
38a034e59b Don't allow to warn other bots (#3855) 2020-05-17 17:03:51 +02:00
Predeactor
fb26ecf577 Fix casing and add missing dot in two commands (#3851) 2020-05-15 15:55:28 +02:00
github-actions[bot]
de99aac3ad Automated Crowdin downstream (#3850)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-05-14 22:07:36 +02:00
Darius St. Clair
4d9d224917 Add pagination to [p]alias list and [p]alias global list (#3844) 2020-05-14 17:05:35 +02:00
Kowlin
ac46b51d41 Update the issue templates (#3842)
* Create config.yml

* How do I typo things sometimes...

* Update .github/ISSUE_TEMPLATE/config.yml

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-05-10 03:32:54 +02:00
Toby Harradine
7aff7962f0 Fix creation of IdentifierData in config raw methods (#3829)
* Fix creation of IdentifierData in config

Also adds some new tests regarding partial primary keys.

Resolves #3796.

Signed-off-by: Toby Harradine <tobyharradine@gmail.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-05-09 15:11:23 +10:00
Flame442
1a96f276f8 Fix typo in [p]customcom show (#3837) 2020-05-08 16:48:35 +02:00
github-actions[bot]
480c3129bd Automated Crowdin downstream (#3830)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-05-07 16:37:33 +02:00
Michael H
981661ea68 Simplify the inheritance of the bot (#3822) 2020-05-07 03:08:20 +02:00
PredaaA
51f7d6cea2 Show default avatars in [p]userinfo when no avatar is set (#3819) 2020-05-07 02:37:06 +02:00
Qais Patankar
7d28581915 Fix 'authentification' typo (#3823) 2020-05-06 20:20:52 +02:00
Neuro Assassin
4a0f23b0ea Stop allowing spaces in custom commands names (#3816) 2020-05-01 18:32:22 +02:00
Flame442
aaee2d9294 Fix incorrect docstring in [p]helpset maxpages (#3817) 2020-05-01 18:30:58 +02:00
Michael H
d5c960096e Modify CustomCommands to use on_message_without_command (#3811) 2020-05-01 18:30:32 +02:00
jack1142
0c94ce6cc3 Make server lock work again (#3815) 2020-05-01 18:29:57 +02:00
jack1142
f280eea788 Dev bump (#3804) 2020-04-28 03:15:06 +02:00
Kowlin
af7b0e4e1f Update to 3.3.7 (#3803) 2020-04-28 02:07:39 +02:00
Kowlin
ef35fc0c5f Revert "Handle the ints for user objects in Modlog appropriately (#3784)" (#3802)
This reverts commit e595f1859a.
2020-04-28 02:03:22 +02:00
Kowlin
ca1f39a260 Update __init__.py (#3799) 2020-04-27 20:21:25 +02:00
676 changed files with 139037 additions and 107704 deletions

5
.github/CODEOWNERS vendored
View File

@@ -1,6 +1,3 @@
# Default
* @Twentysix26
# Core # Core
redbot/core/bank.py @palmtree5 redbot/core/bank.py @palmtree5
redbot/core/checks.py @tekulvw redbot/core/checks.py @tekulvw
@@ -30,7 +27,7 @@ redbot/core/utils/dbtools.py @mikeshardmind
# Cogs # Cogs
redbot/cogs/admin/* @tekulvw redbot/cogs/admin/* @tekulvw
redbot/cogs/alias/* @tekulvw redbot/cogs/alias/* @tekulvw
redbot/cogs/audio/* @aikaterna @Drapersniper redbot/cogs/audio/** @aikaterna @Drapersniper
redbot/cogs/bank/* @tekulvw redbot/cogs/bank/* @tekulvw
redbot/cogs/cleanup/* @palmtree5 redbot/cogs/cleanup/* @palmtree5
redbot/cogs/customcom/* @palmtree5 redbot/cogs/customcom/* @palmtree5

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Support question
url: https://discord.gg/red
about: For any questions regarding on how to operate and run Red.

View File

@@ -1,5 +1,214 @@
.. 3.3.x Changelogs .. 3.3.x Changelogs
Redbot 3.3.9 (2020-06-12)
=========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Dav-Git`, :ghuser:`Drapersniper`, :ghuser:`Flame442`, :ghuser:`mikeshardmind`, :ghuser:`NeuroAssassin`, :ghuser:`Predeactor`, :ghuser:`Vexed01`
|
| **Read before updating**:
| 1. Bot owners can no longer restrict access to some commands in Permissions cog using global permissions rules. Look at `Permissions changelog <important-339-2>` for full details.
| 2. There's been a change in behavior of warning messages. Look at `Warnings changelog <important-339-1>` for full details.
End-user changelog
------------------
Security
********
**NOTE**: If you can't update immediately, we recommend disabling the affected command until you can.
- **Mod** - ``[p]tempban`` now properly respects Discord's hierarchy rules (:issue:`3957`)
Core Bot
********
- ``[p]info`` command can now be used when bot doesn't have Embed Links permission (:issue:`3907`, :issue:`3102`)
- Fixed ungraceful error that happened in ``[p]set custominfo`` when provided text was too long (:issue:`3923`)
- Red's start up message now shows storage type (:issue:`3935`)
Audio
*****
- Audio now properly ignores streams when max length is enabled (:issue:`3878`, :issue:`3877`)
- Commands that should work in DMs no longer error (:issue:`3880`)
Filter
******
- Fixed behavior of detecting quotes in commands for adding/removing filtered words (:issue:`3925`)
.. _important-339-2:
Permissions
***********
- **Both global and server rules** can no longer prevent guild owners from accessing commands for changing server rules. Bot owners can still use ``[p]command disable`` if they wish to completely disable any command in Permissions cog (:issue:`3955`, :issue:`3107`)
Full list of affected commands:
- ``[p]permissions acl getserver``
- ``[p]permissions acl setserver``
- ``[p]permissions acl updateserver``
- ``[p]permissions addserverrule``
- ``[p]permissions removeserverrule``
- ``[p]permissions setdefaultserverrule``
- ``[p]permissions clearserverrules``
- ``[p]permissions canrun``
- ``[p]permissions explain``
.. _important-339-1:
Warnings
********
- Warnings sent to users don't show the moderator who warned the user by default now. Newly added ``[p]warningset showmoderators`` command can be used to switch this behaviour (:issue:`3781`)
- Warn channel functionality has been fixed (:issue:`3781`)
Developer changelog
-------------------
Core Bot
********
- Added `bot.set_prefixes() <RedBase.set_prefixes()>` method that allows developers to set global/server prefixes (:issue:`3890`)
Documentation changes
---------------------
- Added Oracle Cloud to free hosting section in :ref:`host-list` (:issue:`3916`)
Miscellaneous
-------------
- Added missing help message for Downloader, Reports and Streams cogs (:issue:`3892`)
- **Core Bot** - cooldown in ``[p]contact`` no longer applies when it's used without any arguments (:issue:`3942`)
- **Core Bot** - improved instructions on obtaining user ID in help of ``[p]dm`` command (:issue:`3946`)
- **Alias** - ``[p]alias global`` group, ``[p]alias help``, and ``[p]alias show`` commands can now be used in DMs (:issue:`3941`, :issue:`3940`)
- **Audio** - Typo fix (:issue:`3889`, :issue:`3900`)
- **Audio** - Fixed ``[p]audioset autoplay`` being available in DMs (:issue:`3899`)
- **Bank** - ``[p]bankset`` now displays bank's scope (:issue:`3954`)
- **Mod** - Preemptive fix for d.py 1.4 (:issue:`3891`)
Redbot 3.3.8 (2020-05-29)
==================================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Bakersbakebread`, :ghuser:`DariusStClair`, :ghuser:`Dav-Git`, :ghuser:`Drapersniper`, :ghuser:`Flame442`, :ghuser:`jack1142`, :ghuser:`mikeshardmind`, :ghuser:`NeuroAssassin`, :ghuser:`PredaaA`, :ghuser:`Predeactor`, :ghuser:`qaisjp`, :ghuser:`Tobotimus`
End-user changelog
------------------
Core Bot
********
- Important fixes to how PostgreSQL data backend saves data in bulks (:issue:`3829`)
- Fixed ``[p]localwhitelist`` and ``[p]localblacklist`` commands (:issue:`3857`)
- Red now includes information on how to update when sending information about being out of date (:issue:`3744`)
- Using backslashes in bot's username/nickname no longer causes issues (:issue:`3826`, :issue:`3825`)
Admin
*****
- Fixed server lock (:issue:`3815`, :issue:`3814`)
Alias
*****
- Added pagination to ``[p]alias list`` and ``[p]alias global list`` to avoid errors for users with a lot of aliases (:issue:`3844`, :issue:`3834`)
- ``[p]alias help`` should now work more reliably (:issue:`3864`)
Audio
*****
- Twitch playback is functional once again (:issue:`3873`)
- Recent errors with YouTube playback should be resolved (:issue:`3873`)
- Added new option (settable with ``[p]audioset lyrics``) that makes Audio cog prefer (prioritize) tracks with lyrics (:issue:`3519`)
- Added global daily (historical) queues (:issue:`3518`)
- Added ``[p]audioset countrycode`` that allows to set the country code for spotify searches (:issue:`3528`)
- Fixed ``[p]local search`` (:issue:`3528`, :issue:`3501`)
- Local folders with special characters should work properly now (:issue:`3528`, :issue:`3467`)
- Audio no longer fails to take the last spot in the voice channel with user limit (:issue:`3528`)
- ``[p]local play`` no longer enqueues tracks from nested folders (:issue:`3528`)
- Fixed ``[p]playlist dedupe`` not removing tracks (:issue:`3518`)
- ``[p]disconnect`` now allows to disconnect if both DJ mode and voteskip aren't enabled (:issue:`3502`, :issue:`3485`)
- Many UX improvements and fixes, including, among other things:
- Creating playlists without explicitly passing ``-scope`` no longer causes errors (:issue:`3500`)
- ``[p]playlist list`` now shows all accessible playlists if ``--scope`` flag isn't used (:issue:`3518`)
- ``[p]remove`` now also accepts a track URL in addition to queue index (:issue:`3201`)
- ``[p]playlist upload`` now accepts a playlist file uploaded in the message with a command (:issue:`3251`)
- Commands now send friendly error messages for common errors like lost Lavalink connection or bot not connected to voice channel (:issue:`3503`, :issue:`3528`, :issue:`3353`, :issue:`3712`)
CustomCommands
**************
- ``[p]customcom create`` no longer allows spaces in custom command names (:issue:`3816`)
Mod
***
- ``[p]userinfo`` now shows default avatar when no avatar is set (:issue:`3819`)
Modlog
******
- Fixed (again) ``AttributeError`` for cases whose moderator doesn't share the server with the bot (:issue:`3805`, :issue:`3784`, :issue:`3778`)
Permissions
***********
- Commands for settings ACL using yaml files now properly works on PostgreSQL data backend (:issue:`3829`, :issue:`3796`)
Warnings
********
- Warnings cog no longer allows to warn bot users (:issue:`3855`, :issue:`3854`)
Developer changelog
-------------------
| **Important:**
| If you're using RPC, please see the full annoucement about current state of RPC in main Red server
`by clicking here <https://discord.com/channels/133049272517001216/411381123101491200/714560168465137694>`_.
Core Bot
********
- Red now inherits from `discord.ext.commands.AutoShardedBot` for better compatibility with code expecting d.py bot (:issue:`3822`)
- Libraries using ``pkg_resources`` (like ``humanize`` or ``google-api-python-client``) that were installed through Downloader should now work properly (:issue:`3843`)
- All bot owner IDs can now be found under ``bot.owner_ids`` attribute (:issue:`3793`)
- Note: If you want to use this on bot startup (e.g. in cog's initialisation), you need to await ``bot.wait_until_red_ready()`` first
Documentation changes
---------------------
- Added information about provisional status of RPC (:issue:`3862`)
- Revised install instructions (:issue:`3847`)
- Improved navigation in `document about updating Red <update_red>` (:issue:`3856`, :issue:`3849`)
Miscellaneous
-------------
- Few clarifications and typo fixes in few command help docstrings (:issue:`3817`, :issue:`3823`, :issue:`3837`, :issue:`3851`, :issue:`3861`)
- **Downloader** - Downloader no longer removes the repo when it fails to load it (:issue:`3867`)
Redbot 3.3.7 (2020-04-28)
=========================
This is a hotfix release fixing issue with generating messages for new cases in Modlog.
Redbot 3.3.6 (2020-04-27) Redbot 3.3.6 (2020-04-27)
========================= =========================

View File

@@ -4,6 +4,10 @@
RPC RPC
=== ===
.. important::
RPC support is included in Red on a provisional basis. Backwards incompatible changes (up to and including removal of the RPC) may occur if deemed necessary.
V3 comes default with an internal RPC server that may be used to remotely control the bot in various ways. V3 comes default with an internal RPC server that may be used to remotely control the bot in various ways.
Cogs must register functions to be exposed to RPC clients. Cogs must register functions to be exposed to RPC clients.
Each of those functions must only take JSON serializable parameters and must return JSON serializable objects. Each of those functions must only take JSON serializable parameters and must return JSON serializable objects.

View File

@@ -270,7 +270,7 @@ If you want to do it, follow these steps.
2. **Install Linux** 2. **Install Linux**
Most of the VPS providers have tools for installing Linux automatically. If Most of the VPS providers have tools for installing Linux automatically. If
you're a beginner, we recommend **Ubuntu 18**. you're a beginner, we recommend **Ubuntu 20.04 LTS**.
For Raspberry Pi users, just install `Raspbian For Raspberry Pi users, just install `Raspbian
<https://www.raspberrypi.org/downloads/raspbian/>`_ on a micro-SD card. <https://www.raspberrypi.org/downloads/raspbian/>`_ on a micro-SD card.

View File

@@ -59,6 +59,9 @@ Others
|`Microsoft Azure |Same as AWS, but it's Microsoft. | |`Microsoft Azure |Same as AWS, but it's Microsoft. |
|<https://azure.microsoft.com>`_ | | |<https://azure.microsoft.com>`_ | |
+-------------------------------------+-----------------------------------------------------+ +-------------------------------------+-----------------------------------------------------+
|`Oracle Cloud |Same as AWS, but it's Oracle. |
|<https://oracle.com/cloud/>`_ | |
+-------------------------------------+-----------------------------------------------------+
|`LowEndBox <http://lowendbox.com/>`_ |A curator for lower specced servers. | |`LowEndBox <http://lowendbox.com/>`_ |A curator for lower specced servers. |
+-------------------------------------+-----------------------------------------------------+ +-------------------------------------+-----------------------------------------------------+
@@ -76,7 +79,10 @@ server. Any modern hardware should work 100% fine.
Free hosting Free hosting
------------ ------------
Google Cloud and AWS both have free tier VPS suitable for small bots. `Google Cloud Compute Free Tier <https://cloud.google.com/free/docs/gcp-free-tier>`_,
`Oracle Cloud Compute Always Free <https://oracle.com/cloud/free/#always-free>`_ and
`AWS EC2 Free Tier <https://aws.amazon.com/free/>`_ have free tier VPSes suitable for small bots.
AWS EC2 is not *always* free—it's a 12 month free trial.
Additionally, new Google Cloud customers get a $300 credit which is valid Additionally, new Google Cloud customers get a $300 credit which is valid
for 12 months. for 12 months.

View File

@@ -43,14 +43,14 @@ Arch Linux
.. code-block:: none .. code-block:: none
sudo pacman -Syu python python-pip git jre-openjdk-headless base-devel sudo pacman -Syu python python-pip git jre11-openjdk-headless base-devel
Continue by `creating-venv-linux`. Continue by `creating-venv-linux`.
---- ----
.. _install-centos: .. _install-centos7:
.. _install-rhel: .. _install-rhel7:
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
CentOS and RHEL 7 CentOS and RHEL 7
@@ -58,17 +58,27 @@ CentOS and RHEL 7
.. code-block:: none .. code-block:: none
yum -y groupinstall development sudo yum -y groupinstall development
yum -y install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum -y install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \ sudo yum -y install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
openssl-devel xz xz-devel libffi-devel findutils git2u java-11-openjdk openssl-devel xz xz-devel tk-devel libffi-devel findutils java-11-openjdk-headless
sudo yum -y install centos-release-scl
sudo yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++
echo "source scl_source enable devtoolset-8" >> ~/.bashrc
source ~/.bashrc
In order to install Git 2.11 or greater, we recommend adding the IUS repository:
.. code-block:: none
sudo yum -y install https://repo.ius.io/ius-release-el7.rpm
sudo yum -y swap git git224
Complete the rest of the installation by `installing Python 3.8 with pyenv <install-python-pyenv>`. Complete the rest of the installation by `installing Python 3.8 with pyenv <install-python-pyenv>`.
---- ----
.. _install-centos8: .. _install-centos:
.. _install-rhel8: .. _install-rhel:
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
CentOS and RHEL 8 CentOS and RHEL 8
@@ -76,12 +86,12 @@ CentOS and RHEL 8
.. code-block:: none .. code-block:: none
yum -y install epel-release sudo yum -y install epel-release
yum update -y sudo yum -y update
yum -y groupinstall development sudo yum -y groupinstall development
yum -y install git zlib-devel bzip2 bzip2-devel readline-devel sqlite \ sudo yum -y install git zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
sqlite-devel openssl-devel xz xz-devel libffi-devel findutils java-11-openjdk openssl-devel xz xz-devel tk-devel libffi-devel findutils java-11-openjdk-headless
Complete the rest of the installation by `installing Python 3.8 with pyenv <install-python-pyenv>`. Complete the rest of the installation by `installing Python 3.8 with pyenv <install-python-pyenv>`.
---- ----
@@ -105,8 +115,8 @@ Debian Stretch. This guide will tell you how. First, run the following commands:
sudo echo "deb http://deb.debian.org/debian stretch-backports main" >> /etc/apt/sources.list.d/red-sources.list sudo echo "deb http://deb.debian.org/debian stretch-backports main" >> /etc/apt/sources.list.d/red-sources.list
sudo apt update sudo apt update
sudo apt -y install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \ sudo apt -y install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \
libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev \ libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \
libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev python3-openssl git openjdk-11-jre libffi-dev liblzma-dev libgdbm-dev uuid-dev python3-openssl git openjdk-11-jre-headless
CXX=/usr/bin/g++ CXX=/usr/bin/g++
Complete the rest of the installation by `installing Python 3.8 with pyenv <install-python-pyenv>`. Complete the rest of the installation by `installing Python 3.8 with pyenv <install-python-pyenv>`.
@@ -127,8 +137,8 @@ Debian/Raspbian Buster. This guide will tell you how. First, run the following c
sudo apt update sudo apt update
sudo apt -y install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \ sudo apt -y install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \
libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev \ libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \
libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev python3-openssl git openjdk-11-jre libffi-dev liblzma-dev libgdbm-dev uuid-dev python3-openssl git openjdk-11-jre-headless
CXX=/usr/bin/g++ CXX=/usr/bin/g++
Complete the rest of the installation by `installing Python 3.8 with pyenv <install-python-pyenv>`. Complete the rest of the installation by `installing Python 3.8 with pyenv <install-python-pyenv>`.
@@ -146,7 +156,7 @@ them with dnf:
.. code-block:: none .. code-block:: none
sudo dnf -y install python38 git java-latest-openjdk-headless @development-tools sudo dnf -y install python38 git java-11-openjdk-headless @development-tools
Continue by `creating-venv-linux`. Continue by `creating-venv-linux`.
@@ -197,14 +207,17 @@ First, add the Opt-Python community repository:
.. code-block:: none .. code-block:: none
source /etc/os-release source /etc/os-release
sudo zypper ar -f https://download.opensuse.org/repositories/home:/Rotkraut:/Opt-Python/openSUSE_Leap_${VERSION_ID}/ Opt-Python sudo zypper -n ar -f \
https://download.opensuse.org/repositories/home:/Rotkraut:/Opt-Python/openSUSE_Leap_${VERSION_ID}/ \
Opt-Python
sudo zypper -n --gpg-auto-import-keys ref
Now install the pre-requirements with zypper: Now install the pre-requirements with zypper:
.. code-block:: none .. code-block:: none
sudo zypper install opt-python38 opt-python38-setuptools git-core java-11-openjdk-headless sudo zypper -n install opt-python38 opt-python38-setuptools git-core java-11-openjdk-headless
sudo zypper install -t pattern devel_basis sudo zypper -n install -t pattern devel_basis
Since Python is now installed to ``/opt/python``, we should add it to PATH. You can add a file in Since Python is now installed to ``/opt/python``, we should add it to PATH. You can add a file in
``/etc/profile.d/`` to do this: ``/etc/profile.d/`` to do this:
@@ -230,25 +243,31 @@ with zypper:
.. code-block:: none .. code-block:: none
sudo zypper install python3-base python3-pip git-core java-12-openjdk-headless sudo zypper -n install python3-base python3-pip git-core java-11-openjdk-headless
sudo zypper install -t pattern devel_basis sudo zypper -n install -t pattern devel_basis
Continue by `creating-venv-linux`. Continue by `creating-venv-linux`.
---- ----
.. _install-ubuntu: .. _install-ubuntu-1604:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~
Ubuntu LTS versions (20.04, 18.04, and 16.04) Ubuntu 16.04 LTS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~
We recommend adding the ``git-core`` ppa to install Git 2.11 or greater: We recommend adding the ``openjdk-r`` ppa to install Java 11:
.. code-block:: none .. code-block:: none
sudo apt update sudo apt update
sudo apt -y install software-properties-common sudo apt -y install software-properties-common
sudo add-apt-repository -yu ppa:openjdk-r/ppa
We recommend adding the ``git-core`` ppa to install Git 2.11 or greater:
.. code-block:: none
sudo add-apt-repository -yu ppa:git-core/ppa sudo add-apt-repository -yu ppa:git-core/ppa
We recommend adding the ``deadsnakes`` ppa to install Python 3.8.1 or greater: We recommend adding the ``deadsnakes`` ppa to install Python 3.8.1 or greater:
@@ -261,7 +280,63 @@ Now install the pre-requirements with apt:
.. code-block:: none .. code-block:: none
sudo apt -y install python3.8 python3.8-dev python3.8-venv python3-pip git default-jre-headless \ sudo apt -y install python3.8 python3.8-dev python3.8-venv python3-pip git openjdk-11-jre-headless \
build-essential
Continue by `creating-venv-linux`.
----
.. _install-ubuntu-1804:
~~~~~~~~~~~~~~~~
Ubuntu 18.04 LTS
~~~~~~~~~~~~~~~~
We recommend adding the ``git-core`` ppa to install Git 2.11 or greater:
.. code-block:: none
sudo apt update
sudo apt -y install software-properties-common
sudo add-apt-repository -y ppa:git-core/ppa
We recommend adding the ``deadsnakes`` ppa to install Python 3.8.1 or greater:
.. code-block:: none
sudo add-apt-repository -y ppa:deadsnakes/ppa
Now install the pre-requirements with apt:
.. code-block:: none
sudo apt -y install python3.8 python3.8-dev python3.8-venv python3-pip git openjdk-11-jre-headless \
build-essential
Continue by `creating-venv-linux`.
----
.. _install-ubuntu:
~~~~~~~~~~~~~~~~
Ubuntu 20.04 LTS
~~~~~~~~~~~~~~~~
We recommend adding the ``git-core`` ppa to install Git 2.11 or greater:
.. code-block:: none
sudo apt update
sudo apt -y install software-properties-common
sudo add-apt-repository -y ppa:git-core/ppa
Now install the pre-requirements with apt:
.. code-block:: none
sudo apt -y install python3.8 python3.8-dev python3.8-venv python3-pip git openjdk-11-jre-headless \
build-essential build-essential
Continue by `creating-venv-linux`. Continue by `creating-venv-linux`.
@@ -289,7 +364,7 @@ installing pyenv. To do this, first run the following commands:
sudo apt -y install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \ sudo apt -y install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \
libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev \ libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev \
libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev python3-openssl git openjdk-11-jre libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev python3-openssl git openjdk-11-jre-headless
CXX=/usr/bin/g++ CXX=/usr/bin/g++
And then complete the rest of the installation by `installing Python 3.8 with pyenv <install-python-pyenv>`. And then complete the rest of the installation by `installing Python 3.8 with pyenv <install-python-pyenv>`.
@@ -315,14 +390,14 @@ virtual environment.
command -v pyenv && pyenv update || curl https://pyenv.run | 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 **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. instructions given to fix that, then close and reopen your shell.**
Then run the following command: Then run the following command:
.. code-block:: none .. code-block:: none
CONFIGURE_OPTS=--enable-optimizations pyenv install 3.8.2 -v CONFIGURE_OPTS=--enable-optimizations pyenv install 3.8.3 -v
This may take a long time to complete, depending on your hardware. For some machines (such as 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 Raspberry Pis and micro-tier VPSes), it may take over an hour; in this case, you may wish to remove
@@ -334,7 +409,7 @@ After that is finished, run:
.. code-block:: none .. code-block:: none
pyenv global 3.8.2 pyenv global 3.8.3
Pyenv is now installed and your system should be configured to run Python 3.8. Pyenv is now installed and your system should be configured to run Python 3.8.

View File

@@ -4,18 +4,29 @@
Installing Red on Windows Installing Red on Windows
========================= =========================
--------------- -------------------------------
Needed Software Installing the pre-requirements
--------------- -------------------------------
The following software dependencies can all be installed quickly and easily through PowerShell, Please install the pre-requirements by following instructions from one of the following subsections.
using a trusted package manager for Windows called `Chocolatey <https://chocolatey.org>`_
We also provide instructions for manually installing all of the dependencies. The pre-requirements are:
- Python 3.8.1 or greater
- Pip 18.1 or greater
- Git 2.11+
- Java Runtime Environment 11 (for audio support)
****************************************** We also recommend installing some basic compiler tools, in case our dependencies don't provide
Installing using powershell and chocolatey pre-built "wheels" for your architecture.
******************************************
.. contents:: Choose a method of installing pre-requirements:
:local:
----
*********************************************
Using PowerShell and Chocolatey (recommended)
*********************************************
To install via PowerShell, search "powershell" in the Windows start menu, To install via PowerShell, search "powershell" in the Windows start menu,
right-click on it and then click "Run as administrator" right-click on it and then click "Run as administrator"
@@ -39,6 +50,8 @@ For Audio support, you should also run the following command before exiting:
From here, exit the prompt then continue onto `creating-venv-windows`. From here, exit the prompt then continue onto `creating-venv-windows`.
----
******************************** ********************************
Manually installing dependencies Manually installing dependencies
******************************** ********************************
@@ -61,6 +74,9 @@ Manually installing dependencies
* `Java 11 <https://adoptopenjdk.net/?variant=openjdk11&jvmVariant=hotspot>`_ - needed for Audio * `Java 11 <https://adoptopenjdk.net/?variant=openjdk11&jvmVariant=hotspot>`_ - needed for Audio
From here, continue onto `creating-venv-windows`.
----
.. _creating-venv-windows: .. _creating-venv-windows:

View File

@@ -16,6 +16,10 @@ Here are some things to consider to help make your upgrade as smooth as possible
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. 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.
.. contents:: Choose the version you're currently on from the list below:
:local:
:depth: 1
Red 3.2.0 or newer Red 3.2.0 or newer
****************** ******************
@@ -23,15 +27,17 @@ Red 3.2.0 or newer
Windows Windows
------- -------
If you have Red 3.2.0 or newer, all you have to do to upgrade Red is running 2 commands. If you have Red 3.2.0 or newer, you can upgrade by following these 4 easy steps:
1. Activate your venv with the following command: 1. Shut your bot down.
2. Activate your venv with the following command:
.. code:: none .. code:: none
"%userprofile%\redenv\Scripts\activate.bat" "%userprofile%\redenv\Scripts\activate.bat"
2. Update Red with this command: 3. Update Red with this command:
.. code:: none .. code:: none
@@ -41,12 +47,16 @@ If you have Red 3.2.0 or newer, all you have to do to upgrade Red is running 2 c
If you're using PostgreSQL data backend, replace ``Red-DiscordBot`` in the second command with ``Red-DiscordBot[postgres]`` If you're using PostgreSQL data backend, replace ``Red-DiscordBot`` in the second command with ``Red-DiscordBot[postgres]``
4. Start your bot.
Linux & Mac Linux & Mac
----------- -----------
If you have Red 3.2.0 or newer, all you have to do to upgrade Red is running 2 commands. If you have Red 3.2.0 or newer, you can upgrade by following these 4 easy steps:
1. Activate your virtual environment. 1. Shut your bot down.
2. Activate your virtual environment.
If you used ``venv`` for your virtual environment, use: If you used ``venv`` for your virtual environment, use:
@@ -60,7 +70,7 @@ If you have Red 3.2.0 or newer, all you have to do to upgrade Red is running 2 c
pyenv shell <name> pyenv shell <name>
2. Update Red with this command: 3. Update Red with this command:
.. code:: none .. code:: none
@@ -70,18 +80,19 @@ If you have Red 3.2.0 or newer, all you have to do to upgrade Red is running 2 c
If you're using PostgreSQL data backend, replace ``Red-DiscordBot`` in the second command with ``Red-DiscordBot[postgres]`` If you're using PostgreSQL data backend, replace ``Red-DiscordBot`` in the second command with ``Red-DiscordBot[postgres]``
4. Start your bot.
Red 3.1.X Red 3.1.X
********* *********
If you have Red 3.1.X, you will need to follow the install instructions for your operating system: If you have Red 3.1.X, you will need to follow the install instructions for your operating system. Make sure that you turn your bot off first.
- `Windows <install_windows>` - `Windows <install_windows>`
- `Linux & Mac <install_linux_mac>` - `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. 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. **If you already have Red installed in a virtual environment, you will need to delete it before starting this process.**
.. attention:: .. attention::
@@ -114,11 +125,11 @@ Red 3.0.2 and older
redbot-setup --edit redbot-setup --edit
If you have Red 3.0.2 or older, you will need to follow the install instructions for your operating system: If you have Red 3.0.2 or older, you will need to follow the install instructions for your operating system. Make sure that you turn your bot off first.
- `Windows <install_windows>` - `Windows <install_windows>`
- `Linux & Mac <install_linux_mac>` - `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. 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. **If you already have Red installed in a virtual environment, you will need to delete it before starting this process.**

View File

@@ -20,6 +20,8 @@ which is not private (even if not documented) should not break without notice.
Anything in the ``redbot.cogs`` module or any of it's submodules is specifically Anything in the ``redbot.cogs`` module or any of it's submodules is specifically
excluded from being guaranteed. excluded from being guaranteed.
Any RPC method exposed by Red may break without notice.
If you would like something in here to be guaranteed, If you would like something in here to be guaranteed,
open an issue making a case for it to be moved. open an issue making a case for it to be moved.

View File

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

View File

@@ -7,6 +7,7 @@ import json
import logging import logging
import os import os
import pip import pip
import pkg_resources
import platform import platform
import shutil import shutil
import signal import signal
@@ -346,6 +347,14 @@ async def run_bot(red: Red, cli_flags: Namespace) -> None:
LIB_PATH.mkdir(parents=True, exist_ok=True) LIB_PATH.mkdir(parents=True, exist_ok=True)
if str(LIB_PATH) not in sys.path: if str(LIB_PATH) not in sys.path:
sys.path.append(str(LIB_PATH)) sys.path.append(str(LIB_PATH))
# "It's important to note that the global `working_set` object is initialized from
# `sys.path` when `pkg_resources` is first imported, but is only updated if you do
# all future `sys.path` manipulation via `pkg_resources` APIs. If you manually modify
# `sys.path`, you must invoke the appropriate methods on the `working_set` instance
# to keep it in sync."
# Source: https://setuptools.readthedocs.io/en/latest/pkg_resources.html#workingset-objects
pkg_resources.working_set.add_entry(str(LIB_PATH))
sys.meta_path.insert(0, SharedLibImportWarner()) sys.meta_path.insert(0, SharedLibImportWarner())
if cli_flags.token: if cli_flags.token:

View File

@@ -467,6 +467,7 @@ class Admin(commands.Cog):
await ctx.send(_("The bot is now serverlocked.")) await ctx.send(_("The bot is now serverlocked."))
# region Event Handlers # region Event Handlers
@commands.Cog.listener()
async def on_guild_join(self, guild: discord.Guild): async def on_guild_join(self, guild: discord.Guild):
if await self.config.serverlocked(): if await self.config.serverlocked():
await guild.leave() await guild.leave()

View File

@@ -19,31 +19,31 @@ msgstr "Intenté hacer algo que Discord me ha negado el permiso. Su comando no s
#: redbot/cogs/admin/admin.py:22 #: 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." 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 "No puedo dar el rol{role.name} a {member.display_name} porque ese rol es mayor o igual a mi rol más alto en la jerarquía de Discord."
#: redbot/cogs/admin/admin.py:28 #: 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." 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."
msgstr "" msgstr "No puedo eliminar el rol {role.name} de {member.display_name} porque ese rol es mayor o igual que mi rol más alto en la jerarquía de Discord."
#: redbot/cogs/admin/admin.py:34 #: redbot/cogs/admin/admin.py:34
msgid "I can not edit {role.name} because that role is higher than my or equal to highest role in the Discord hierarchy." msgid "I can not edit {role.name} because that role is higher than my or equal to highest role in the Discord hierarchy."
msgstr "" msgstr "No puedo editar el rol {role.name} porque ese rol es mayor que el mío o igual al rol más alto en la jerarquía de Discord."
#: redbot/cogs/admin/admin.py:40 #: redbot/cogs/admin/admin.py:40
msgid "I can not let you give {role.name} to {member.display_name} because that role is higher than or equal to your highest role in the Discord hierarchy." msgid "I can not let you give {role.name} to {member.display_name} because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr "" msgstr "No puedo dejar que le des el rol {role.name} a {member.display_name} porque ese rol es mayor o igual a tu rol más alto en la jerarquía de Discord."
#: redbot/cogs/admin/admin.py:46 #: redbot/cogs/admin/admin.py:46
msgid "I can not let you remove {role.name} from {member.display_name} because that role is higher than or equal to your highest role in the Discord hierarchy." msgid "I can not let you remove {role.name} from {member.display_name} because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr "" msgstr "No puedo dejar que elimines el rol {role.name} de {member.display_name} porque ese rol es mayor o igual a tu rol más alto en la jerarquía de Discord."
#: redbot/cogs/admin/admin.py:52 #: redbot/cogs/admin/admin.py:52
msgid "I can not let you edit {role.name} because that role is higher than or equal to your highest role in the Discord hierarchy." msgid "I can not let you edit {role.name} because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr "" msgstr "No puedo permitir que edites el rol{role.name} porque ese rol es mayor o igual a tu rol más alto en la jerarquía de Discord."
#: redbot/cogs/admin/admin.py:58 #: redbot/cogs/admin/admin.py:58
msgid "I need manage roles permission to do that." msgid "I need manage roles permission to do that."
msgstr "" msgstr "Necesito el permiso gestionar roles para hacerlo."
#: redbot/cogs/admin/admin.py:60 #: 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." msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
@@ -56,7 +56,7 @@ msgstr "Una colección de utilidades de administración de servidores."
#: redbot/cogs/admin/admin.py:126 #: redbot/cogs/admin/admin.py:126
msgid "{member.display_name} already has the role {role.name}." msgid "{member.display_name} already has the role {role.name}."
msgstr "" msgstr "{member.display_name} ya tiene el rol {role.name}."
#: redbot/cogs/admin/admin.py:146 #: redbot/cogs/admin/admin.py:146
msgid "I successfully added {role.name} to {member.display_name}" msgid "I successfully added {role.name} to {member.display_name}"
@@ -64,7 +64,7 @@ msgstr "He añadido con éxito {role.name} a {member.display_name}"
#: redbot/cogs/admin/admin.py:156 #: redbot/cogs/admin/admin.py:156
msgid "{member.display_name} does not have the role {role.name}." msgid "{member.display_name} does not have the role {role.name}."
msgstr "" msgstr "{member.display_name} no tiene el rol {role.name}."
#: redbot/cogs/admin/admin.py:176 #: redbot/cogs/admin/admin.py:176
msgid "I successfully removed {role.name} from {member.display_name}" msgid "I successfully removed {role.name} from {member.display_name}"
@@ -73,12 +73,12 @@ msgstr "He retirado con éxito {role.name} de {member.display_name}"
#: redbot/cogs/admin/admin.py:187 #: redbot/cogs/admin/admin.py:187
#, docstring #, docstring
msgid "\\n Add a role to a user.\\n\\n Use double quotes if the role contains spaces.\\n If user is left blank it defaults to the author of the command.\\n " msgid "\\n Add a role to a user.\\n\\n Use double quotes if the role contains spaces.\\n If user is left blank it defaults to the author of the command.\\n "
msgstr "" msgstr "\\n Añadir un rol a un usuario.\\n\\n Usar comillas dobles si el rol contiene espacios.\\n Si el usuario se deja en blanco el valor por defecto es el autor del comando.\\n "
#: redbot/cogs/admin/admin.py:203 #: redbot/cogs/admin/admin.py:203
#, docstring #, docstring
msgid "\\n Remove a role from a user.\\n\\n Use double quotes if the role contains spaces.\\n If user is left blank it defaults to the author of the command.\\n " msgid "\\n Remove a role from a user.\\n\\n Use double quotes if the role contains spaces.\\n If user is left blank it defaults to the author of the command.\\n "
msgstr "" msgstr "\\n Elimina un rol de un usuario.\\n\\n Usar comillas dobles si el rol contiene espacios.\\n Si el usuario se deja en blanco el valor por defecto es el autor del comando.\\n "
#: redbot/cogs/admin/admin.py:217 #: redbot/cogs/admin/admin.py:217
#, docstring #, docstring
@@ -88,7 +88,7 @@ msgstr "Editar configuración de rol."
#: redbot/cogs/admin/admin.py:224 #: redbot/cogs/admin/admin.py:224
#, docstring #, docstring
msgid "\\n Edit a role's colour.\\n\\n Use double quotes if the role contains spaces.\\n Colour must be in hexadecimal format.\\n [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\\n\\n Examples:\\n `[p]editrole colour \\\"The Transistor\\\" #ff0000`\\n `[p]editrole colour Test #ff9900`\\n " msgid "\\n Edit a role's colour.\\n\\n Use double quotes if the role contains spaces.\\n Colour must be in hexadecimal format.\\n [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\\n\\n Examples:\\n `[p]editrole colour \\\"The Transistor\\\" #ff0000`\\n `[p]editrole colour Test #ff9900`\\n "
msgstr "" msgstr "\\n Edita el color de un rol.\\n\\n Usar comillas dobles si el rol contiene espacios.\\n El color debe estar en formato hexadecimal.\\n [Selector de color en línea](http://www.w3schools.com/colors/colors_picker.asp)\\n\\n Ejemplos:\\n `[p]color editrole \\\"The Transistor\\\" #ff0000`\\n `[p]editrole colour Test #ff9900`\\n "
#: redbot/cogs/admin/admin.py:253 redbot/cogs/admin/admin.py:286 #: redbot/cogs/admin/admin.py:253 redbot/cogs/admin/admin.py:286
msgid "Done." msgid "Done."
@@ -97,7 +97,7 @@ msgstr "Listo."
#: redbot/cogs/admin/admin.py:257 #: redbot/cogs/admin/admin.py:257
#, docstring #, docstring
msgid "\\n Edit a role's name.\\n\\n Use double quotes if the role or the name contain spaces.\\n\\n Example:\\n `[p]editrole name \\\"The Transistor\\\" Test`\\n " msgid "\\n Edit a role's name.\\n\\n Use double quotes if the role or the name contain spaces.\\n\\n Example:\\n `[p]editrole name \\\"The Transistor\\\" Test`\\n "
msgstr "" msgstr "\\n Edita el nombre de un rol.\\n\\n Utilice comillas dobles si el rol o el nombre contiene espacios.\\n\\n Ejemplo:\\n `[p]nombre editrole \\\"The Transistor\\\" Test`\\n "
#: redbot/cogs/admin/admin.py:291 #: redbot/cogs/admin/admin.py:291
#, docstring #, docstring
@@ -106,115 +106,115 @@ msgstr "Anunciar un mensaje a todos los servidores en que el bot está."
#: redbot/cogs/admin/admin.py:298 #: redbot/cogs/admin/admin.py:298
msgid "The announcement has begun." msgid "The announcement has begun."
msgstr "" msgstr "El anuncio ha comenzado."
#: redbot/cogs/admin/admin.py:305 #: redbot/cogs/admin/admin.py:305
#, docstring #, docstring
msgid "Cancel a running announce." msgid "Cancel a running announce."
msgstr "" msgstr "Cancela un anuncio en ejecución."
#: redbot/cogs/admin/admin.py:307 #: redbot/cogs/admin/admin.py:307
msgid "There is no currently running announcement." msgid "There is no currently running announcement."
msgstr "" msgstr "No hay ningún anuncio en ejecución."
#: redbot/cogs/admin/admin.py:310 #: redbot/cogs/admin/admin.py:310
msgid "The current announcement has been cancelled." msgid "The current announcement has been cancelled."
msgstr "" msgstr "El anuncio actual ha sido cancelado."
#: redbot/cogs/admin/admin.py:316 #: redbot/cogs/admin/admin.py:316
#, docstring #, docstring
msgid "Change how announcements are sent in this guild." msgid "Change how announcements are sent in this guild."
msgstr "" msgstr "Cambia cómo son enviados los anuncios en este servidor."
#: redbot/cogs/admin/admin.py:321 #: redbot/cogs/admin/admin.py:321
#, docstring #, docstring
msgid "\\n Change the channel where the bot will send announcements.\\n \\n If channel is left blank it defaults to the current channel.\\n " msgid "\\n Change the channel where the bot will send announcements.\\n \\n If channel is left blank it defaults to the current channel.\\n "
msgstr "" msgstr "\\n Cambia el canal donde el bot enviará anuncios.\\n \\n Si se deja en blanco el canal por defecto es el canal actual.\\n "
#: redbot/cogs/admin/admin.py:330 #: redbot/cogs/admin/admin.py:330
msgid "The announcement channel has been set to {channel.mention}" msgid "The announcement channel has been set to {channel.mention}"
msgstr "" msgstr "El canal de anuncios se ha establecido en {channel.mention}"
#: redbot/cogs/admin/admin.py:335 #: redbot/cogs/admin/admin.py:335
#, docstring #, docstring
msgid "Toggle announcements being enabled this server." msgid "Toggle announcements being enabled this server."
msgstr "" msgstr "Alternar la activación de los anuncios en este servidor."
#: redbot/cogs/admin/admin.py:340 #: redbot/cogs/admin/admin.py:340
msgid "The server {guild.name} will receive announcements." msgid "The server {guild.name} will receive announcements."
msgstr "" msgstr "El servidor {guild.name} recibirá anuncios."
#: redbot/cogs/admin/admin.py:344 #: redbot/cogs/admin/admin.py:344
msgid "The server {guild.name} will not receive announcements." msgid "The server {guild.name} will not receive announcements."
msgstr "" msgstr "El servidor {guild.name} no recibirá anuncios."
#: redbot/cogs/admin/admin.py:370 #: redbot/cogs/admin/admin.py:370
#, docstring #, docstring
msgid "Apply selfroles." msgid "Apply selfroles."
msgstr "" msgstr "Aplicar selfroles."
#: redbot/cogs/admin/admin.py:375 #: redbot/cogs/admin/admin.py:375
#, docstring #, 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 " 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 "" msgstr "\\n Añade un rol a ti mismo.\\n\\n Los administradores del servidor deben haber configurado el rol como usuario configurable.\\n NOTA: El rol es sensible a mayúsculas!\\n "
#: redbot/cogs/admin/admin.py:386 #: redbot/cogs/admin/admin.py:386
#, docstring #, docstring
msgid "\\n Remove a selfrole from yourself.\\n\\n Server admins must have configured the role as user settable.\\n NOTE: The role is case sensitive!\\n " msgid "\\n Remove a selfrole from yourself.\\n\\n Server admins must have configured the role as user settable.\\n NOTE: The role is case sensitive!\\n "
msgstr "" msgstr "\\n Elimina un rol de ti mismo.\\n\\n Los administradores del servidor deben haber configurado el rol como usuario configurable.\\n NOTA: El rol es sensible a mayúsculas!\\n "
#: redbot/cogs/admin/admin.py:397 #: redbot/cogs/admin/admin.py:397
#, docstring #, docstring
msgid "\\n Lists all available selfroles.\\n " msgid "\\n Lists all available selfroles.\\n "
msgstr "" msgstr "\\n Lista de todos los selfroles disponibles.\\n "
#: redbot/cogs/admin/admin.py:407 #: redbot/cogs/admin/admin.py:407
msgid "Available Selfroles:\\n{selfroles}" msgid "Available Selfroles:\\n{selfroles}"
msgstr "" msgstr "Selfroles disponibles:\\n{selfroles}"
#: redbot/cogs/admin/admin.py:413 #: redbot/cogs/admin/admin.py:413
#, docstring #, docstring
msgid "Manage selfroles." msgid "Manage selfroles."
msgstr "" msgstr "Gestionar selfroles."
#: redbot/cogs/admin/admin.py:418 #: redbot/cogs/admin/admin.py:418
#, docstring #, docstring
msgid "\\n Add a role to the list of available selfroles.\\n\\n NOTE: The role is case sensitive!\\n " msgid "\\n Add a role to the list of available selfroles.\\n\\n NOTE: The role is case sensitive!\\n "
msgstr "" msgstr "\\n Añade un rol a la lista de selfroles disponibles.\\n\\n NOTA: ¡El rol es sensible a mayúsculas\\n "
#: redbot/cogs/admin/admin.py:425 #: redbot/cogs/admin/admin.py:425
msgid "I cannot let you add {role.name} as a selfrole because that role is higher than or equal to your highest role in the Discord hierarchy." msgid "I cannot let you add {role.name} as a selfrole because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr "" msgstr "No puedo permitir que añadas {role.name} como selfrole porque ese rol es mayor o igual a tu rol más alto en la jerarquía de Discord."
#: redbot/cogs/admin/admin.py:433 #: redbot/cogs/admin/admin.py:433
msgid "Added." msgid "Added."
msgstr "" msgstr "Añadido."
#: redbot/cogs/admin/admin.py:436 #: redbot/cogs/admin/admin.py:436
msgid "That role is already a selfrole." msgid "That role is already a selfrole."
msgstr "" msgstr "Ese rol ya es un selfrole."
#: redbot/cogs/admin/admin.py:440 #: redbot/cogs/admin/admin.py:440
#, docstring #, docstring
msgid "\\n Remove a role from the list of available selfroles.\\n\\n NOTE: The role is case sensitive!\\n " msgid "\\n Remove a role from the list of available selfroles.\\n\\n NOTE: The role is case sensitive!\\n "
msgstr "" msgstr "\\n Quita un rol de la lista de selfroles disponibles.\\n\\n NOTA: El rol es sensible a mayúsculas\\n "
#: redbot/cogs/admin/admin.py:447 #: redbot/cogs/admin/admin.py:447
msgid "I cannot let you remove {role.name} from being a selfrole because that role is higher than or equal to your highest role in the Discord hierarchy." msgid "I cannot let you remove {role.name} from being a selfrole because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr "" msgstr "No puedo permitir que elimines a {role.name} de ser un selfrole porque ese rol es mayor o igual a tu rol más alto en la jerarquía de Discord."
#: redbot/cogs/admin/admin.py:455 #: redbot/cogs/admin/admin.py:455
msgid "Removed." msgid "Removed."
msgstr "" msgstr "Eliminado."
#: redbot/cogs/admin/admin.py:460 #: redbot/cogs/admin/admin.py:460
#, docstring #, docstring
msgid "Lock a bot to its current servers only." msgid "Lock a bot to its current servers only."
msgstr "" msgstr "Bloquea el bot sólo a sus servidores actuales."
#: redbot/cogs/admin/admin.py:465 #: redbot/cogs/admin/admin.py:465
msgid "The bot is no longer serverlocked." msgid "The bot is no longer serverlocked."
msgstr "" msgstr "El bot ya no está bloqueado por el servidor."
#: redbot/cogs/admin/admin.py:467 #: redbot/cogs/admin/admin.py:467
msgid "The bot is now serverlocked." msgid "The bot is now serverlocked."
@@ -222,11 +222,11 @@ msgstr "El bot está bloqueado por el servidor."
#: redbot/cogs/admin/announcer.py:75 #: redbot/cogs/admin/announcer.py:75
msgid "I could not announce to the following server: " msgid "I could not announce to the following server: "
msgstr "" msgstr "No pude anunciar en el siguiente servidor: "
#: redbot/cogs/admin/announcer.py:77 #: redbot/cogs/admin/announcer.py:77
msgid "I could not announce to the following servers: " msgid "I could not announce to the following servers: "
msgstr "" msgstr "No pude anunciar en los siguientes servidores: "
#: redbot/cogs/admin/converters.py:12 #: redbot/cogs/admin/converters.py:12
msgid "The Admin cog is not loaded." msgid "The Admin cog is not loaded."

View File

@@ -83,7 +83,7 @@ msgstr ""
#: redbot/cogs/admin/admin.py:217 #: redbot/cogs/admin/admin.py:217
#, docstring #, docstring
msgid "Edit role settings." msgid "Edit role settings."
msgstr "" msgstr "역할 설정을 변경했어요."
#: redbot/cogs/admin/admin.py:224 #: redbot/cogs/admin/admin.py:224
#, docstring #, docstring
@@ -111,7 +111,7 @@ msgstr ""
#: redbot/cogs/admin/admin.py:305 #: redbot/cogs/admin/admin.py:305
#, docstring #, docstring
msgid "Cancel a running announce." msgid "Cancel a running announce."
msgstr "" msgstr "실행 중인 공지사항을 취소했어요."
#: redbot/cogs/admin/admin.py:307 #: redbot/cogs/admin/admin.py:307
msgid "There is no currently running announcement." msgid "There is no currently running announcement."
@@ -226,11 +226,11 @@ msgstr ""
#: redbot/cogs/admin/announcer.py:77 #: redbot/cogs/admin/announcer.py:77
msgid "I could not announce to the following servers: " msgid "I could not announce to the following servers: "
msgstr "" msgstr "다음과 같은 서버에 알릴 수 없어요. : "
#: redbot/cogs/admin/converters.py:12 #: redbot/cogs/admin/converters.py:12
msgid "The Admin cog is not loaded." msgid "The Admin cog is not loaded."
msgstr "" msgstr "관리자 cog가 로드되지 않았어요."
#: redbot/cogs/admin/converters.py:20 #: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole." msgid "The provided role is not a valid selfrole."

View File

@@ -19,11 +19,11 @@ msgstr "Tentei fazer uma coisa que o Discord negou permissão para fazer. O coma
#: redbot/cogs/admin/admin.py:22 #: 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." 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 "Eu não posso dar {role.name} a {member.display_name} porque esse cargo é igual ou maior a meu cargo na hierarquia do Discord."
#: redbot/cogs/admin/admin.py:28 #: 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." 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."
msgstr "" msgstr "Não posso remover {role.name} de {member.display_name} porque esse cargo é igual ou maior a meu cargo na hierarquia do Discord."
#: redbot/cogs/admin/admin.py:34 #: redbot/cogs/admin/admin.py:34
msgid "I can not edit {role.name} because that role is higher than my or equal to highest role in the Discord hierarchy." msgid "I can not edit {role.name} because that role is higher than my or equal to highest role in the Discord hierarchy."

View File

@@ -19,85 +19,85 @@ msgstr "Bir şey denemeye çalıştım ancak Discord izinlerim yeterli olmadı.
#: redbot/cogs/admin/admin.py:22 #: 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." 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 "{member.display_name} kullanıcısına {role.name} veremiyorum çünkü bu rol Discord hiyerarşisinde rolüme eşit veya daha yüksek."
#: redbot/cogs/admin/admin.py:28 #: 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." 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."
msgstr "" msgstr "{member.display_name} kullanıcısından {role.name} rolünü kaldıramıyorum çünkü bu rol Discord hiyerarşisinde rolüme eşit veya daha yüksek."
#: redbot/cogs/admin/admin.py:34 #: redbot/cogs/admin/admin.py:34
msgid "I can not edit {role.name} because that role is higher than my or equal to highest role in the Discord hierarchy." msgid "I can not edit {role.name} because that role is higher than my or equal to highest role in the Discord hierarchy."
msgstr "" msgstr "{role.name} kullanıcısının rolünü düzenleyemiyorum, çünkü bu rol Discord hiyerarşisinde rolüme eşit veya daha yüksek."
#: redbot/cogs/admin/admin.py:40 #: redbot/cogs/admin/admin.py:40
msgid "I can not let you give {role.name} to {member.display_name} because that role is higher than or equal to your highest role in the Discord hierarchy." msgid "I can not let you give {role.name} to {member.display_name} because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr "" msgstr "{member.display_name} kullanıcısına {role.name} rolünü vermene müsaade edemem çünkü bu rol Discord hiyerarşisinde senin rolüne eşit veya daha yüksek."
#: redbot/cogs/admin/admin.py:46 #: redbot/cogs/admin/admin.py:46
msgid "I can not let you remove {role.name} from {member.display_name} because that role is higher than or equal to your highest role in the Discord hierarchy." msgid "I can not let you remove {role.name} from {member.display_name} because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr "" msgstr "{member.display_name} kullanıcısının {role.name} rolünü silmene müsaade edemem çünkü bu rol Discord hiyerarşisinde senin rolüne eşit veya daha yüksek."
#: redbot/cogs/admin/admin.py:52 #: redbot/cogs/admin/admin.py:52
msgid "I can not let you edit {role.name} because that role is higher than or equal to your highest role in the Discord hierarchy." msgid "I can not let you edit {role.name} because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr "" msgstr "{role.name} rolünü düzenlemene müsaade edemem çünkü bu rol Discord hiyerarşisinde senin rolüne eşit veya daha yüksek."
#: redbot/cogs/admin/admin.py:58 #: redbot/cogs/admin/admin.py:58
msgid "I need manage roles permission to do that." msgid "I need manage roles permission to do that."
msgstr "" msgstr "Bunu yapabilmem için \"rolleri yönet\" iznine ihtiyacım var."
#: redbot/cogs/admin/admin.py:60 #: 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." msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr "Zaten şuan da bir duyuru yapmaktayım. Başka bir duyuru yapmak istiyorsanız lütfen bu komutu kullanın: `{prefix}announce cancel`." msgstr "Zaten şu anda bir duyuru yapmaktayım. Başka bir duyuru yapmak istiyorsanız lütfen bu komutu kullanın: `{prefix}announce cancel`."
#: redbot/cogs/admin/admin.py:70 #: redbot/cogs/admin/admin.py:70
#, docstring #, docstring
msgid "A collection of server administration utilities." msgid "A collection of server administration utilities."
msgstr "Sunucu yönetimiyle ilgili ayarlar" msgstr "Sunucu yönetim araçları için bir kolleksiyon."
#: redbot/cogs/admin/admin.py:126 #: redbot/cogs/admin/admin.py:126
msgid "{member.display_name} already has the role {role.name}." msgid "{member.display_name} already has the role {role.name}."
msgstr "" msgstr "{member.display_name} kullanıcısı {role.name} rolüne zaten sahip."
#: redbot/cogs/admin/admin.py:146 #: redbot/cogs/admin/admin.py:146
msgid "I successfully added {role.name} to {member.display_name}" msgid "I successfully added {role.name} to {member.display_name}"
msgstr "{role.name} rolünü {member.display_name} kişisine başarılı bir şekilde ekledim" msgstr "{role.name} rolünü {member.display_name} kullanıcısına başarılı bir şekilde ekledim."
#: redbot/cogs/admin/admin.py:156 #: redbot/cogs/admin/admin.py:156
msgid "{member.display_name} does not have the role {role.name}." msgid "{member.display_name} does not have the role {role.name}."
msgstr "" msgstr "{member.display_name} kullanıcısı {role.name} rolüne sahip değil."
#: redbot/cogs/admin/admin.py:176 #: redbot/cogs/admin/admin.py:176
msgid "I successfully removed {role.name} from {member.display_name}" msgid "I successfully removed {role.name} from {member.display_name}"
msgstr "{role.name} rolünü {member.display_name} kişisine başarılı bir şekilde kaldırdım." msgstr "{role.name} rolünü {member.display_name} kullanıcısından başarılı bir şekilde kaldırdım."
#: redbot/cogs/admin/admin.py:187 #: redbot/cogs/admin/admin.py:187
#, docstring #, docstring
msgid "\\n Add a role to a user.\\n\\n Use double quotes if the role contains spaces.\\n If user is left blank it defaults to the author of the command.\\n " msgid "\\n Add a role to a user.\\n\\n Use double quotes if the role contains spaces.\\n If user is left blank it defaults to the author of the command.\\n "
msgstr "" msgstr "\\n Kullanıcıya rol ekle.\\n\\n Rol boşluk içeriyorsa çift tırnak işareti kullanın.\\n Kullanıcı boş bırakılırsa, varsayılan olarak komutun yazarıdır.\\n "
#: redbot/cogs/admin/admin.py:203 #: redbot/cogs/admin/admin.py:203
#, docstring #, docstring
msgid "\\n Remove a role from a user.\\n\\n Use double quotes if the role contains spaces.\\n If user is left blank it defaults to the author of the command.\\n " msgid "\\n Remove a role from a user.\\n\\n Use double quotes if the role contains spaces.\\n If user is left blank it defaults to the author of the command.\\n "
msgstr "" msgstr "\\n Kullanıcıdan rol sil.\\n\\n Rol boşluk içeriyorsa çift tırnak işareti kullanın.\\n Kullanıcı boş bırakılırsa, varsayılan olarak komutun yazarıdır.\\n "
#: redbot/cogs/admin/admin.py:217 #: redbot/cogs/admin/admin.py:217
#, docstring #, docstring
msgid "Edit role settings." msgid "Edit role settings."
msgstr "Rol ayarlarını düzenle" msgstr "Rol ayarlarını düzenle."
#: redbot/cogs/admin/admin.py:224 #: redbot/cogs/admin/admin.py:224
#, docstring #, docstring
msgid "\\n Edit a role's colour.\\n\\n Use double quotes if the role contains spaces.\\n Colour must be in hexadecimal format.\\n [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\\n\\n Examples:\\n `[p]editrole colour \\\"The Transistor\\\" #ff0000`\\n `[p]editrole colour Test #ff9900`\\n " msgid "\\n Edit a role's colour.\\n\\n Use double quotes if the role contains spaces.\\n Colour must be in hexadecimal format.\\n [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\\n\\n Examples:\\n `[p]editrole colour \\\"The Transistor\\\" #ff0000`\\n `[p]editrole colour Test #ff9900`\\n "
msgstr "" msgstr "Rol rengini düzenler.\\n\\n Rol boşluk içeriyorsa çift tırnak kulanın.\\n Renk hexadecimal formatında olmalıdır.\\n [Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\\n\\n Örneğin:\\n `[p]editrole colour \\\"The Transistor\\\" #ff0000`\\n `[p]editrole colour Test #ff9900`\\n "
#: redbot/cogs/admin/admin.py:253 redbot/cogs/admin/admin.py:286 #: redbot/cogs/admin/admin.py:253 redbot/cogs/admin/admin.py:286
msgid "Done." msgid "Done."
msgstr "Tamamdır." msgstr "Tamamlandı."
#: redbot/cogs/admin/admin.py:257 #: redbot/cogs/admin/admin.py:257
#, docstring #, docstring
msgid "\\n Edit a role's name.\\n\\n Use double quotes if the role or the name contain spaces.\\n\\n Example:\\n `[p]editrole name \\\"The Transistor\\\" Test`\\n " msgid "\\n Edit a role's name.\\n\\n Use double quotes if the role or the name contain spaces.\\n\\n Example:\\n `[p]editrole name \\\"The Transistor\\\" Test`\\n "
msgstr "" msgstr "Rolün ismini düzenler.\\n\\n Rol boşluk içeriyorsa çift tırnak kulanın.\\n\\n Örneğin:\\n `[p]editrole name \\\"The Transistor\\\" Test`\\n "
#: redbot/cogs/admin/admin.py:291 #: redbot/cogs/admin/admin.py:291
#, docstring #, docstring
@@ -111,29 +111,29 @@ msgstr "Duyuru başladı."
#: redbot/cogs/admin/admin.py:305 #: redbot/cogs/admin/admin.py:305
#, docstring #, docstring
msgid "Cancel a running announce." msgid "Cancel a running announce."
msgstr "Şuan yapılan duyuruyu iptal eder." msgstr "Şu an yapılan duyuruyu iptal eder."
#: redbot/cogs/admin/admin.py:307 #: redbot/cogs/admin/admin.py:307
msgid "There is no currently running announcement." msgid "There is no currently running announcement."
msgstr "" msgstr "Şu anda yapılan bir duyuru mevcut değil."
#: redbot/cogs/admin/admin.py:310 #: redbot/cogs/admin/admin.py:310
msgid "The current announcement has been cancelled." msgid "The current announcement has been cancelled."
msgstr "Şuan yapılan duyuru iptal edildi." msgstr "Şu an yapılan duyuru iptal edildi."
#: redbot/cogs/admin/admin.py:316 #: redbot/cogs/admin/admin.py:316
#, docstring #, docstring
msgid "Change how announcements are sent in this guild." msgid "Change how announcements are sent in this guild."
msgstr "" msgstr "Anonsların sunucuya nasıl gönderileceğini belirleyin."
#: redbot/cogs/admin/admin.py:321 #: redbot/cogs/admin/admin.py:321
#, docstring #, docstring
msgid "\\n Change the channel where the bot will send announcements.\\n \\n If channel is left blank it defaults to the current channel.\\n " msgid "\\n Change the channel where the bot will send announcements.\\n \\n If channel is left blank it defaults to the current channel.\\n "
msgstr "" msgstr "\\n Botun anonsları hangi kanalda yapacağını belirleyin.\\n \\n Boş bırakırsanız bot anonsları mevcut kanala yapacaktır.\\n "
#: redbot/cogs/admin/admin.py:330 #: redbot/cogs/admin/admin.py:330
msgid "The announcement channel has been set to {channel.mention}" msgid "The announcement channel has been set to {channel.mention}"
msgstr "{channel.mention} duyuru kanalı olarak ayarlandı" msgstr "{channel.mention} duyuru kanalı olarak ayarlandı."
#: redbot/cogs/admin/admin.py:335 #: redbot/cogs/admin/admin.py:335
#, docstring #, docstring
@@ -142,91 +142,91 @@ msgstr "Duyuru sistemi bu sunucu için aktif edildi."
#: redbot/cogs/admin/admin.py:340 #: redbot/cogs/admin/admin.py:340
msgid "The server {guild.name} will receive announcements." msgid "The server {guild.name} will receive announcements."
msgstr "{guild.name} sunucusu duyuruları alacak." msgstr "{guild.name} sunucusu artık duyuruları alacak."
#: redbot/cogs/admin/admin.py:344 #: redbot/cogs/admin/admin.py:344
msgid "The server {guild.name} will not receive announcements." msgid "The server {guild.name} will not receive announcements."
msgstr "{guild.name} sunucusu duyuruları almayacak." msgstr "{guild.name} sunucusu artık duyuruları almayacak."
#: redbot/cogs/admin/admin.py:370 #: redbot/cogs/admin/admin.py:370
#, docstring #, docstring
msgid "Apply selfroles." msgid "Apply selfroles."
msgstr "" msgstr "Kişisel rol ekle."
#: redbot/cogs/admin/admin.py:375 #: redbot/cogs/admin/admin.py:375
#, docstring #, 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 " 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 "" msgstr "Kişisel rol ekler.\\n\\n Sunucu yöneticileri kullanıcının kullanabileceği şekilde ayarlamalıdır.\\n\\n NOT: Rol büyük küçük harf duyarlıdır!\\n "
#: redbot/cogs/admin/admin.py:386 #: redbot/cogs/admin/admin.py:386
#, docstring #, docstring
msgid "\\n Remove a selfrole from yourself.\\n\\n Server admins must have configured the role as user settable.\\n NOTE: The role is case sensitive!\\n " msgid "\\n Remove a selfrole from yourself.\\n\\n Server admins must have configured the role as user settable.\\n NOTE: The role is case sensitive!\\n "
msgstr "" msgstr "Kişisel rol siler.\\n\\n Sunucu yöneticileri kullanıcının kullanabileceği şekilde ayarlamalıdır.\\n\\n NOT: Rol büyük küçük harf duyarlıdır!\\n "
#: redbot/cogs/admin/admin.py:397 #: redbot/cogs/admin/admin.py:397
#, docstring #, docstring
msgid "\\n Lists all available selfroles.\\n " msgid "\\n Lists all available selfroles.\\n "
msgstr "\\n Kullanılabilir selfrol'leri listeler.\\n " msgstr "\\n Kullanılabilir kişisel rolleri listeler.\\n "
#: redbot/cogs/admin/admin.py:407 #: redbot/cogs/admin/admin.py:407
msgid "Available Selfroles:\\n{selfroles}" msgid "Available Selfroles:\\n{selfroles}"
msgstr "Kullanılabilir Selfrol'ler:\\n{selfroles}" msgstr "Kullanılabilir kişisel roller:\\n{selfroles}"
#: redbot/cogs/admin/admin.py:413 #: redbot/cogs/admin/admin.py:413
#, docstring #, docstring
msgid "Manage selfroles." msgid "Manage selfroles."
msgstr "" msgstr "Kişisel rolleri düzenle."
#: redbot/cogs/admin/admin.py:418 #: redbot/cogs/admin/admin.py:418
#, docstring #, docstring
msgid "\\n Add a role to the list of available selfroles.\\n\\n NOTE: The role is case sensitive!\\n " msgid "\\n Add a role to the list of available selfroles.\\n\\n NOTE: The role is case sensitive!\\n "
msgstr "" msgstr "\\n Kullanılabilir kişisel roller listesine rol ekler.\\n\\n NOT: Rol büyük küçük harf duyarlıdır!\\n "
#: redbot/cogs/admin/admin.py:425 #: redbot/cogs/admin/admin.py:425
msgid "I cannot let you add {role.name} as a selfrole because that role is higher than or equal to your highest role in the Discord hierarchy." msgid "I cannot let you add {role.name} as a selfrole because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr "" msgstr "{role.name} kullanıcısına belirttiğin rolü vermene müsaade edemem çünkü bu rol Discord hiyerarşisinde senin rolüne eşit veya daha yüksek."
#: redbot/cogs/admin/admin.py:433 #: redbot/cogs/admin/admin.py:433
msgid "Added." msgid "Added."
msgstr "" msgstr "Eklendi."
#: redbot/cogs/admin/admin.py:436 #: redbot/cogs/admin/admin.py:436
msgid "That role is already a selfrole." msgid "That role is already a selfrole."
msgstr "" msgstr "Bu rol zaten bir kişisel rol."
#: redbot/cogs/admin/admin.py:440 #: redbot/cogs/admin/admin.py:440
#, docstring #, docstring
msgid "\\n Remove a role from the list of available selfroles.\\n\\n NOTE: The role is case sensitive!\\n " msgid "\\n Remove a role from the list of available selfroles.\\n\\n NOTE: The role is case sensitive!\\n "
msgstr "" msgstr "\\n Kullanılabilir kişisel roller listesinden rol siler.\\n\\n NOT: Rol büyük küçük harf duyarlıdır!\\n "
#: redbot/cogs/admin/admin.py:447 #: redbot/cogs/admin/admin.py:447
msgid "I cannot let you remove {role.name} from being a selfrole because that role is higher than or equal to your highest role in the Discord hierarchy." msgid "I cannot let you remove {role.name} from being a selfrole because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr "" msgstr "{role.name} kullanıcısından belirttiğin rolü silmene müsaade edemem çünkü bu rol Discord hiyerarşisinde senin rolüne eşit veya daha yüksek."
#: redbot/cogs/admin/admin.py:455 #: redbot/cogs/admin/admin.py:455
msgid "Removed." msgid "Removed."
msgstr "" msgstr "Kaldırıldı."
#: redbot/cogs/admin/admin.py:460 #: redbot/cogs/admin/admin.py:460
#, docstring #, docstring
msgid "Lock a bot to its current servers only." msgid "Lock a bot to its current servers only."
msgstr "Botu şuan bulunduğu sunucularda kilitler." msgstr "Botu şu an bulunduğu sunucularda kilitler."
#: redbot/cogs/admin/admin.py:465 #: redbot/cogs/admin/admin.py:465
msgid "The bot is no longer serverlocked." msgid "The bot is no longer serverlocked."
msgstr "Bot artık sunucular da kilitli değil" msgstr "Botun sunucu kilidi aktif değil."
#: redbot/cogs/admin/admin.py:467 #: redbot/cogs/admin/admin.py:467
msgid "The bot is now serverlocked." msgid "The bot is now serverlocked."
msgstr "Bot şuan sunucularda kilitli." msgstr "Botun sunucu kilidi aktif."
#: redbot/cogs/admin/announcer.py:75 #: redbot/cogs/admin/announcer.py:75
msgid "I could not announce to the following server: " msgid "I could not announce to the following server: "
msgstr "" msgstr "Bu sunucuya duyuru yapamıyorum: "
#: redbot/cogs/admin/announcer.py:77 #: redbot/cogs/admin/announcer.py:77
msgid "I could not announce to the following servers: " msgid "I could not announce to the following servers: "
msgstr "" msgstr "Bu sunucuya duyuru yapamıyorum: "
#: redbot/cogs/admin/converters.py:12 #: redbot/cogs/admin/converters.py:12
msgid "The Admin cog is not loaded." msgid "The Admin cog is not loaded."
@@ -234,5 +234,5 @@ msgstr "The Admin eklentisi yüklenmedi."
#: redbot/cogs/admin/converters.py:20 #: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole." msgid "The provided role is not a valid selfrole."
msgstr "Girilen selfrol geçerli değil." msgstr "Girilen kişisel rol geçerli bir kişisel rol değil."

View File

@@ -1,12 +1,13 @@
from copy import copy from copy import copy
from re import search from re import search
from string import Formatter from string import Formatter
from typing import Dict from typing import Dict, List
import discord import discord
from redbot.core import Config, commands, checks from redbot.core import Config, commands, checks
from redbot.core.i18n import Translator, cog_i18n from redbot.core.i18n import Translator, cog_i18n
from redbot.core.utils.chat_formatting import box from redbot.core.utils.chat_formatting import box, pagify
from redbot.core.utils.menus import menu, DEFAULT_CONTROLS
from redbot.core.bot import Red from redbot.core.bot import Red
from .alias_entry import AliasEntry, AliasCache, ArgParseError from .alias_entry import AliasEntry, AliasCache, ArgParseError
@@ -100,8 +101,29 @@ class Alias(commands.Cog):
) )
await self.bot.process_commands(new_message) await self.bot.process_commands(new_message)
async def paginate_alias_list(
self, ctx: commands.Context, alias_list: List[AliasEntry]
) -> None:
names = sorted(["+ " + a.name for a in alias_list])
message = "\n".join(names)
temp = list(pagify(message, delims=["\n"], page_length=1850))
alias_list = []
count = 0
for page in temp:
count += 1
page = page.lstrip("\n")
page = (
_("Aliases:\n")
+ page
+ _("\n\nPage {page}/{total}").format(page=count, total=len(temp))
)
alias_list.append(box("".join(page), "diff"))
if len(alias_list) == 1:
await ctx.send(alias_list[0])
return
await menu(ctx, alias_list, DEFAULT_CONTROLS)
@commands.group() @commands.group()
@commands.guild_only()
async def alias(self, ctx: commands.Context): async def alias(self, ctx: commands.Context):
"""Manage command aliases.""" """Manage command aliases."""
pass pass
@@ -134,7 +156,7 @@ class Alias(commands.Cog):
_( _(
"You attempted to create a new alias" "You attempted to create a new alias"
" with the name {name} but that" " with the name {name} but that"
" alias already exists on this server." " alias already exists."
).format(name=alias_name) ).format(name=alias_name)
) )
return return
@@ -187,13 +209,13 @@ class Alias(commands.Cog):
) )
return return
alias = await self._aliases.get_alias(ctx.guild, alias_name) alias = await self._aliases.get_alias(None, alias_name)
if alias: if alias:
await ctx.send( await ctx.send(
_( _(
"You attempted to create a new global alias" "You attempted to create a new global alias"
" with the name {name} but that" " with the name {name} but that"
" alias already exists on this server." " alias already exists."
).format(name=alias_name) ).format(name=alias_name)
) )
return return
@@ -209,6 +231,13 @@ class Alias(commands.Cog):
).format(name=alias_name) ).format(name=alias_name)
) )
return return
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.")
)
return
# endregion # endregion
try: try:
@@ -223,24 +252,15 @@ class Alias(commands.Cog):
) )
@alias.command(name="help") @alias.command(name="help")
@commands.guild_only()
async def _help_alias(self, ctx: commands.Context, alias_name: str): async def _help_alias(self, ctx: commands.Context, alias_name: str):
"""Try to execute help for the base command of the alias.""" """Try to execute help for the base command of the alias."""
alias = await self._aliases.get_alias(ctx.guild, alias_name=alias_name) alias = await self._aliases.get_alias(ctx.guild, alias_name=alias_name)
if alias: if alias:
if self.is_command(alias.command): await self.bot.send_help_for(ctx, alias.command)
base_cmd = alias.command
else:
base_cmd = alias.command.rsplit(" ", 1)[0]
new_msg = copy(ctx.message)
new_msg.content = f"{ctx.prefix}help {base_cmd}"
await self.bot.process_commands(new_msg)
else: else:
await ctx.send(_("No such alias exists.")) await ctx.send(_("No such alias exists."))
@alias.command(name="show") @alias.command(name="show")
@commands.guild_only()
async def _show_alias(self, ctx: commands.Context, alias_name: str): async def _show_alias(self, ctx: commands.Context, alias_name: str):
"""Show what command the alias executes.""" """Show what command the alias executes."""
alias = await self._aliases.get_alias(ctx.guild, alias_name) alias = await self._aliases.get_alias(ctx.guild, alias_name)
@@ -287,22 +307,22 @@ class Alias(commands.Cog):
@alias.command(name="list") @alias.command(name="list")
@commands.guild_only() @commands.guild_only()
@checks.bot_has_permissions(add_reactions=True)
async def _list_alias(self, ctx: commands.Context): async def _list_alias(self, ctx: commands.Context):
"""List the available aliases on this server.""" """List the available aliases on this server."""
guild_aliases = await self._aliases.get_guild_aliases(ctx.guild) guild_aliases = await self._aliases.get_guild_aliases(ctx.guild)
if not guild_aliases: if not guild_aliases:
return await ctx.send(_("There are no aliases on this server.")) return await ctx.send(_("There are no aliases on this server."))
names = [_("Aliases:")] + sorted(["+ " + a.name for a in guild_aliases]) await self.paginate_alias_list(ctx, guild_aliases)
await ctx.send(box("\n".join(names), "diff"))
@global_.command(name="list") @global_.command(name="list")
@checks.bot_has_permissions(add_reactions=True)
async def _list_global_alias(self, ctx: commands.Context): async def _list_global_alias(self, ctx: commands.Context):
"""List the available global aliases on this bot.""" """List the available global aliases on this bot."""
global_aliases = await self._aliases.get_global_aliases() global_aliases = await self._aliases.get_global_aliases()
if not global_aliases: if not global_aliases:
return await ctx.send(_("There are no global aliases.")) return await ctx.send(_("There are no global aliases."))
names = [_("Aliases:")] + sorted(["+ " + a.name for a in global_aliases]) await self.paginate_alias_list(ctx, global_aliases)
await ctx.send(box("\n".join(names), "diff"))
@commands.Cog.listener() @commands.Cog.listener()
async def on_message_without_command(self, message: discord.Message): async def on_message_without_command(self, message: discord.Message):

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Afrikaans\n" "Language-Team: Afrikaans\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: af\n" "X-Crowdin-Language: af\n"
"Language: af_ZA\n" "Language: af_ZA\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic\n" "Language-Team: Arabic\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: ar\n" "X-Crowdin-Language: ar\n"
"Language: ar_SA\n" "Language: ar_SA\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bulgarian\n" "Language-Team: Bulgarian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: bg\n" "X-Crowdin-Language: bg\n"
"Language: bg_BG\n" "Language: bg_BG\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Няма намерен префикс." msgstr "Няма намерен префикс."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Този псевдоним не съществува." msgstr "Този псевдоним не съществува."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Няма използвани псевдоними на този сървър." msgstr "Няма използвани псевдоними на този сървър."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "Няма псевдоними положени към този бот." msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Псевдоними:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan\n" "Language-Team: Catalan\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: ca\n" "X-Crowdin-Language: ca\n"
"Language: ca_ES\n" "Language: ca_ES\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Czech\n" "Language-Team: Czech\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: cs\n" "X-Crowdin-Language: cs\n"
"Language: cs_CZ\n" "Language: cs_CZ\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 "Vytvořit aliasy pro příkazy n n Aliasy jsou alternativní zkratky pro příkazy. Mohou působit jako lambda (ukládání argumentů pro opakované použití) n nebo jednoduše jako zkratka pro vyslovení \"xyz\" n n Při spuštění budou aliasy přijímat další argumenty a připojovat je k uložený alias. \\ t " msgstr "Vytvořit aliasy pro příkazy n n Aliasy jsou alternativní zkratky pro příkazy. Mohou působit jako lambda (ukládání argumentů pro opakované použití) n nebo jednoduše jako zkratka pro vyslovení \"xyz\" n n Při spuštění budou aliasy přijímat další argumenty a připojovat je k uložený alias. \\ t "
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr "Argumenty musí být zadány s číslem."
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumenty musí být sekvenční. Chybějící argumenty: "
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Nebyl nalezen žádný prefix." msgstr "Nebyl nalezen žádný prefix."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr "Aliasy:\\n"
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr "\\n\\nStrana {page}/{total}"
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "Spravovat aliasy příkazů." msgstr "Spravovat aliasy příkazů."
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "Správa globálních aliasů." msgstr "Správa globálních aliasů."
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "Přidat alias pro příkaz." msgstr "Přidat alias pro příkaz."
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "Pokusili jste se vytvořit nový globální alias s názvem {name}, ale toto jméno je již příkazem tohoto bota."
#: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:274
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr "Pokusili jste se vytvořit nový alias s názvem {name}, ale toto jméno je neplatným názvem aliasu. Jména aliasů nesmí obsahovat mezery."
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr "Pokusili jste se vytvořit nový alias pro příkaz, který neexistuje."
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr "Byl vytvořen nový alias se spouštěcím mechanismem `{name}."
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "Přidat globální alias pro příkaz." msgstr "Přidat globální alias pro příkaz."
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Pokusili jste se vytvořit nový globální alias s názvem {name}, ale toto jméno je již příkazem tohoto bota." msgstr "Pokusili jste se vytvořit nový globální alias s názvem {name}, ale toto jméno je již příkazem tohoto bota."
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr "Pokusili jste se vytvořit nový globální alias s názvem {name}, ale toto jméno je neplatným názvem aliasu. Jména aliasů nesmí obsahovat mezery."
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr "Byl vytvořen nový globální alias se spouštěcím mechanismem `{name}."
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr "Zkuste spustit nápovědu pro základní příkaz aliasů."
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Žádný takový alias neexistuje." msgstr "Žádný takový alias neexistuje."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "Zobrazit příkaz ke spustitelnému aliasu." msgstr "Zobrazit příkaz ke spustitelnému aliasu."
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "Alias `{alias_name} provede příkaz `{command}" msgstr "Alias `{alias_name} provede příkaz `{command}"
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "Neexistuje žádný alias s názvem `{name}`" msgstr "Neexistuje žádný alias s názvem `{name}`"
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." msgid "Delete an existing alias on this server."
msgstr "Odstraní existující alias na tomto serveru." msgstr "Odstraní existující alias na tomto serveru."
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431 #: redbot/cogs/alias/alias.py:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Na tomto serveru nejsou žádné aliasy." msgstr "Na tomto serveru nejsou žádné aliasy."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "Alias s názvem{name}` byl úspěšně smazán." msgstr "Alias s názvem{name}` byl úspěšně smazán."
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr "Alias s názvem `{name}` nebyl nalezen."
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "Odstranit existující globální alias." msgstr "Odstranit existující globální alias."
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr "Pro tohoto bota neexistují žádné globální aliasy."
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "Seznam dostupných aliasů na tomto serveru." msgstr "Seznam dostupných aliasů na tomto serveru."
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Aliasy:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr "Seznam dostupných globálních aliasů pro tohoto bota."
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr "Neexistují žádné globální aliasy."
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr "Argumenty musí být zadány s číslem."
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumenty musí být sekvenční. Chybějící argumenty: "

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Danish\n" "Language-Team: Danish\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: da\n" "X-Crowdin-Language: da\n"
"Language: da_DK\n" "Language: da_DK\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: German\n" "Language-Team: German\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: de\n" "X-Crowdin-Language: de\n"
"Language: de_DE\n" "Language: de_DE\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 "Erstelle einen Alias für einen Befehl.\\n\\n Aliases sind alternative Namen für Befehle.\\n können als Lambda (Speicherung von Argumenten für wiederholte Verwendung)\\n oder als einfache Verknüpfung zur Angabe von \\\"x y z\\\" fungieren.\\n\\n Wenn Sie ausgeführt werden, werden Alias zusätzliche Argumente annehmen\\n und sie an die gespeicherten Alias anhängen.\\n \\n " msgstr "Erstelle einen Alias für einen Befehl.\\n\\n Aliases sind alternative Namen für Befehle.\\n können als Lambda (Speicherung von Argumenten für wiederholte Verwendung)\\n oder als einfache Verknüpfung zur Angabe von \\\"x y z\\\" fungieren.\\n\\n Wenn Sie ausgeführt werden, werden Alias zusätzliche Argumente annehmen\\n und sie an die gespeicherten Alias anhängen.\\n \\n "
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr "Die Argumente müssen mit einer Nummer angegeben werden."
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumente müssen sequentiell sein. Fehlende Argumente: "
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Es wurde kein Prefix gefunden." msgstr "Es wurde kein Prefix gefunden."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "Verwalte die Alias Befehle." msgstr "Verwalte die Alias Befehle."
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "Verwalte die globalen Aliasse." msgstr "Verwalte die globalen Aliasse."
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "Füge einen Alias für einen Befehl hinzu." msgstr "Füge einen Alias für einen Befehl hinzu."
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "Du hast versucht, einen neuen Alias mit dem Namen {name} zu erstellen, aber dieser Name wird bereits für einen Befehl des Bots genutzt." msgstr "Du hast versucht, einen neuen Alias mit dem Namen {name} zu erstellen, aber dieser Name wird bereits für einen Befehl des Bots genutzt."
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "Du hast versucht einen neuen Alias mit dem Namen {name} zu erstellen, aber dieser Alias existiert bereits auf dem Server." msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Du hast versucht einen neuen Alias mit dem Namen {name} zu erstellen, aber dieser Name ist ein ungültiger Alias-Name. Alias-Namen dürfen keine Leerzeichen enthalten." msgstr "Du hast versucht einen neuen Alias mit dem Namen {name} zu erstellen, aber dieser Name ist ein ungültiger Alias-Name. Alias-Namen dürfen keine Leerzeichen enthalten."
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr "Du hast versucht einen Alias für einen Befehl zu erstellen, der nicht existiert."
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "Ein neuer Alias mit dem Namen`{name}` wurde erstellt." msgstr "Ein neuer Alias mit dem Namen`{name}` wurde erstellt."
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "Füge einen globalen Alias für einen Befehl hinzu." msgstr "Füge einen globalen Alias für einen Befehl hinzu."
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Du hast versucht, einen neuen globalen Alias mit dem Namen „{name}“ zu erstellen, aber dieser Name ist bereits ein Befehl für diesen Bot." msgstr "Du hast versucht, einen neuen globalen Alias mit dem Namen „{name}“ zu erstellen, aber dieser Name ist bereits ein Befehl für diesen Bot."
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "Du hast versucht, einen neuen globalen Alias mit dem Namen „{name}“ zu erstellen, dieser ist jedoch bereits auf diesem Server vorhanden." msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Du hast versucht, einen neuen globalen Alias mit dem Namen „{name}“ zu erstellen, dieser Name ist jedoch ein ungültiger Alias-Name. Alias-Namen dürfen keine Leerzeichen enthalten." msgstr "Du hast versucht, einen neuen globalen Alias mit dem Namen „{name}“ zu erstellen, dieser Name ist jedoch ein ungültiger Alias-Name. Alias-Namen dürfen keine Leerzeichen enthalten."
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "Ein neuer globaler Alias mit dem Trigger `{name}` wurde erstellt." msgstr "Ein neuer globaler Alias mit dem Trigger `{name}` wurde erstellt."
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "Versuche die Hilfe für den Basisbefehl des Alias auszuführen." msgstr "Versuche die Hilfe für den Basisbefehl des Alias auszuführen."
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "So ein Alias ist nicht vorhanden." msgstr "So ein Alias ist nicht vorhanden."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "Zeige den Befehl, welchen der Alias ausführt." msgstr "Zeige den Befehl, welchen der Alias ausführt."
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "Der Alias '{alias_name}' führt den Befehl '{command}' aus" msgstr "Der Alias '{alias_name}' führt den Befehl '{command}' aus"
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "Kein Alias mit dem Namen '{name}' gefunden" msgstr "Kein Alias mit dem Namen '{name}' gefunden"
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." msgid "Delete an existing alias on this server."
msgstr "Lösche einen bereits existierenden Alias auf diesem Server." msgstr "Lösche einen bereits existierenden Alias auf diesem Server."
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431 #: redbot/cogs/alias/alias.py:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Es gibt keine Aliasse auf diesem Server." msgstr "Es gibt keine Aliasse auf diesem Server."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "Der Alias mit dem Namen '{name}' wurde erfolgreich gelöscht." msgstr "Der Alias mit dem Namen '{name}' wurde erfolgreich gelöscht."
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "Kein Alias mit dem Namen '{name}' gefunden." msgstr "Kein Alias mit dem Namen '{name}' gefunden."
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "Lösche einen bereits existierenden globalen Alias." msgstr "Lösche einen bereits existierenden globalen Alias."
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "Es gibt keine Aliasse in diesem Bot." msgstr "Ich habe keinen globalen Alias gespeichert."
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "Zeige die auf diesem Server verfügbaren Alias." msgstr "Zeige die auf diesem Server verfügbaren Alias."
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Aliasse:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "Zeige die verfügbaren globalen Alias von diesem Bot." msgstr "Zeige die verfügbaren globalen Alias von diesem Bot."
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr "Es gibt keine globalen Aliasse."
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr "Die Argumente müssen mit einer Nummer angegeben werden."
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumente müssen sequentiell sein. Fehlende Argumente: "

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Greek\n" "Language-Team: Greek\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: el\n" "X-Crowdin-Language: el\n"
"Language: el_GR\n" "Language: el_GR\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Δεν βρέθηκε πρόθεμα." msgstr "Δεν βρέθηκε πρόθεμα."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Spanish\n" "Language-Team: Spanish\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: es-ES\n" "X-Crowdin-Language: es-ES\n"
"Language: es_ES\n" "Language: es_ES\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 "Crear alias para comandos.\\n\\n Los alias son accesos directos de nombres alternativos para comandos.\\n pueden actuar como un lambda (almacenando argumentos para uso repetido)\\n o simplemente como un atajo para decir \\\"x y z\\\".\\n\\n Cuando se ejecuta, los alias aceptarán cualquier argumento adicional\\n y los agregarán al alias almacenado.\\n "
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Prefijo no encontrado." msgstr "Prefijo no encontrado."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr "Administra los alias de los comandos."
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr "Administra los alias globales."
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr "Agregar un alias para un comando."
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "Intentaste crear un nuevo alias con el nombre {name} pero ese nombre ya es un comando en este bot."
#: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:274
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr "Intentaste crear un nuevo alias con el nombre {name} pero ese nombre es un alias inválido. Los alias no deben contener espacios."
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr "Intentaste crear un nuevo alias para un comando que no existe."
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr "Un nuevo alias con el trigger {name} ha sido creado."
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr "Agrega un alias global para un comando."
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Intentaste crear un nuevo alias global con el nombre {name} pero ese nombre ya es un comando en este bot."
#: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:333
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr "Intentaste crear un nuevo alias global con el nombre {name}, pero ese nombre es un nombre de alias inválido. Los nombres de alias no pueden contener espacios."
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr "Un nuevo alias global con el trigger `{name}` ha sido creado."
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr "Intenta ejecutar help para el comando base del alias."
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Un alias no existe." msgstr "El alias no existe."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr "Muestra qué comando ejecuta el alias."
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr "El alias `{alias_name}` ejecutará el comando `{command}`"
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr "No hay alias con el nombre `{name}`"
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." msgid "Delete an existing alias on this server."
msgstr "" msgstr "Elimina un alias existente en este servidor."
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431 #: redbot/cogs/alias/alias.py:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "No hay los aliases en este servidor." msgstr "No hay alias en este servidor."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr "El alias con el nombre `{name}` ha eliminado correctamente."
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr "El alias con nombre `{name}` no fue encontrado."
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "Elimina un alias global existente."
#: redbot/cogs/alias/alias.py:301
msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:315
msgid "There are no aliases on this bot."
msgstr "No hay el los alias dentro de este bot."
#: redbot/cogs/alias/alias.py:426
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr "Lista de los alias disponibles en este servidor."
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Alias:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "Lista de los alias globales disponibles en este bot."
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr "Los argumentos deben especificarse con un número."
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Los argumentos deben ser secuenciales. Faltan argumentos: "

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish\n" "Language-Team: Finnish\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: fi\n" "X-Crowdin-Language: fi\n"
"Language: fi_FI\n" "Language: fi_FI\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French\n" "Language-Team: French\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: fr\n" "X-Crowdin-Language: fr\n"
"Language: fr_FR\n" "Language: fr_FR\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
msgstr "Créée des alias pour les commandes\\n\\n Les alias sont des raccourcis de noms alternatifs pour les commandes. Ils\\n peuvent agir comme un lambda (stocker des arguments pour un usage répété)\\n ou comme simplement un raccourci pour dire \\\"x y z\\\".\\n\\n Lors de leur exécution, les alias accepteront tous les arguments supplémentaires\\n et seront exécutés en plus des arguments stockés dans l'alias.\\n " msgstr "Créée des alias pour les commandes\\n\\n Les alias sont des raccourcis de noms alternatifs pour les commandes. Ils\\n peuvent agir comme un lambda (stocker des arguments pour un usage répété)\\n ou comme simplement un raccourci pour dire \\\"x y z\\\".\\n\\n Lors de leur exécution, les alias accepteront tous les arguments supplémentaires\\n et seront exécutés en plus des arguments stockés dans l'alias.\\n "
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr "Les arguments doivent être spécifiés avec un nombre."
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Les arguments doivent être séquentiels. Arguments manquants : "
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Aucun préfixe trouvé." msgstr "Aucun préfixe trouvé."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr "Alias :\\n"
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr "\\n\\nPage {page}/{total}"
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "Gérer les alias de commandes." msgstr "Gérer les alias de commandes."
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "Gérer les alias globaux." msgstr "Gérer les alias globaux."
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "Ajouter un alias à une commande." msgstr "Ajouter un alias à une commande."
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "Tu as tenté de créer un nouvel alias nommé {name}, mais une commande existe déjà avec ce nom sur ce bot." msgstr "Tu as tenté de créer un nouvel alias nommé {name}, mais une commande existe déjà avec ce nom sur ce bot."
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "Tu as tenté de créer un nouvel alias nommé {name}, mais cet alias existe déjà sur ce serveur." msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Tu as tenté de créer un nouvel alias nommé {name}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces." msgstr "Tu as tenté de créer un nouvel alias nommé {name}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces."
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr "Vous avez essayé de créer un nouvel alias pour une commande qui n'existe pas."
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "Un nouvel alias avec le déclencheur `{name}` a bien été créé." msgstr "Un nouvel alias avec le déclencheur `{name}` a bien été créé."
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "Ajouter un alias global à une commande." msgstr "Ajouter un alias global à une commande."
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais une commande existe déjà avec ce nom sur ce bot." msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais une commande existe déjà avec ce nom sur ce bot."
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais cet alias existe déjà sur ce serveur." msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces." msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces."
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "Un nouvel alias global avec le déclencheur `{name}` a bien été créé." msgstr "Un nouvel alias global avec le déclencheur `{name}` a bien été créé."
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "Tente d'exécuter l'aide pour la commande de base de l'alias." msgstr "Tente d'exécuter l'aide pour la commande de base de l'alias."
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Cet alias n'existe pas." msgstr "Cet alias n'existe pas."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "Affiche la commande que l'alias exécute." msgstr "Affiche la commande que l'alias exécute."
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "L'alias `{alias_name}` exécute la commande `{command}`" msgstr "L'alias `{alias_name}` exécute la commande `{command}`"
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "Il n'y a pas d'alias nommé `{name}`" msgstr "Il n'y a pas d'alias nommé `{name}`"
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." msgid "Delete an existing alias on this server."
msgstr "Supprime un alias de ce serveur." msgstr "Supprime un alias de ce serveur."
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431 #: redbot/cogs/alias/alias.py:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Il n'y a pas d'alias sur ce serveur." msgstr "Il n'y a pas d'alias sur ce serveur."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "L'alias nommé `{name}` a bien été supprimé." msgstr "L'alias nommé `{name}` a bien été supprimé."
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "L'alias nommé `{name}` n'a pas été trouvé." msgstr "L'alias nommé `{name}` n'a pas été trouvé."
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "Supprime un alias global existant." msgstr "Supprime un alias global existant."
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "Il n'y a pas d'alias sur ce bot." msgstr "Il n'y a aucun alias global sur ce bot."
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "Liste les alias disponibles sur ce serveur." msgstr "Liste les alias disponibles sur ce serveur."
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Alias:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "Liste les alias globaux disponibles sur ce bot." msgstr "Liste les alias globaux disponibles sur ce bot."
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr "Il n'y a aucun alias global."
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr "Les arguments doivent être spécifiés avec un nombre."
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Les arguments doivent être séquentiels. Arguments manquants : "

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hebrew\n" "Language-Team: Hebrew\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: he\n" "X-Crowdin-Language: he\n"
"Language: he_IL\n" "Language: he_IL\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hungarian\n" "Language-Team: Hungarian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: hu\n" "X-Crowdin-Language: hu\n"
"Language: hu_HU\n" "Language: hu_HU\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Nem találtható prefix." msgstr "Nem találtható prefix."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Nem létezik ilyen rövidítés." msgstr "Nem létezik ilyen rövidítés."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Nincsenek rövidítések ezen a szerveren." msgstr "Nincsenek rövidítések ezen a szerveren."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "Nincsenek rövidítések ennél a botnál." msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Rövidítések:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Indonesian\n" "Language-Team: Indonesian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: id\n" "X-Crowdin-Language: id\n"
"Language: id_ID\n" "Language: id_ID\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Awalan tidak ditemukan." msgstr "Awalan tidak ditemukan."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Alias tersebut tidak ditemukan." msgstr "Alias tersebut tidak ditemukan."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Tidak ada alias pada server ini." msgstr "Tidak ada alias pada server ini."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "Tidak ada alias pada bot ini." msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Alias:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian\n" "Language-Team: Italian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: it\n" "X-Crowdin-Language: it\n"
"Language: it_IT\n" "Language: it_IT\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr "Gli argomenti devono essere specificati con un numero."
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Nessun prefisso trovato." msgstr "Nessun prefisso trovato."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "Gestisci gli alias dei comandi." msgstr "Gestisci gli alias dei comandi."
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "Gestisci alias globali." msgstr "Gestisci alias globali."
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "Aggiungi un alias per un comando." msgstr "Aggiungi un alias per un comando."
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "Hai cercato di creare un nuovo alias con il nome {name}, ma questo nome corrisponde già a un comando su questo bot." msgstr "Hai cercato di creare un nuovo alias con il nome {name}, ma questo nome corrisponde già a un comando su questo bot."
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "Hai cercato di creare un nuovo alias con il nome {name}, ma questo alias già esiste su questo bot." msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Hai cercato di creare un nuovo alias con il nome {name}, ma questo nome non è un nome alias valido. I nomi alias non possono contenere spazi." msgstr "Hai cercato di creare un nuovo alias con il nome {name}, ma questo nome non è un nome alias valido. I nomi alias non possono contenere spazi."
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "È stato creato un nuovo alias con il comando '{name}'." msgstr "È stato creato un nuovo alias con il comando '{name}'."
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "Aggiungi un alias globale per un comando." msgstr "Aggiungi un alias globale per un comando."
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Hai cercato di creare un nuovo alias globale con il nome {name}, ma questo nome corrisponde già a un comando su questo bot." msgstr "Hai cercato di creare un nuovo alias globale con il nome {name}, ma questo nome corrisponde già a un comando su questo bot."
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "Hai cercato di creare un nuovo alias globale con il nome {name}, ma questo alias già esiste su questo server." msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Hai cercato di creare un nuovo alias globale con il nome {name}, ma questo nome non è un nome alias valido. I nomi alias non possono contenere spazi." msgstr "Hai cercato di creare un nuovo alias globale con il nome {name}, ma questo nome non è un nome alias valido. I nomi alias non possono contenere spazi."
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "È stato creato un nuovo alias globale con il comando '{name}'." msgstr "È stato creato un nuovo alias globale con il comando '{name}'."
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "Prova a eseguire l'aiuto per il comando di base dell'alias." msgstr "Prova a eseguire l'aiuto per il comando di base dell'alias."
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Non esiste nessun alias con questo nome." msgstr "Non esiste nessun alias con questo nome."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "Mostra quale comando viene eseguito dall'alias." msgstr "Mostra quale comando viene eseguito dall'alias."
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "L'alias `{alias_name}` eseguirà il comando `{command}`" msgstr "L'alias `{alias_name}` eseguirà il comando `{command}`"
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "Non c'è nessun alias con il nome `{name}`" msgstr "Non c'è nessun alias con il nome `{name}`"
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." msgid "Delete an existing alias on this server."
msgstr "Elimina un alias esistente su questo server." msgstr "Elimina un alias esistente su questo server."
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431 #: redbot/cogs/alias/alias.py:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Non ci sono alias su questo server." msgstr "Non ci sono alias su questo server."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "L'alias con il nome `{name}` è stato eliminato con successo." msgstr "L'alias con il nome `{name}` è stato eliminato con successo."
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "L'alias con il nome `{name}` non è stato trovato." msgstr "L'alias con il nome `{name}` non è stato trovato."
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "Elimina un alias globale esistente." msgstr "Elimina un alias globale esistente."
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "Non ci sono alias su questo bot." msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "Elenca gli alias disponibili su questo server." msgstr "Elenca gli alias disponibili su questo server."
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Alias:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "Elenca gli alias globali disponibili su questo server." msgstr "Elenca gli alias globali disponibili su questo server."
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr "Gli argomenti devono essere specificati con un numero."
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Japanese\n" "Language-Team: Japanese\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: ja\n" "X-Crowdin-Language: ja\n"
"Language: ja_JP\n" "Language: ja_JP\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "プレフィックスが見つかりません。" msgstr "プレフィックスが見つかりません。"
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "そのようなエイリアスはありません。" msgstr "そのようなエイリアスはありません。"
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "このサーバにエイリアスはありません。" msgstr "このサーバにエイリアスはありません。"
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "このボットにはエイリアスはありません。" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "アリアス:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Korean\n" "Language-Team: Korean\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: ko\n" "X-Crowdin-Language: ko\n"
"Language: ko_KR\n" "Language: ko_KR\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 "명령어에 대한 별칭을 만들어주세요.\\n\\n 별칭들은 해당 명령어들을 바로 실행할 수 있는 대체적인 이름들이에요. 그것들은\\n 람다(반복되어 사용되는 인수를 저장)\\n 또는 단순히 \\\"x y z\\\"라고 말하는 바로가기 역할을 할 수 있어요.\\n\\n 실행할 시, 별칭들은 추가된 인수들을 승인할거예요.\\n 그리고 저장된 별칭들에 추가할거예요. " msgstr "명령어에 대한 별칭을 만들어주세요.\\n\\n 별칭들은 해당 명령어들을 바로 실행할 수 있는 대체적인 이름들이에요. 그것들은\\n 람다(반복되어 사용되는 인수를 저장)\\n 또는 단순히 \\\"x y z\\\"라고 말하는 바로가기 역할을 할 수 있어요.\\n\\n 실행할 시, 별칭들은 추가된 인수들을 승인할거예요.\\n 그리고 저장된 별칭들에 추가할거예요. "
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr "인수는 숫자로 지정해줘야해요."
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr "인수는 순차적이어야해요. 미확인된 인수: "
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "접두사가 발견되지 않았습니다." msgstr "접두사가 발견되지 않았습니다."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "명령어 별칭들을 관리하세요." msgstr "명령어 별칭들을 관리하세요."
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "글로벌 별칭들을 관리하세요." msgstr "글로벌 별칭들을 관리하세요."
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "명령어에 대한 별칭을 등록해주세요." msgstr "명령어에 대한 별칭을 등록해주세요."
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "이름이 {name}인 새 별칭을 생성하려고 했지만, 해당 이름은 이 봇의 명령어와 중복돼요."
#: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:274
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr "이름이 {name}인 새 별칭을 생성하려고 했지만, 해당 이름은 사용할 수 없는 별칭 이름이에요. 별칭은 공백을 포함할 수 없어요."
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr "존재하지 않는 명령어에 대한 새 별칭을 생성하려고 시도하셨어요."
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr "`{name}`을 실행하는 새 별칭이 등록됐어요."
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "명령어에 대한 글로벌 별칭을 등록해주세요." msgstr "명령어에 대한 글로벌 별칭을 등록해주세요."
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "이름이 {name}인 새 글로벌 별칭을 생성하려고 했지만, 해당 이름은 커맨드와 중복돼요."
#: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:333
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr "이름이 {name}인 새 글로벌 별칭을 생성하려고 했지만, 해당 별칭은 사용할 수 없는 별칭 이름이에요. 별칭 이름에는 공백을 포함할 수 없어요."
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr "`{name}`을 실행하는 새로운 글로벌 별칭이 등록됐어요."
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "별칭의 기본 명령어에 대한 도움말을 실행해 보세요." msgstr "별칭의 기본 명령어에 대한 도움말을 실행해 보세요."
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "그런 별칭은 등록되어 있지 않아요." msgstr "그런 별칭은 등록되어 있지 않아요."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "별칭이 실행하는 명령어를 표시해주세요." msgstr "별칭이 실행하는 명령어를 표시해주세요."
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr "`{alias_name}` 별칭은 `{command}` 명령을 실행해요."
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr "이름이 `{name}`인 별칭이 없어요."
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "이 서버에 등록된 별칭이 없어요." msgstr "이 서버에 등록된 별칭이 없어요."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr "이름이 `{name}`인 별칭이 성공적으로 삭제됐어요."
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr "이름이 `{name}`인 별칭을 찾을 수 없어요."
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "기존 글로벌 별칭들을 삭제해주세요." msgstr "기존 글로벌 별칭들을 삭제해주세요."
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "이 봇에 등록된 별칭이 없어요." msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "이 서버에서 사용할 수 있는 별칭들을 나열해주세요." msgstr "이 서버에서 사용할 수 있는 별칭들을 나열해주세요."
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "등록된 별칭 리스트 :"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "이 봇에서 사용할 수 있는 글로벌 별칭들을 나열해주세요." msgstr "이 봇에서 사용할 수 있는 글로벌 별칭들을 나열해주세요."
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr "인수는 숫자로 지정해줘야해요."
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr "인수는 순차적이어야해요. 미확인된 인수: "

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch\n" "Language-Team: Dutch\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: nl\n" "X-Crowdin-Language: nl\n"
"Language: nl_NL\n" "Language: nl_NL\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 "Maak aliassen voor commando's.\\n\\n Aliassen zijn alternatieve namen of snelkoppelingen voor commando's. Ze\\n kunnen fungeren als een lambda (argumenten opslaan voor herhaald gebruik)\\n of als een snelkoppeling om \\\"x y z\\\" te zeggen.\\n\\n Aliassen accepteren extra argumenten wanneer ze zijn gebruikt\\n en voegen deze toe aan de opgeslagen alias.\\n " msgstr "Maak aliassen voor commando's.\\n\\n Aliassen zijn alternatieve namen of snelkoppelingen voor commando's. Ze\\n kunnen fungeren als een lambda (argumenten opslaan voor herhaald gebruik)\\n of als een snelkoppeling om \\\"x y z\\\" te zeggen.\\n\\n Aliassen accepteren extra argumenten wanneer ze zijn gebruikt\\n en voegen deze toe aan de opgeslagen alias.\\n "
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr "Argumenten moeten worden gespecificeerd met een getal."
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumenten moeten sequentieel zijn. Ontbrekende argumenten: "
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Geen prefix gevonden." msgstr "Geen prefix gevonden."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "Beheer commandaliassen." msgstr "Beheer commandaliassen."
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "Beheer globale aliassen." msgstr "Beheer globale aliassen."
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "Voeg een alias toe voor een opdracht." msgstr "Voeg een alias toe voor een opdracht."
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "Je hebt geprobeerd een nieuwe alias te maken met de naam {name}, maar die naam is al een opdracht voor deze bot." msgstr "Je hebt geprobeerd een nieuwe alias te maken met de naam {name}, maar die naam is al een opdracht voor deze bot."
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "Je hebt geprobeerd een nieuwe alias te maken met de naam {name}, maar die alias bestaat al op deze server." msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Je hebt geprobeerd een nieuwe alias te maken met de naam {name}, maar die naam is een ongeldige aliasnaam. Aliasnamen mogen geen spaties bevatten." msgstr "Je hebt geprobeerd een nieuwe alias te maken met de naam {name}, maar die naam is een ongeldige aliasnaam. Aliasnamen mogen geen spaties bevatten."
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "Er is een nieuwe alias gemaakt met de trigger `{name}`." msgstr "Er is een nieuwe alias gemaakt met de trigger `{name}`."
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "Voeg een globale alias toe voor een opdracht." msgstr "Voeg een globale alias toe voor een opdracht."
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Je hebt geprobeerd om een nieuwe globale alias te maken met de naam {name}, maar die naam is al een opdracht op deze bot." msgstr "Je hebt geprobeerd om een nieuwe globale alias te maken met de naam {name}, maar die naam is al een opdracht op deze bot."
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "Je hebt geprobeerd een nieuwe globale alias te maken met de naam {name}, maar die alias bestaat al op deze server." msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Je hebt geprobeerd een nieuwe algemene alias te maken met de naam {name}, maar die naam is een ongeldige aliasnaam. Aliasnamen mogen geen spaties bevatten." msgstr "Je hebt geprobeerd een nieuwe algemene alias te maken met de naam {name}, maar die naam is een ongeldige aliasnaam. Aliasnamen mogen geen spaties bevatten."
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "Er is een nieuwe globale alias gemaakt met de trigger `{name}`." msgstr "Er is een nieuwe globale alias gemaakt met de trigger `{name}`."
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "Probeer hulp uit te voeren voor de basisopdracht van de alias." msgstr "Probeer hulp uit te voeren voor de basisopdracht van de alias."
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Deze alias bestaat niet." msgstr "Deze alias bestaat niet."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "Laat zien welk commando de alias uitvoert." msgstr "Laat zien welk commando de alias uitvoert."
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "De `{alias_name}` alias voert het commando `{command}` uit" msgstr "De `{alias_name}` alias voert het commando `{command}` uit"
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "Er is geen alias met de naam'{name}'" msgstr "Er is geen alias met de naam'{name}'"
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." msgid "Delete an existing alias on this server."
msgstr "Verwijder een bestaande alias op deze server." msgstr "Verwijder een bestaande alias op deze server."
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431 #: redbot/cogs/alias/alias.py:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Er zijn geen aliases in deze server." msgstr "Er zijn geen aliases in deze server."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "Alias met de naam `{name}` is succesvol verwijderd." msgstr "Alias met de naam `{name}` is succesvol verwijderd."
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "Alias met naam `{name}` is niet gevonden." msgstr "Alias met naam `{name}` is niet gevonden."
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "Een bestaande globale alias verwijderen." msgstr "Een bestaande globale alias verwijderen."
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "Er zijn geen aliases op deze bot." msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "Maak een lijst van de beschikbare aliassen op deze server." msgstr "Maak een lijst van de beschikbare aliassen op deze server."
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Aliassen:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "Maak een lijst van de beschikbare globale aliassen op deze bot." msgstr "Maak een lijst van de beschikbare globale aliassen op deze bot."
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr "Argumenten moeten worden gespecificeerd met een getal."
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumenten moeten sequentieel zijn. Ontbrekende argumenten: "

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Norwegian\n" "Language-Team: Norwegian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: no\n" "X-Crowdin-Language: no\n"
"Language: no_NO\n" "Language: no_NO\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr "Argumenter må spesifiseres med et nummer."
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Ingen prefiks funnet." msgstr "Ingen prefiks funnet."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "Administrer kommando aliaser." msgstr "Administrer kommando aliaser."
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "Administrer globale aliaser." msgstr "Administrer globale aliaser."
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "Legg til et alias for en kommando." msgstr "Legg til et alias for en kommando."
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "Du forsøkte å opprette et nytt alias med navnet {name} men navnet er allerede en kommando på denne boten." msgstr "Du forsøkte å opprette et nytt alias med navnet {name} men navnet er allerede en kommando på denne boten."
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "Du forsøkte å opprette et nytt alias med navnet {name} men aliaset finnes allerede på denne serveren." msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Du forsøkte å opprette et nytt alias med navnet {name} men navnet er et ugyldig aliasnavn. Aliasnavn kan ikke inneholde mellomrom." msgstr "Du forsøkte å opprette et nytt alias med navnet {name} men navnet er et ugyldig aliasnavn. Aliasnavn kan ikke inneholde mellomrom."
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "Et nytt alias med utløseren \"{name}\" har blitt opprettet." msgstr "Et nytt alias med utløseren \"{name}\" har blitt opprettet."
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "Legg til et globalt alias for en kommando." msgstr "Legg til et globalt alias for en kommando."
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Du forsøkte å opprette et nytt globalt alias med navnet {name} men navnet er allerede en kommando på denne boten." msgstr "Du forsøkte å opprette et nytt globalt alias med navnet {name} men navnet er allerede en kommando på denne boten."
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "Du forsøkte å opprette et nytt alias med navnet {name} men aliaset finnes allerede på denne serveren." msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Du forsøkte å opprette et nytt globalt alias med navnet {name} men navnet er et ugyldig aliasnavn. Aliasnavn kan ikke inneholde mellomrom." msgstr "Du forsøkte å opprette et nytt globalt alias med navnet {name} men navnet er et ugyldig aliasnavn. Aliasnavn kan ikke inneholde mellomrom."
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "Et nytt globalt alias med utløseren '{name}' har blitt opprettet." msgstr "Et nytt globalt alias med utløseren '{name}' har blitt opprettet."
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Ingen slike alias finnes." msgstr "Ingen slike alias finnes."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Det er ingen aliaser på denne serveren." msgstr "Det er ingen aliaser på denne serveren."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "Det er ingen aliaser på denne boten." msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Aliaser:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr "Argumenter må spesifiseres med et nummer."
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Polish\n" "Language-Team: Polish\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: pl\n" "X-Crowdin-Language: pl\n"
"Language: pl_PL\n" "Language: pl_PL\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Nie znaleziono prefiksu." msgstr "Nie znaleziono prefiksu."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Taki alias nie istnieje." msgstr "Taki alias nie istnieje."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Nie ma aliasów na tym serwerze." msgstr "Nie ma aliasów na tym serwerze."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "Nie ma żadnych aliasów dla tego bota." msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Aliasy:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Portuguese, Brazilian\n" "Language-Team: Portuguese, Brazilian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: pt-BR\n" "X-Crowdin-Language: pt-BR\n"
"Language: pt_BR\n" "Language: pt_BR\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Nenhum prefixo encontrado." msgstr "Nenhum prefixo encontrado."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Alias inexistente." msgstr "Alias inexistente."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Não há nenhum alias neste servidor." msgstr "Não há nenhum alias neste servidor."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "Não há nenhum alias nesse bot." msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Alias:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Portuguese\n" "Language-Team: Portuguese\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: pt-PT\n" "X-Crowdin-Language: pt-PT\n"
"Language: pt_PT\n" "Language: pt_PT\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Romanian\n" "Language-Team: Romanian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: ro\n" "X-Crowdin-Language: ro\n"
"Language: ro_RO\n" "Language: ro_RO\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Russian\n" "Language-Team: Russian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: ru\n" "X-Crowdin-Language: ru\n"
"Language: ru_RU\n" "Language: ru_RU\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 "Создать псевдонимы для команд.\\n\\n Псевдонимы - это альтернативные сокращения имен для команд.\\n Они могут действовать как лямбда (хранение аргументов для\\n многократного использования) или просто как сокращение \\\"а б в\\\".\\n\\n При запуске псевдонимы принимают любые дополнительные\\n аргументы и добавляют их к сохраненному псевдониму.\\n " msgstr "Создать псевдонимы для команд.\\n\\n Псевдонимы - это альтернативные сокращения имен для команд.\\n Они могут действовать как лямбда (хранение аргументов для\\n многократного использования) или просто как сокращение \\\"а б в\\\".\\n\\n При запуске псевдонимы принимают любые дополнительные\\n аргументы и добавляют их к сохраненному псевдониму.\\n "
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr "Аргументы должны быть указаны с числом."
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Аргументы должны быть последовательными. Отсутствующие аргументы: "
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Префикс не найден." msgstr "Префикс не найден."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr "\\n\\nСтраница {page}/{total}"
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "Управление псевдонимами команд." msgstr "Управление псевдонимами команд."
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "Управление глобальными псевдонимами." msgstr "Управление глобальными псевдонимами."
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "Добавить псевдоним для команды." msgstr "Добавить псевдоним для команды."
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "Вы попытались создать новый псевдоним {name}, но это имя уже является командой для этого бота." msgstr "Вы попытались создать новый псевдоним {name}, но это имя уже является командой для этого бота."
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "Вы пытались создать новый псевдоним {name}, но этот псевдоним уже существует на этом сервере." msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Вы попытались создать новый псевдоним {name}, но это имя является недопустимым псевдонимом. Имена псевдонимов не могут содержать пробелов." msgstr "Вы попытались создать новый псевдоним {name}, но это имя является недопустимым псевдонимом. Имена псевдонимов не могут содержать пробелов."
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr "Вы попытались создать новый псевдоним для не существующей команды."
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "Новый псевдоним с триггером `{name}` был создан." msgstr "Новый псевдоним с триггером `{name}` был создан."
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "Добавить глобальный псевдоним для команды." msgstr "Добавить глобальный псевдоним для команды."
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Вы попытались создать новый глобальный псевдоним {name}, но это имя уже является командой для этого бота." msgstr "Вы попытались создать новый глобальный псевдоним {name}, но это имя уже является командой для этого бота."
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "Вы попытались создать новый глобальный псевдоним {name}, но этот псевдоним уже существует на этом сервере." msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Вы попытались создать новый глобальный псевдоним {name}, но это имя является недопустимым псевдонимом. Имена псевдонимов не могут содержать пробелов." msgstr "Вы попытались создать новый глобальный псевдоним {name}, но это имя является недопустимым псевдонимом. Имена псевдонимов не могут содержать пробелов."
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "Новый глобальный псевдоним с триггером `{name}` был создан." msgstr "Новый глобальный псевдоним с триггером `{name}` был создан."
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "Попробуйте вызвать справку для базовой команды псевдонима." msgstr "Попробуйте вызвать справку для базовой команды псевдонима."
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Псевдоним не существует." msgstr "Псевдоним не существует."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "Показать, какую команду выполняет псевдоним." msgstr "Показать, какую команду выполняет псевдоним."
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "Псевдоним `{alias_name}` будет выполнять команду `{command}`" msgstr "Псевдоним `{alias_name}` будет выполнять команду `{command}`"
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "Нет псевдонима с именем `{name}`" msgstr "Нет псевдонима с именем `{name}`"
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "На этом сервере нет псевдонимов." msgstr "На этом сервере нет псевдонимов."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "Псевдоним с именем `{name}` был успешно удален." msgstr "Псевдоним с именем `{name}` был успешно удален."
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "Псевдоним с именем `{name}` не найден." msgstr "Псевдоним с именем `{name}` не найден."
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "Удалить существующий глобальный псевдоним." msgstr "Удалить существующий глобальный псевдоним."
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "У этого бота нет псевдонимов." msgstr "У этого бота нет глобальных псевдонимов."
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "Список доступных псевдонимов на этом сервере." msgstr "Список доступных псевдонимов на этом сервере."
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Псевдонимы:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "Список доступных глобальных псевдонимов для этого бота." msgstr "Список доступных глобальных псевдонимов для этого бота."
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr "Нет глобальных псевдонимов."
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr "Аргументы должны быть указаны с числом."
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Аргументы должны быть последовательными. Отсутствующие аргументы: "

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Slovak\n" "Language-Team: Slovak\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: sk\n" "X-Crowdin-Language: sk\n"
"Language: sk_SK\n" "Language: sk_SK\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Serbian (Cyrillic)\n" "Language-Team: Serbian (Cyrillic)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: sr\n" "X-Crowdin-Language: sr\n"
"Language: sr_SP\n" "Language: sr_SP\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Swedish\n" "Language-Team: Swedish\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: sv-SE\n" "X-Crowdin-Language: sv-SE\n"
"Language: sv_SE\n" "Language: sv_SE\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Inget prefix hittat." msgstr "Inget prefix hittat."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Detta alias existerar inte." msgstr "Detta alias existerar inte."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Det finns inga alias på denna server." msgstr "Det finns inga alias på denna server."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "Det finns inga alias för denna bot." msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Alias:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Turkish\n" "Language-Team: Turkish\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: tr\n" "X-Crowdin-Language: tr\n"
"Language: tr_TR\n" "Language: tr_TR\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 "Komutlar için kısaltma yaratır.\\n\\n Kısaltmalar, komutlar için alternatiftir. Hem\\n kısaltma hem de komut bir arada kullanılabilir\\n Sadece kısaltmalar da kullanılabilir \\\"x y z\\\".\\n\\n Çalıştırıldığında, diğer adlar ek bağımsız değişkenleri\\n kabul eder ve bunları depolanan diğer ada ekler.\\n " msgstr "Komutlar için kısaltma yaratır.\\n\\n Kısaltmalar, komutlar için alternatiftir. Hem\\n kısaltma hem de komut bir arada kullanılabilir\\n Sadece kısaltmalar da kullanılabilir \\\"x y z\\\".\\n\\n Çalıştırıldığında, diğer adlar ek bağımsız değişkenleri\\n kabul eder ve bunları depolanan diğer ada ekler.\\n "
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr "Girdiler numara ile özelleştirilmiş olmalıdır."
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Girdiler sırayla olmalıdır. Eksik girdiler:"
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "Öneki bulundu." msgstr "Ön ek bulunamadı."
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
#, docstring msgid "Aliases:\\n"
msgid "Manage command aliases."
msgstr "Komut diğer adları yönetmek."
#: redbot/cogs/alias/alias.py:240
#, docstring
msgid "Manage global aliases."
msgstr "Küresel diğer adları yönetmek."
#: redbot/cogs/alias/alias.py:247
#, docstring
msgid "Add an alias for a command."
msgstr "Bir komut için bir diğer ad ekleyin."
#: 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."
msgstr "Adı {name} ile yeni bir diğer ad oluşturmak çalıştı, ancak bu adı zaten bu bot bir komutudur."
#: redbot/cogs/alias/alias.py:263
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
msgstr "Adı {name} ile yeni bir diğer ad oluşturmak çalıştı, ancak bu diğer adı bu sunucuda zaten vardır."
#: redbot/cogs/alias/alias.py:274
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Adı {name} ile yeni bir diğer ad oluşturmak çalıştı ama o ismi geçersiz diğer ad. Diğer ad ad adlar boşluk içeremez."
#: redbot/cogs/alias/alias.py:286
msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:118
msgid "A new alias with the trigger `{name}` has been created." msgid "\\n\\nPage {page}/{total}"
msgstr "Yeni bir takma ad tetikleyici '{name}' ile oluşturuldu." msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:129
#, docstring
msgid "Manage command aliases."
msgstr "Komut kısaltmalarını yönet."
#: redbot/cogs/alias/alias.py:134
#, docstring
msgid "Manage global aliases."
msgstr "Global kısaltmaları yönet."
#: redbot/cogs/alias/alias.py:141
#, docstring
msgid "Add an alias for a command."
msgstr "Bir komut için kısaltma ekleyin."
#: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "{name} adı ile yeni bir kısaltma oluşturmaya çalıştınız, ancak botta bu ad ile mevcut bir komut bulunuyor."
#: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "{name} adı ile yeni bir kısaltma oluşturmaya çalıştınız, ancak belirttiğiniz geçersiz bir kısaltmadır. Kısaltmalar boşluk içermemelidir."
#: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "Mevcut olmayan bir komut için kısayol oluşturmaya çalıştınız."
#: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created."
msgstr "Yeni bir kısaltma '{name}' tetikleyicisi ile oluşturuldu."
#: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "Bir komut için küresel bir diğer ad ekleyin." msgstr "Bir komut için global bir kısaltma ekleyin."
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Yeni bir küresel diğer adı ile ad {name} oluşturmak çalıştı, ancak bu adı zaten bu bot bir komutudur." msgstr "{name} adı ile global bir kısaltma yaratmaya çalıştınız, ancak botta bu isimde bir komut mevcut."
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "Adı {name} ile yeni bir diğer ad oluşturmak çalıştı, ancak bu adı zaten bu bot bir komutudur." msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Yeni bir küresel diğer adı ile ad {name} oluşturmaya çalıştı ama o ismi geçersiz diğer ad. Diğer ad ad adlar boşluk içeremez." msgstr "{name} ile yeni bir global kısaltma oluşturmaya çalıştınız ancak bu kısaltma geçerli değil. Kısaltmalar boşluk içeremez."
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "Yeni bir küresel diğer ad tetikleyici '{name}' ile oluşturuldu." msgstr "Yeni bir global kısaltma '{name}' tetikleyicisi ile oluşturuldu."
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "Diğer temel komutunun yardımını yürütmek deneyin." msgstr "Kısaltmada kullanılan temel komutun kullanımı için yardım komutunu kullanmayı deneyiniz."
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "Böyle bir takma var yok." msgstr "Böyle bir kısaltma mevcut değil."
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "Takma adın çalıştırıldığı komutu gösterin." msgstr "Kısaltmanın hangi komutu uyguladığını gösterir."
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "'{alias_name}' diğer ad komut '{command} ' idam edecek" msgstr "'{alias_name}' kısaltması '{command} ' komutunu uygulayacak."
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "Hiç diğer ad ad '{name} ' ile olduğunu" msgstr "{name} adında bir kısaltma mevcut değil."
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." msgid "Delete an existing alias on this server."
msgstr "Bu sunucuda varolan bir diğer adı silin." msgstr "Bu sunucuda mevcut bir kısaltmayı silin."
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431 #: redbot/cogs/alias/alias.py:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "Bu sunucuda hiçbir diğer adları vardır." msgstr "Bu sunucuda herhangi bir kısaltma mevcut değil."
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "`{name}`adlı takma ad başarıyla silindi." msgstr "`{name}`adlı kısaltma başarıyla silindi."
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "{Name} `adlı takma ad bulunamadı." msgstr "{name} adlı kısaltma bulunamadı."
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "Mevcut bir global takma adı silin." msgstr "Mevcut bir global kısaltmayı silin."
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "Bu botta takma adlar yok." msgstr "Bu botta herhangi bir global kısaltma bulunmuyor."
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "Bu sunucudaki kullanılabilir diğer adları listeleyin." msgstr "Bu sunucudaki kullanılabilir kısaltmaları listeleyin."
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "Takma adlar:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "Bu botta mevcut küresel takma adları listeleyiniz." msgstr "Bot üzerindeki global kullanılabilir kısaltmaları listeleyin."
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr "Herhangi bir global kısaltma mevcut değil."
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr "Değişkenler numara içermelidir."
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Değişkenler sıralı olmalıdır. Eksik değişkenler: "

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Ukrainian\n" "Language-Team: Ukrainian\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: uk\n" "X-Crowdin-Language: uk\n"
"Language: uk_UA\n" "Language: uk_UA\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Vietnamese\n" "Language-Team: Vietnamese\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: vi\n" "X-Crowdin-Language: vi\n"
"Language: vi_VN\n" "Language: vi_VN\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese Simplified\n" "Language-Team: Chinese Simplified\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: zh-CN\n" "X-Crowdin-Language: zh-CN\n"
"Language: zh_CN\n" "Language: zh_CN\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "找不到前缀" msgstr "找不到前缀"
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "您尝试使用名称{name}创建新的全局别名,但该别名已经存在于此服务器上。" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "您试图使用名称{name}创建新的全局别名,但该名称是无效的别名。别名不能包含空格。" msgstr "您试图使用名称{name}创建新的全局别名,但该名称是无效的别名。别名不能包含空格。"
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "已经创建一个包含触发器`{name}`的全局别名。" msgstr "已经创建一个包含触发器`{name}`的全局别名。"
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "不存在该别名。" msgstr "不存在该别名。"
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "`{alias_name}`别要名将执行命令`{command}`" msgstr "`{alias_name}`别要名将执行命令`{command}`"
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "没有名为`{name}`的别名" msgstr "没有名为`{name}`的别名"
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "在这个服务器上没有别名。" msgstr "在这个服务器上没有别名。"
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "已经成功删除名为`{name}`的别名。" msgstr "已经成功删除名为`{name}`的别名。"
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "找不到名为`{name}`的别名。" msgstr "找不到名为`{name}`的别名。"
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "这个机器人上没有别名。" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr "别名:"
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese Traditional, Hong Kong\n" "Language-Team: Chinese Traditional, Hong Kong\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: zh-HK\n" "X-Crowdin-Language: zh-HK\n"
"Language: zh_HK\n" "Language: zh_HK\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: red-discordbot\n" "Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-04-02 12:07+0000\n" "POT-Creation-Date: 2020-06-04 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese Traditional\n" "Language-Team: Chinese Traditional\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -13,139 +13,146 @@ msgstr ""
"X-Crowdin-Language: zh-TW\n" "X-Crowdin-Language: zh-TW\n"
"Language: zh_TW\n" "Language: zh_TW\n"
#: redbot/cogs/alias/alias.py:35 #: redbot/cogs/alias/alias.py:31
#, docstring #, 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 " 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 ""
#: redbot/cogs/alias/alias.py:111 #: redbot/cogs/alias/alias.py:86
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""
#: redbot/cogs/alias/alias.py:168
msgid "No prefix found." msgid "No prefix found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:235 #: redbot/cogs/alias/alias.py:116
msgid "Aliases:\\n"
msgstr ""
#: redbot/cogs/alias/alias.py:118
msgid "\\n\\nPage {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:129
#, docstring #, docstring
msgid "Manage command aliases." msgid "Manage command aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:240 #: redbot/cogs/alias/alias.py:134
#, docstring #, docstring
msgid "Manage global aliases." msgid "Manage global aliases."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:247 #: redbot/cogs/alias/alias.py:141
#, docstring #, docstring
msgid "Add an alias for a command." msgid "Add an alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:252 #: redbot/cogs/alias/alias.py:146
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:263 #: redbot/cogs/alias/alias.py:157
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:274 #: redbot/cogs/alias/alias.py:168
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:286 #: redbot/cogs/alias/alias.py:180 redbot/cogs/alias/alias.py:239
msgid "You attempted to create a new alias for a command that doesn't exist." msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:300 #: redbot/cogs/alias/alias.py:194
msgid "A new alias with the trigger `{name}` has been created." msgid "A new alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:306 #: redbot/cogs/alias/alias.py:200
#, docstring #, docstring
msgid "Add a global alias for a command." msgid "Add a global alias for a command."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:311 #: redbot/cogs/alias/alias.py:205
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot." msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:322 #: redbot/cogs/alias/alias.py:216
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server." msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:333 #: redbot/cogs/alias/alias.py:227
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces." msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:349 #: redbot/cogs/alias/alias.py:250
msgid "A new global alias with the trigger `{name}` has been created." msgid "A new global alias with the trigger `{name}` has been created."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:357 #: redbot/cogs/alias/alias.py:258
#, docstring #, docstring
msgid "Try to execute help for the base command of the alias." msgid "Try to execute help for the base command of the alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:369 #: redbot/cogs/alias/alias.py:263
msgid "No such alias exists." msgid "No such alias exists."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:374 #: redbot/cogs/alias/alias.py:268
#, docstring #, docstring
msgid "Show what command the alias executes." msgid "Show what command the alias executes."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:379 #: redbot/cogs/alias/alias.py:273
msgid "The `{alias_name}` alias will execute the command `{command}`" msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:384 #: redbot/cogs/alias/alias.py:278
msgid "There is no alias with the name `{name}`" msgid "There is no alias with the name `{name}`"
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:390 #: redbot/cogs/alias/alias.py:284
#, docstring #, docstring
msgid "Delete an existing alias on this server." 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:286 redbot/cogs/alias/alias.py:318
#: redbot/cogs/alias/alias.py:442
msgid "There are no aliases on this server." msgid "There are no aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418 #: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
msgid "Alias with the name `{name}` was successfully deleted." msgid "Alias with the name `{name}` was successfully deleted."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421 #: redbot/cogs/alias/alias.py:294 redbot/cogs/alias/alias.py:309
msgid "Alias with name `{name}` was not found." msgid "Alias with name `{name}` was not found."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:408 #: redbot/cogs/alias/alias.py:299
#, docstring #, docstring
msgid "Delete an existing global alias." msgid "Delete an existing global alias."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:413 #: redbot/cogs/alias/alias.py:301
msgid "There are no aliases on this bot." msgid "There are no global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:426 #: redbot/cogs/alias/alias.py:315
#, docstring #, docstring
msgid "List the available aliases on this server." msgid "List the available aliases on this server."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438 #: redbot/cogs/alias/alias.py:324
msgid "Aliases:"
msgstr ""
#: redbot/cogs/alias/alias.py:437
#, docstring #, docstring
msgid "List the available global aliases on this bot." msgid "List the available global aliases on this bot."
msgstr "" msgstr ""
#: redbot/cogs/alias/alias.py:327
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:174
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:181
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,8 +1,9 @@
from redbot.core import commands from redbot.core.bot import Red
from .audio import Audio from .core import Audio
def setup(bot: commands.Bot): def setup(bot: Red):
cog = Audio(bot) cog = Audio(bot)
bot.add_cog(cog) bot.add_cog(cog)
cog.start_up_task()

View File

@@ -0,0 +1,10 @@
from . import (
api_utils,
global_db,
interface,
local_db,
playlist_interface,
playlist_wrapper,
spotify,
youtube,
)

View File

@@ -0,0 +1,140 @@
import datetime
import json
import logging
from collections import namedtuple
from dataclasses import dataclass, field
from typing import List, MutableMapping, Optional, Union
import discord
from redbot.core.bot import Red
from redbot.core.utils.chat_formatting import humanize_list
from ..errors import InvalidPlaylistScope, MissingAuthor, MissingGuild
from ..utils import PlaylistScope
log = logging.getLogger("red.cogs.Audio.api.utils")
@dataclass
class YouTubeCacheFetchResult:
query: Optional[str]
last_updated: int
def __post_init__(self):
if isinstance(self.last_updated, int):
self.updated_on: datetime.datetime = datetime.datetime.fromtimestamp(self.last_updated)
@dataclass
class SpotifyCacheFetchResult:
query: Optional[str]
last_updated: int
def __post_init__(self):
if isinstance(self.last_updated, int):
self.updated_on: datetime.datetime = datetime.datetime.fromtimestamp(self.last_updated)
@dataclass
class LavalinkCacheFetchResult:
query: Optional[MutableMapping]
last_updated: int
def __post_init__(self):
if isinstance(self.last_updated, int):
self.updated_on: datetime.datetime = datetime.datetime.fromtimestamp(self.last_updated)
if isinstance(self.query, str):
self.query = json.loads(self.query)
@dataclass
class LavalinkCacheFetchForGlobalResult:
query: str
data: MutableMapping
def __post_init__(self):
if isinstance(self.data, str):
self.data_string = str(self.data)
self.data = json.loads(self.data)
@dataclass
class PlaylistFetchResult:
playlist_id: int
playlist_name: str
scope_id: int
author_id: int
playlist_url: Optional[str] = None
tracks: List[MutableMapping] = field(default_factory=lambda: [])
def __post_init__(self):
if isinstance(self.tracks, str):
self.tracks = json.loads(self.tracks)
def standardize_scope(scope: str) -> str:
"""Convert any of the used scopes into one we are expecting"""
scope = scope.upper()
valid_scopes = ["GLOBAL", "GUILD", "AUTHOR", "USER", "SERVER", "MEMBER", "BOT"]
if scope in PlaylistScope.list():
return scope
elif scope not in valid_scopes:
raise InvalidPlaylistScope(
f'"{scope}" is not a valid playlist scope.'
f" Scope needs to be one of the following: {humanize_list(valid_scopes)}"
)
if scope in ["GLOBAL", "BOT"]:
scope = PlaylistScope.GLOBAL.value
elif scope in ["GUILD", "SERVER"]:
scope = PlaylistScope.GUILD.value
elif scope in ["USER", "MEMBER", "AUTHOR"]:
scope = PlaylistScope.USER.value
return scope
def prepare_config_scope(
bot: Red,
scope,
author: Union[discord.abc.User, int] = None,
guild: Union[discord.Guild, int] = None,
):
"""Return the scope used by Playlists"""
scope = standardize_scope(scope)
if scope == PlaylistScope.GLOBAL.value:
config_scope = [PlaylistScope.GLOBAL.value, bot.user.id]
elif scope == PlaylistScope.USER.value:
if author is None:
raise MissingAuthor("Invalid author for user scope.")
config_scope = [PlaylistScope.USER.value, int(getattr(author, "id", author))]
else:
if guild is None:
raise MissingGuild("Invalid guild for guild scope.")
config_scope = [PlaylistScope.GUILD.value, int(getattr(guild, "id", guild))]
return config_scope
def prepare_config_scope_for_migration23( # TODO: remove me in a future version ?
scope, author: Union[discord.abc.User, int] = None, guild: discord.Guild = None
):
"""Return the scope used by Playlists"""
scope = standardize_scope(scope)
if scope == PlaylistScope.GLOBAL.value:
config_scope = [PlaylistScope.GLOBAL.value]
elif scope == PlaylistScope.USER.value:
if author is None:
raise MissingAuthor("Invalid author for user scope.")
config_scope = [PlaylistScope.USER.value, str(getattr(author, "id", author))]
else:
if guild is None:
raise MissingGuild("Invalid guild for guild scope.")
config_scope = [PlaylistScope.GUILD.value, str(getattr(guild, "id", guild))]
return config_scope
FakePlaylist = namedtuple("Playlist", "author scope")

View File

@@ -0,0 +1,42 @@
import asyncio
import contextlib
import logging
import urllib.parse
from typing import Mapping, Optional, TYPE_CHECKING, Union
import aiohttp
from lavalink.rest_api import LoadResult
from redbot.core import Config
from redbot.core.bot import Red
from redbot.core.commands import Cog
from ..audio_dataclasses import Query
from ..audio_logging import IS_DEBUG, debug_exc_log
if TYPE_CHECKING:
from .. import Audio
_API_URL = "https://redbot.app/"
log = logging.getLogger("red.cogs.Audio.api.GlobalDB")
class GlobalCacheWrapper:
def __init__(
self, bot: Red, config: Config, session: aiohttp.ClientSession, cog: Union["Audio", Cog]
):
# Place Holder for the Global Cache PR
self.bot = bot
self.config = config
self.session = session
self.api_key = None
self._handshake_token = ""
self.can_write = False
self._handshake_token = ""
self.has_api_key = None
self._token: Mapping[str, str] = {}
self.cog = cog
def update_token(self, new_token: Mapping[str, str]):
self._token = new_token

View File

@@ -0,0 +1,372 @@
import concurrent
import contextlib
import datetime
import logging
import random
import time
from types import SimpleNamespace
from typing import Callable, List, MutableMapping, Optional, TYPE_CHECKING, Tuple, Union
from redbot.core.utils import AsyncIter
from redbot.core import Config
from redbot.core.bot import Red
from redbot.core.commands import Cog
from redbot.core.utils.dbtools import APSWConnectionWrapper
from ..audio_logging import debug_exc_log
from ..sql_statements import (
LAVALINK_CREATE_INDEX,
LAVALINK_CREATE_TABLE,
LAVALINK_DELETE_OLD_ENTRIES,
LAVALINK_FETCH_ALL_ENTRIES_GLOBAL,
LAVALINK_QUERY,
LAVALINK_QUERY_ALL,
LAVALINK_QUERY_LAST_FETCHED_RANDOM,
LAVALINK_UPDATE,
LAVALINK_UPSERT,
SPOTIFY_CREATE_INDEX,
SPOTIFY_CREATE_TABLE,
SPOTIFY_DELETE_OLD_ENTRIES,
SPOTIFY_QUERY,
SPOTIFY_QUERY_ALL,
SPOTIFY_QUERY_LAST_FETCHED_RANDOM,
SPOTIFY_UPDATE,
SPOTIFY_UPSERT,
YOUTUBE_CREATE_INDEX,
YOUTUBE_CREATE_TABLE,
YOUTUBE_DELETE_OLD_ENTRIES,
YOUTUBE_QUERY,
YOUTUBE_QUERY_ALL,
YOUTUBE_QUERY_LAST_FETCHED_RANDOM,
YOUTUBE_UPDATE,
YOUTUBE_UPSERT,
PRAGMA_FETCH_user_version,
PRAGMA_SET_journal_mode,
PRAGMA_SET_read_uncommitted,
PRAGMA_SET_temp_store,
PRAGMA_SET_user_version,
)
from .api_utils import (
LavalinkCacheFetchForGlobalResult,
LavalinkCacheFetchResult,
SpotifyCacheFetchResult,
YouTubeCacheFetchResult,
)
if TYPE_CHECKING:
from .. import Audio
log = logging.getLogger("red.cogs.Audio.api.LocalDB")
_SCHEMA_VERSION = 3
class BaseWrapper:
def __init__(
self, bot: Red, config: Config, conn: APSWConnectionWrapper, cog: Union["Audio", Cog]
):
self.bot = bot
self.config = config
self.database = conn
self.statement = SimpleNamespace()
self.statement.pragma_temp_store = PRAGMA_SET_temp_store
self.statement.pragma_journal_mode = PRAGMA_SET_journal_mode
self.statement.pragma_read_uncommitted = PRAGMA_SET_read_uncommitted
self.statement.set_user_version = PRAGMA_SET_user_version
self.statement.get_user_version = PRAGMA_FETCH_user_version
self.fetch_result: Optional[Callable] = None
self.cog = cog
async def init(self) -> None:
"""Initialize the local cache"""
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
executor.submit(self.database.cursor().execute, self.statement.pragma_temp_store)
executor.submit(self.database.cursor().execute, self.statement.pragma_journal_mode)
executor.submit(self.database.cursor().execute, self.statement.pragma_read_uncommitted)
executor.submit(self.maybe_migrate)
executor.submit(self.database.cursor().execute, LAVALINK_CREATE_TABLE)
executor.submit(self.database.cursor().execute, LAVALINK_CREATE_INDEX)
executor.submit(self.database.cursor().execute, YOUTUBE_CREATE_TABLE)
executor.submit(self.database.cursor().execute, YOUTUBE_CREATE_INDEX)
executor.submit(self.database.cursor().execute, SPOTIFY_CREATE_TABLE)
executor.submit(self.database.cursor().execute, SPOTIFY_CREATE_INDEX)
await self.clean_up_old_entries()
def close(self) -> None:
"""Close the connection with the local cache"""
with contextlib.suppress(Exception):
self.database.close()
async def clean_up_old_entries(self) -> None:
"""Delete entries older than x in the local cache tables"""
max_age = await self.config.cache_age()
maxage = datetime.datetime.now(tz=datetime.timezone.utc) - datetime.timedelta(days=max_age)
maxage_int = int(time.mktime(maxage.timetuple()))
values = {"maxage": maxage_int}
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
executor.submit(self.database.cursor().execute, LAVALINK_DELETE_OLD_ENTRIES, values)
executor.submit(self.database.cursor().execute, YOUTUBE_DELETE_OLD_ENTRIES, values)
executor.submit(self.database.cursor().execute, SPOTIFY_DELETE_OLD_ENTRIES, values)
def maybe_migrate(self) -> None:
"""Maybe migrate Database schema for the local cache"""
current_version = 0
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
for future in concurrent.futures.as_completed(
[executor.submit(self.database.cursor().execute, self.statement.get_user_version)]
):
try:
row_result = future.result()
current_version = row_result.fetchone()
break
except Exception as exc:
debug_exc_log(log, exc, "Failed to completed fetch from database")
if isinstance(current_version, tuple):
current_version = current_version[0]
if current_version == _SCHEMA_VERSION:
return
executor.submit(
self.database.cursor().execute,
self.statement.set_user_version,
{"version": _SCHEMA_VERSION},
)
async def insert(self, values: List[MutableMapping]) -> None:
"""Insert an entry into the local cache"""
try:
with self.database.transaction() as transaction:
transaction.executemany(self.statement.upsert, values)
except Exception as exc:
debug_exc_log(log, exc, "Error during table insert")
async def update(self, values: MutableMapping) -> None:
"""Update an entry of the local cache"""
try:
time_now = int(datetime.datetime.now(datetime.timezone.utc).timestamp())
values["last_fetched"] = time_now
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
executor.submit(self.database.cursor().execute, self.statement.update, values)
except Exception as exc:
debug_exc_log(log, exc, "Error during table update")
async def _fetch_one(
self, values: MutableMapping
) -> Optional[
Union[LavalinkCacheFetchResult, SpotifyCacheFetchResult, YouTubeCacheFetchResult]
]:
"""Get an entry from the local cache"""
max_age = await self.config.cache_age()
maxage = datetime.datetime.now(tz=datetime.timezone.utc) - datetime.timedelta(days=max_age)
maxage_int = int(time.mktime(maxage.timetuple()))
values.update({"maxage": maxage_int})
row = None
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
for future in concurrent.futures.as_completed(
[executor.submit(self.database.cursor().execute, self.statement.get_one, values)]
):
try:
row_result = future.result()
row = row_result.fetchone()
except Exception as exc:
debug_exc_log(log, exc, "Failed to completed fetch from database")
if not row:
return None
if self.fetch_result is None:
return None
return self.fetch_result(*row)
async def _fetch_all(
self, values: MutableMapping
) -> List[Union[LavalinkCacheFetchResult, SpotifyCacheFetchResult, YouTubeCacheFetchResult]]:
"""Get all entries from the local cache"""
output = []
row_result = []
if self.fetch_result is None:
return []
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
for future in concurrent.futures.as_completed(
[executor.submit(self.database.cursor().execute, self.statement.get_all, values)]
):
try:
row_result = future.result()
except Exception as exc:
debug_exc_log(log, exc, "Failed to completed fetch from database")
async for row in AsyncIter(row_result):
output.append(self.fetch_result(*row))
return output
async def _fetch_random(
self, values: MutableMapping
) -> Optional[
Union[LavalinkCacheFetchResult, SpotifyCacheFetchResult, YouTubeCacheFetchResult]
]:
"""Get a random entry from the local cache"""
row = None
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
for future in concurrent.futures.as_completed(
[
executor.submit(
self.database.cursor().execute, self.statement.get_random, values
)
]
):
try:
row_result = future.result()
rows = row_result.fetchall()
if rows:
row = random.choice(rows)
else:
row = None
except Exception as exc:
debug_exc_log(log, exc, "Failed to completed random fetch from database")
if not row:
return None
if self.fetch_result is None:
return None
return self.fetch_result(*row)
class YouTubeTableWrapper(BaseWrapper):
def __init__(
self, bot: Red, config: Config, conn: APSWConnectionWrapper, cog: Union["Audio", Cog]
):
super().__init__(bot, config, conn, cog)
self.statement.upsert = YOUTUBE_UPSERT
self.statement.update = YOUTUBE_UPDATE
self.statement.get_one = YOUTUBE_QUERY
self.statement.get_all = YOUTUBE_QUERY_ALL
self.statement.get_random = YOUTUBE_QUERY_LAST_FETCHED_RANDOM
self.fetch_result = YouTubeCacheFetchResult
async def fetch_one(
self, values: MutableMapping
) -> Tuple[Optional[str], Optional[datetime.datetime]]:
"""Get an entry from the Youtube table"""
result = await self._fetch_one(values)
if not result or not isinstance(result.query, str):
return None, None
return result.query, result.updated_on
async def fetch_all(self, values: MutableMapping) -> List[YouTubeCacheFetchResult]:
"""Get all entries from the Youtube table"""
result = await self._fetch_all(values)
if result and isinstance(result[0], YouTubeCacheFetchResult):
return result
return []
async def fetch_random(self, values: MutableMapping) -> Optional[str]:
"""Get a random entry from the Youtube table"""
result = await self._fetch_random(values)
if not result or not isinstance(result.query, str):
return None
return result.query
class SpotifyTableWrapper(BaseWrapper):
def __init__(
self, bot: Red, config: Config, conn: APSWConnectionWrapper, cog: Union["Audio", Cog]
):
super().__init__(bot, config, conn, cog)
self.statement.upsert = SPOTIFY_UPSERT
self.statement.update = SPOTIFY_UPDATE
self.statement.get_one = SPOTIFY_QUERY
self.statement.get_all = SPOTIFY_QUERY_ALL
self.statement.get_random = SPOTIFY_QUERY_LAST_FETCHED_RANDOM
self.fetch_result = SpotifyCacheFetchResult
async def fetch_one(
self, values: MutableMapping
) -> Tuple[Optional[str], Optional[datetime.datetime]]:
"""Get an entry from the Spotify table"""
result = await self._fetch_one(values)
if not result or not isinstance(result.query, str):
return None, None
return result.query, result.updated_on
async def fetch_all(self, values: MutableMapping) -> List[SpotifyCacheFetchResult]:
"""Get all entries from the Spotify table"""
result = await self._fetch_all(values)
if result and isinstance(result[0], SpotifyCacheFetchResult):
return result
return []
async def fetch_random(self, values: MutableMapping) -> Optional[str]:
"""Get a random entry from the Spotify table"""
result = await self._fetch_random(values)
if not result or not isinstance(result.query, str):
return None
return result.query
class LavalinkTableWrapper(BaseWrapper):
def __init__(
self, bot: Red, config: Config, conn: APSWConnectionWrapper, cog: Union["Audio", Cog]
):
super().__init__(bot, config, conn, cog)
self.statement.upsert = LAVALINK_UPSERT
self.statement.update = LAVALINK_UPDATE
self.statement.get_one = LAVALINK_QUERY
self.statement.get_all = LAVALINK_QUERY_ALL
self.statement.get_random = LAVALINK_QUERY_LAST_FETCHED_RANDOM
self.statement.get_all_global = LAVALINK_FETCH_ALL_ENTRIES_GLOBAL
self.fetch_result = LavalinkCacheFetchResult
self.fetch_for_global: Optional[Callable] = None
async def fetch_one(
self, values: MutableMapping
) -> Tuple[Optional[MutableMapping], Optional[datetime.datetime]]:
"""Get an entry from the Lavalink table"""
result = await self._fetch_one(values)
if not result or not isinstance(result.query, dict):
return None, None
return result.query, result.updated_on
async def fetch_all(self, values: MutableMapping) -> List[LavalinkCacheFetchResult]:
"""Get all entries from the Lavalink table"""
result = await self._fetch_all(values)
if result and isinstance(result[0], LavalinkCacheFetchResult):
return result
return []
async def fetch_random(self, values: MutableMapping) -> Optional[MutableMapping]:
"""Get a random entry from the Lavalink table"""
result = await self._fetch_random(values)
if not result or not isinstance(result.query, dict):
return None
return result.query
async def fetch_all_for_global(self) -> List[LavalinkCacheFetchForGlobalResult]:
"""Get all entries from the Lavalink table"""
output: List[LavalinkCacheFetchForGlobalResult] = []
row_result = []
if self.fetch_for_global is None:
return []
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
for future in concurrent.futures.as_completed(
[executor.submit(self.database.cursor().execute, self.statement.get_all_global)]
):
try:
row_result = future.result()
except Exception as exc:
debug_exc_log(log, exc, "Failed to completed fetch from database")
async for row in AsyncIter(row_result):
output.append(self.fetch_for_global(*row))
return output
class LocalCacheWrapper:
"""Wraps all table apis into 1 object representing the local cache"""
def __init__(
self, bot: Red, config: Config, conn: APSWConnectionWrapper, cog: Union["Audio", Cog]
):
self.bot = bot
self.config = config
self.database = conn
self.cog = cog
self.lavalink: LavalinkTableWrapper = LavalinkTableWrapper(bot, config, conn, self.cog)
self.spotify: SpotifyTableWrapper = SpotifyTableWrapper(bot, config, conn, self.cog)
self.youtube: YouTubeTableWrapper = YouTubeTableWrapper(bot, config, conn, self.cog)

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Afrikaans\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: af\n"
"Language: af_ZA\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Arabic\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ar\n"
"Language: ar_SA\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bulgarian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: bg\n"
"Language: bg_BG\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Catalan\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ca\n"
"Language: ca_ES\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Czech\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"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"
"Language: cs_CZ\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr "Spotify API klíč nebo klientský tajný klíč nebyl správně nastaven. \\nPro pokyny použijte `{prefix}audioset spotifyapi`."
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Nezdá se, že by to byla platná adresa Spotify playlistu/alba nebo kód."
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Pravděpodobně se nejedná o podporovaný Spotify odkaz nebo kód."
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr "Připojení bylo obnoveno při načítání seznamu skladeb."
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr "Vypršel časový limit přehrávače, přeskakuji zbývající skladby."
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr "Nepodařilo se získat skladby, zbývá přeskakování."
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr "Nic nenalezeno.\\nYouTube API klíč může být neplatný nebo může být omezen na YouTube's vyhledávací službu.\\nPodívejte se znovu na YouTube API klíč a postupujte podle instrukcí na `{prefix}audioset youtubeapi`."
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} skladby nemůžou být zařazeny do fronty."
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr "Playlist zařazen do fronty"
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Přidáno {num} skladeb do fronty.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} do začátku přehrávání playlistu: je na #{position} pozici ve frontě"
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr "Spotify API klíč nebo klientský tajný klíč nebyl správně nastaven. \\nPro pokyny použijte `{prefix}audioset spotifyapi`."

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Danish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: da\n"
"Language: da_DK\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: de\n"
"Language: de_DE\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr "Der Spotify API Key oder das Client secret wurden nicht richtig eingestellt.\\nBenutze `{prefix}audioset spotifyapi` für eine Anleitung."
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Dies scheint keine unterstützte Spotify-URL oder Spotify-Code zu sein."
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr "Die Verbindung wurde zurückgesetzt beim Laden der Playlist."
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr "Audioplayer-Timeout. Verbleibende Titel werden übersprungen."
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr "Fehler beim laden der Tracks. Verbleibende Tracks werden übersprungen."
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr "Nichts Gefunden.\\nDer Youtube API Key könnte falsch sein oder du überschreitest das Rate Limit der Youtube Suche.\\nKontrollieren den Youtube API Key nocheinmal und dann folge der Anleitung bei `{prefix}audioset youtubeapi`."
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr "Wiedergabeliste eingereiht"
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Es wurden {num} Tracks zu der Playlist hinzugefügt.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} bis zum Start der Wiedergabeliste: beginnt bei #{position} in der Warteschlange"
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr "Der Spotify API Key oder das Client secret wurden nicht richtig eingestellt.\\nBenutze `{prefix}audioset spotifyapi` für eine Anleitung."

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Greek\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: el\n"
"Language: el_GR\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: es-ES\n"
"Language: es_ES\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr "Lista de reproducción en cola"
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Finnish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: fi\n"
"Language: fi_FI\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: fr\n"
"Language: fr_FR\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr "La clé API de Spotify ou le secret client n'ont pas étés correctement définis. \\nUtilisez `{prefix}audioset spotifyapi` pour connaître la marche à suivre."
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Cela ne semble pas être une URL ou un album/playlist Spotify valide."
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Cela ne semble pas être une URL ou un code Spotify pris en charge."
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr "La connexion a été réinitialisée lors du chargement de la playlist."
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr "Arrêt du lecteur, pistes restantes ignoré."
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr "Impossible d'obtenir les pistes, pistes ignoré."
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr "Rien n'a été trouvé.\\nLa clé de l'API YouTube peut être invalide ou vous pouvez être limité sur le service de recherche de YouTube.\\nVérifiez à nouveau la clé de l'API YouTube et suivez les instructions à `{prefix}audioset youtubeapi`."
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} pistes ne peuvent pas être mises en attente."
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr "Playlist en file dattente"
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Ajout de {num} pistes à la file d'attente.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} avant le début de la lecture de la playlist : commence à #{position} dans la liste"
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr "La clé API de Spotify ou le secret client n'ont pas étés correctement définis. \\nUtilisez `{prefix}audioset spotifyapi` pour connaître la marche à suivre."

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hebrew\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"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"
"Language: he_IL\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hungarian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: hu\n"
"Language: hu_HU\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Indonesian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: id\n"
"Language: id_ID\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: it\n"
"Language: it_IT\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Japanese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ja\n"
"Language: ja_JP\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Korean\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ko\n"
"Language: ko_KR\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr "대기중인 재생 목록"
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Dutch\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: nl\n"
"Language: nl_NL\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr "Afspeellijst toegevoegd"
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} tot het begin van het afspelen van de afspeellijst: begint bij #{position} in de wachtrij"
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Norwegian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: no\n"
"Language: no_NO\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Polish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: pl\n"
"Language: pl_PL\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Portuguese, Brazilian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: pt-BR\n"
"Language: pt_BR\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Isto não parece ser uma URL ou código do Spotify válido."
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr "A conexão foi redefinida durante o carregamento da lista de reprodução."
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr "Tempo limite do reprodutor atingido; saltando as faixas restantes."
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr "Falha ao obter as faixas; saltando as faixas restantes."
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr "Nada encontrado.\\nA chave de API do YouTube pode ser inválida ou você pode estar sendo limitado pelas cotas do serviço de busca do YouTube.\\nVerifique a chave de API do YouTube novamente e siga as instruções em `{prefix}audioset youtubeapi`."
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr "Lista de reprodução enfileirada"
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "{num} faixas enfileiradas.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} até o início da reprodução da lista: começa na posição #{position} da fila"
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Portuguese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: pt-PT\n"
"Language: pt_PT\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Romanian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"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"
"Language: ro_RO\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Russian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: ru\n"
"Language: ru_RU\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr "API ключ Spotify или секрет клиента были установлены неправильно. \\nДля получения инструкций используйте `{prefix}audioset spotifyapi`."
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Это не похоже на поддерживаемый Spotify URL или код."
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr "Соединение было сброшено при загрузке плейлиста."
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr "Тайм-аут проигрывателя, пропуск оставшихся треков."
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr "Не удалось получить треки, пропускаю оставшиеся треки."
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr "Ничего не найдено.\\nКлюч YouTube API может быть недействительным или вы можете оценить его в поисковой службе YouTube.\\nПроверьте YouTube API еще раз и следуйте инструкциям в `{prefix}audioset youtubeapi`."
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr "Плейлист поставлен в очередь"
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "{num} треков добавлено в очередь.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} до начала воспроизведения плейлиста: начинается с #{position} в очереди"
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr "API ключ Spotify или секрет клиента были установлены неправильно. \\nДля получения инструкций используйте `{prefix}audioset spotifyapi`."

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Slovak\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"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"
"Language: sk_SK\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Serbian (Cyrillic)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"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"
"Language: sr_SP\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Swedish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: sv-SE\n"
"Language: sv_SE\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Turkish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: tr\n"
"Language: tr_TR\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr "Spotify API veya client secret'ı düzgün bir şekilde ayarlanmamış. \\n `{prefix}audioset spotifyapi` komutundan bilgi alabilirsiniz."
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Bu geçerli bir Spotify URL'si ya da kodu gibi gözükmüyor."
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr "Playlist yüklenirken bağlantı yenilendi."
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr "Oynatıcı zaman aşımına uğradı, kalan parçalar atlanıyor."
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr "Parça alınamıyor, atlanıyor."
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr "Hiçbir şey bulunamadı.\\nYouTube API keyi yanlış ya da API kullanımınız sınırlandırılmış.\\nYouTube API keyinizi kontrol edin ve `{prefix}audioset youtubeapi`'de ki yönlendirmeleri takip edin."
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr "Playlist sıraya alındı."
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "{num} adet şarkı sıraya eklendi.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "Playlistin başlamasına {time} süre var: #{position} sırasında başlar."
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr "Spotify API veya client secret'ı düzgün bir şekilde ayarlanmamış. \\n `{prefix}audioset spotifyapi` komutundan bilgi alabilirsiniz."

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Ukrainian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: uk\n"
"Language: uk_UA\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Vietnamese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: vi\n"
"Language: vi_VN\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese Simplified\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: zh-CN\n"
"Language: zh_CN\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese Traditional, Hong Kong\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: zh-HK\n"
"Language: zh_HK\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr ""

View File

@@ -0,0 +1,63 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2020-05-21 12:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Chinese Traditional\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Language: zh-TW\n"
"Language: zh_TW\n"
#: redbot/cogs/audio/apis/interface.py:280
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr "Spotify API key或client secret未正確設置。\\n請使用`{prefix} audioset spotifyapi`獲取說明。"
#: redbot/cogs/audio/apis/interface.py:322
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "這似乎不是有效的Spotify播放列表/專輯URL或代碼。"
#: redbot/cogs/audio/apis/interface.py:443
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "這似乎不是支持的Spotify URL或代碼。"
#: redbot/cogs/audio/apis/interface.py:509
msgid "The connection was reset while loading the playlist."
msgstr "加載播放列表時重置了連接。"
#: redbot/cogs/audio/apis/interface.py:518
msgid "Player timeout, skipping remaining tracks."
msgstr "播放器超時,跳過剩餘歌曲。"
#: redbot/cogs/audio/apis/interface.py:542
msgid "Failing to get tracks, skipping remaining."
msgstr "無法取得歌曲,跳過剩餘的歌曲。"
#: redbot/cogs/audio/apis/interface.py:592
msgid "Nothing found.\\nThe YouTube API key may be invalid or you may be rate limited on YouTube's search service.\\nCheck the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr "找不到任何內容。\\n您的YouTube API key可能是無效的或者您在YouTube的搜索服務上受到速率限制。\\n請檢查YouTube API key然後按照`{prefix}audioset youtubeapi`中的說明進行操作。"
#: redbot/cogs/audio/apis/interface.py:602
msgid " {bad_tracks} tracks cannot be queued."
msgstr "{bad_tracks}首歌曲加載失敗。"
#: redbot/cogs/audio/apis/interface.py:610
msgid "Playlist Enqueued"
msgstr "已加入播放清單"
#: redbot/cogs/audio/apis/interface.py:611
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "已將{num}首歌曲添加到播放清單中。{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:617
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time}後播放: 在播放清單的#{position}首之後"
#: redbot/cogs/audio/apis/spotify.py:165
msgid "The Spotify API key or client secret has not been set properly. \\nUse `{prefix}audioset spotifyapi` for instructions."
msgstr "Spotify API key或client secret未正確設置。\\n請使用`{prefix} audioset spotifyapi`獲取說明。"

View File

@@ -1,259 +1,19 @@
import asyncio import logging
from collections import namedtuple from typing import List, MutableMapping, Optional, Union
from typing import List, MutableMapping, Optional, Union, TYPE_CHECKING
import discord import discord
import lavalink import lavalink
from redbot.core.utils import AsyncIter
from redbot.core import Config, commands from redbot.core import Config, commands
from redbot.core.bot import Red from redbot.core.bot import Red
from redbot.core.i18n import Translator
from redbot.core.utils.chat_formatting import humanize_list
from .databases import PlaylistFetchResult, PlaylistInterface from ..errors import NotAllowed
from .errors import InvalidPlaylistScope, MissingAuthor, MissingGuild, NotAllowed from ..utils import PlaylistScope
from .utils import PlaylistScope from .api_utils import PlaylistFetchResult, prepare_config_scope, standardize_scope
from .playlist_wrapper import PlaylistWrapper
if TYPE_CHECKING: log = logging.getLogger("red.cogs.Audio.api.PlaylistsInterface")
database: PlaylistInterface
_bot: Red
_config: Config
else:
database = None
_bot = None
_config = None
__all__ = [
"Playlist",
"get_playlist",
"get_all_playlist",
"create_playlist",
"reset_playlist",
"delete_playlist",
"standardize_scope",
"FakePlaylist",
"get_all_playlist_for_migration23",
"database",
"get_all_playlist_converter",
"get_playlist_database",
]
FakePlaylist = namedtuple("Playlist", "author scope")
_ = Translator("Audio", __file__)
def _pass_config_to_playlist(config: Config, bot: Red):
global _config, _bot, database
if _config is None:
_config = config
if _bot is None:
_bot = bot
if database is None:
database = PlaylistInterface()
def get_playlist_database() -> Optional[PlaylistInterface]:
global database
return database
def standardize_scope(scope: str) -> str:
scope = scope.upper()
valid_scopes = ["GLOBAL", "GUILD", "AUTHOR", "USER", "SERVER", "MEMBER", "BOT"]
if scope in PlaylistScope.list():
return scope
elif scope not in valid_scopes:
raise InvalidPlaylistScope(
f'"{scope}" is not a valid playlist scope.'
f" Scope needs to be one of the following: {humanize_list(valid_scopes)}"
)
if scope in ["GLOBAL", "BOT"]:
scope = PlaylistScope.GLOBAL.value
elif scope in ["GUILD", "SERVER"]:
scope = PlaylistScope.GUILD.value
elif scope in ["USER", "MEMBER", "AUTHOR"]:
scope = PlaylistScope.USER.value
return scope
def _prepare_config_scope(
scope, author: Union[discord.abc.User, int] = None, guild: Union[discord.Guild, int] = None
):
scope = standardize_scope(scope)
if scope == PlaylistScope.GLOBAL.value:
config_scope = [PlaylistScope.GLOBAL.value, _bot.user.id]
elif scope == PlaylistScope.USER.value:
if author is None:
raise MissingAuthor("Invalid author for user scope.")
config_scope = [PlaylistScope.USER.value, int(getattr(author, "id", author))]
else:
if guild is None:
raise MissingGuild("Invalid guild for guild scope.")
config_scope = [PlaylistScope.GUILD.value, int(getattr(guild, "id", guild))]
return config_scope
def _prepare_config_scope_for_migration23( # TODO: remove me in a future version ?
scope, author: Union[discord.abc.User, int] = None, guild: discord.Guild = None
):
scope = standardize_scope(scope)
if scope == PlaylistScope.GLOBAL.value:
config_scope = [PlaylistScope.GLOBAL.value]
elif scope == PlaylistScope.USER.value:
if author is None:
raise MissingAuthor("Invalid author for user scope.")
config_scope = [PlaylistScope.USER.value, str(getattr(author, "id", author))]
else:
if guild is None:
raise MissingGuild("Invalid guild for guild scope.")
config_scope = [PlaylistScope.GUILD.value, str(getattr(guild, "id", guild))]
return config_scope
class PlaylistMigration23: # TODO: remove me in a future version ?
"""A single playlist."""
def __init__(
self,
scope: str,
author: int,
playlist_id: int,
name: str,
playlist_url: Optional[str] = None,
tracks: Optional[List[MutableMapping]] = None,
guild: Union[discord.Guild, int, None] = None,
):
self.guild = guild
self.scope = standardize_scope(scope)
self.author = author
self.id = playlist_id
self.name = name
self.url = playlist_url
self.tracks = tracks or []
@classmethod
async def from_json(
cls, scope: str, playlist_number: int, data: MutableMapping, **kwargs
) -> "PlaylistMigration23":
"""Get a Playlist object from the provided information.
Parameters
----------
scope:str
The custom config scope. One of 'GLOBALPLAYLIST', 'GUILDPLAYLIST' or 'USERPLAYLIST'.
playlist_number: int
The playlist's number.
data: dict
The JSON representation of the playlist to be gotten.
**kwargs
Extra attributes for the Playlist instance which override values
in the data dict. These should be complete objects and not
IDs, where possible.
Returns
-------
Playlist
The playlist object for the requested playlist.
Raises
------
`InvalidPlaylistScope`
Passing a scope that is not supported.
`MissingGuild`
Trying to access the Guild scope without a guild.
`MissingAuthor`
Trying to access the User scope without an user id.
"""
guild = data.get("guild") or kwargs.get("guild")
author: int = data.get("author") or 0
playlist_id = data.get("id") or playlist_number
name = data.get("name", "Unnamed")
playlist_url = data.get("playlist_url", None)
tracks = data.get("tracks", [])
return cls(
guild=guild,
scope=scope,
author=author,
playlist_id=playlist_id,
name=name,
playlist_url=playlist_url,
tracks=tracks,
)
async def save(self):
"""Saves a Playlist to SQL."""
scope, scope_id = _prepare_config_scope(self.scope, self.author, self.guild)
database.upsert(
scope,
playlist_id=int(self.id),
playlist_name=self.name,
scope_id=scope_id,
author_id=self.author,
playlist_url=self.url,
tracks=self.tracks,
)
async def get_all_playlist_for_migration23( # TODO: remove me in a future version ?
scope: str, guild: Union[discord.Guild, int] = None
) -> List[PlaylistMigration23]:
"""
Gets all playlist for the specified scope.
Parameters
----------
scope: str
The custom config scope. One of 'GLOBALPLAYLIST', 'GUILDPLAYLIST' or 'USERPLAYLIST'.
guild: discord.Guild
The guild to get the playlist from if scope is GUILDPLAYLIST.
Returns
-------
list
A list of all playlists for the specified scope
Raises
------
`InvalidPlaylistScope`
Passing a scope that is not supported.
`MissingGuild`
Trying to access the Guild scope without a guild.
`MissingAuthor`
Trying to access the User scope without an user id.
"""
playlists = await _config.custom(scope).all()
if scope == PlaylistScope.GLOBAL.value:
return [
await PlaylistMigration23.from_json(
scope,
playlist_number,
playlist_data,
guild=guild,
author=int(playlist_data.get("author", 0)),
)
for playlist_number, playlist_data in playlists.items()
]
elif scope == PlaylistScope.USER.value:
return [
await PlaylistMigration23.from_json(
scope, playlist_number, playlist_data, guild=guild, author=int(user_id)
)
for user_id, scopedata in playlists.items()
for playlist_number, playlist_data in scopedata.items()
]
else:
return [
await PlaylistMigration23.from_json(
scope,
playlist_number,
playlist_data,
guild=int(guild_id),
author=int(playlist_data.get("author", 0)),
)
for guild_id, scopedata in playlists.items()
for playlist_number, playlist_data in scopedata.items()
]
class Playlist: class Playlist:
@@ -262,6 +22,7 @@ class Playlist:
def __init__( def __init__(
self, self,
bot: Red, bot: Red,
playlist_api: PlaylistWrapper,
scope: str, scope: str,
author: int, author: int,
playlist_id: int, playlist_id: int,
@@ -273,7 +34,7 @@ class Playlist:
self.bot = bot self.bot = bot
self.guild = guild self.guild = guild
self.scope = standardize_scope(scope) self.scope = standardize_scope(scope)
self.config_scope = _prepare_config_scope(self.scope, author, guild) self.config_scope = prepare_config_scope(self.bot, self.scope, author, guild)
self.scope_id = self.config_scope[-1] self.scope_id = self.config_scope[-1]
self.author = author self.author = author
self.author_id = getattr(self.author, "id", self.author) self.author_id = getattr(self.author, "id", self.author)
@@ -285,6 +46,7 @@ class Playlist:
self.url = playlist_url self.url = playlist_url
self.tracks = tracks or [] self.tracks = tracks or []
self.tracks_obj = [lavalink.Track(data=track) for track in self.tracks] self.tracks_obj = [lavalink.Track(data=track) for track in self.tracks]
self.playlist_api = playlist_api
def __repr__(self): def __repr__(self):
return ( return (
@@ -313,7 +75,7 @@ class Playlist:
async def save(self): async def save(self):
"""Saves a Playlist.""" """Saves a Playlist."""
scope, scope_id = self.config_scope scope, scope_id = self.config_scope
database.upsert( await self.playlist_api.upsert(
scope, scope,
playlist_id=int(self.id), playlist_id=int(self.id),
playlist_name=self.name, playlist_name=self.name,
@@ -343,13 +105,21 @@ class Playlist:
@classmethod @classmethod
async def from_json( async def from_json(
cls, bot: Red, scope: str, playlist_number: int, data: PlaylistFetchResult, **kwargs cls,
bot: Red,
playlist_api: PlaylistWrapper,
scope: str,
playlist_number: int,
data: PlaylistFetchResult,
**kwargs,
) -> "Playlist": ) -> "Playlist":
"""Get a Playlist object from the provided information. """Get a Playlist object from the provided information.
Parameters Parameters
---------- ----------
bot: Red bot: Red
The bot's instance. Needed to get the target user. The bot's instance. Needed to get the target user.
playlist_api: PlaylistWrapper
The Playlist API interface.
scope:str scope:str
The custom config scope. One of 'GLOBALPLAYLIST', 'GUILDPLAYLIST' or 'USERPLAYLIST'. The custom config scope. One of 'GLOBALPLAYLIST', 'GUILDPLAYLIST' or 'USERPLAYLIST'.
playlist_number: int playlist_number: int
@@ -382,6 +152,7 @@ class Playlist:
return cls( return cls(
bot=bot, bot=bot,
playlist_api=playlist_api,
guild=guild, guild=guild,
scope=scope, scope=scope,
author=author, author=author,
@@ -392,10 +163,189 @@ class Playlist:
) )
class PlaylistCompat23:
"""A single playlist, migrating from Schema 2 to Schema 3"""
def __init__(
self,
bot: Red,
playlist_api: PlaylistWrapper,
scope: str,
author: int,
playlist_id: int,
name: str,
playlist_url: Optional[str] = None,
tracks: Optional[List[MutableMapping]] = None,
guild: Union[discord.Guild, int, None] = None,
):
self.bot = bot
self.guild = guild
self.scope = standardize_scope(scope)
self.author = author
self.id = playlist_id
self.name = name
self.url = playlist_url
self.tracks = tracks or []
self.playlist_api = playlist_api
@classmethod
async def from_json(
cls,
bot: Red,
playlist_api: PlaylistWrapper,
scope: str,
playlist_number: int,
data: MutableMapping,
**kwargs,
) -> "PlaylistCompat23":
"""Get a Playlist object from the provided information.
Parameters
----------
bot: Red
The Bot instance.
playlist_api: PlaylistWrapper
The Playlist API interface.
scope:str
The custom config scope. One of 'GLOBALPLAYLIST', 'GUILDPLAYLIST' or 'USERPLAYLIST'.
playlist_number: int
The playlist's number.
data: MutableMapping
The JSON representation of the playlist to be gotten.
**kwargs
Extra attributes for the Playlist instance which override values
in the data dict. These should be complete objects and not
IDs, where possible.
Returns
-------
Playlist
The playlist object for the requested playlist.
Raises
------
`InvalidPlaylistScope`
Passing a scope that is not supported.
`MissingGuild`
Trying to access the Guild scope without a guild.
`MissingAuthor`
Trying to access the User scope without an user id.
"""
guild = data.get("guild") or kwargs.get("guild")
author: int = data.get("author") or 0
playlist_id = data.get("id") or playlist_number
name = data.get("name", "Unnamed")
playlist_url = data.get("playlist_url", None)
tracks = data.get("tracks", [])
return cls(
bot=bot,
playlist_api=playlist_api,
guild=guild,
scope=scope,
author=author,
playlist_id=playlist_id,
name=name,
playlist_url=playlist_url,
tracks=tracks,
)
async def save(self):
"""Saves a Playlist to SQL."""
scope, scope_id = prepare_config_scope(self.bot, self.scope, self.author, self.guild)
await self.playlist_api.upsert(
scope,
playlist_id=int(self.id),
playlist_name=self.name,
scope_id=scope_id,
author_id=self.author,
playlist_url=self.url,
tracks=self.tracks,
)
async def get_all_playlist_for_migration23(
bot: Red,
playlist_api: PlaylistWrapper,
config: Config,
scope: str,
guild: Union[discord.Guild, int] = None,
) -> List[PlaylistCompat23]:
"""
Gets all playlist for the specified scope.
Parameters
----------
bot: Red
The Bot instance.
playlist_api: PlaylistWrapper
The Playlist API interface.
config: Config
The Audio cog Config instance.
scope: str
The custom config scope. One of 'GLOBALPLAYLIST', 'GUILDPLAYLIST' or 'USERPLAYLIST'.
guild: discord.Guild
The guild to get the playlist from if scope is GUILDPLAYLIST.
Returns
-------
list
A list of all playlists for the specified scope
Raises
------
`InvalidPlaylistScope`
Passing a scope that is not supported.
`MissingGuild`
Trying to access the Guild scope without a guild.
`MissingAuthor`
Trying to access the User scope without an user id.
"""
playlists = await config.custom(scope).all()
if scope == PlaylistScope.GLOBAL.value:
return [
await PlaylistCompat23.from_json(
bot,
playlist_api,
scope,
playlist_number,
playlist_data,
guild=guild,
author=int(playlist_data.get("author", 0)),
)
async for playlist_number, playlist_data in AsyncIter(playlists.items())
]
elif scope == PlaylistScope.USER.value:
return [
await PlaylistCompat23.from_json(
bot,
playlist_api,
scope,
playlist_number,
playlist_data,
guild=guild,
author=int(user_id),
)
async for user_id, scopedata in AsyncIter(playlists.items())
async for playlist_number, playlist_data in AsyncIter(scopedata.items())
]
else:
return [
await PlaylistCompat23.from_json(
bot,
playlist_api,
scope,
playlist_number,
playlist_data,
guild=int(guild_id),
author=int(playlist_data.get("author", 0)),
)
async for guild_id, scopedata in AsyncIter(playlists.items())
async for playlist_number, playlist_data in AsyncIter(scopedata.items())
]
async def get_playlist( async def get_playlist(
playlist_number: int, playlist_number: int,
scope: str, scope: str,
bot: Red, bot: Red,
playlist_api: PlaylistWrapper,
guild: Union[discord.Guild, int] = None, guild: Union[discord.Guild, int] = None,
author: Union[discord.abc.User, int] = None, author: Union[discord.abc.User, int] = None,
) -> Playlist: ) -> Playlist:
@@ -405,6 +355,8 @@ async def get_playlist(
---------- ----------
playlist_number: int playlist_number: int
The playlist number for the playlist to get. The playlist number for the playlist to get.
playlist_api: PlaylistWrapper
The Playlist API interface.
scope: str scope: str
The custom config scope. One of 'GLOBALPLAYLIST', 'GUILDPLAYLIST' or 'USERPLAYLIST'. The custom config scope. One of 'GLOBALPLAYLIST', 'GUILDPLAYLIST' or 'USERPLAYLIST'.
guild: discord.Guild guild: discord.Guild
@@ -428,19 +380,26 @@ async def get_playlist(
`MissingAuthor` `MissingAuthor`
Trying to access the User scope without an user id. Trying to access the User scope without an user id.
""" """
scope_standard, scope_id = _prepare_config_scope(scope, author, guild) scope_standard, scope_id = prepare_config_scope(bot, scope, author, guild)
playlist_data = database.fetch(scope_standard, playlist_number, scope_id) playlist_data = await playlist_api.fetch(scope_standard, playlist_number, scope_id)
if not (playlist_data and playlist_data.playlist_id): if not (playlist_data and playlist_data.playlist_id):
raise RuntimeError(f"That playlist does not exist for the following scope: {scope}") raise RuntimeError(f"That playlist does not exist for the following scope: {scope}")
return await Playlist.from_json( return await Playlist.from_json(
bot, scope_standard, playlist_number, playlist_data, guild=guild, author=author bot,
playlist_api,
scope_standard,
playlist_number,
playlist_data,
guild=guild,
author=author,
) )
async def get_all_playlist( async def get_all_playlist(
scope: str, scope: str,
bot: Red, bot: Red,
playlist_api: PlaylistWrapper,
guild: Union[discord.Guild, int] = None, guild: Union[discord.Guild, int] = None,
author: Union[discord.abc.User, int] = None, author: Union[discord.abc.User, int] = None,
specified_user: bool = False, specified_user: bool = False,
@@ -457,13 +416,15 @@ async def get_all_playlist(
The ID of the user to get the playlist from if scope is USERPLAYLIST. The ID of the user to get the playlist from if scope is USERPLAYLIST.
bot: Red bot: Red
The bot's instance The bot's instance
playlist_api: PlaylistWrapper
The Playlist API interface.
specified_user:bool specified_user:bool
Whether or not user ID was passed as an argparse. Whether or not user ID was passed as an argparse.
Returns Returns
------- -------
list list
A list of all playlists for the specified scope A list of all playlists for the specified scope
Raises Raises
------ ------
`InvalidPlaylistScope` `InvalidPlaylistScope`
Passing a scope that is not supported. Passing a scope that is not supported.
@@ -472,28 +433,34 @@ async def get_all_playlist(
`MissingAuthor` `MissingAuthor`
Trying to access the User scope without an user id. Trying to access the User scope without an user id.
""" """
scope_standard, scope_id = _prepare_config_scope(scope, author, guild) scope_standard, scope_id = prepare_config_scope(bot, scope, author, guild)
if specified_user: if specified_user:
user_id = getattr(author, "id", author) user_id = getattr(author, "id", author)
playlists = await database.fetch_all(scope_standard, scope_id, author_id=user_id) playlists = await playlist_api.fetch_all(scope_standard, scope_id, author_id=user_id)
else: else:
playlists = await database.fetch_all(scope_standard, scope_id) playlists = await playlist_api.fetch_all(scope_standard, scope_id)
playlist_list = [] playlist_list = []
for playlist in playlists: async for playlist in AsyncIter(playlists):
playlist_list.append( playlist_list.append(
await Playlist.from_json( await Playlist.from_json(
bot, scope, playlist.playlist_id, playlist, guild=guild, author=author bot,
playlist_api,
scope,
playlist.playlist_id,
playlist,
guild=guild,
author=author,
) )
) )
await asyncio.sleep(0)
return playlist_list return playlist_list
async def get_all_playlist_converter( async def get_all_playlist_converter(
scope: str, scope: str,
bot: Red, bot: Red,
playlist_api: PlaylistWrapper,
arg: str, arg: str,
guild: Union[discord.Guild, int] = None, guild: Union[discord.Guild, int] = None,
author: Union[discord.abc.User, int] = None, author: Union[discord.abc.User, int] = None,
@@ -512,11 +479,13 @@ async def get_all_playlist_converter(
The bot's instance The bot's instance
arg:str arg:str
The value to lookup. The value to lookup.
playlist_api: PlaylistWrapper
The Playlist API interface.
Returns Returns
------- -------
list list
A list of all playlists for the specified scope A list of all playlists for the specified scope
Raises Raises
------ ------
`InvalidPlaylistScope` `InvalidPlaylistScope`
Passing a scope that is not supported. Passing a scope that is not supported.
@@ -525,23 +494,29 @@ async def get_all_playlist_converter(
`MissingAuthor` `MissingAuthor`
Trying to access the User scope without an user id. Trying to access the User scope without an user id.
""" """
scope_standard, scope_id = _prepare_config_scope(scope, author, guild) scope_standard, scope_id = prepare_config_scope(bot, scope, author, guild)
playlists = await database.fetch_all_converter( playlists = await playlist_api.fetch_all_converter(
scope_standard, playlist_name=arg, playlist_id=arg scope_standard, playlist_name=arg, playlist_id=arg
) )
playlist_list = [] playlist_list = []
for playlist in playlists: async for playlist in AsyncIter(playlists):
playlist_list.append( playlist_list.append(
await Playlist.from_json( await Playlist.from_json(
bot, scope, playlist.playlist_id, playlist, guild=guild, author=author bot,
playlist_api,
scope,
playlist.playlist_id,
playlist,
guild=guild,
author=author,
) )
) )
await asyncio.sleep(0)
return playlist_list return playlist_list
async def create_playlist( async def create_playlist(
ctx: commands.Context, ctx: commands.Context,
playlist_api: PlaylistWrapper,
scope: str, scope: str,
playlist_name: str, playlist_name: str,
playlist_url: Optional[str] = None, playlist_url: Optional[str] = None,
@@ -570,6 +545,8 @@ async def create_playlist(
guild: discord.Guild guild: discord.Guild
The guild to create this playlist under. The guild to create this playlist under.
This is only used when creating a playlist in the Guild scope This is only used when creating a playlist in the Guild scope
playlist_api: PlaylistWrapper
The Playlist API interface.
Raises Raises
------ ------
@@ -583,6 +560,7 @@ async def create_playlist(
playlist = Playlist( playlist = Playlist(
ctx.bot, ctx.bot,
playlist_api,
scope, scope,
author.id if author else None, author.id if author else None,
ctx.message.id, ctx.message.id,
@@ -596,6 +574,8 @@ async def create_playlist(
async def reset_playlist( async def reset_playlist(
bot: Red,
playlist_api: PlaylistWrapper,
scope: str, scope: str,
guild: Union[discord.Guild, int] = None, guild: Union[discord.Guild, int] = None,
author: Union[discord.abc.User, int] = None, author: Union[discord.abc.User, int] = None,
@@ -604,14 +584,18 @@ async def reset_playlist(
Parameters Parameters
---------- ----------
bot: Red
The bot's instance
scope: str scope: str
The custom config scope. One of 'GLOBALPLAYLIST', 'GUILDPLAYLIST' or 'USERPLAYLIST'. The custom config scope. One of 'GLOBALPLAYLIST', 'GUILDPLAYLIST' or 'USERPLAYLIST'.
guild: discord.Guild guild: discord.Guild
The guild to get the playlist from if scope is GUILDPLAYLIST. The guild to get the playlist from if scope is GUILDPLAYLIST.
author: int author: int
The ID of the user to get the playlist from if scope is USERPLAYLIST. The ID of the user to get the playlist from if scope is USERPLAYLIST.
playlist_api: PlaylistWrapper
The Playlist API interface.
Raises Raises
------ ------
`InvalidPlaylistScope` `InvalidPlaylistScope`
Passing a scope that is not supported. Passing a scope that is not supported.
@@ -620,12 +604,14 @@ async def reset_playlist(
`MissingAuthor` `MissingAuthor`
Trying to access the User scope without an user id. Trying to access the User scope without an user id.
""" """
scope, scope_id = _prepare_config_scope(scope, author, guild) scope, scope_id = prepare_config_scope(bot, scope, author, guild)
database.drop(scope) await playlist_api.drop(scope)
database.create_table(scope) await playlist_api.create_table()
async def delete_playlist( async def delete_playlist(
bot: Red,
playlist_api: PlaylistWrapper,
scope: str, scope: str,
playlist_id: Union[str, int], playlist_id: Union[str, int],
guild: discord.Guild, guild: discord.Guild,
@@ -635,6 +621,8 @@ async def delete_playlist(
Parameters Parameters
---------- ----------
bot: Red
The bot's instance
scope: str scope: str
The custom config scope. One of 'GLOBALPLAYLIST', 'GUILDPLAYLIST' or 'USERPLAYLIST'. The custom config scope. One of 'GLOBALPLAYLIST', 'GUILDPLAYLIST' or 'USERPLAYLIST'.
playlist_id: Union[str, int] playlist_id: Union[str, int]
@@ -643,8 +631,10 @@ async def delete_playlist(
The guild to get the playlist from if scope is GUILDPLAYLIST. The guild to get the playlist from if scope is GUILDPLAYLIST.
author: int author: int
The ID of the user to get the playlist from if scope is USERPLAYLIST. The ID of the user to get the playlist from if scope is USERPLAYLIST.
playlist_api: PlaylistWrapper
The Playlist API interface.
Raises Raises
------ ------
`InvalidPlaylistScope` `InvalidPlaylistScope`
Passing a scope that is not supported. Passing a scope that is not supported.
@@ -653,5 +643,5 @@ async def delete_playlist(
`MissingAuthor` `MissingAuthor`
Trying to access the User scope without an user id. Trying to access the User scope without an user id.
""" """
scope, scope_id = _prepare_config_scope(scope, author, guild) scope, scope_id = prepare_config_scope(bot, scope, author, guild)
database.delete(scope, int(playlist_id), scope_id) await playlist_api.delete(scope, int(playlist_id), scope_id)

View File

@@ -0,0 +1,249 @@
import concurrent
import json
import logging
from types import SimpleNamespace
from typing import List, MutableMapping, Optional
from redbot.core.utils import AsyncIter
from redbot.core import Config
from redbot.core.bot import Red
from redbot.core.utils.dbtools import APSWConnectionWrapper
from ..audio_logging import debug_exc_log
from ..sql_statements import (
PLAYLIST_CREATE_INDEX,
PLAYLIST_CREATE_TABLE,
PLAYLIST_DELETE,
PLAYLIST_DELETE_SCHEDULED,
PLAYLIST_DELETE_SCOPE,
PLAYLIST_FETCH,
PLAYLIST_FETCH_ALL,
PLAYLIST_FETCH_ALL_CONVERTER,
PLAYLIST_FETCH_ALL_WITH_FILTER,
PLAYLIST_UPSERT,
PRAGMA_FETCH_user_version,
PRAGMA_SET_journal_mode,
PRAGMA_SET_read_uncommitted,
PRAGMA_SET_temp_store,
PRAGMA_SET_user_version,
)
from ..utils import PlaylistScope
from .api_utils import PlaylistFetchResult
log = logging.getLogger("red.cogs.Audio.api.Playlists")
class PlaylistWrapper:
def __init__(self, bot: Red, config: Config, conn: APSWConnectionWrapper):
self.bot = bot
self.database = conn
self.config = config
self.statement = SimpleNamespace()
self.statement.pragma_temp_store = PRAGMA_SET_temp_store
self.statement.pragma_journal_mode = PRAGMA_SET_journal_mode
self.statement.pragma_read_uncommitted = PRAGMA_SET_read_uncommitted
self.statement.set_user_version = PRAGMA_SET_user_version
self.statement.get_user_version = PRAGMA_FETCH_user_version
self.statement.create_table = PLAYLIST_CREATE_TABLE
self.statement.create_index = PLAYLIST_CREATE_INDEX
self.statement.upsert = PLAYLIST_UPSERT
self.statement.delete = PLAYLIST_DELETE
self.statement.delete_scope = PLAYLIST_DELETE_SCOPE
self.statement.delete_scheduled = PLAYLIST_DELETE_SCHEDULED
self.statement.get_one = PLAYLIST_FETCH
self.statement.get_all = PLAYLIST_FETCH_ALL
self.statement.get_all_with_filter = PLAYLIST_FETCH_ALL_WITH_FILTER
self.statement.get_all_converter = PLAYLIST_FETCH_ALL_CONVERTER
async def init(self) -> None:
"""Initialize the Playlist table"""
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
executor.submit(self.database.cursor().execute, self.statement.pragma_temp_store)
executor.submit(self.database.cursor().execute, self.statement.pragma_journal_mode)
executor.submit(self.database.cursor().execute, self.statement.pragma_read_uncommitted)
executor.submit(self.database.cursor().execute, self.statement.create_table)
executor.submit(self.database.cursor().execute, self.statement.create_index)
@staticmethod
def get_scope_type(scope: str) -> int:
"""Convert a scope to a numerical identifier"""
if scope == PlaylistScope.GLOBAL.value:
table = 1
elif scope == PlaylistScope.USER.value:
table = 3
else:
table = 2
return table
async def fetch(self, scope: str, playlist_id: int, scope_id: int) -> PlaylistFetchResult:
"""Fetch a single playlist"""
scope_type = self.get_scope_type(scope)
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
for future in concurrent.futures.as_completed(
[
executor.submit(
self.database.cursor().execute,
self.statement.get_one,
(
{
"playlist_id": playlist_id,
"scope_id": scope_id,
"scope_type": scope_type,
}
),
)
]
):
try:
row_result = future.result()
except Exception as exc:
debug_exc_log(log, exc, "Failed to completed playlist fetch from database")
row = row_result.fetchone()
if row:
row = PlaylistFetchResult(*row)
return row
async def fetch_all(
self, scope: str, scope_id: int, author_id=None
) -> List[PlaylistFetchResult]:
"""Fetch all playlists"""
scope_type = self.get_scope_type(scope)
output = []
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
if author_id is not None:
for future in concurrent.futures.as_completed(
[
executor.submit(
self.database.cursor().execute,
self.statement.get_all_with_filter,
(
{
"scope_type": scope_type,
"scope_id": scope_id,
"author_id": author_id,
}
),
)
]
):
try:
row_result = future.result()
except Exception as exc:
debug_exc_log(log, exc, "Failed to completed playlist fetch from database")
return []
else:
for future in concurrent.futures.as_completed(
[
executor.submit(
self.database.cursor().execute,
self.statement.get_all,
({"scope_type": scope_type, "scope_id": scope_id}),
)
]
):
try:
row_result = future.result()
except Exception as exc:
debug_exc_log(log, exc, "Failed to completed playlist fetch from database")
return []
async for row in AsyncIter(row_result):
output.append(PlaylistFetchResult(*row))
return output
async def fetch_all_converter(
self, scope: str, playlist_name, playlist_id
) -> List[PlaylistFetchResult]:
"""Fetch all playlists with the specified filter"""
scope_type = self.get_scope_type(scope)
try:
playlist_id = int(playlist_id)
except Exception as exc:
debug_exc_log(log, exc, "Failed converting playlist_id to int")
playlist_id = -1
output = []
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
for future in concurrent.futures.as_completed(
[
executor.submit(
self.database.cursor().execute,
self.statement.get_all_converter,
(
{
"scope_type": scope_type,
"playlist_name": playlist_name,
"playlist_id": playlist_id,
}
),
)
]
):
try:
row_result = future.result()
except Exception as exc:
debug_exc_log(log, exc, "Failed to completed fetch from database")
async for row in AsyncIter(row_result):
output.append(PlaylistFetchResult(*row))
return output
async def delete(self, scope: str, playlist_id: int, scope_id: int):
"""Deletes a single playlists"""
scope_type = self.get_scope_type(scope)
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
executor.submit(
self.database.cursor().execute,
self.statement.delete,
({"playlist_id": playlist_id, "scope_id": scope_id, "scope_type": scope_type}),
)
async def delete_scheduled(self):
"""Clean up database from all deleted playlists"""
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
executor.submit(self.database.cursor().execute, self.statement.delete_scheduled)
async def drop(self, scope: str):
"""Delete all playlists in a scope"""
scope_type = self.get_scope_type(scope)
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
executor.submit(
self.database.cursor().execute,
self.statement.delete_scope,
({"scope_type": scope_type}),
)
async def create_table(self):
"""Create the playlist table"""
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
executor.submit(self.database.cursor().execute, PLAYLIST_CREATE_TABLE)
async def upsert(
self,
scope: str,
playlist_id: int,
playlist_name: str,
scope_id: int,
author_id: int,
playlist_url: Optional[str],
tracks: List[MutableMapping],
):
"""Insert or update a playlist into the database"""
scope_type = self.get_scope_type(scope)
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
executor.submit(
self.database.cursor().execute,
self.statement.upsert,
{
"scope_type": str(scope_type),
"playlist_id": int(playlist_id),
"playlist_name": str(playlist_name),
"scope_id": int(scope_id),
"author_id": int(author_id),
"playlist_url": playlist_url,
"tracks": json.dumps(tracks),
},
)

View File

@@ -0,0 +1,189 @@
import base64
import contextlib
import logging
import time
from typing import List, Mapping, MutableMapping, Optional, TYPE_CHECKING, Tuple, Union
import aiohttp
from redbot.core.i18n import Translator
from redbot.core.utils import AsyncIter
from redbot.core import Config
from redbot.core.bot import Red
from redbot.core.commands import Cog, Context
from ..errors import SpotifyFetchError
if TYPE_CHECKING:
from .. import Audio
_ = Translator("Audio", __file__)
log = logging.getLogger("red.cogs.Audio.api.Spotify")
CATEGORY_ENDPOINT = "https://api.spotify.com/v1/browse/categories"
TOKEN_ENDPOINT = "https://accounts.spotify.com/api/token"
ALBUMS_ENDPOINT = "https://api.spotify.com/v1/albums"
TRACKS_ENDPOINT = "https://api.spotify.com/v1/tracks"
PLAYLISTS_ENDPOINT = "https://api.spotify.com/v1/playlists"
class SpotifyWrapper:
"""Wrapper for the Spotify API."""
def __init__(
self, bot: Red, config: Config, session: aiohttp.ClientSession, cog: Union["Audio", Cog]
):
self.bot = bot
self.config = config
self.session = session
self.spotify_token: Optional[MutableMapping] = None
self.client_id: Optional[str] = None
self.client_secret: Optional[str] = None
self._token: Mapping[str, str] = {}
self.cog = cog
@staticmethod
def spotify_format_call(query_type: str, key: str) -> Tuple[str, MutableMapping]:
"""Format the spotify endpoint"""
params: MutableMapping = {}
if query_type == "album":
query = f"{ALBUMS_ENDPOINT}/{key}/tracks"
elif query_type == "track":
query = f"{TRACKS_ENDPOINT}/{key}"
else:
query = f"{PLAYLISTS_ENDPOINT}/{key}/tracks"
return query, params
async def get_spotify_track_info(
self, track_data: MutableMapping, ctx: Context
) -> Tuple[str, ...]:
"""Extract track info from spotify response"""
prefer_lyrics = await self.cog.get_lyrics_status(ctx)
track_name = track_data["name"]
if prefer_lyrics:
track_name = f"{track_name} - lyrics"
artist_name = track_data["artists"][0]["name"]
track_info = f"{track_name} {artist_name}"
song_url = track_data.get("external_urls", {}).get("spotify")
uri = track_data["uri"]
_id = track_data["id"]
_type = track_data["type"]
return song_url, track_info, uri, artist_name, track_name, _id, _type
@staticmethod
async def is_access_token_valid(token: MutableMapping) -> bool:
"""Check if current token is not too old"""
return (token["expires_at"] - int(time.time())) < 60
@staticmethod
def make_auth_header(
client_id: Optional[str], client_secret: Optional[str]
) -> MutableMapping[str, Union[str, int]]:
"""Make Authorization header for spotify token"""
if client_id is None:
client_id = ""
if client_secret is None:
client_secret = ""
auth_header = base64.b64encode(f"{client_id}:{client_secret}".encode("ascii"))
return {"Authorization": f"Basic {auth_header.decode('ascii')}"}
async def get(
self, url: str, headers: MutableMapping = None, params: MutableMapping = None
) -> MutableMapping[str, str]:
"""Make a GET request to the spotify API"""
if params is None:
params = {}
async with self.session.request("GET", url, params=params, headers=headers) as r:
data = await r.json()
if r.status != 200:
log.debug(f"Issue making GET request to {url}: [{r.status}] {data}")
return data
def update_token(self, new_token: Mapping[str, str]):
self._token = new_token
async def get_token(self) -> None:
"""Get the stored spotify tokens"""
if not self._token:
self._token = await self.bot.get_shared_api_tokens("spotify")
self.client_id = self._token.get("client_id", "")
self.client_secret = self._token.get("client_secret", "")
async def get_country_code(self, ctx: Context = None) -> str:
return await self.config.guild(ctx.guild).country_code() if ctx else "US"
async def request_access_token(self) -> MutableMapping:
"""Make a spotify call to get the auth token"""
await self.get_token()
payload = {"grant_type": "client_credentials"}
headers = self.make_auth_header(self.client_id, self.client_secret)
r = await self.post(TOKEN_ENDPOINT, payload=payload, headers=headers)
return r
async def get_access_token(self) -> Optional[str]:
"""Get the access_token"""
if self.spotify_token and not await self.is_access_token_valid(self.spotify_token):
return self.spotify_token["access_token"]
token = await self.request_access_token()
if token is None:
log.debug("Requested a token from Spotify, did not end up getting one.")
try:
token["expires_at"] = int(time.time()) + int(token["expires_in"])
except KeyError:
return None
self.spotify_token = token
log.debug(f"Created a new access token for Spotify: {token}")
return self.spotify_token["access_token"]
async def post(
self, url: str, payload: MutableMapping, headers: MutableMapping = None
) -> MutableMapping:
"""Make a POST call to spotify"""
async with self.session.post(url, data=payload, headers=headers) as r:
data = await r.json()
if r.status != 200:
log.debug(f"Issue making POST request to {url}: [{r.status}] {data}")
return data
async def make_get_call(self, url: str, params: MutableMapping) -> MutableMapping:
"""Make a Get call to spotify"""
token = await self.get_access_token()
return await self.get(url, params=params, headers={"Authorization": f"Bearer {token}"})
async def get_categories(self, ctx: Context = None) -> List[MutableMapping]:
"""Get the spotify categories"""
country_code = await self.get_country_code(ctx=ctx)
params: MutableMapping = {"country": country_code} if country_code else {}
result = await self.make_get_call(CATEGORY_ENDPOINT, params=params)
with contextlib.suppress(KeyError):
if result["error"]["status"] == 401:
raise SpotifyFetchError(
message=_(
"The Spotify API key or client secret has not been set properly. "
"\nUse `{prefix}audioset spotifyapi` for instructions."
)
)
categories = result.get("categories", {}).get("items", [])
return [{c["name"]: c["id"]} for c in categories if c]
async def get_playlist_from_category(self, category: str, ctx: Context = None):
"""Get spotify playlists for the specified category"""
url = f"{CATEGORY_ENDPOINT}/{category}/playlists"
country_code = await self.get_country_code(ctx=ctx)
params: MutableMapping = {"country": country_code} if country_code else {}
result = await self.make_get_call(url, params=params)
playlists = result.get("playlists", {}).get("items", [])
return [
{
"name": c["name"],
"uri": c["uri"],
"url": c.get("external_urls", {}).get("spotify"),
"tracks": c.get("tracks", {}).get("total", "Unknown"),
}
async for c in AsyncIter(playlists)
if c
]

View File

@@ -0,0 +1,65 @@
import logging
from typing import Mapping, Optional, TYPE_CHECKING, Union
import aiohttp
from redbot.core import Config
from redbot.core.bot import Red
from redbot.core.commands import Cog
from ..errors import YouTubeApiError
if TYPE_CHECKING:
from .. import Audio
log = logging.getLogger("red.cogs.Audio.api.YouTube")
SEARCH_ENDPOINT = "https://www.googleapis.com/youtube/v3/search"
class YouTubeWrapper:
"""Wrapper for the YouTube Data API."""
def __init__(
self, bot: Red, config: Config, session: aiohttp.ClientSession, cog: Union["Audio", Cog]
):
self.bot = bot
self.config = config
self.session = session
self.api_key: Optional[str] = None
self._token: Mapping[str, str] = {}
self.cog = cog
def update_token(self, new_token: Mapping[str, str]):
self._token = new_token
async def _get_api_key(self,) -> str:
"""Get the stored youtube token"""
if not self._token:
self._token = await self.bot.get_shared_api_tokens("youtube")
self.api_key = self._token.get("api_key", "")
return self.api_key if self.api_key is not None else ""
async def get_call(self, query: str) -> Optional[str]:
"""Make a Get call to youtube data api"""
params = {
"q": query,
"part": "id",
"key": await self._get_api_key(),
"maxResults": 1,
"type": "video",
}
async with self.session.request("GET", SEARCH_ENDPOINT, params=params) as r:
if r.status in [400, 404]:
return None
elif r.status in [403, 429]:
if r.reason == "quotaExceeded":
raise YouTubeApiError("Your YouTube Data API quota has been reached.")
return None
else:
search_response = await r.json()
for search_result in search_response.get("items", []):
if search_result["id"]["kind"] == "youtube#video":
return f"https://www.youtube.com/watch?v={search_result['id']['videoId']}"
return None

File diff suppressed because it is too large Load Diff

View File

@@ -1,36 +1,38 @@
import asyncio
import contextlib import contextlib
import glob import glob
import logging
import ntpath import ntpath
import os import os
import posixpath import posixpath
import re import re
from pathlib import Path, PosixPath, WindowsPath from pathlib import Path, PosixPath, WindowsPath
from typing import List, Optional, Union, MutableMapping, Iterator, AsyncIterator from typing import (
AsyncIterator,
Final,
Iterator,
MutableMapping,
Optional,
Tuple,
Union,
Callable,
Pattern,
)
from urllib.parse import urlparse from urllib.parse import urlparse
import lavalink import lavalink
from redbot.core.utils import AsyncIter
from redbot.core import Config _RE_REMOVE_START: Final[Pattern] = re.compile(r"^(sc|list) ")
from redbot.core.bot import Red _RE_YOUTUBE_TIMESTAMP: Final[Pattern] = re.compile(r"[&|?]t=(\d+)s?")
from redbot.core.i18n import Translator _RE_YOUTUBE_INDEX: Final[Pattern] = re.compile(r"&index=(\d+)")
_RE_SPOTIFY_URL: Final[Pattern] = re.compile(r"(http[s]?://)?(open.spotify.com)/")
_RE_SPOTIFY_TIMESTAMP: Final[Pattern] = re.compile(r"#(\d+):(\d+)")
_RE_SOUNDCLOUD_TIMESTAMP: Final[Pattern] = re.compile(r"#t=(\d+):(\d+)s?")
_RE_TWITCH_TIMESTAMP: Final[Pattern] = re.compile(r"\?t=(\d+)h(\d+)m(\d+)s")
_PATH_SEPS: Final[Tuple[str, str]] = (posixpath.sep, ntpath.sep)
_config: Optional[Config] = None _FULLY_SUPPORTED_MUSIC_EXT: Final[Tuple[str, ...]] = (".mp3", ".flac", ".ogg")
_bot: Optional[Red] = None _PARTIALLY_SUPPORTED_MUSIC_EXT: Tuple[str, ...] = (
_localtrack_folder: Optional[str] = None
_ = Translator("Audio", __file__)
_RE_REMOVE_START = re.compile(r"^(sc|list) ")
_RE_YOUTUBE_TIMESTAMP = re.compile(r"&t=(\d+)s?")
_RE_YOUTUBE_INDEX = re.compile(r"&index=(\d+)")
_RE_SPOTIFY_URL = re.compile(r"(http[s]?://)?(open.spotify.com)/")
_RE_SPOTIFY_TIMESTAMP = re.compile(r"#(\d+):(\d+)")
_RE_SOUNDCLOUD_TIMESTAMP = re.compile(r"#t=(\d+):(\d+)s?")
_RE_TWITCH_TIMESTAMP = re.compile(r"\?t=(\d+)h(\d+)m(\d+)s")
_PATH_SEPS = [posixpath.sep, ntpath.sep]
_FULLY_SUPPORTED_MUSIC_EXT = (".mp3", ".flac", ".ogg")
_PARTIALLY_SUPPORTED_MUSIC_EXT = (
".m3u", ".m3u",
".m4a", ".m4a",
".aac", ".aac",
@@ -49,7 +51,7 @@ _PARTIALLY_SUPPORTED_MUSIC_EXT = (
# ".voc", # ".voc",
# ".dsf", # ".dsf",
) )
_PARTIALLY_SUPPORTED_VIDEO_EXT = ( _PARTIALLY_SUPPORTED_VIDEO_EXT: Tuple[str, ...] = (
".mp4", ".mp4",
".mov", ".mov",
".flv", ".flv",
@@ -72,25 +74,20 @@ _PARTIALLY_SUPPORTED_VIDEO_EXT = (
_PARTIALLY_SUPPORTED_MUSIC_EXT += _PARTIALLY_SUPPORTED_VIDEO_EXT _PARTIALLY_SUPPORTED_MUSIC_EXT += _PARTIALLY_SUPPORTED_VIDEO_EXT
def _pass_config_to_dataclasses(config: Config, bot: Red, folder: str): log = logging.getLogger("red.cogs.Audio.audio_dataclasses")
global _config, _bot, _localtrack_folder
if _config is None:
_config = config
if _bot is None:
_bot = bot
_localtrack_folder = folder
class LocalPath: class LocalPath:
"""Local tracks class. """Local tracks class.
Used to handle system dir trees in a cross system manner. The only use of this class is for Used to handle system dir trees in a cross system manner.
`localtracks`. The only use of this class is for `localtracks`.
""" """
_all_music_ext = _FULLY_SUPPORTED_MUSIC_EXT + _PARTIALLY_SUPPORTED_MUSIC_EXT _all_music_ext = _FULLY_SUPPORTED_MUSIC_EXT + _PARTIALLY_SUPPORTED_MUSIC_EXT
def __init__(self, path, **kwargs): def __init__(self, path, localtrack_folder, **kwargs):
self._localtrack_folder = localtrack_folder
self._path = path self._path = path
if isinstance(path, (Path, WindowsPath, PosixPath, LocalPath)): if isinstance(path, (Path, WindowsPath, PosixPath, LocalPath)):
path = str(path.absolute()) path = str(path.absolute())
@@ -98,9 +95,8 @@ class LocalPath:
path = str(path) path = str(path)
self.cwd = Path.cwd() self.cwd = Path.cwd()
_lt_folder = Path(_localtrack_folder) if _localtrack_folder else self.cwd _lt_folder = Path(self._localtrack_folder) if self._localtrack_folder else self.cwd
_path = Path(path) if path else self.cwd _path = Path(path) if path else self.cwd
if _lt_folder.parts[-1].lower() == "localtracks" and not kwargs.get("forced"): if _lt_folder.parts[-1].lower() == "localtracks" and not kwargs.get("forced"):
self.localtrack_folder = _lt_folder self.localtrack_folder = _lt_folder
elif kwargs.get("forced"): elif kwargs.get("forced"):
@@ -165,46 +161,44 @@ class LocalPath:
return self._path return self._path
@classmethod @classmethod
def joinpath(cls, *args): def joinpath(cls, localpath, *args):
modified = cls(None) modified = cls(None, localpath)
modified.path = modified.path.joinpath(*args) modified.path = modified.path.joinpath(*args)
return modified return modified
def rglob(self, pattern, folder=False) -> Iterator[str]: def rglob(self, pattern, folder=False) -> Iterator[str]:
if folder: if folder:
return glob.iglob(f"{self.path}{os.sep}**{os.sep}", recursive=True) return glob.iglob(f"{glob.escape(self.path)}{os.sep}**{os.sep}", recursive=True)
else: else:
return glob.iglob(f"{self.path}{os.sep}**{os.sep}{pattern}", recursive=True) return glob.iglob(
f"{glob.escape(self.path)}{os.sep}**{os.sep}*{pattern}", recursive=True
)
def glob(self, pattern, folder=False) -> Iterator[str]: def glob(self, pattern, folder=False) -> Iterator[str]:
if folder: if folder:
return glob.iglob(f"{self.path}{os.sep}*{os.sep}", recursive=False) return glob.iglob(f"{glob.escape(self.path)}{os.sep}*{os.sep}", recursive=False)
else: else:
return glob.iglob(f"{self.path}{os.sep}*{pattern}", recursive=False) return glob.iglob(f"{glob.escape(self.path)}{os.sep}*{pattern}", recursive=False)
async def _multiglob(self, pattern: str, folder: bool, method: Callable):
async for rp in AsyncIter(method(pattern)):
rp_local = LocalPath(rp, self._localtrack_folder)
if (
(folder and rp_local.is_dir() and rp_local.exists())
or (not folder and rp_local.suffix in self._all_music_ext and rp_local.is_file())
and rp_local.exists()
):
yield rp_local
async def multiglob(self, *patterns, folder=False) -> AsyncIterator["LocalPath"]: async def multiglob(self, *patterns, folder=False) -> AsyncIterator["LocalPath"]:
for p in patterns: async for p in AsyncIter(patterns):
for rp in self.glob(p): async for path in self._multiglob(p, folder, self.glob):
rp = LocalPath(rp) yield path
if folder and rp.is_dir() and rp.exists():
yield rp
await asyncio.sleep(0)
else:
if rp.suffix in self._all_music_ext and rp.is_file() and rp.exists():
yield rp
await asyncio.sleep(0)
async def multirglob(self, *patterns, folder=False) -> AsyncIterator["LocalPath"]: async def multirglob(self, *patterns, folder=False) -> AsyncIterator["LocalPath"]:
for p in patterns: async for p in AsyncIter(patterns):
for rp in self.rglob(p): async for path in self._multiglob(p, folder, self.rglob):
rp = LocalPath(rp) yield path
if folder and rp.is_dir() and rp.exists():
yield rp
await asyncio.sleep(0)
else:
if rp.suffix in self._all_music_ext and rp.is_file() and rp.exists():
yield rp
await asyncio.sleep(0)
def __str__(self): def __str__(self):
return self.to_string() return self.to_string()
@@ -238,7 +232,7 @@ class LocalPath:
if track.path.parent != self.localtrack_folder and track.path.relative_to( if track.path.parent != self.localtrack_folder and track.path.relative_to(
self.path self.path
): ):
tracks.append(Query.process_input(track)) tracks.append(Query.process_input(track, self._localtrack_folder))
return sorted(tracks, key=lambda x: x.to_string_user().lower()) return sorted(tracks, key=lambda x: x.to_string_user().lower())
async def subfolders_in_tree(self): async def subfolders_in_tree(self):
@@ -247,6 +241,7 @@ class LocalPath:
with contextlib.suppress(ValueError): with contextlib.suppress(ValueError):
if ( if (
f not in return_folders f not in return_folders
and f.is_dir()
and f.path != self.localtrack_folder and f.path != self.localtrack_folder
and f.path.relative_to(self.path) and f.path.relative_to(self.path)
): ):
@@ -260,7 +255,7 @@ class LocalPath:
if track.path.parent != self.localtrack_folder and track.path.relative_to( if track.path.parent != self.localtrack_folder and track.path.relative_to(
self.path self.path
): ):
tracks.append(Query.process_input(track)) tracks.append(Query.process_input(track, self._localtrack_folder))
return sorted(tracks, key=lambda x: x.to_string_user().lower()) return sorted(tracks, key=lambda x: x.to_string_user().lower())
async def subfolders(self): async def subfolders(self):
@@ -321,18 +316,14 @@ class LocalPath:
class Query: class Query:
"""Query data class. """Query data class.
Use: Query.process_input(query) to generate the Query object. Use: Query.process_input(query, localtrack_folder) to generate the Query object.
""" """
def __init__(self, query: Union[LocalPath, str], **kwargs): def __init__(self, query: Union[LocalPath, str], local_folder_current_path: Path, **kwargs):
query = kwargs.get("queryforced", query) query = kwargs.get("queryforced", query)
self._raw: Union[LocalPath, str] = query self._raw: Union[LocalPath, str] = query
self._local_folder_current_path = local_folder_current_path
_localtrack: LocalPath = LocalPath(query) _localtrack: LocalPath = LocalPath(query, local_folder_current_path)
self.track: Union[LocalPath, str] = _localtrack if (
(_localtrack.is_file() or _localtrack.is_dir()) and _localtrack.exists()
) else query
self.valid: bool = query != "InvalidQueryPlaceHolderName" self.valid: bool = query != "InvalidQueryPlaceHolderName"
self.is_local: bool = kwargs.get("local", False) self.is_local: bool = kwargs.get("local", False)
@@ -364,6 +355,15 @@ class Query:
self.is_youtube = False self.is_youtube = False
self.is_soundcloud = True self.is_soundcloud = True
if (_localtrack.is_file() or _localtrack.is_dir()) and _localtrack.exists():
self.local_track_path: Optional[LocalPath] = _localtrack
self.track: str = str(_localtrack.absolute())
self.is_local: bool = True
self.uri = self.track
else:
self.local_track_path: Optional[LocalPath] = None
self.track: str = str(query)
self.lavalink_query: str = self._get_query() self.lavalink_query: str = self._get_query()
if self.is_playlist or self.is_album: if self.is_playlist or self.is_album:
@@ -397,14 +397,21 @@ class Query:
return str(self.lavalink_query) return str(self.lavalink_query)
@classmethod @classmethod
def process_input(cls, query: Union[LocalPath, lavalink.Track, "Query", str], **kwargs): def process_input(
"""A replacement for :code:`lavalink.Player.load_tracks`. This will try to get a valid cls,
cached entry first if not found or if in valid it will then call the lavalink API. query: Union[LocalPath, lavalink.Track, "Query", str],
_local_folder_current_path: Path,
**kwargs,
) -> "Query":
"""
Process the input query into its type
Parameters Parameters
---------- ----------
query : Union[Query, LocalPath, lavalink.Track, str] query : Union[Query, LocalPath, lavalink.Track, str]
The query string or LocalPath object. The query string or LocalPath object.
_local_folder_current_path: Path
The Current Local Track folder
Returns Returns
------- -------
Query Query
@@ -430,12 +437,13 @@ class Query:
query = query.uri query = query.uri
possible_values.update(dict(**kwargs)) possible_values.update(dict(**kwargs))
possible_values.update(cls._parse(query, **kwargs)) possible_values.update(cls._parse(query, _local_folder_current_path, **kwargs))
return cls(query, **possible_values) return cls(query, _local_folder_current_path, **possible_values)
@staticmethod @staticmethod
def _parse(track, **kwargs) -> MutableMapping: def _parse(track, _local_folder_current_path: Path, **kwargs) -> MutableMapping:
returning = {} """Parse a track into all the relevant metadata"""
returning: MutableMapping = {}
if ( if (
type(track) == type(LocalPath) type(track) == type(LocalPath)
and (track.is_file() or track.is_dir()) and (track.is_file() or track.is_dir())
@@ -475,7 +483,7 @@ class Query:
track = _RE_REMOVE_START.sub("", track, 1) track = _RE_REMOVE_START.sub("", track, 1)
returning["queryforced"] = track returning["queryforced"] = track
_localtrack = LocalPath(track) _localtrack = LocalPath(track, _local_folder_current_path)
if _localtrack.exists(): if _localtrack.exists():
if _localtrack.is_file(): if _localtrack.is_file():
returning["local"] = True returning["local"] = True
@@ -498,7 +506,7 @@ class Query:
if url_domain in ["youtube.com", "youtu.be"]: if url_domain in ["youtube.com", "youtu.be"]:
returning["youtube"] = True returning["youtube"] = True
_has_index = "&index=" in track _has_index = "&index=" in track
if "&t=" in track: if "&t=" in track or "?t=" in track:
match = re.search(_RE_YOUTUBE_TIMESTAMP, track) match = re.search(_RE_YOUTUBE_TIMESTAMP, track)
if match: if match:
returning["start_time"] = int(match.group(1)) returning["start_time"] = int(match.group(1))
@@ -599,7 +607,7 @@ class Query:
def _get_query(self): def _get_query(self):
if self.is_local: if self.is_local:
return self.track.to_string() return self.local_track_path.to_string()
elif self.is_spotify: elif self.is_spotify:
return self.spotify_uri return self.spotify_uri
elif self.is_search and self.is_youtube: elif self.is_search and self.is_youtube:
@@ -610,13 +618,13 @@ class Query:
def to_string_user(self): def to_string_user(self):
if self.is_local: if self.is_local:
return str(self.track.to_string_user()) return str(self.local_track_path.to_string_user())
return str(self._raw) return str(self._raw)
@property @property
def suffix(self): def suffix(self):
if self.is_local: if self.is_local:
return self.track.suffix return self.local_track_path.suffix
return None return None
def __eq__(self, other): def __eq__(self, other):

View File

@@ -0,0 +1,17 @@
import logging
import sys
from typing import Final
IS_DEBUG: Final[bool] = "--debug" in sys.argv
def is_debug() -> bool:
return IS_DEBUG
def debug_exc_log(lg: logging.Logger, exc: Exception, msg: str = None) -> None:
"""Logs an exception if logging is set to DEBUG level"""
if lg.getEffectiveLevel() <= logging.DEBUG:
if msg is None:
msg = f"{exc}"
lg.exception(msg, exc_info=exc)

View File

@@ -1,31 +0,0 @@
from typing import TYPE_CHECKING
from redbot.core import Config, commands
if TYPE_CHECKING:
_config: Config
else:
_config = None
def _pass_config_to_checks(config: Config):
global _config
if _config is None:
_config = config
def roomlocked():
"""Deny the command if the bot has been room locked."""
async def predicate(ctx: commands.Context):
if ctx.guild is None:
return False
if await ctx.bot.is_mod(member=ctx.author):
return True
room_id = await _config.guild(ctx.guild).room_lock()
if room_id is None or ctx.channel.id == room_id:
return True
return False
return commands.check(predicate)

View File

@@ -1,18 +0,0 @@
from redbot.core import Config
from redbot.core.bot import Red
from .apis import _pass_config_to_apis
from .audio_dataclasses import _pass_config_to_dataclasses
from .converters import _pass_config_to_converters
from .databases import _pass_config_to_databases
from .playlists import _pass_config_to_playlist
from .utils import _pass_config_to_utils
def pass_config_to_dependencies(config: Config, bot: Red, localtracks_folder: str):
_pass_config_to_databases(config, bot)
_pass_config_to_utils(config, bot)
_pass_config_to_dataclasses(config, bot, localtracks_folder)
_pass_config_to_apis(config, bot)
_pass_config_to_playlist(config, bot)
_pass_config_to_converters(config, bot)

View File

@@ -1,16 +1,18 @@
import argparse import argparse
import functools import functools
import re import re
from typing import Optional, Tuple, Union, MutableMapping, TYPE_CHECKING from typing import Final, MutableMapping, Optional, Tuple, Union, Pattern
import discord import discord
from redbot.core.utils import AsyncIter
from redbot.core import Config, commands from redbot.core import commands
from redbot.core.bot import Red from redbot.core.bot import Red
from redbot.core.i18n import Translator from redbot.core.i18n import Translator
from .apis.api_utils import standardize_scope
from .apis.playlist_interface import get_all_playlist_converter
from .errors import NoMatchesFound, TooManyMatches from .errors import NoMatchesFound, TooManyMatches
from .playlists import get_all_playlist_converter, standardize_scope
from .utils import PlaylistScope from .utils import PlaylistScope
_ = Translator("Audio", __file__) _ = Translator("Audio", __file__)
@@ -25,50 +27,47 @@ __all__ = [
"get_playlist_converter", "get_playlist_converter",
] ]
if TYPE_CHECKING: T_ = _
_bot: Red _ = lambda s: s
_config: Config
else:
_bot = None
_config = None
_SCOPE_HELP = """ _SCOPE_HELP: Final[str] = _(
"""
Scope must be a valid version of one of the following: Scope must be a valid version of one of the following:
Global Global
Guild Guild
User User
""" """
_USER_HELP = """ )
_USER_HELP: Final[str] = _(
"""
Author must be a valid version of one of the following: Author must be a valid version of one of the following:
User ID User ID
User Mention User Mention
User Name#123 User Name#123
""" """
_GUILD_HELP = """ )
_GUILD_HELP: Final[str] = _(
"""
Guild must be a valid version of one of the following: Guild must be a valid version of one of the following:
Guild ID Guild ID
Exact guild name Exact guild name
""" """
)
MENTION_RE = re.compile(r"^<?(?:(?:@[!&]?)?|#)(\d{15,21})>?$") _ = T_
MENTION_RE: Final[Pattern] = re.compile(r"^<?(?:(?:@[!&]?)?|#)(\d{15,21})>?$")
def _pass_config_to_converters(config: Config, bot: Red):
global _config, _bot
if _config is None:
_config = config
if _bot is None:
_bot = bot
def _match_id(arg: str) -> Optional[int]: def _match_id(arg: str) -> Optional[int]:
m = MENTION_RE.match(arg) m = MENTION_RE.match(arg)
if m: if m:
return int(m.group(1)) return int(m.group(1))
return None
async def global_unique_guild_finder(ctx: commands.Context, arg: str) -> discord.Guild: async def global_unique_guild_finder(ctx: commands.Context, arg: str) -> discord.Guild:
bot: commands.Bot = ctx.bot bot: Red = ctx.bot
_id = _match_id(arg) _id = _match_id(arg)
if _id is not None: if _id is not None:
@@ -77,7 +76,7 @@ async def global_unique_guild_finder(ctx: commands.Context, arg: str) -> discord
return guild return guild
maybe_matches = [] maybe_matches = []
for obj in bot.guilds: async for obj in AsyncIter(bot.guilds):
if obj.name == arg or str(obj) == arg: if obj.name == arg or str(obj) == arg:
maybe_matches.append(obj) maybe_matches.append(obj)
@@ -102,7 +101,7 @@ async def global_unique_guild_finder(ctx: commands.Context, arg: str) -> discord
async def global_unique_user_finder( async def global_unique_user_finder(
ctx: commands.Context, arg: str, guild: discord.guild = None ctx: commands.Context, arg: str, guild: discord.guild = None
) -> discord.abc.User: ) -> discord.abc.User:
bot: commands.Bot = ctx.bot bot: Red = ctx.bot
guild = guild or ctx.guild guild = guild or ctx.guild
_id = _match_id(arg) _id = _match_id(arg)
@@ -111,17 +110,15 @@ async def global_unique_user_finder(
if user is not None: if user is not None:
return user return user
objects = bot.users
maybe_matches = [] maybe_matches = []
for obj in objects: async for user in AsyncIter(bot.users).filter(lambda u: u.name == arg or f"{u}" == arg):
if obj.name == arg or str(obj) == arg: maybe_matches.append(user)
maybe_matches.append(obj)
if guild is not None: if guild is not None:
for member in guild.members: async for member in AsyncIter(guild.members).filter(
if member.nick == arg and not any(obj.id == member.id for obj in maybe_matches): lambda m: m.nick == arg and not any(obj.id == m.id for obj in maybe_matches)
maybe_matches.append(member) ):
maybe_matches.append(member)
if not maybe_matches: if not maybe_matches:
raise NoMatchesFound( raise NoMatchesFound(
@@ -143,15 +140,36 @@ async def global_unique_user_finder(
class PlaylistConverter(commands.Converter): class PlaylistConverter(commands.Converter):
async def convert(self, ctx: commands.Context, arg: str) -> MutableMapping: async def convert(self, ctx: commands.Context, arg: str) -> MutableMapping:
global_matches = await get_all_playlist_converter( """Get playlist for all scopes that match the argument user provided"""
PlaylistScope.GLOBAL.value, _bot, arg, guild=ctx.guild, author=ctx.author cog = ctx.cog
) user_matches = []
guild_matches = await get_all_playlist_converter( guild_matches = []
PlaylistScope.GUILD.value, _bot, arg, guild=ctx.guild, author=ctx.author global_matches = []
) if cog:
user_matches = await get_all_playlist_converter( global_matches = await get_all_playlist_converter(
PlaylistScope.USER.value, _bot, arg, guild=ctx.guild, author=ctx.author PlaylistScope.GLOBAL.value,
) ctx.bot,
cog.playlist_api,
arg,
guild=ctx.guild,
author=ctx.author,
)
guild_matches = await get_all_playlist_converter(
PlaylistScope.GUILD.value,
ctx.bot,
cog.playlist_api,
arg,
guild=ctx.guild,
author=ctx.author,
)
user_matches = await get_all_playlist_converter(
PlaylistScope.USER.value,
ctx.bot,
cog.playlist_api,
arg,
guild=ctx.guild,
author=ctx.author,
)
if not user_matches and not guild_matches and not global_matches: if not user_matches and not guild_matches and not global_matches:
raise commands.BadArgument(_("Could not match '{}' to a playlist.").format(arg)) raise commands.BadArgument(_("Could not match '{}' to a playlist.").format(arg))
return { return {
@@ -184,7 +202,7 @@ class ScopeParser(commands.Converter):
if arguments: if arguments:
argument = " -- ".join(arguments) argument = " -- ".join(arguments)
else: else:
command = None command = ""
parser = NoExitParser(description="Playlist Scope Parsing.", add_help=False) parser = NoExitParser(description="Playlist Scope Parsing.", add_help=False)
parser.add_argument("--scope", nargs="*", dest="scope", default=[]) parser.add_argument("--scope", nargs="*", dest="scope", default=[])
@@ -215,10 +233,10 @@ class ScopeParser(commands.Converter):
"BOT", "BOT",
] ]
if scope not in valid_scopes: if scope not in valid_scopes:
raise commands.ArgParserFailure("--scope", scope_raw, custom_help=_SCOPE_HELP) raise commands.ArgParserFailure("--scope", scope_raw, custom_help=_(_SCOPE_HELP))
target_scope = standardize_scope(scope) target_scope = standardize_scope(scope)
elif "--scope" in argument and not vals["scope"]: elif "--scope" in argument and not vals["scope"]:
raise commands.ArgParserFailure("--scope", "Nothing", custom_help=_SCOPE_HELP) raise commands.ArgParserFailure("--scope", _("Nothing"), custom_help=_(_SCOPE_HELP))
is_owner = await ctx.bot.is_owner(ctx.author) is_owner = await ctx.bot.is_owner(ctx.author)
guild = vals.get("guild", None) or vals.get("server", None) guild = vals.get("guild", None) or vals.get("server", None)
@@ -234,13 +252,13 @@ class ScopeParser(commands.Converter):
server_error = f"{err}\n" server_error = f"{err}\n"
if target_guild is None: if target_guild is None:
raise commands.ArgParserFailure( raise commands.ArgParserFailure(
"--guild", guild_raw, custom_help=f"{server_error}{_GUILD_HELP}" "--guild", guild_raw, custom_help=f"{server_error}{_(_GUILD_HELP)}"
) )
elif not is_owner and (guild or any(x in argument for x in ["--guild", "--server"])): elif not is_owner and (guild or any(x in argument for x in ["--guild", "--server"])):
raise commands.BadArgument("You cannot use `--guild`") raise commands.BadArgument(_("You cannot use `--guild`"))
elif any(x in argument for x in ["--guild", "--server"]): elif any(x in argument for x in ["--guild", "--server"]):
raise commands.ArgParserFailure("--guild", "Nothing", custom_help=_GUILD_HELP) raise commands.ArgParserFailure("--guild", _("Nothing"), custom_help=_(_GUILD_HELP))
author = vals.get("author", None) or vals.get("user", None) or vals.get("member", None) author = vals.get("author", None) or vals.get("user", None) or vals.get("member", None)
if author: if author:
@@ -257,12 +275,12 @@ class ScopeParser(commands.Converter):
if target_user is None: if target_user is None:
raise commands.ArgParserFailure( raise commands.ArgParserFailure(
"--author", user_raw, custom_help=f"{user_error}{_USER_HELP}" "--author", user_raw, custom_help=f"{user_error}{_(_USER_HELP)}"
) )
elif any(x in argument for x in ["--author", "--user", "--member"]): elif any(x in argument for x in ["--author", "--user", "--member"]):
raise commands.ArgParserFailure("--scope", "Nothing", custom_help=_USER_HELP) raise commands.ArgParserFailure("--scope", _("Nothing"), custom_help=_(_USER_HELP))
target_scope: str = target_scope or None target_scope: Optional[str] = target_scope or None
target_user: Union[discord.Member, discord.User] = target_user or ctx.author target_user: Union[discord.Member, discord.User] = target_user or ctx.author
target_guild: discord.Guild = target_guild or ctx.guild target_guild: discord.Guild = target_guild or ctx.guild
@@ -299,7 +317,7 @@ class ComplexScopeParser(commands.Converter):
if arguments: if arguments:
argument = " -- ".join(arguments) argument = " -- ".join(arguments)
else: else:
command = None command = ""
parser = NoExitParser(description="Playlist Scope Parsing.", add_help=False) parser = NoExitParser(description="Playlist Scope Parsing.", add_help=False)
@@ -345,7 +363,7 @@ class ComplexScopeParser(commands.Converter):
) )
target_scope = standardize_scope(to_scope) target_scope = standardize_scope(to_scope)
elif "--to-scope" in argument and not vals["to_scope"]: elif "--to-scope" in argument and not vals["to_scope"]:
raise commands.ArgParserFailure("--to-scope", "Nothing", custom_help=_SCOPE_HELP) raise commands.ArgParserFailure("--to-scope", _("Nothing"), custom_help=_(_SCOPE_HELP))
if vals["from_scope"]: if vals["from_scope"]:
from_scope_raw = " ".join(vals["from_scope"]).strip() from_scope_raw = " ".join(vals["from_scope"]).strip()
@@ -357,7 +375,7 @@ class ComplexScopeParser(commands.Converter):
) )
source_scope = standardize_scope(from_scope) source_scope = standardize_scope(from_scope)
elif "--from-scope" in argument and not vals["to_scope"]: elif "--from-scope" in argument and not vals["to_scope"]:
raise commands.ArgParserFailure("--to-scope", "Nothing", custom_help=_SCOPE_HELP) raise commands.ArgParserFailure("--to-scope", _("Nothing"), custom_help=_(_SCOPE_HELP))
to_guild = vals.get("to_guild", None) or vals.get("to_server", None) to_guild = vals.get("to_guild", None) or vals.get("to_server", None)
if is_owner and to_guild: if is_owner and to_guild:
@@ -372,20 +390,24 @@ class ComplexScopeParser(commands.Converter):
target_server_error = f"{err}\n" target_server_error = f"{err}\n"
if target_guild is None: if target_guild is None:
raise commands.ArgParserFailure( raise commands.ArgParserFailure(
"--to-guild", to_guild_raw, custom_help=f"{target_server_error}{_GUILD_HELP}" "--to-guild",
to_guild_raw,
custom_help=f"{target_server_error}{_(_GUILD_HELP)}",
) )
elif not is_owner and ( elif not is_owner and (
to_guild or any(x in argument for x in ["--to-guild", "--to-server"]) to_guild or any(x in argument for x in ["--to-guild", "--to-server"])
): ):
raise commands.BadArgument("You cannot use `--to-server`") raise commands.BadArgument(_("You cannot use `--to-server`"))
elif any(x in argument for x in ["--to-guild", "--to-server"]): elif any(x in argument for x in ["--to-guild", "--to-server"]):
raise commands.ArgParserFailure("--to-server", "Nothing", custom_help=_GUILD_HELP) raise commands.ArgParserFailure(
"--to-server", _("Nothing"), custom_help=_(_GUILD_HELP)
)
from_guild = vals.get("from_guild", None) or vals.get("from_server", None) from_guild = vals.get("from_guild", None) or vals.get("from_server", None)
if is_owner and from_guild: if is_owner and from_guild:
source_server_error = "" source_server_error = ""
source_guild = None source_guild = None
from_guild_raw = " ".join(to_guild).strip() from_guild_raw = " ".join(from_guild).strip()
try: try:
source_guild = await global_unique_guild_finder(ctx, from_guild_raw) source_guild = await global_unique_guild_finder(ctx, from_guild_raw)
except TooManyMatches as err: except TooManyMatches as err:
@@ -396,14 +418,16 @@ class ComplexScopeParser(commands.Converter):
raise commands.ArgParserFailure( raise commands.ArgParserFailure(
"--from-guild", "--from-guild",
from_guild_raw, from_guild_raw,
custom_help=f"{source_server_error}{_GUILD_HELP}", custom_help=f"{source_server_error}{_(_GUILD_HELP)}",
) )
elif not is_owner and ( elif not is_owner and (
from_guild or any(x in argument for x in ["--from-guild", "--from-server"]) from_guild or any(x in argument for x in ["--from-guild", "--from-server"])
): ):
raise commands.BadArgument("You cannot use `--from-server`") raise commands.BadArgument(_("You cannot use `--from-server`"))
elif any(x in argument for x in ["--from-guild", "--from-server"]): elif any(x in argument for x in ["--from-guild", "--from-server"]):
raise commands.ArgParserFailure("--from-server", "Nothing", custom_help=_GUILD_HELP) raise commands.ArgParserFailure(
"--from-server", _("Nothing"), custom_help=_(_GUILD_HELP)
)
to_author = ( to_author = (
vals.get("to_author", None) or vals.get("to_user", None) or vals.get("to_member", None) vals.get("to_author", None) or vals.get("to_user", None) or vals.get("to_member", None)
@@ -421,10 +445,10 @@ class ComplexScopeParser(commands.Converter):
target_user_error = f"{err}\n" target_user_error = f"{err}\n"
if target_user is None: if target_user is None:
raise commands.ArgParserFailure( raise commands.ArgParserFailure(
"--to-author", to_user_raw, custom_help=f"{target_user_error}{_USER_HELP}" "--to-author", to_user_raw, custom_help=f"{target_user_error}{_(_USER_HELP)}"
) )
elif any(x in argument for x in ["--to-author", "--to-user", "--to-member"]): elif any(x in argument for x in ["--to-author", "--to-user", "--to-member"]):
raise commands.ArgParserFailure("--to-user", "Nothing", custom_help=_USER_HELP) raise commands.ArgParserFailure("--to-user", _("Nothing"), custom_help=_(_USER_HELP))
from_author = ( from_author = (
vals.get("from_author", None) vals.get("from_author", None)
@@ -434,7 +458,7 @@ class ComplexScopeParser(commands.Converter):
if from_author: if from_author:
source_user_error = "" source_user_error = ""
source_user = None source_user = None
from_user_raw = " ".join(to_author).strip() from_user_raw = " ".join(from_author).strip()
try: try:
source_user = await global_unique_user_finder( source_user = await global_unique_user_finder(
ctx, from_user_raw, guild=target_guild ctx, from_user_raw, guild=target_guild
@@ -446,18 +470,20 @@ class ComplexScopeParser(commands.Converter):
source_user_error = f"{err}\n" source_user_error = f"{err}\n"
if source_user is None: if source_user is None:
raise commands.ArgParserFailure( raise commands.ArgParserFailure(
"--from-author", from_user_raw, custom_help=f"{source_user_error}{_USER_HELP}" "--from-author",
from_user_raw,
custom_help=f"{source_user_error}{_(_USER_HELP)}",
) )
elif any(x in argument for x in ["--from-author", "--from-user", "--from-member"]): elif any(x in argument for x in ["--from-author", "--from-user", "--from-member"]):
raise commands.ArgParserFailure("--from-user", "Nothing", custom_help=_USER_HELP) raise commands.ArgParserFailure("--from-user", _("Nothing"), custom_help=_(_USER_HELP))
target_scope: str = target_scope or PlaylistScope.GUILD.value target_scope = target_scope or PlaylistScope.GUILD.value
target_user: Union[discord.Member, discord.User] = target_user or ctx.author target_user = target_user or ctx.author
target_guild: discord.Guild = target_guild or ctx.guild target_guild = target_guild or ctx.guild
source_scope: str = source_scope or PlaylistScope.GUILD.value source_scope = source_scope or PlaylistScope.GUILD.value
source_user: Union[discord.Member, discord.User] = source_user or ctx.author source_user = source_user or ctx.author
source_guild: discord.Guild = source_guild or ctx.guild source_guild = source_guild or ctx.guild
return ( return (
source_scope, source_scope,

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