mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-12-05 17:02:32 -05:00
Compare commits
154 Commits
3.3.5
...
V3/feature
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7e93803c5b | ||
|
|
9588b1fa8f | ||
|
|
bed1202f06 | ||
|
|
c6fa5620f4 | ||
|
|
5692ab3228 | ||
|
|
8f5118d257 | ||
|
|
5417d871c6 | ||
|
|
930dbda631 | ||
|
|
2e4fd67f87 | ||
|
|
7e5009345c | ||
|
|
fdf7e4d2ab | ||
|
|
ad503e3065 | ||
|
|
b49b53934d | ||
|
|
df410529b0 | ||
|
|
477186d09d | ||
|
|
81f146a2ef | ||
|
|
84d0282815 | ||
|
|
d2de3c109a | ||
|
|
aad36c7430 | ||
|
|
4c62c67fd4 | ||
|
|
144b7b36d0 | ||
|
|
802641ce6b | ||
|
|
2d63e3d6aa | ||
|
|
728252ac87 | ||
|
|
79d042ad29 | ||
|
|
dd4095b15b | ||
|
|
1cf8308d03 | ||
|
|
4e890814ff | ||
|
|
175fbebd73 | ||
|
|
879d21c528 | ||
|
|
c7202b353d | ||
|
|
3a0574eae8 | ||
|
|
70c733e146 | ||
|
|
a64c28aa44 | ||
|
|
35365a7154 | ||
|
|
9594284f6c | ||
|
|
0358473af5 | ||
|
|
8d553a3fc6 | ||
|
|
373dcded2c | ||
|
|
e59d52bae4 | ||
|
|
fa00314b77 | ||
|
|
7aad3ae3b5 | ||
|
|
6c56e47083 | ||
|
|
6c048fad01 | ||
|
|
593079dbbb | ||
|
|
2761244d2e | ||
|
|
f58f6bb6d2 | ||
|
|
da83e02749 | ||
|
|
76efb16f96 | ||
|
|
d411873503 | ||
|
|
f0a4c1c252 | ||
|
|
1f845a4119 | ||
|
|
17496ff5cf | ||
|
|
e3322af384 | ||
|
|
b1d394eac5 | ||
|
|
fd8ff7d7cf | ||
|
|
bc19b0d103 | ||
|
|
aea6f68598 | ||
|
|
332bcae24f | ||
|
|
4335b3b2d4 | ||
|
|
d6435eff85 | ||
|
|
2c313594da | ||
|
|
bc21f77976 | ||
|
|
dbcb179523 | ||
|
|
35e83855a8 | ||
|
|
6b086e3eb2 | ||
|
|
049f23071c | ||
|
|
e6c46bf4da | ||
|
|
6984dca394 | ||
|
|
7a86cc4bf3 | ||
|
|
219586d55d | ||
|
|
6a00c0ee7e | ||
|
|
873c7be99e | ||
|
|
c9cfa92b04 | ||
|
|
ff46ca546d | ||
|
|
f1ba57b78b | ||
|
|
4cf83b9ef4 | ||
|
|
3702e2e998 | ||
|
|
30c1adfe5b | ||
|
|
c75035bf6e | ||
|
|
59358e7bac | ||
|
|
19fa0b968f | ||
|
|
f2d02a6f46 | ||
|
|
05ec73266c | ||
|
|
a9acb80132 | ||
|
|
ed89f70f98 | ||
|
|
45afaa8ec8 | ||
|
|
4757c2c945 | ||
|
|
65395185c3 | ||
|
|
f2f3ac7d42 | ||
|
|
cb999bda7b | ||
|
|
cd14bccdc8 | ||
|
|
cf6966058e | ||
|
|
74b209bcc8 | ||
|
|
4a97020b78 | ||
|
|
e0d8942741 | ||
|
|
4f25e6c1ad | ||
|
|
81b4a1978b | ||
|
|
87d828a1b0 | ||
|
|
e52ff98cad | ||
|
|
7cabc876f5 | ||
|
|
8fa47cb789 | ||
|
|
ef76affd77 | ||
|
|
38a034e59b | ||
|
|
fb26ecf577 | ||
|
|
de99aac3ad | ||
|
|
4d9d224917 | ||
|
|
ac46b51d41 | ||
|
|
7aff7962f0 | ||
|
|
1a96f276f8 | ||
|
|
480c3129bd | ||
|
|
981661ea68 | ||
|
|
51f7d6cea2 | ||
|
|
7d28581915 | ||
|
|
4a0f23b0ea | ||
|
|
aaee2d9294 | ||
|
|
d5c960096e | ||
|
|
0c94ce6cc3 | ||
|
|
f280eea788 | ||
|
|
af7b0e4e1f | ||
|
|
ef35fc0c5f | ||
|
|
ca1f39a260 | ||
|
|
b92d61e154 | ||
|
|
70ff884ebb | ||
|
|
6f6c536236 | ||
|
|
a1095285e4 | ||
|
|
00d20f14b9 | ||
|
|
560e0f7334 | ||
|
|
fc2dce6882 | ||
|
|
bd3d0dd64d | ||
|
|
f824d09ed3 | ||
|
|
d7c5f86ce7 | ||
|
|
c760b43e5a | ||
|
|
b1fe807b47 | ||
|
|
0d6a7eb797 | ||
|
|
bf6390d72e | ||
|
|
e595f1859a | ||
|
|
06930ebe2c | ||
|
|
08c96a6794 | ||
|
|
61db89e89d | ||
|
|
a2c0e4ca2e | ||
|
|
b08a950c37 | ||
|
|
ad979180e5 | ||
|
|
465812b673 | ||
|
|
f59e77002b | ||
|
|
e4018ec677 | ||
|
|
df7ca65108 | ||
|
|
d12fcac9af | ||
|
|
66fc28ec1b | ||
|
|
10ad2a559a | ||
|
|
b8ac70e59a | ||
|
|
7492636818 | ||
|
|
36a0eabf4a | ||
|
|
cf4fdbbab1 |
6
.github/CODEOWNERS
vendored
6
.github/CODEOWNERS
vendored
@@ -1,7 +1,5 @@
|
||||
# Default
|
||||
* @Twentysix26
|
||||
|
||||
# Core
|
||||
redbot/core/apis/audio/** @aikaterna @Drapersniper
|
||||
redbot/core/bank.py @palmtree5
|
||||
redbot/core/checks.py @tekulvw
|
||||
redbot/core/cli.py @tekulvw
|
||||
@@ -30,7 +28,7 @@ redbot/core/utils/dbtools.py @mikeshardmind
|
||||
# Cogs
|
||||
redbot/cogs/admin/* @tekulvw
|
||||
redbot/cogs/alias/* @tekulvw
|
||||
redbot/cogs/audio/* @aikaterna @Drapersniper
|
||||
redbot/cogs/audio/** @aikaterna @Drapersniper
|
||||
redbot/cogs/bank/* @tekulvw
|
||||
redbot/cogs/cleanup/* @palmtree5
|
||||
redbot/cogs/customcom/* @palmtree5
|
||||
|
||||
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal 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.
|
||||
@@ -1,5 +1,303 @@
|
||||
.. 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)
|
||||
=========================
|
||||
|
||||
| Thanks to all these amazing people that contributed to this release:
|
||||
| :ghuser:`aikaterna`, :ghuser:`Drapersniper`, :ghuser:`jack1142`, :ghuser:`Kowlin`, :ghuser:`MiniJennJenn`, :ghuser:`NeuroAssassin`, :ghuser:`PredaaA`, :ghuser:`TrustyJAID`, :ghuser:`yamikaitou`
|
||||
|
||||
End-user changelog
|
||||
------------------
|
||||
|
||||
Core Bot
|
||||
********
|
||||
|
||||
- Converting from and to Postgres driver with ``redbot-setup convert`` have been fixed (:issue:`3714`, :issue:`3115`)
|
||||
- Fixed big delays in commands that happened when the bot was owner-less (or if it only used co-owners feature) and command caller wasn't the owner (:issue:`3782`)
|
||||
- Various optimizations
|
||||
|
||||
- Reduced calls to data backend when loading bot's commands (:issue:`3764`)
|
||||
- Reduced calls to data backend when showing help for cogs/commands (:issue:`3766`)
|
||||
- Improved performance for bots with big amount of guilds (:issue:`3767`)
|
||||
- Mod cog no longer fetches guild's bans every 60 seconds when handling unbanning for tempbans (:issue:`3783`)
|
||||
- Reduced the bot load for messages starting with a prefix when fuzzy search is disabled (:issue:`3718`)
|
||||
- Aliases in Alias cog are now cached for better performance (:issue:`3788`)
|
||||
|
||||
Core Commands
|
||||
*************
|
||||
|
||||
- ``[p]set avatar`` now supports setting avatar using attachment (:issue:`3747`)
|
||||
- Added ``[p]set avatar remove`` subcommand for removing bot's avatar (:issue:`3757`)
|
||||
- Fixed list of ignored channels that is shown in ``[p]ignore``/``[p]unignore`` (:issue:`3746`)
|
||||
|
||||
Audio
|
||||
*****
|
||||
|
||||
- Age-restricted tracks, live streams, and mix playlists from YouTube should work in Audio again (:issue:`3791`)
|
||||
- Soundcloud's sets and playlists with more than 50 tracks should work in Audio again (:issue:`3791`)
|
||||
|
||||
CustomCommands
|
||||
**************
|
||||
|
||||
- Added ``[p]cc raw`` command that gives you the raw response of a custom command for ease of copy pasting (:issue:`3795`)
|
||||
|
||||
Modlog
|
||||
******
|
||||
|
||||
- Fixed ``AttributeError`` for cases whose moderator doesn't share the server with the bot (:issue:`3784`, :issue:`3778`)
|
||||
|
||||
Streams
|
||||
*******
|
||||
|
||||
- Fixed incorrect stream URLs for Twitch channels that have localised display name (:issue:`3773`, :issue:`3772`)
|
||||
|
||||
Trivia
|
||||
******
|
||||
|
||||
- Fixed the error in ``[p]trivia stop`` that happened when there was no ongoing trivia session in the channel (:issue:`3774`)
|
||||
|
||||
Trivia Lists
|
||||
************
|
||||
|
||||
- Updated ``leagueoflegends`` list with new changes to League of Legends (`b8ac70e <https://github.com/Cog-Creators/Red-DiscordBot/commit/b8ac70e59aa1328f246784f14f992d6ffe00d778>`_)
|
||||
|
||||
|
||||
Developer changelog
|
||||
-------------------
|
||||
|
||||
Utility Functions
|
||||
*****************
|
||||
|
||||
- Added `redbot.core.utils.AsyncIter` utility class which allows you to wrap regular iterable into async iterator yielding items and sleeping for ``delay`` seconds every ``steps`` items (:issue:`3767`, :issue:`3776`)
|
||||
- `bold()`, `italics()`, `strikethrough()`, and `underline()` now accept ``escape_formatting`` argument that can be used to disable escaping of markdown formatting in passed text (:issue:`3742`)
|
||||
|
||||
|
||||
Documentation changes
|
||||
---------------------
|
||||
|
||||
- Added `document about updating Red <update_red>` (:issue:`3790`)
|
||||
- ``pyenv`` instructions will now update ``pyenv`` if it's already installed (:issue:`3740`)
|
||||
- Updated Python version in ``pyenv`` instructions (:issue:`3740`)
|
||||
- Updated install docs to include Ubuntu 20.04 (:issue:`3792`)
|
||||
|
||||
|
||||
Miscellaneous
|
||||
-------------
|
||||
|
||||
- **Config** - JSON driver will now properly have only one lock per cog name (:issue:`3780`)
|
||||
- **Core Commands** - ``[p]debuginfo`` now shows used storage type (:issue:`3794`)
|
||||
- **Trivia** - Corrected spelling of Compact Disc in ``games`` list (:issue:`3759`, :issue:`3758`)
|
||||
|
||||
|
||||
Redbot 3.3.5 (2020-04-09)
|
||||
=========================
|
||||
|
||||
|
||||
@@ -34,3 +34,5 @@ extend functionalities used throughout the bot, as outlined below.
|
||||
:members:
|
||||
:exclude-members: convert
|
||||
:no-undoc-members:
|
||||
|
||||
.. autoclass:: APIToken
|
||||
|
||||
@@ -202,15 +202,15 @@ the built-in Economy credits::
|
||||
|
||||
class Pets:
|
||||
def __init__(self):
|
||||
self.conf = Config.get_conf(self, 1234567890)
|
||||
self.config = Config.get_conf(self, 1234567890)
|
||||
|
||||
# Here we'll assign some default costs for the pets
|
||||
self.conf.register_global(
|
||||
self.config.register_global(
|
||||
dog=100,
|
||||
cat=100,
|
||||
bird=50
|
||||
)
|
||||
self.conf.register_user(
|
||||
self.config.register_user(
|
||||
pets={}
|
||||
)
|
||||
|
||||
@@ -229,7 +229,7 @@ And now that the cog is set up we'll need to create some commands that allow use
|
||||
|
||||
# We will need to use "get_raw"
|
||||
try:
|
||||
cost = await self.conf.get_raw(pet_type)
|
||||
cost = await self.config.get_raw(pet_type)
|
||||
except KeyError:
|
||||
# KeyError is thrown whenever the data you try to access does not
|
||||
# exist in the registered defaults or in the saved data.
|
||||
@@ -241,15 +241,15 @@ assign a new pet to the user. This is very easily done using the V3 bank API and
|
||||
|
||||
# continued
|
||||
if await bank.can_spend(ctx.author, cost):
|
||||
await self.conf.user(ctx.author).pets.set_raw(
|
||||
await self.config.user(ctx.author).pets.set_raw(
|
||||
pet_name, value={'cost': cost, 'hunger': 0}
|
||||
)
|
||||
|
||||
# this is equivalent to doing the following
|
||||
|
||||
pets = await self.conf.user(ctx.author).pets()
|
||||
pets = await self.config.user(ctx.author).pets()
|
||||
pets[pet_name] = {'cost': cost, 'hunger': 0}
|
||||
await self.conf.user(ctx.author).pets.set(pets)
|
||||
await self.config.user(ctx.author).pets.set(pets)
|
||||
|
||||
Since the pets can get hungry we're gonna need a command that let's pet owners check how hungry their pets are::
|
||||
|
||||
@@ -257,7 +257,7 @@ Since the pets can get hungry we're gonna need a command that let's pet owners c
|
||||
@commands.command()
|
||||
async def hunger(self, ctx, pet_name: str):
|
||||
try:
|
||||
hunger = await self.conf.user(ctx.author).pets.get_raw(pet_name, 'hunger')
|
||||
hunger = await self.config.user(ctx.author).pets.get_raw(pet_name, 'hunger')
|
||||
except KeyError:
|
||||
# Remember, this is thrown if something in the provided identifiers
|
||||
# is not found in the saved data or the defaults.
|
||||
@@ -274,7 +274,7 @@ We're responsible pet owners here, so we've also got to have a way to feed our p
|
||||
# This is a bit more complicated because we need to check if the pet is
|
||||
# owned first.
|
||||
try:
|
||||
pet = await self.conf.user(ctx.author).pets.get_raw(pet_name)
|
||||
pet = await self.config.user(ctx.author).pets.get_raw(pet_name)
|
||||
except KeyError:
|
||||
# If the given pet name doesn't exist in our data
|
||||
await ctx.send("You don't own that pet!")
|
||||
@@ -285,12 +285,12 @@ We're responsible pet owners here, so we've also got to have a way to feed our p
|
||||
# Determine the new hunger and make sure it doesn't go negative
|
||||
new_hunger = max(hunger - food, 0)
|
||||
|
||||
await self.conf.user(ctx.author).pets.set_raw(
|
||||
await self.config.user(ctx.author).pets.set_raw(
|
||||
pet_name, 'hunger', value=new_hunger
|
||||
)
|
||||
|
||||
# We could accomplish the same thing a slightly different way
|
||||
await self.conf.user(ctx.author).pets.get_attr(pet_name).hunger.set(new_hunger)
|
||||
await self.config.user(ctx.author).pets.get_attr(pet_name).hunger.set(new_hunger)
|
||||
|
||||
await ctx.send("Your pet is now at {}/100 hunger!".format(new_hunger)
|
||||
|
||||
@@ -300,7 +300,7 @@ Of course, if we're less than responsible pet owners, there are consequences::
|
||||
@commands.command()
|
||||
async def adopt(self, ctx, pet_name: str, *, member: discord.Member):
|
||||
try:
|
||||
pet = await self.conf.user(member).pets.get_raw(pet_name)
|
||||
pet = await self.config.user(member).pets.get_raw(pet_name)
|
||||
except KeyError:
|
||||
await ctx.send("That person doesn't own that pet!")
|
||||
return
|
||||
@@ -310,15 +310,15 @@ Of course, if we're less than responsible pet owners, there are consequences::
|
||||
await ctx.send("That pet is too well taken care of to be adopted.")
|
||||
return
|
||||
|
||||
await self.conf.user(member).pets.clear_raw(pet_name)
|
||||
await self.config.user(member).pets.clear_raw(pet_name)
|
||||
|
||||
# this is equivalent to doing the following
|
||||
|
||||
pets = await self.conf.user(member).pets()
|
||||
pets = await self.config.user(member).pets()
|
||||
del pets[pet_name]
|
||||
await self.conf.user(member).pets.set(pets)
|
||||
await self.config.user(member).pets.set(pets)
|
||||
|
||||
await self.conf.user(ctx.author).pets.set_raw(pet_name, value=pet)
|
||||
await self.config.user(ctx.author).pets.set_raw(pet_name, value=pet)
|
||||
await ctx.send(
|
||||
"Your request to adopt this pet has been granted due to "
|
||||
"how poorly it was taken care of."
|
||||
@@ -351,15 +351,15 @@ much the same way they would in V2. The following examples will demonstrate how
|
||||
|
||||
class ExampleCog:
|
||||
def __init__(self):
|
||||
self.conf = Config.get_conf(self, 1234567890)
|
||||
self.config = Config.get_conf(self, 1234567890)
|
||||
|
||||
self.data = {}
|
||||
|
||||
async def load_data(self):
|
||||
self.data = await self.conf.custom("V2", "V2").all()
|
||||
self.data = await self.config.custom("V2", "V2").all()
|
||||
|
||||
async def save_data(self):
|
||||
await self.conf.custom("V2", "V2").set(self.data)
|
||||
await self.config.custom("V2", "V2").set(self.data)
|
||||
|
||||
|
||||
async def setup(bot):
|
||||
@@ -407,13 +407,13 @@ API Reference
|
||||
includes keys within a `dict` when one is being set, as well as keys in nested dictionaries
|
||||
within that `dict`. For example::
|
||||
|
||||
>>> conf = Config.get_conf(self, identifier=999)
|
||||
>>> conf.register_global(foo={})
|
||||
>>> await conf.foo.set_raw(123, value=True)
|
||||
>>> await conf.foo()
|
||||
>>> config = Config.get_conf(self, identifier=999)
|
||||
>>> config.register_global(foo={})
|
||||
>>> await config.foo.set_raw(123, value=True)
|
||||
>>> await config.foo()
|
||||
{'123': True}
|
||||
>>> await conf.foo.set({123: True, 456: {789: False}}
|
||||
>>> await conf.foo()
|
||||
>>> await config.foo.set({123: True, 456: {789: False}}
|
||||
>>> await config.foo()
|
||||
{'123': True, '456': {'789': False}}
|
||||
|
||||
.. automodule:: redbot.core.config
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
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.
|
||||
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.
|
||||
|
||||
@@ -10,6 +10,18 @@ General Utility
|
||||
.. automodule:: redbot.core.utils
|
||||
:members: deduplicate_iterables, bounded_gather, bounded_gather_iter
|
||||
|
||||
.. autoclass:: AsyncIter
|
||||
:members:
|
||||
:special-members: __await__
|
||||
:exclude-members: enumerate, filter
|
||||
|
||||
.. automethod:: enumerate
|
||||
:async-for:
|
||||
|
||||
.. automethod:: filter
|
||||
:async-for:
|
||||
|
||||
|
||||
Chat Formatting
|
||||
===============
|
||||
|
||||
|
||||
@@ -270,7 +270,7 @@ If you want to do it, follow these steps.
|
||||
2. **Install Linux**
|
||||
|
||||
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
|
||||
<https://www.raspberrypi.org/downloads/raspbian/>`_ on a micro-SD card.
|
||||
|
||||
@@ -35,8 +35,8 @@ Open a terminal or command prompt and type one of the following
|
||||
intended for normal users.** We will not support anyone using the development version in any
|
||||
support channels. Using the development version may break third party cogs and not all core
|
||||
commands may work. Downgrading to stable after installing the development version may cause
|
||||
data loss, crashes or worse. Please keep this in mind when using the Development version
|
||||
While working on cog creation.
|
||||
data loss, crashes or worse. Please keep this in mind when using the development version
|
||||
while working on cog creation.
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
|
||||
@@ -59,6 +59,9 @@ Others
|
||||
|`Microsoft Azure |Same as AWS, but it's Microsoft. |
|
||||
|<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. |
|
||||
+-------------------------------------+-----------------------------------------------------+
|
||||
|
||||
@@ -76,7 +79,10 @@ server. Any modern hardware should work 100% fine.
|
||||
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
|
||||
for 12 months.
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ Welcome to Red - Discord Bot's documentation!
|
||||
|
||||
install_windows
|
||||
install_linux_mac
|
||||
update_red
|
||||
about_venv
|
||||
autostart_systemd
|
||||
autostart_pm2
|
||||
|
||||
@@ -43,14 +43,14 @@ Arch Linux
|
||||
|
||||
.. 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`.
|
||||
|
||||
----
|
||||
|
||||
.. _install-centos:
|
||||
.. _install-rhel:
|
||||
.. _install-centos7:
|
||||
.. _install-rhel7:
|
||||
|
||||
~~~~~~~~~~~~~~~~~
|
||||
CentOS and RHEL 7
|
||||
@@ -58,17 +58,27 @@ CentOS and RHEL 7
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
yum -y groupinstall development
|
||||
yum -y install https://centos7.iuscommunity.org/ius-release.rpm
|
||||
sudo yum -y groupinstall development
|
||||
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>`.
|
||||
|
||||
----
|
||||
|
||||
.. _install-centos8:
|
||||
.. _install-rhel8:
|
||||
.. _install-centos:
|
||||
.. _install-rhel:
|
||||
|
||||
~~~~~~~~~~~~~~~~~
|
||||
CentOS and RHEL 8
|
||||
@@ -76,11 +86,11 @@ CentOS and RHEL 8
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
yum -y install epel-release
|
||||
yum update -y
|
||||
yum -y groupinstall development
|
||||
yum -y install git zlib-devel bzip2 bzip2-devel readline-devel sqlite \
|
||||
sqlite-devel openssl-devel xz xz-devel libffi-devel findutils java-11-openjdk
|
||||
sudo yum -y install epel-release
|
||||
sudo yum -y update
|
||||
sudo yum -y groupinstall development
|
||||
sudo yum -y install git zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
|
||||
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>`.
|
||||
|
||||
@@ -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 apt update
|
||||
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 \
|
||||
libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev python3-openssl git openjdk-11-jre
|
||||
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-headless
|
||||
CXX=/usr/bin/g++
|
||||
|
||||
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 -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 \
|
||||
libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev python3-openssl git openjdk-11-jre
|
||||
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-headless
|
||||
CXX=/usr/bin/g++
|
||||
|
||||
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
|
||||
|
||||
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`.
|
||||
|
||||
@@ -197,14 +207,17 @@ First, add the Opt-Python community repository:
|
||||
.. code-block:: none
|
||||
|
||||
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:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
sudo zypper install opt-python38 opt-python38-setuptools git-core java-11-openjdk-headless
|
||||
sudo zypper install -t pattern devel_basis
|
||||
sudo zypper -n install opt-python38 opt-python38-setuptools git-core java-11-openjdk-headless
|
||||
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
|
||||
``/etc/profile.d/`` to do this:
|
||||
@@ -230,25 +243,31 @@ with zypper:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
sudo zypper install python3-base python3-pip git-core java-12-openjdk-headless
|
||||
sudo zypper install -t pattern devel_basis
|
||||
sudo zypper -n install python3-base python3-pip git-core java-11-openjdk-headless
|
||||
sudo zypper -n install -t pattern devel_basis
|
||||
|
||||
Continue by `creating-venv-linux`.
|
||||
|
||||
----
|
||||
|
||||
.. _install-ubuntu:
|
||||
.. _install-ubuntu-1604:
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Ubuntu LTS versions (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
|
||||
|
||||
sudo apt update
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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 \
|
||||
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++
|
||||
|
||||
And then complete the rest of the installation by `installing Python 3.8 with pyenv <install-python-pyenv>`.
|
||||
@@ -313,16 +388,16 @@ virtual environment.
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
|
||||
command -v pyenv && pyenv update || curl https://pyenv.run | bash
|
||||
|
||||
After this command, you may see a warning about 'pyenv' not being in the load path. Follow the
|
||||
instructions given to fix that, then close and reopen your shell.
|
||||
**After this command, you may see a warning about 'pyenv' not being in the load path. Follow the
|
||||
instructions given to fix that, then close and reopen your shell.**
|
||||
|
||||
Then run the following command:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
CONFIGURE_OPTS=--enable-optimizations pyenv install 3.8.1 -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
|
||||
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
|
||||
|
||||
pyenv global 3.8.1
|
||||
pyenv global 3.8.3
|
||||
|
||||
Pyenv is now installed and your system should be configured to run Python 3.8.
|
||||
|
||||
|
||||
@@ -4,18 +4,29 @@
|
||||
Installing Red on Windows
|
||||
=========================
|
||||
|
||||
---------------
|
||||
Needed Software
|
||||
---------------
|
||||
-------------------------------
|
||||
Installing the pre-requirements
|
||||
-------------------------------
|
||||
|
||||
The following software dependencies can all be installed quickly and easily through PowerShell,
|
||||
using a trusted package manager for Windows called `Chocolatey <https://chocolatey.org>`_
|
||||
Please install the pre-requirements by following instructions from one of the following subsections.
|
||||
|
||||
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)
|
||||
|
||||
******************************************
|
||||
Installing using powershell and chocolatey
|
||||
******************************************
|
||||
We also recommend installing some basic compiler tools, in case our dependencies don't provide
|
||||
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,
|
||||
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`.
|
||||
|
||||
----
|
||||
|
||||
********************************
|
||||
Manually installing dependencies
|
||||
********************************
|
||||
@@ -61,6 +74,9 @@ Manually installing dependencies
|
||||
|
||||
* `Java 11 <https://adoptopenjdk.net/?variant=openjdk11&jvmVariant=hotspot>`_ - needed for Audio
|
||||
|
||||
From here, continue onto `creating-venv-windows`.
|
||||
|
||||
----
|
||||
|
||||
.. _creating-venv-windows:
|
||||
|
||||
|
||||
135
docs/update_red.rst
Normal file
135
docs/update_red.rst
Normal file
@@ -0,0 +1,135 @@
|
||||
============
|
||||
Updating Red
|
||||
============
|
||||
|
||||
Updating to the latest version of Red has several benefits:
|
||||
|
||||
- New features and improvements are added.
|
||||
- Bugs are fixed.
|
||||
- Your bot is safe from security vulnerabilities that have been found.
|
||||
|
||||
Here are some things to consider to help make your upgrade as smooth as possible.
|
||||
|
||||
.. note::
|
||||
|
||||
If you're developing for Red, you should also look for "Breaking changes" sections in release notes for each minor (X.Y.0) version that's been released since you last updated Red.
|
||||
|
||||
Updating differs depending on the version you currently have. Next sections will explain how to upgrade to latest version of Red (|version|) from the version that is in the header of the section.
|
||||
|
||||
.. contents:: Choose the version you're currently on from the list below:
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
|
||||
Red 3.2.0 or newer
|
||||
******************
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
If you have Red 3.2.0 or newer, you can upgrade by following these 4 easy steps:
|
||||
|
||||
1. Shut your bot down.
|
||||
|
||||
2. Activate your venv with the following command:
|
||||
|
||||
.. code:: none
|
||||
|
||||
"%userprofile%\redenv\Scripts\activate.bat"
|
||||
|
||||
3. Update Red with this command:
|
||||
|
||||
.. code:: none
|
||||
|
||||
python -m pip install -U Red-DiscordBot
|
||||
|
||||
.. attention::
|
||||
|
||||
If you're using PostgreSQL data backend, replace ``Red-DiscordBot`` in the second command with ``Red-DiscordBot[postgres]``
|
||||
|
||||
4. Start your bot.
|
||||
|
||||
Linux & Mac
|
||||
-----------
|
||||
|
||||
If you have Red 3.2.0 or newer, you can upgrade by following these 4 easy steps:
|
||||
|
||||
1. Shut your bot down.
|
||||
|
||||
2. Activate your virtual environment.
|
||||
|
||||
If you used ``venv`` for your virtual environment, use:
|
||||
|
||||
.. code:: none
|
||||
|
||||
source ~/redenv/bin/activate
|
||||
|
||||
If you used ``pyenv`` for your virtual environment, use:
|
||||
|
||||
.. code:: none
|
||||
|
||||
pyenv shell <name>
|
||||
|
||||
3. Update Red with this command:
|
||||
|
||||
.. code:: none
|
||||
|
||||
python -m pip install -U Red-DiscordBot
|
||||
|
||||
.. attention::
|
||||
|
||||
If you're using PostgreSQL data backend, replace ``Red-DiscordBot`` in the second command with ``Red-DiscordBot[postgres]``
|
||||
|
||||
4. Start your bot.
|
||||
|
||||
Red 3.1.X
|
||||
*********
|
||||
|
||||
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>`
|
||||
- `Linux & Mac <install_linux_mac>`
|
||||
|
||||
Follow every step to ensure you have all dependencies up-to-date and only skip ``redbot-setup`` step as you already have a bot instance.
|
||||
|
||||
**If you already have Red installed in a virtual environment, you will need to delete it before starting this process.**
|
||||
|
||||
.. attention::
|
||||
|
||||
Red 3.2 dropped support for the MongoDB driver
|
||||
|
||||
- If you were not using the MongoDB driver, this does not affect you.
|
||||
- If you were using a 3rd party cog which required MongoDB, it probably still does.
|
||||
- If you were using the MongoDB driver, **prior to launching your instance after update**,
|
||||
you will need to run the following commands to convert:
|
||||
|
||||
.. code::
|
||||
|
||||
python -m pip install dnspython~=1.16.0 motor~=2.0.0 pymongo~=3.8.0
|
||||
redbot-setup convert [instancename] json
|
||||
|
||||
|
||||
Red 3.0.2 and older
|
||||
*******************
|
||||
|
||||
.. important::
|
||||
|
||||
Red 3.2 dropped support for the MongoDB driver
|
||||
|
||||
- If you were not using the MongoDB driver, this does not affect you.
|
||||
- If you were using a 3rd party cog which required MongoDB, it probably still does.
|
||||
- If you were using the MongoDB driver, **prior to updating**, you will need to convert your data to JSON backend,
|
||||
using following command:
|
||||
|
||||
.. code::
|
||||
|
||||
redbot-setup --edit
|
||||
|
||||
If you have Red 3.0.2 or older, you will need to follow the install instructions for your operating system. Make sure that you turn your bot off first.
|
||||
|
||||
- `Windows <install_windows>`
|
||||
- `Linux & Mac <install_linux_mac>`
|
||||
|
||||
Follow every step to ensure you have all dependencies up-to-date and only skip ``redbot-setup`` step as you already have a bot instance.
|
||||
|
||||
**If you already have Red installed in a virtual environment, you will need to delete it before starting this process.**
|
||||
@@ -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
|
||||
excluded from being guaranteed.
|
||||
|
||||
Any RPC method exposed by Red may break without notice.
|
||||
|
||||
If you would like something in here to be guaranteed,
|
||||
open an issue making a case for it to be moved.
|
||||
|
||||
|
||||
@@ -191,7 +191,7 @@ def _update_event_loop_policy():
|
||||
_asyncio.set_event_loop_policy(_uvloop.EventLoopPolicy())
|
||||
|
||||
|
||||
__version__ = "3.3.5"
|
||||
__version__ = "3.3.10.dev1"
|
||||
version_info = VersionInfo.from_str(__version__)
|
||||
|
||||
# Filter fuzzywuzzy slow sequence matcher warning
|
||||
|
||||
@@ -7,6 +7,7 @@ import json
|
||||
import logging
|
||||
import os
|
||||
import pip
|
||||
import pkg_resources
|
||||
import platform
|
||||
import shutil
|
||||
import signal
|
||||
@@ -346,6 +347,14 @@ async def run_bot(red: Red, cli_flags: Namespace) -> None:
|
||||
LIB_PATH.mkdir(parents=True, exist_ok=True)
|
||||
if str(LIB_PATH) not in sys.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())
|
||||
|
||||
if cli_flags.token:
|
||||
|
||||
@@ -70,11 +70,11 @@ class Admin(commands.Cog):
|
||||
"""A collection of server administration utilities."""
|
||||
|
||||
def __init__(self):
|
||||
self.conf = Config.get_conf(self, 8237492837454039, force_registration=True)
|
||||
self.config = Config.get_conf(self, 8237492837454039, force_registration=True)
|
||||
|
||||
self.conf.register_global(serverlocked=False)
|
||||
self.config.register_global(serverlocked=False)
|
||||
|
||||
self.conf.register_guild(
|
||||
self.config.register_guild(
|
||||
announce_ignore=False,
|
||||
announce_channel=None, # Integer ID
|
||||
selfroles=[], # List of integer ID's
|
||||
@@ -290,7 +290,7 @@ class Admin(commands.Cog):
|
||||
async def announce(self, ctx: commands.Context, *, message: str):
|
||||
"""Announce a message to all servers the bot is in."""
|
||||
if not self.is_announcing():
|
||||
announcer = Announcer(ctx, message, config=self.conf)
|
||||
announcer = Announcer(ctx, message, config=self.config)
|
||||
announcer.start()
|
||||
|
||||
self.__current_announcer = announcer
|
||||
@@ -325,7 +325,7 @@ class Admin(commands.Cog):
|
||||
"""
|
||||
if channel is None:
|
||||
channel = ctx.channel
|
||||
await self.conf.guild(ctx.guild).announce_channel.set(channel.id)
|
||||
await self.config.guild(ctx.guild).announce_channel.set(channel.id)
|
||||
await ctx.send(
|
||||
_("The announcement channel has been set to {channel.mention}").format(channel=channel)
|
||||
)
|
||||
@@ -333,8 +333,8 @@ class Admin(commands.Cog):
|
||||
@announceset.command(name="ignore")
|
||||
async def announceset_ignore(self, ctx):
|
||||
"""Toggle announcements being enabled this server."""
|
||||
ignored = await self.conf.guild(ctx.guild).announce_ignore()
|
||||
await self.conf.guild(ctx.guild).announce_ignore.set(not ignored)
|
||||
ignored = await self.config.guild(ctx.guild).announce_ignore()
|
||||
await self.config.guild(ctx.guild).announce_ignore.set(not ignored)
|
||||
if ignored:
|
||||
await ctx.send(
|
||||
_("The server {guild.name} will receive announcements.").format(guild=ctx.guild)
|
||||
@@ -352,14 +352,14 @@ class Admin(commands.Cog):
|
||||
:param guild:
|
||||
:return:
|
||||
"""
|
||||
selfrole_ids = set(await self.conf.guild(guild).selfroles())
|
||||
selfrole_ids = set(await self.config.guild(guild).selfroles())
|
||||
guild_roles = guild.roles
|
||||
|
||||
valid_roles = tuple(r for r in guild_roles if r.id in selfrole_ids)
|
||||
valid_role_ids = set(r.id for r in valid_roles)
|
||||
|
||||
if selfrole_ids != valid_role_ids:
|
||||
await self.conf.guild(guild).selfroles.set(list(valid_role_ids))
|
||||
await self.config.guild(guild).selfroles.set(list(valid_role_ids))
|
||||
|
||||
# noinspection PyTypeChecker
|
||||
return valid_roles
|
||||
@@ -427,7 +427,7 @@ class Admin(commands.Cog):
|
||||
).format(role=role)
|
||||
)
|
||||
return
|
||||
async with self.conf.guild(ctx.guild).selfroles() as curr_selfroles:
|
||||
async with self.config.guild(ctx.guild).selfroles() as curr_selfroles:
|
||||
if role.id not in curr_selfroles:
|
||||
curr_selfroles.append(role.id)
|
||||
await ctx.send(_("Added."))
|
||||
@@ -449,7 +449,7 @@ class Admin(commands.Cog):
|
||||
).format(role=role)
|
||||
)
|
||||
return
|
||||
async with self.conf.guild(ctx.guild).selfroles() as curr_selfroles:
|
||||
async with self.config.guild(ctx.guild).selfroles() as curr_selfroles:
|
||||
curr_selfroles.remove(role.id)
|
||||
|
||||
await ctx.send(_("Removed."))
|
||||
@@ -458,8 +458,8 @@ class Admin(commands.Cog):
|
||||
@checks.is_owner()
|
||||
async def serverlock(self, ctx: commands.Context):
|
||||
"""Lock a bot to its current servers only."""
|
||||
serverlocked = await self.conf.serverlocked()
|
||||
await self.conf.serverlocked.set(not serverlocked)
|
||||
serverlocked = await self.config.serverlocked()
|
||||
await self.config.serverlocked.set(not serverlocked)
|
||||
|
||||
if serverlocked:
|
||||
await ctx.send(_("The bot is no longer serverlocked."))
|
||||
@@ -467,8 +467,9 @@ class Admin(commands.Cog):
|
||||
await ctx.send(_("The bot is now serverlocked."))
|
||||
|
||||
# region Event Handlers
|
||||
@commands.Cog.listener()
|
||||
async def on_guild_join(self, guild: discord.Guild):
|
||||
if await self.conf.serverlocked():
|
||||
if await self.config.serverlocked():
|
||||
await guild.leave()
|
||||
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import asyncio
|
||||
import discord
|
||||
from redbot.core import commands
|
||||
from redbot.core.i18n import Translator
|
||||
from redbot.core.utils import AsyncIter
|
||||
from redbot.core.utils.chat_formatting import humanize_list, inline
|
||||
|
||||
_ = Translator("Announcer", __file__)
|
||||
@@ -55,7 +56,7 @@ class Announcer:
|
||||
async def announcer(self):
|
||||
guild_list = self.ctx.bot.guilds
|
||||
failed = []
|
||||
for g in guild_list:
|
||||
async for g in AsyncIter(guild_list, delay=0.5):
|
||||
if not self.active:
|
||||
return
|
||||
|
||||
@@ -68,7 +69,6 @@ class Announcer:
|
||||
await channel.send(self.message)
|
||||
except discord.Forbidden:
|
||||
failed.append(str(g.id))
|
||||
await asyncio.sleep(0.5)
|
||||
|
||||
if failed:
|
||||
msg = (
|
||||
|
||||
@@ -14,8 +14,7 @@ class SelfRole(commands.Converter):
|
||||
role_converter = commands.RoleConverter()
|
||||
role = await role_converter.convert(ctx, arg)
|
||||
|
||||
conf = admin.conf
|
||||
selfroles = await conf.guild(ctx.guild).selfroles()
|
||||
selfroles = await admin.config.guild(ctx.guild).selfroles()
|
||||
|
||||
if role.id not in selfroles:
|
||||
raise commands.BadArgument(_("The provided role is not a valid selfrole."))
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Afrikaans\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: af\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: af_ZA\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Arabic\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: ar\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: ar_SA\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "لم يتم تحميل وحدة الأدمن cog."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr "الرتبة المذكورة ليست على قائمة الرتب الذاتية."
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Bulgarian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: bg\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: bg_BG\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Catalan\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: ca\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: ca_ES\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-03-05 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Czech\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: cs\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: cs_CZ\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -158,7 +158,7 @@ msgstr "Aplikovat self-role."
|
||||
#: redbot/cogs/admin/admin.py:375
|
||||
#, docstring
|
||||
msgid "\\n Add a selfrole to yourself.\\n\\n Server admins must have configured the role as user settable.\\n NOTE: The role is case sensitive!\\n "
|
||||
msgstr "\\n Odstraní vám self-roli.\\n\\n Administrátoři serveru musí mít nastavenou roli podle nastaveného uživatele.\\n POZNÁMKA: Role je citlivá na malá a velká písmena!\\n "
|
||||
msgstr "\\n Přidá vám self-roli.\\n\\n Administrátoři serveru musí mít nastavenou roli podle nastaveného uživatele.\\n POZNÁMKA: Role je citlivá na malá a velká písmena!\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:386
|
||||
#, docstring
|
||||
@@ -234,7 +234,7 @@ msgstr "Nemohu oznámit následujícím serverům: "
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "Admin cog není načten."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr "Daná role není platná self-role."
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Danish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: da\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: da_DK\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: de\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: de_DE\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr "Ich konnte die Ankündigung auf diesen Servern nicht ausführen: "
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "Das Admin-Cog ist nicht geladen."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr "Die angegebene Rolle ist keine gültige selbst auswählbare Rolle."
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:13\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Greek\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: el\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: el_GR\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:16\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: es-ES\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: es_ES\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -21,31 +21,31 @@ msgstr "Intenté hacer algo que Discord me ha negado el permiso. Su comando no s
|
||||
|
||||
#: redbot/cogs/admin/admin.py:22
|
||||
msgid "I can not give {role.name} to {member.display_name} because that role is higher than or equal to my highest role in the Discord hierarchy."
|
||||
msgstr ""
|
||||
msgstr "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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
msgid "I need manage roles permission to do that."
|
||||
msgstr ""
|
||||
msgstr "Necesito el permiso gestionar roles para hacerlo."
|
||||
|
||||
#: 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."
|
||||
@@ -58,7 +58,7 @@ msgstr "Una colección de utilidades de administración de servidores."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:126
|
||||
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
|
||||
msgid "I successfully added {role.name} to {member.display_name}"
|
||||
@@ -66,7 +66,7 @@ msgstr "He añadido con éxito {role.name} a {member.display_name}"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:156
|
||||
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
|
||||
msgid "I successfully removed {role.name} from {member.display_name}"
|
||||
@@ -75,12 +75,12 @@ msgstr "He retirado con éxito {role.name} de {member.display_name}"
|
||||
#: redbot/cogs/admin/admin.py:187
|
||||
#, 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 "
|
||||
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
|
||||
#, 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 "
|
||||
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
|
||||
#, docstring
|
||||
@@ -90,7 +90,7 @@ msgstr "Editar configuración de rol."
|
||||
#: redbot/cogs/admin/admin.py:224
|
||||
#, 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 "
|
||||
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
|
||||
msgid "Done."
|
||||
@@ -99,7 +99,7 @@ msgstr "Listo."
|
||||
#: redbot/cogs/admin/admin.py:257
|
||||
#, 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 "
|
||||
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
|
||||
#, docstring
|
||||
@@ -108,115 +108,115 @@ msgstr "Anunciar un mensaje a todos los servidores en que el bot está."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:298
|
||||
msgid "The announcement has begun."
|
||||
msgstr ""
|
||||
msgstr "El anuncio ha comenzado."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:305
|
||||
#, docstring
|
||||
msgid "Cancel a running announce."
|
||||
msgstr ""
|
||||
msgstr "Cancela un anuncio en ejecución."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:307
|
||||
msgid "There is no currently running announcement."
|
||||
msgstr ""
|
||||
msgstr "No hay ningún anuncio en ejecución."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:310
|
||||
msgid "The current announcement has been cancelled."
|
||||
msgstr ""
|
||||
msgstr "El anuncio actual ha sido cancelado."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:316
|
||||
#, docstring
|
||||
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
|
||||
#, 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 "
|
||||
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
|
||||
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
|
||||
#, docstring
|
||||
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
|
||||
msgid "The server {guild.name} will receive announcements."
|
||||
msgstr ""
|
||||
msgstr "El servidor {guild.name} recibirá anuncios."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:344
|
||||
msgid "The server {guild.name} will not receive announcements."
|
||||
msgstr ""
|
||||
msgstr "El servidor {guild.name} no recibirá anuncios."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:370
|
||||
#, docstring
|
||||
msgid "Apply selfroles."
|
||||
msgstr ""
|
||||
msgstr "Aplicar selfroles."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:375
|
||||
#, docstring
|
||||
msgid "\\n Add a selfrole to yourself.\\n\\n Server admins must have configured the role as user settable.\\n NOTE: The role is case sensitive!\\n "
|
||||
msgstr ""
|
||||
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
|
||||
#, 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 "
|
||||
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
|
||||
#, docstring
|
||||
msgid "\\n Lists all available selfroles.\\n "
|
||||
msgstr ""
|
||||
msgstr "\\n Lista de todos los selfroles disponibles.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:407
|
||||
msgid "Available Selfroles:\\n{selfroles}"
|
||||
msgstr ""
|
||||
msgstr "Selfroles disponibles:\\n{selfroles}"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:413
|
||||
#, docstring
|
||||
msgid "Manage selfroles."
|
||||
msgstr ""
|
||||
msgstr "Gestionar selfroles."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:418
|
||||
#, docstring
|
||||
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
|
||||
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
|
||||
msgid "Added."
|
||||
msgstr ""
|
||||
msgstr "Añadido."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:436
|
||||
msgid "That role is already a selfrole."
|
||||
msgstr ""
|
||||
msgstr "Ese rol ya es un selfrole."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:440
|
||||
#, docstring
|
||||
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
|
||||
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
|
||||
msgid "Removed."
|
||||
msgstr ""
|
||||
msgstr "Eliminado."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:460
|
||||
#, docstring
|
||||
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
|
||||
msgid "The bot is no longer serverlocked."
|
||||
msgstr ""
|
||||
msgstr "El bot ya no está bloqueado por el servidor."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:467
|
||||
msgid "The bot is now serverlocked."
|
||||
@@ -224,17 +224,17 @@ msgstr "El bot está bloqueado por el servidor."
|
||||
|
||||
#: redbot/cogs/admin/announcer.py:75
|
||||
msgid "I could not announce to the following server: "
|
||||
msgstr ""
|
||||
msgstr "No pude anunciar en el siguiente servidor: "
|
||||
|
||||
#: redbot/cogs/admin/announcer.py:77
|
||||
msgid "I could not announce to the following servers: "
|
||||
msgstr ""
|
||||
msgstr "No pude anunciar en los siguientes servidores: "
|
||||
|
||||
#: redbot/cogs/admin/converters.py:12
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "El cog Admin no está cargado."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr "El rol proporcionado no es un selfrole válido."
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:13\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Finnish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: fi\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: fi_FI\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-03-12 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: fr\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: fr_FR\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr "Je n'ai pas pu annoncer aux serveurs suivants : "
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "Le cog Admin n'est pas chargé."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr "Le rôle fourni n'est pas un auto-rôle valide."
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:13\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Hebrew\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: he\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: he_IL\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:13\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Hungarian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: hu\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: hu_HU\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:14\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Indonesian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: id\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: id_ID\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:14\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Italian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: it\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: it_IT\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "Il cog Admin non è caricato."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr "Il ruolo fornito non è un ruolo autoassegnabile valido."
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:14\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Japanese\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: ja\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: ja_JP\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:14\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Korean\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: ko\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: ko_KR\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -85,7 +85,7 @@ msgstr ""
|
||||
#: redbot/cogs/admin/admin.py:217
|
||||
#, docstring
|
||||
msgid "Edit role settings."
|
||||
msgstr ""
|
||||
msgstr "역할 설정을 변경했어요."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:224
|
||||
#, docstring
|
||||
@@ -113,7 +113,7 @@ msgstr ""
|
||||
#: redbot/cogs/admin/admin.py:305
|
||||
#, docstring
|
||||
msgid "Cancel a running announce."
|
||||
msgstr ""
|
||||
msgstr "실행 중인 공지사항을 취소했어요."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:307
|
||||
msgid "There is no currently running announcement."
|
||||
@@ -190,7 +190,7 @@ msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/admin.py:433
|
||||
msgid "Added."
|
||||
msgstr ""
|
||||
msgstr "추가됐어요."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:436
|
||||
msgid "That role is already a selfrole."
|
||||
@@ -207,7 +207,7 @@ msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/admin.py:455
|
||||
msgid "Removed."
|
||||
msgstr ""
|
||||
msgstr "제거됐어요."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:460
|
||||
#, docstring
|
||||
@@ -228,13 +228,13 @@ msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/announcer.py:77
|
||||
msgid "I could not announce to the following servers: "
|
||||
msgstr ""
|
||||
msgstr "다음과 같은 서버에 알릴 수 없어요. : "
|
||||
|
||||
#: redbot/cogs/admin/converters.py:12
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
msgstr "관리자 cog가 로드되지 않았어요."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Dutch\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: nl\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: nl_NL\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr "Ik kon de volgende servers niet aankondigen: "
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "De admin cog is niet geladen."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr "De ingevulde rol is geen beschikbare selfrole."
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:14\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Norwegian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: no\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: no_NO\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:14\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Polish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: pl\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: pl_PL\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "Moduł Admin nie jest załadowany."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-03-26 12:56\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Portuguese, Brazilian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: pt-BR\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: pt_BR\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -232,9 +232,9 @@ msgstr "Não pude anunciar nos seguintes servidores: "
|
||||
|
||||
#: redbot/cogs/admin/converters.py:12
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "A engrenagem Admin não está carregada."
|
||||
msgstr "O cog 'Admin' não está carregado."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr "O cargo fornecido não é um cargo autoatribuível válido."
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:15\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Portuguese\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: pt-PT\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: pt_PT\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -21,11 +21,11 @@ msgstr "Tentei fazer uma coisa que o Discord negou permissão para fazer. O coma
|
||||
|
||||
#: redbot/cogs/admin/admin.py:22
|
||||
msgid "I can not give {role.name} to {member.display_name} because that role is higher than or equal to my highest role in the Discord hierarchy."
|
||||
msgstr ""
|
||||
msgstr "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
|
||||
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
|
||||
msgid "I can not edit {role.name} because that role is higher than my or equal to highest role in the Discord hierarchy."
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "O cog 'Admin' não está carregado."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr "O cargo indicado não é um cargo definível válido."
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:15\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Romanian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: ro\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: ro_RO\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-03-05 12:14\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Russian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: ru\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: ru_RU\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr "Я не могу сделать объявление на следующ
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "Модуль Admin не загружен."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr "Предоставленная роль не является допустимой ролью."
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:16\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Slovak\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,17 +10,18 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: sk\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: sk_SK\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
|
||||
msgstr ""
|
||||
msgstr "Pokúsil som sa urobiť niečo, pre čo mi Discord odoprel povolenie. Váš príkaz sa nepodarilo úspešne dokončiť."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:22
|
||||
msgid "I can not give {role.name} to {member.display_name} because that role is higher than or equal to my highest role in the Discord hierarchy."
|
||||
msgstr ""
|
||||
msgstr "Nemôžem dať {role.name} na {member.display_name} pretože táto rola je vyššia alebo rovná mojej najvyššej rolí v Discord hierarchií."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:28
|
||||
msgid "I can not remove {role.name} from {member.display_name} because that role is higher than or equal to my highest role in the Discord hierarchy."
|
||||
@@ -49,20 +49,22 @@ msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/admin.py:60
|
||||
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
|
||||
msgstr ""
|
||||
msgstr "Už niečo oznamujem. Ak by ste chceli urobiť iné oznámenie, prosím, najskôr použite `{prefix} oznámiť zrušenie`."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:70
|
||||
#, docstring
|
||||
msgid "A collection of server administration utilities."
|
||||
msgstr ""
|
||||
msgstr "\n"
|
||||
"Zbierka obslužných programov pre správu servera."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:126
|
||||
msgid "{member.display_name} already has the role {role.name}."
|
||||
msgstr ""
|
||||
msgstr "{member.display_name} už má rolu {role.name}."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:146
|
||||
msgid "I successfully added {role.name} to {member.display_name}"
|
||||
msgstr ""
|
||||
msgstr "\n"
|
||||
"Úspešne som pridal {role.name} do {member.display_name}"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:156
|
||||
msgid "{member.display_name} does not have the role {role.name}."
|
||||
@@ -234,7 +236,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:15\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Serbian (Cyrillic)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: sr\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: sr_SP\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:16\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Swedish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: sv-SE\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: sv_SE\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "Admin cog är inte laddad."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr "Den angivna rollen är inte en giltig självroll."
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:16\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Turkish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: tr\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: tr_TR\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -21,31 +21,31 @@ msgstr "Bir şey denemeye çalıştım ancak Discord izinlerim yeterli olmadı.
|
||||
|
||||
#: redbot/cogs/admin/admin.py:22
|
||||
msgid "I can not give {role.name} to {member.display_name} because that role is higher than or equal to my highest role in the Discord hierarchy."
|
||||
msgstr ""
|
||||
msgstr "{member.display_name} kullanıcısına {role.name} veremiyorum çünkü bu rol kendi rolümden daha yüksek bir pozisyonda."
|
||||
|
||||
#: 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."
|
||||
msgstr ""
|
||||
msgstr "{member.display_name} kullanıcısından {role.name} rolünü kaldıramıyorum çünkü bu rolümden daha yüksek pozisyonda."
|
||||
|
||||
#: 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."
|
||||
msgstr ""
|
||||
msgstr "{role.name} kullanıcısının rolünü düzenleyemiyorum, çünkü bu rolümden daha yüksek pozisyonda."
|
||||
|
||||
#: 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."
|
||||
msgstr ""
|
||||
msgstr "{member.display_name} kullanıcısına {role.name} rolünü vermene müsaade edemem çünkü bu rol senin mevcut rolünden daha yüksek durumda."
|
||||
|
||||
#: 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."
|
||||
msgstr ""
|
||||
msgstr "{member.display_name} kullanıcısının {role.name} rolünü silmene müsaade edemem çünkü bu rol mevcut rolünden daha yüksek durumda."
|
||||
|
||||
#: 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."
|
||||
msgstr ""
|
||||
msgstr "{role.name} rolünü düzenlemene müsaade edemem çünkü bu rol mevcut rolünden daha yüksek durumda."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:58
|
||||
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
|
||||
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
|
||||
@@ -54,52 +54,52 @@ msgstr "Zaten şuan da bir duyuru yapmaktayım. Başka bir duyuru yapmak istiyor
|
||||
#: redbot/cogs/admin/admin.py:70
|
||||
#, docstring
|
||||
msgid "A collection of server administration utilities."
|
||||
msgstr "Sunucu yönetimiyle ilgili ayarlar"
|
||||
msgstr "Sunucu yönetimiyle ilgili ayarlar."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:126
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
#, 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 "
|
||||
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
|
||||
#, 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 "
|
||||
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
|
||||
#, docstring
|
||||
msgid "Edit role settings."
|
||||
msgstr "Rol ayarlarını düzenle"
|
||||
msgstr "Rol ayarlarını düzenle."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:224
|
||||
#, 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 "
|
||||
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
|
||||
msgid "Done."
|
||||
msgstr "Tamamdır."
|
||||
msgstr "Tamamlandı."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:257
|
||||
#, 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 "
|
||||
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
|
||||
#, docstring
|
||||
@@ -117,7 +117,7 @@ msgstr "Şuan yapılan duyuruyu iptal eder."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:307
|
||||
msgid "There is no currently running announcement."
|
||||
msgstr ""
|
||||
msgstr "Şu anda yapılan bir duyuru mevcut değil."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:310
|
||||
msgid "The current announcement has been cancelled."
|
||||
@@ -126,12 +126,12 @@ msgstr "Şuan yapılan duyuru iptal edildi."
|
||||
#: redbot/cogs/admin/admin.py:316
|
||||
#, docstring
|
||||
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
|
||||
#, 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 "
|
||||
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
|
||||
msgid "The announcement channel has been set to {channel.mention}"
|
||||
@@ -144,70 +144,70 @@ msgstr "Duyuru sistemi bu sunucu için aktif edildi."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:340
|
||||
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
|
||||
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
|
||||
#, docstring
|
||||
msgid "Apply selfroles."
|
||||
msgstr ""
|
||||
msgstr "Kişisel rol ekle."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:375
|
||||
#, docstring
|
||||
msgid "\\n Add a selfrole to yourself.\\n\\n Server admins must have configured the role as user settable.\\n NOTE: The role is case sensitive!\\n "
|
||||
msgstr ""
|
||||
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
|
||||
#, 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 "
|
||||
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
|
||||
#, docstring
|
||||
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
|
||||
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
|
||||
#, docstring
|
||||
msgid "Manage selfroles."
|
||||
msgstr ""
|
||||
msgstr "Kişisel rolleri düzenle."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:418
|
||||
#, docstring
|
||||
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
|
||||
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 mevcut rolünden daha yüksek."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:433
|
||||
msgid "Added."
|
||||
msgstr ""
|
||||
msgstr "Eklendi."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:436
|
||||
msgid "That role is already a selfrole."
|
||||
msgstr ""
|
||||
msgstr "Bu rol zaten bir kişisel rol."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:440
|
||||
#, docstring
|
||||
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
|
||||
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 mevcut rolünden daha yüksek."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:455
|
||||
msgid "Removed."
|
||||
msgstr ""
|
||||
msgstr "Kaldırıldı."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:460
|
||||
#, docstring
|
||||
@@ -216,25 +216,25 @@ msgstr "Botu şuan bulunduğu sunucularda kilitler."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:465
|
||||
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
|
||||
msgid "The bot is now serverlocked."
|
||||
msgstr "Bot şuan sunucularda kilitli."
|
||||
msgstr "Botun sunucu kilidi aktif."
|
||||
|
||||
#: redbot/cogs/admin/announcer.py:75
|
||||
msgid "I could not announce to the following server: "
|
||||
msgstr ""
|
||||
msgstr "Bu sunucuya duyuru yapamıyorum: "
|
||||
|
||||
#: redbot/cogs/admin/announcer.py:77
|
||||
msgid "I could not announce to the following servers: "
|
||||
msgstr ""
|
||||
msgstr "Bu sunuculara duyuru yapamıyorum: "
|
||||
|
||||
#: redbot/cogs/admin/converters.py:12
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr "The Admin eklentisi yüklenmedi."
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr "Girilen selfrol geçerli değil."
|
||||
msgstr "Girilen kişisel rol geçerli bir kişisel rol değil."
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:16\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Ukrainian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: uk\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: uk_UA\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:16\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Vietnamese\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: vi\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: vi_VN\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: zh-CN\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: zh_CN\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Traditional, Hong Kong\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: zh-HK\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: zh_HK\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-02-08 18:08+0000\n"
|
||||
"PO-Revision-Date: 2020-02-13 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-04-23 12:07+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Traditional\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,8 +10,9 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: zh-TW\n"
|
||||
"X-Crowdin-File: /cogs/admin/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 42\n"
|
||||
"Language: zh_TW\n"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:17
|
||||
@@ -234,7 +234,7 @@ msgstr ""
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/admin/converters.py:21
|
||||
#: redbot/cogs/admin/converters.py:20
|
||||
msgid "The provided role is not a valid selfrole."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2,5 +2,7 @@ from .alias import Alias
|
||||
from redbot.core.bot import Red
|
||||
|
||||
|
||||
def setup(bot: Red):
|
||||
bot.add_cog(Alias(bot))
|
||||
async def setup(bot: Red):
|
||||
cog = Alias(bot)
|
||||
await cog.initialize()
|
||||
bot.add_cog(cog)
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
from copy import copy
|
||||
from re import findall, search
|
||||
from re import search
|
||||
from string import Formatter
|
||||
from typing import Generator, Tuple, Iterable, Optional
|
||||
from typing import Dict, List
|
||||
|
||||
import discord
|
||||
from discord.ext.commands.view import StringView
|
||||
from redbot.core import Config, commands, checks
|
||||
from redbot.core.i18n import Translator, cog_i18n
|
||||
from redbot.core.utils.chat_formatting import box
|
||||
from redbot.core.utils.chat_formatting import box, pagify
|
||||
from redbot.core.utils.menus import menu, DEFAULT_CONTROLS
|
||||
|
||||
from redbot.core.bot import Red
|
||||
from .alias_entry import AliasEntry
|
||||
from .alias_entry import AliasEntry, AliasCache, ArgParseError
|
||||
|
||||
_ = Translator("Alias", __file__)
|
||||
|
||||
@@ -26,10 +26,6 @@ class _TrackingFormatter(Formatter):
|
||||
return super().get_value(key, args, kwargs)
|
||||
|
||||
|
||||
class ArgParseError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
@cog_i18n(_)
|
||||
class Alias(commands.Cog):
|
||||
"""Create aliases for commands.
|
||||
@@ -42,51 +38,23 @@ class Alias(commands.Cog):
|
||||
and append them to the stored alias.
|
||||
"""
|
||||
|
||||
default_global_settings = {"entries": []}
|
||||
default_global_settings: Dict[str, list] = {"entries": []}
|
||||
|
||||
default_guild_settings = {"enabled": False, "entries": []} # Going to be a list of dicts
|
||||
default_guild_settings: Dict[str, list] = {"entries": []} # Going to be a list of dicts
|
||||
|
||||
def __init__(self, bot: Red):
|
||||
super().__init__()
|
||||
self.bot = bot
|
||||
self._aliases = Config.get_conf(self, 8927348724)
|
||||
self.config = Config.get_conf(self, 8927348724)
|
||||
|
||||
self._aliases.register_global(**self.default_global_settings)
|
||||
self._aliases.register_guild(**self.default_guild_settings)
|
||||
self.config.register_global(**self.default_global_settings)
|
||||
self.config.register_guild(**self.default_guild_settings)
|
||||
self._aliases: AliasCache = AliasCache(config=self.config, cache_enabled=True)
|
||||
|
||||
async def unloaded_aliases(self, guild: discord.Guild) -> Generator[AliasEntry, None, None]:
|
||||
return (AliasEntry.from_json(d) for d in (await self._aliases.guild(guild).entries()))
|
||||
|
||||
async def unloaded_global_aliases(self) -> Generator[AliasEntry, None, None]:
|
||||
return (AliasEntry.from_json(d) for d in (await self._aliases.entries()))
|
||||
|
||||
async def loaded_aliases(self, guild: discord.Guild) -> Generator[AliasEntry, None, None]:
|
||||
return (
|
||||
AliasEntry.from_json(d, bot=self.bot)
|
||||
for d in (await self._aliases.guild(guild).entries())
|
||||
)
|
||||
|
||||
async def loaded_global_aliases(self) -> Generator[AliasEntry, None, None]:
|
||||
return (AliasEntry.from_json(d, bot=self.bot) for d in (await self._aliases.entries()))
|
||||
|
||||
async def is_alias(
|
||||
self,
|
||||
guild: Optional[discord.Guild],
|
||||
alias_name: str,
|
||||
server_aliases: Iterable[AliasEntry] = (),
|
||||
) -> Tuple[bool, Optional[AliasEntry]]:
|
||||
|
||||
if not server_aliases and guild is not None:
|
||||
server_aliases = await self.unloaded_aliases(guild)
|
||||
|
||||
global_aliases = await self.unloaded_global_aliases()
|
||||
|
||||
for aliases in (server_aliases, global_aliases):
|
||||
for alias in aliases:
|
||||
if alias.name == alias_name:
|
||||
return True, alias
|
||||
|
||||
return False, None
|
||||
async def initialize(self):
|
||||
# This can be where we set the cache_enabled attribute later
|
||||
if not self._aliases._loaded:
|
||||
await self._aliases.load_aliases()
|
||||
|
||||
def is_command(self, alias_name: str) -> bool:
|
||||
"""
|
||||
@@ -100,56 +68,6 @@ class Alias(commands.Cog):
|
||||
def is_valid_alias_name(alias_name: str) -> bool:
|
||||
return not bool(search(r"\s", alias_name)) and alias_name.isprintable()
|
||||
|
||||
async def add_alias(
|
||||
self, ctx: commands.Context, alias_name: str, command: str, global_: bool = False
|
||||
) -> AliasEntry:
|
||||
indices = findall(r"{(\d*)}", command)
|
||||
if indices:
|
||||
try:
|
||||
indices = [int(a[0]) for a in indices]
|
||||
except IndexError:
|
||||
raise ArgParseError(_("Arguments must be specified with a number."))
|
||||
low = min(indices)
|
||||
indices = [a - low for a in indices]
|
||||
high = max(indices)
|
||||
gaps = set(indices).symmetric_difference(range(high + 1))
|
||||
if gaps:
|
||||
raise ArgParseError(
|
||||
_("Arguments must be sequential. Missing arguments: ")
|
||||
+ ", ".join(str(i + low) for i in gaps)
|
||||
)
|
||||
command = command.format(*(f"{{{i}}}" for i in range(-low, high + low + 1)))
|
||||
|
||||
alias = AliasEntry(alias_name, command, ctx.author, global_=global_)
|
||||
|
||||
if global_:
|
||||
settings = self._aliases
|
||||
else:
|
||||
settings = self._aliases.guild(ctx.guild)
|
||||
await settings.enabled.set(True)
|
||||
|
||||
async with settings.entries() as curr_aliases:
|
||||
curr_aliases.append(alias.to_json())
|
||||
|
||||
return alias
|
||||
|
||||
async def delete_alias(
|
||||
self, ctx: commands.Context, alias_name: str, global_: bool = False
|
||||
) -> bool:
|
||||
if global_:
|
||||
settings = self._aliases
|
||||
else:
|
||||
settings = self._aliases.guild(ctx.guild)
|
||||
|
||||
async with settings.entries() as aliases:
|
||||
for alias in aliases:
|
||||
alias_obj = AliasEntry.from_json(alias)
|
||||
if alias_obj.name == alias_name:
|
||||
aliases.remove(alias)
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
async def get_prefix(self, message: discord.Message) -> str:
|
||||
"""
|
||||
Tries to determine what prefix is used in a message object.
|
||||
@@ -167,57 +85,11 @@ class Alias(commands.Cog):
|
||||
return p
|
||||
raise ValueError(_("No prefix found."))
|
||||
|
||||
def get_extra_args_from_alias(
|
||||
self, message: discord.Message, prefix: str, alias: AliasEntry
|
||||
) -> str:
|
||||
"""
|
||||
When an alias is executed by a user in chat this function tries
|
||||
to get any extra arguments passed in with the call.
|
||||
Whitespace will be trimmed from both ends.
|
||||
:param message:
|
||||
:param prefix:
|
||||
:param alias:
|
||||
:return:
|
||||
"""
|
||||
known_content_length = len(prefix) + len(alias.name)
|
||||
extra = message.content[known_content_length:]
|
||||
view = StringView(extra)
|
||||
view.skip_ws()
|
||||
extra = []
|
||||
while not view.eof:
|
||||
prev = view.index
|
||||
word = view.get_quoted_word()
|
||||
if len(word) < view.index - prev:
|
||||
word = "".join((view.buffer[prev], word, view.buffer[view.index - 1]))
|
||||
extra.append(word)
|
||||
view.skip_ws()
|
||||
return extra
|
||||
|
||||
async def maybe_call_alias(
|
||||
self, message: discord.Message, aliases: Iterable[AliasEntry] = None
|
||||
):
|
||||
try:
|
||||
prefix = await self.get_prefix(message)
|
||||
except ValueError:
|
||||
return
|
||||
|
||||
try:
|
||||
potential_alias = message.content[len(prefix) :].split(" ")[0]
|
||||
except IndexError:
|
||||
return False
|
||||
|
||||
is_alias, alias = await self.is_alias(
|
||||
message.guild, potential_alias, server_aliases=aliases
|
||||
)
|
||||
|
||||
if is_alias:
|
||||
await self.call_alias(message, prefix, alias)
|
||||
|
||||
async def call_alias(self, message: discord.Message, prefix: str, alias: AliasEntry):
|
||||
new_message = copy(message)
|
||||
try:
|
||||
args = self.get_extra_args_from_alias(message, prefix, alias)
|
||||
except commands.BadArgument as bae:
|
||||
args = alias.get_extra_args_from_alias(message, prefix)
|
||||
except commands.BadArgument:
|
||||
return
|
||||
|
||||
trackform = _TrackingFormatter()
|
||||
@@ -229,8 +101,29 @@ class Alias(commands.Cog):
|
||||
)
|
||||
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.guild_only()
|
||||
async def alias(self, ctx: commands.Context):
|
||||
"""Manage command aliases."""
|
||||
pass
|
||||
@@ -257,13 +150,13 @@ class Alias(commands.Cog):
|
||||
)
|
||||
return
|
||||
|
||||
is_alias, something_useless = await self.is_alias(ctx.guild, alias_name)
|
||||
if is_alias:
|
||||
alias = await self._aliases.get_alias(ctx.guild, alias_name)
|
||||
if alias:
|
||||
await ctx.send(
|
||||
_(
|
||||
"You attempted to create a new alias"
|
||||
" with the name {name} but that"
|
||||
" alias already exists on this server."
|
||||
" alias already exists."
|
||||
).format(name=alias_name)
|
||||
)
|
||||
return
|
||||
@@ -292,7 +185,7 @@ class Alias(commands.Cog):
|
||||
# and that the alias name is valid.
|
||||
|
||||
try:
|
||||
await self.add_alias(ctx, alias_name, command)
|
||||
await self._aliases.add_alias(ctx, alias_name, command)
|
||||
except ArgParseError as e:
|
||||
return await ctx.send(" ".join(e.args))
|
||||
|
||||
@@ -316,13 +209,13 @@ class Alias(commands.Cog):
|
||||
)
|
||||
return
|
||||
|
||||
is_alias, something_useless = await self.is_alias(ctx.guild, alias_name)
|
||||
if is_alias:
|
||||
alias = await self._aliases.get_alias(None, alias_name)
|
||||
if alias:
|
||||
await ctx.send(
|
||||
_(
|
||||
"You attempted to create a new global alias"
|
||||
" with the name {name} but that"
|
||||
" alias already exists on this server."
|
||||
" alias already exists."
|
||||
).format(name=alias_name)
|
||||
)
|
||||
return
|
||||
@@ -338,10 +231,17 @@ class Alias(commands.Cog):
|
||||
).format(name=alias_name)
|
||||
)
|
||||
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
|
||||
|
||||
try:
|
||||
await self.add_alias(ctx, alias_name, command, global_=True)
|
||||
await self._aliases.add_alias(ctx, alias_name, command, global_=True)
|
||||
except ArgParseError as e:
|
||||
return await ctx.send(" ".join(e.args))
|
||||
|
||||
@@ -352,29 +252,20 @@ class Alias(commands.Cog):
|
||||
)
|
||||
|
||||
@alias.command(name="help")
|
||||
@commands.guild_only()
|
||||
async def _help_alias(self, ctx: commands.Context, alias_name: str):
|
||||
"""Try to execute help for the base command of the alias."""
|
||||
is_alias, alias = await self.is_alias(ctx.guild, alias_name=alias_name)
|
||||
if is_alias:
|
||||
if self.is_command(alias.command):
|
||||
base_cmd = alias.command
|
||||
else:
|
||||
base_cmd = alias.command.rsplit(" ", 1)[0]
|
||||
|
||||
new_msg = copy(ctx.message)
|
||||
new_msg.content = f"{ctx.prefix}help {base_cmd}"
|
||||
await self.bot.process_commands(new_msg)
|
||||
alias = await self._aliases.get_alias(ctx.guild, alias_name=alias_name)
|
||||
if alias:
|
||||
await self.bot.send_help_for(ctx, alias.command)
|
||||
else:
|
||||
await ctx.send(_("No such alias exists."))
|
||||
|
||||
@alias.command(name="show")
|
||||
@commands.guild_only()
|
||||
async def _show_alias(self, ctx: commands.Context, alias_name: str):
|
||||
"""Show what command the alias executes."""
|
||||
is_alias, alias = await self.is_alias(ctx.guild, alias_name)
|
||||
alias = await self._aliases.get_alias(ctx.guild, alias_name)
|
||||
|
||||
if is_alias:
|
||||
if alias:
|
||||
await ctx.send(
|
||||
_("The `{alias_name}` alias will execute the command `{command}`").format(
|
||||
alias_name=alias_name, command=alias.command
|
||||
@@ -388,14 +279,11 @@ class Alias(commands.Cog):
|
||||
@commands.guild_only()
|
||||
async def _del_alias(self, ctx: commands.Context, alias_name: str):
|
||||
"""Delete an existing alias on this server."""
|
||||
aliases = await self.unloaded_aliases(ctx.guild)
|
||||
try:
|
||||
next(aliases)
|
||||
except StopIteration:
|
||||
if not await self._aliases.get_guild_aliases(ctx.guild):
|
||||
await ctx.send(_("There are no aliases on this server."))
|
||||
return
|
||||
|
||||
if await self.delete_alias(ctx, alias_name):
|
||||
if await self._aliases.delete_alias(ctx, alias_name):
|
||||
await ctx.send(
|
||||
_("Alias with the name `{name}` was successfully deleted.").format(name=alias_name)
|
||||
)
|
||||
@@ -406,14 +294,11 @@ class Alias(commands.Cog):
|
||||
@global_.command(name="delete", aliases=["del", "remove"])
|
||||
async def _del_global_alias(self, ctx: commands.Context, alias_name: str):
|
||||
"""Delete an existing global alias."""
|
||||
aliases = await self.unloaded_global_aliases()
|
||||
try:
|
||||
next(aliases)
|
||||
except StopIteration:
|
||||
await ctx.send(_("There are no aliases on this bot."))
|
||||
if not await self._aliases.get_global_aliases():
|
||||
await ctx.send(_("There are no global aliases on this bot."))
|
||||
return
|
||||
|
||||
if await self.delete_alias(ctx, alias_name, global_=True):
|
||||
if await self._aliases.delete_alias(ctx, alias_name, global_=True):
|
||||
await ctx.send(
|
||||
_("Alias with the name `{name}` was successfully deleted.").format(name=alias_name)
|
||||
)
|
||||
@@ -422,34 +307,36 @@ class Alias(commands.Cog):
|
||||
|
||||
@alias.command(name="list")
|
||||
@commands.guild_only()
|
||||
@checks.bot_has_permissions(add_reactions=True)
|
||||
async def _list_alias(self, ctx: commands.Context):
|
||||
"""List the available aliases on this server."""
|
||||
names = [_("Aliases:")] + sorted(
|
||||
["+ " + a.name for a in (await self.unloaded_aliases(ctx.guild))]
|
||||
)
|
||||
if len(names) == 0:
|
||||
await ctx.send(_("There are no aliases on this server."))
|
||||
else:
|
||||
await ctx.send(box("\n".join(names), "diff"))
|
||||
guild_aliases = await self._aliases.get_guild_aliases(ctx.guild)
|
||||
if not guild_aliases:
|
||||
return await ctx.send(_("There are no aliases on this server."))
|
||||
await self.paginate_alias_list(ctx, guild_aliases)
|
||||
|
||||
@global_.command(name="list")
|
||||
@checks.bot_has_permissions(add_reactions=True)
|
||||
async def _list_global_alias(self, ctx: commands.Context):
|
||||
"""List the available global aliases on this bot."""
|
||||
names = [_("Aliases:")] + sorted(
|
||||
["+ " + a.name for a in await self.unloaded_global_aliases()]
|
||||
)
|
||||
if len(names) == 0:
|
||||
await ctx.send(_("There are no aliases on this server."))
|
||||
else:
|
||||
await ctx.send(box("\n".join(names), "diff"))
|
||||
global_aliases = await self._aliases.get_global_aliases()
|
||||
if not global_aliases:
|
||||
return await ctx.send(_("There are no global aliases."))
|
||||
await self.paginate_alias_list(ctx, global_aliases)
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_message(self, message: discord.Message):
|
||||
aliases = list(await self.unloaded_global_aliases())
|
||||
if message.guild is not None:
|
||||
aliases = aliases + list(await self.unloaded_aliases(message.guild))
|
||||
|
||||
if len(aliases) == 0:
|
||||
async def on_message_without_command(self, message: discord.Message):
|
||||
try:
|
||||
prefix = await self.get_prefix(message)
|
||||
except ValueError:
|
||||
return
|
||||
|
||||
await self.maybe_call_alias(message, aliases=aliases)
|
||||
try:
|
||||
potential_alias = message.content[len(prefix) :].split(" ")[0]
|
||||
except IndexError:
|
||||
return
|
||||
|
||||
alias = await self._aliases.get_alias(message.guild, potential_alias)
|
||||
|
||||
if alias:
|
||||
await self.call_alias(message, prefix, alias)
|
||||
|
||||
@@ -1,25 +1,37 @@
|
||||
from typing import Tuple
|
||||
from typing import Tuple, Dict, Optional, List, Union
|
||||
from re import findall
|
||||
|
||||
import discord
|
||||
from redbot.core import commands
|
||||
from discord.ext.commands.view import StringView
|
||||
from redbot.core import commands, Config
|
||||
from redbot.core.i18n import Translator
|
||||
from redbot.core.utils import AsyncIter
|
||||
|
||||
_ = Translator("Alias", __file__)
|
||||
|
||||
|
||||
class ArgParseError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class AliasEntry:
|
||||
"""An object containing all required information about an alias"""
|
||||
|
||||
name: str
|
||||
command: Union[Tuple[str], str]
|
||||
creator: int
|
||||
guild: Optional[int]
|
||||
uses: int
|
||||
|
||||
def __init__(
|
||||
self, name: str, command: Tuple[str], creator: discord.Member, global_: bool = False
|
||||
self, name: str, command: Union[Tuple[str], str], creator: int, guild: Optional[int],
|
||||
):
|
||||
super().__init__()
|
||||
self.has_real_data = False
|
||||
self.name = name
|
||||
self.command = command
|
||||
self.creator = creator
|
||||
|
||||
self.global_ = global_
|
||||
|
||||
self.guild = None
|
||||
if hasattr(creator, "guild"):
|
||||
self.guild = creator.guild
|
||||
|
||||
self.guild = guild
|
||||
self.uses = 0
|
||||
|
||||
def inc(self):
|
||||
@@ -30,34 +42,182 @@ class AliasEntry:
|
||||
self.uses += 1
|
||||
return self.uses
|
||||
|
||||
def get_extra_args_from_alias(self, message: discord.Message, prefix: str) -> str:
|
||||
"""
|
||||
When an alias is executed by a user in chat this function tries
|
||||
to get any extra arguments passed in with the call.
|
||||
Whitespace will be trimmed from both ends.
|
||||
:param message:
|
||||
:param prefix:
|
||||
:param alias:
|
||||
:return:
|
||||
"""
|
||||
known_content_length = len(prefix) + len(self.name)
|
||||
extra = message.content[known_content_length:]
|
||||
view = StringView(extra)
|
||||
view.skip_ws()
|
||||
extra = []
|
||||
while not view.eof:
|
||||
prev = view.index
|
||||
word = view.get_quoted_word()
|
||||
if len(word) < view.index - prev:
|
||||
word = "".join((view.buffer[prev], word, view.buffer[view.index - 1]))
|
||||
extra.append(word)
|
||||
view.skip_ws()
|
||||
return extra
|
||||
|
||||
def to_json(self) -> dict:
|
||||
try:
|
||||
creator = str(self.creator.id)
|
||||
guild = str(self.guild.id)
|
||||
except AttributeError:
|
||||
creator = self.creator
|
||||
guild = self.guild
|
||||
|
||||
return {
|
||||
"name": self.name,
|
||||
"command": self.command,
|
||||
"creator": creator,
|
||||
"guild": guild,
|
||||
"global": self.global_,
|
||||
"creator": self.creator,
|
||||
"guild": self.guild,
|
||||
"uses": self.uses,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, data: dict, bot: commands.Bot = None):
|
||||
ret = cls(data["name"], data["command"], data["creator"], global_=data["global"])
|
||||
|
||||
if bot:
|
||||
ret.has_real_data = True
|
||||
ret.creator = bot.get_user(int(data["creator"]))
|
||||
guild = bot.get_guild(int(data["guild"]))
|
||||
ret.guild = guild
|
||||
else:
|
||||
ret.guild = data["guild"]
|
||||
|
||||
def from_json(cls, data: dict):
|
||||
ret = cls(data["name"], data["command"], data["creator"], data["guild"])
|
||||
ret.uses = data.get("uses", 0)
|
||||
return ret
|
||||
|
||||
|
||||
class AliasCache:
|
||||
def __init__(self, config: Config, cache_enabled: bool = True):
|
||||
self.config = config
|
||||
self._cache_enabled = cache_enabled
|
||||
self._loaded = False
|
||||
self._aliases: Dict[Optional[int], Dict[str, AliasEntry]] = {None: {}}
|
||||
|
||||
async def load_aliases(self):
|
||||
if not self._cache_enabled:
|
||||
self._loaded = True
|
||||
return
|
||||
for alias in await self.config.entries():
|
||||
self._aliases[None][alias["name"]] = AliasEntry.from_json(alias)
|
||||
|
||||
all_guilds = await self.config.all_guilds()
|
||||
async for guild_id, guild_data in AsyncIter(all_guilds.items(), steps=100):
|
||||
if guild_id not in self._aliases:
|
||||
self._aliases[guild_id] = {}
|
||||
for alias in guild_data["entries"]:
|
||||
self._aliases[guild_id][alias["name"]] = AliasEntry.from_json(alias)
|
||||
self._loaded = True
|
||||
|
||||
async def get_aliases(self, ctx: commands.Context) -> List[AliasEntry]:
|
||||
"""Returns all possible aliases with the given context"""
|
||||
global_aliases: List[AliasEntry] = []
|
||||
server_aliases: List[AliasEntry] = []
|
||||
global_aliases = await self.get_global_aliases()
|
||||
if ctx.guild and ctx.guild.id in self._aliases:
|
||||
server_aliases = await self.get_guild_aliases(ctx.guild)
|
||||
return global_aliases + server_aliases
|
||||
|
||||
async def get_guild_aliases(self, guild: discord.Guild) -> List[AliasEntry]:
|
||||
"""Returns all guild specific aliases"""
|
||||
aliases: List[AliasEntry] = []
|
||||
|
||||
if self._cache_enabled:
|
||||
if guild.id in self._aliases:
|
||||
for _, alias in self._aliases[guild.id].items():
|
||||
aliases.append(alias)
|
||||
else:
|
||||
aliases = [AliasEntry.from_json(d) for d in await self.config.guild(guild).entries()]
|
||||
return aliases
|
||||
|
||||
async def get_global_aliases(self) -> List[AliasEntry]:
|
||||
"""Returns all global specific aliases"""
|
||||
aliases: List[AliasEntry] = []
|
||||
if self._cache_enabled:
|
||||
for _, alias in self._aliases[None].items():
|
||||
aliases.append(alias)
|
||||
else:
|
||||
aliases = [AliasEntry.from_json(d) for d in await self.config.entries()]
|
||||
return aliases
|
||||
|
||||
async def get_alias(
|
||||
self, guild: Optional[discord.Guild], alias_name: str,
|
||||
) -> Optional[AliasEntry]:
|
||||
"""Returns an AliasEntry object if the provided alias_name is a registered alias"""
|
||||
server_aliases: List[AliasEntry] = []
|
||||
|
||||
if self._cache_enabled:
|
||||
if alias_name in self._aliases[None]:
|
||||
return self._aliases[None][alias_name]
|
||||
if guild is not None:
|
||||
if guild.id in self._aliases:
|
||||
if alias_name in self._aliases[guild.id]:
|
||||
return self._aliases[guild.id][alias_name]
|
||||
else:
|
||||
if guild:
|
||||
server_aliases = [
|
||||
AliasEntry.from_json(d) for d in await self.config.guild(guild.id).entries()
|
||||
]
|
||||
global_aliases = [AliasEntry.from_json(d) for d in await self.config.entries()]
|
||||
all_aliases = global_aliases + server_aliases
|
||||
|
||||
for alias in all_aliases:
|
||||
if alias.name == alias_name:
|
||||
return alias
|
||||
|
||||
return None
|
||||
|
||||
async def add_alias(
|
||||
self, ctx: commands.Context, alias_name: str, command: str, global_: bool = False
|
||||
) -> AliasEntry:
|
||||
indices = findall(r"{(\d*)}", command)
|
||||
if indices:
|
||||
try:
|
||||
indices = [int(a[0]) for a in indices]
|
||||
except IndexError:
|
||||
raise ArgParseError(_("Arguments must be specified with a number."))
|
||||
low = min(indices)
|
||||
indices = [a - low for a in indices]
|
||||
high = max(indices)
|
||||
gaps = set(indices).symmetric_difference(range(high + 1))
|
||||
if gaps:
|
||||
raise ArgParseError(
|
||||
_("Arguments must be sequential. Missing arguments: ")
|
||||
+ ", ".join(str(i + low) for i in gaps)
|
||||
)
|
||||
command = command.format(*(f"{{{i}}}" for i in range(-low, high + low + 1)))
|
||||
|
||||
if global_:
|
||||
alias = AliasEntry(alias_name, command, ctx.author.id, None)
|
||||
settings = self.config
|
||||
if self._cache_enabled:
|
||||
self._aliases[None][alias.name] = alias
|
||||
else:
|
||||
alias = AliasEntry(alias_name, command, ctx.author.id, ctx.guild.id)
|
||||
settings = self.config.guild(ctx.guild)
|
||||
if self._cache_enabled:
|
||||
if ctx.guild.id not in self._aliases:
|
||||
self._aliases[ctx.guild.id] = {}
|
||||
self._aliases[ctx.guild.id][alias.name] = alias
|
||||
|
||||
async with settings.entries() as curr_aliases:
|
||||
curr_aliases.append(alias.to_json())
|
||||
|
||||
return alias
|
||||
|
||||
async def delete_alias(
|
||||
self, ctx: commands.Context, alias_name: str, global_: bool = False
|
||||
) -> bool:
|
||||
if global_:
|
||||
settings = self.config
|
||||
else:
|
||||
settings = self.config.guild(ctx.guild)
|
||||
|
||||
async with settings.entries() as aliases:
|
||||
for alias in aliases:
|
||||
if alias["name"] == alias_name:
|
||||
aliases.remove(alias)
|
||||
if self._cache_enabled:
|
||||
if global_:
|
||||
del self._aliases[None][alias_name]
|
||||
else:
|
||||
del self._aliases[ctx.guild.id][alias_name]
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:10\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Afrikaans\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: af\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: af_ZA\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:10\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Arabic\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: ar\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: ar_SA\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:10\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Bulgarian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: bg\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: bg_BG\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "Този псевдоним не съществува."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr "Няма използвани псевдоними на този сървър."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "Няма псевдоними положени към този бот."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Псевдоними:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:10\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Catalan\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: ca\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: ca_ES\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Czech\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: cs\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: cs_CZ\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr "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
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr "Spravovat aliasy příkazů."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr "Správa globálních aliasů."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr "Přidat alias pro příkaz."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
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:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: 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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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:179 redbot/cogs/alias/alias.py:238
|
||||
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:193
|
||||
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:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr "Přidat globální alias pro příkaz."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
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:249
|
||||
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:256
|
||||
#, docstring
|
||||
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:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "Žádný takový alias neexistuje."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr "Zobrazit příkaz ke spustitelnému aliasu."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr "Alias `{alias_name} provede příkaz `{command}"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr "Neexistuje žádný alias s názvem `{name}`"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
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:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr "Na tomto serveru nejsou žádné aliasy."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
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:291 redbot/cogs/alias/alias.py:306
|
||||
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:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr "Odstranit existující globální alias."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr ""
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr "Pro tohoto bota neexistují žádné globální aliasy."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr "Seznam dostupných aliasů na tomto serveru."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Aliasy:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
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:324
|
||||
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: "
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Danish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: da\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: da_DK\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: de\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: de_DE\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr "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
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
msgstr "Es wurde kein Prefix gefunden."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:235
|
||||
#: redbot/cogs/alias/alias.py:116
|
||||
msgid "Aliases:\\n"
|
||||
msgstr "Aliase:\\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:118
|
||||
msgid "\\n\\nPage {page}/{total}"
|
||||
msgstr "\\n\\nSeite {page}/{total}"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr "Verwalte die Alias Befehle."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr "Verwalte die globalen Aliasse."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr "Füge einen Alias für einen Befehl hinzu."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
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."
|
||||
|
||||
#: 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 "Du hast versucht einen neuen Alias mit dem Namen {name} zu erstellen, aber dieser Alias existiert bereits auf dem Server."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
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:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr "Ein neuer Alias mit dem Namen`{name}` wurde erstellt."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr "Füge einen globalen Alias für einen Befehl hinzu."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr "Du hast versucht, einen neuen globalen Alias mit dem Namen „{name}“ zu erstellen, aber dieser Name ist bereits ein Befehl für diesen Bot."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
msgstr "Du hast versucht, einen neuen globalen Alias mit dem Namen „{name}“ zu erstellen, dieser ist jedoch bereits auf diesem Server vorhanden."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
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, aber dieser Alias existiert bereits."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr "Du hast versucht, einen neuen globalen Alias mit dem Namen „{name}“ zu erstellen, dieser Name ist jedoch ein ungültiger Alias-Name. Alias-Namen dürfen keine Leerzeichen enthalten."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr "Ein neuer globaler Alias mit dem Trigger `{name}` wurde erstellt."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr "Versuche die Hilfe für den Basisbefehl des Alias auszuführen."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "So ein Alias ist nicht vorhanden."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr "Zeige den Befehl, welchen der Alias ausführt."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr "Der Alias '{alias_name}' führt den Befehl '{command}' aus"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr "Kein Alias mit dem Namen '{name}' gefunden"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this 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:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this 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:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr "Der Alias mit dem Namen '{name}' wurde erfolgreich gelöscht."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr "Kein Alias mit dem Namen '{name}' gefunden."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr "Lösche einen bereits existierenden globalen Alias."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "Es gibt keine Aliasse in diesem Bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr "Ich habe keinen globalen Alias gespeichert."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr "Zeige die auf diesem Server verfügbaren Alias."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Aliasse:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr "Zeige die verfügbaren globalen Alias von diesem Bot."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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: "
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Greek\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: el\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: el_GR\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: es-ES\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: es_ES\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
msgstr "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
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
msgstr "Administra los alias de los comandos."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
msgstr "Administra los alias globales."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
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:145
|
||||
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:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: 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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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:179 redbot/cogs/alias/alias.py:238
|
||||
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:193
|
||||
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:199
|
||||
#, docstring
|
||||
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:204
|
||||
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:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
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:249
|
||||
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:256
|
||||
#, docstring
|
||||
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:261
|
||||
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:265
|
||||
#, docstring
|
||||
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:270
|
||||
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:275
|
||||
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:281
|
||||
#, docstring
|
||||
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:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
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:288 redbot/cogs/alias/alias.py:303
|
||||
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:291 redbot/cogs/alias/alias.py:306
|
||||
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:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr "Elimina un alias global existente."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "No hay el los alias dentro de este bot."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
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
|
||||
msgid "Aliases:"
|
||||
msgstr "Alias:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr "Lista de los alias globales disponibles en este bot."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
msgid "There are no global aliases."
|
||||
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: "
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Finnish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: fi\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: fi_FI\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: fr\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: fr_FR\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr "Créée des alias pour les commandes\\n\\n Les alias sont des raccourcis de noms alternatifs pour les commandes. Ils\\n peuvent agir comme un lambda (stocker des arguments pour un usage répété)\\n ou comme simplement un raccourci pour dire \\\"x y z\\\".\\n\\n Lors de leur exécution, les alias accepteront tous les arguments supplémentaires\\n et seront exécutés en plus des arguments stockés dans l'alias.\\n "
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr "Gérer les alias de commandes."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr "Gérer les alias globaux."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr "Ajouter un alias à une commande."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
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."
|
||||
|
||||
#: 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 "Tu as tenté de créer un nouvel alias nommé {name}, mais cet alias existe déjà sur ce serveur."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr "Vous avez tenté de créer un nouvel alias avec le nom {name} mais cette alias existe déjà."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
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:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr "Un nouvel alias avec le déclencheur `{name}` a bien été créé."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr "Ajouter un alias global à une commande."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais une commande existe déjà avec ce nom sur ce bot."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais cet alias existe déjà sur ce serveur."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr "Vous avez tenté de créer un nouvel alias global avec le nom {name} mais cette alias existe déjà."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr "Un nouvel alias global avec le déclencheur `{name}` a bien été créé."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr "Tente d'exécuter l'aide pour la commande de base de l'alias."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "Cet alias n'existe pas."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr "Affiche la commande que l'alias exécute."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr "L'alias `{alias_name}` exécute la commande `{command}`"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr "Il n'y a pas d'alias nommé `{name}`"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr "Supprime un alias de ce serveur."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
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:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
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:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr "L'alias nommé `{name}` n'a pas été trouvé."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr "Supprime un alias global existant."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "Il n'y a pas d'alias sur ce bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr "Il n'y a aucun alias global sur ce bot."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr "Liste les alias disponibles sur ce serveur."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Alias:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr "Liste les alias globaux disponibles sur ce bot."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 : "
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Hebrew\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: he\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: he_IL\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Hungarian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: hu\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: hu_HU\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
msgstr "Nem találtható prefix."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:235
|
||||
#: redbot/cogs/alias/alias.py:116
|
||||
msgid "Aliases:\\n"
|
||||
msgstr "Aliasok:\\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:118
|
||||
msgid "\\n\\nPage {page}/{total}"
|
||||
msgstr "\\n\\nOldal {page}/{total}"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
msgstr "Parancs aliasok kezelése."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
msgstr "Globális aliasok kezelése."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
msgstr "Alias hozzáadása egy parancshoz."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "Nem létezik ilyen rövidítés."
|
||||
msgstr "Nem létezik ilyen alias."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr "Nincsenek rövidítések ezen a szerveren."
|
||||
msgstr "Nincsenek aliasok ezen a szerveren."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
msgstr "Létező globális alias törlése."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "Nincsenek rövidítések ennél a botnál."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr "Nincsenek globális aliasok ezen a boton."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
msgstr "A szerveren elérhető aliasok listázása."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Rövidítések:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr "A boton elérhető globális aliasok listázása."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
msgid "There are no global aliases."
|
||||
msgstr "Nincsenek globális aliasok."
|
||||
|
||||
#: 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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Indonesian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: id\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: id_ID\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "Alias tersebut tidak ditemukan."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr "Tidak ada alias pada server ini."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "Tidak ada alias pada bot ini."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Alias:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Italian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: it\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: it_IT\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr "Gestisci gli alias dei comandi."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr "Gestisci alias globali."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr "Aggiungi un alias per un comando."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
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."
|
||||
|
||||
#: 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 "Hai cercato di creare un nuovo alias con il nome {name}, ma questo alias già esiste su questo bot."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr "È stato creato un nuovo alias con il comando '{name}'."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr "Aggiungi un alias globale per un comando."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
msgstr "Hai cercato di creare un nuovo alias globale con il nome {name}, ma questo alias già esiste su questo server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr "È stato creato un nuovo alias globale con il comando '{name}'."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "Non esiste nessun alias con questo nome."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr "Mostra quale comando viene eseguito dall'alias."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr "L'alias `{alias_name}` eseguirà il comando `{command}`"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr "Non c'è nessun alias con il nome `{name}`"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this 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:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this 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:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
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:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr "L'alias con il nome `{name}` non è stato trovato."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr "Elimina un alias globale esistente."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "Non ci sono alias su questo bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr "Elenca gli alias disponibili su questo server."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Alias:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr "Elenca gli alias globali disponibili su questo server."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Japanese\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: ja\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: ja_JP\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "そのようなエイリアスはありません。"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr "このサーバにエイリアスはありません。"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "このボットにはエイリアスはありません。"
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "アリアス:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Korean\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: ko\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: ko_KR\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
msgstr "명령어에 대한 별칭을 만들어주세요.\\n\\n 별칭들은 해당 명령어들을 바로 실행할 수 있는 대체적인 이름들이에요. 그것들은\\n 람다(반복되어 사용되는 인수를 저장)\\n 또는 단순히 \\\"x y z\\\"라고 말하는 바로가기 역할을 할 수 있어요.\\n\\n 실행할 시, 별칭들은 추가된 인수들을 승인할거예요.\\n 그리고 저장된 별칭들에 추가할거예요. "
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
msgid "Arguments must be specified with a number."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:118
|
||||
msgid "Arguments must be sequential. Missing arguments: "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:168
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
msgstr "명령어 별칭들을 관리하세요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
msgstr "글로벌 별칭들을 관리하세요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
msgstr "명령어에 대한 별칭을 등록해주세요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
msgstr "이름이 {name}인 새 별칭을 생성하려고 했지만, 해당 이름은 이 봇의 명령어와 중복돼요."
|
||||
|
||||
#: 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 ""
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr "이름이 {name} 인 새 별칭을 생성하려고 했지만, 해당 별칭은 이미 이 서버에 등록되어 있어요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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:179 redbot/cogs/alias/alias.py:238
|
||||
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:193
|
||||
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:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
msgstr "명령어에 대한 글로벌 별칭을 등록해주세요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
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 "이름이 {name}인 새 글로벌 별칭을 생성하려고 했지만, 해당 이름은 커맨드와 중복돼요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
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:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr "이름이 {name} 인 새 별칭을 생성하려고 했지만, 해당 별칭은 이미 이 서버에 등록되어 있어요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
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:249
|
||||
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:256
|
||||
#, docstring
|
||||
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:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "그런 별칭은 등록되어 있지 않아요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
msgstr "별칭이 실행하는 명령어를 표시해주세요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
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:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
msgstr "이름이 `{name}`인 별칭이 없어요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
msgstr "이 서버에 있는 기존 별칭을 삭제해주세요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr "이 서버에 등록된 별칭이 없어요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
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:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
msgstr "이름이 `{name}`인 별칭을 찾을 수 없어요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
msgstr "기존 글로벌 별칭들을 삭제해주세요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr "이 봇에 등록된 별칭이 없어요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
msgstr "이 서버에서 사용할 수 있는 별칭들을 나열해주세요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "등록된 별칭 리스트 :"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr "이 봇에서 사용할 수 있는 글로벌 별칭들을 나열해주세요."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 "인수는 순차적이어야해요. 미확인된 인수: "
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Dutch\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: nl\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: nl_NL\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr "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
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr "Beheer commandaliassen."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr "Beheer globale aliassen."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr "Voeg een alias toe voor een opdracht."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
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."
|
||||
|
||||
#: 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 "Je hebt geprobeerd een nieuwe alias te maken met de naam {name}, maar die alias bestaat al op deze server."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr "Er is een nieuwe alias gemaakt met de trigger `{name}`."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr "Voeg een globale alias toe voor een opdracht."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
msgstr "Je hebt geprobeerd een nieuwe globale alias te maken met de naam {name}, maar die alias bestaat al op deze server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr "Er is een nieuwe globale alias gemaakt met de trigger `{name}`."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr "Probeer hulp uit te voeren voor de basisopdracht van de alias."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "Deze alias bestaat niet."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr "Laat zien welk commando de alias uitvoert."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr "De `{alias_name}` alias voert het commando `{command}` uit"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr "Er is geen alias met de naam'{name}'"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this 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:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this 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:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
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:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr "Alias met naam `{name}` is niet gevonden."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr "Een bestaande globale alias verwijderen."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "Er zijn geen aliases op deze bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr "Maak een lijst van de beschikbare aliassen op deze server."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Aliassen:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr "Maak een lijst van de beschikbare globale aliassen op deze bot."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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: "
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Norwegian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: no\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: no_NO\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr "Administrer kommando aliaser."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr "Administrer globale aliaser."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr "Legg til et alias for en kommando."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
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."
|
||||
|
||||
#: 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 "Du forsøkte å opprette et nytt alias med navnet {name} men aliaset finnes allerede på denne serveren."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr "Et nytt alias med utløseren \"{name}\" har blitt opprettet."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr "Legg til et globalt alias for en kommando."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
msgstr "Du forsøkte å opprette et nytt alias med navnet {name} men aliaset finnes allerede på denne serveren."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
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."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr "Et nytt globalt alias med utløseren '{name}' har blitt opprettet."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "Ingen slike alias finnes."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
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:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "Det er ingen aliaser på denne boten."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Aliaser:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Polish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: pl\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: pl_PL\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "Taki alias nie istnieje."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
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:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "Nie ma żadnych aliasów dla tego bota."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Aliasy:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Portuguese, Brazilian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: pt-BR\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: pt_BR\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "Alias inexistente."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
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:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "Não há nenhum alias nesse bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Alias:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Portuguese\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: pt-PT\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: pt_PT\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Romanian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: ro\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: ro_RO\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Russian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: ru\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: ru_RU\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr "Создать псевдонимы для команд.\\n\\n Псевдонимы - это альтернативные сокращения имен для команд.\\n Они могут действовать как лямбда (хранение аргументов для\\n многократного использования) или просто как сокращение \\\"а б в\\\".\\n\\n При запуске псевдонимы принимают любые дополнительные\\n аргументы и добавляют их к сохраненному псевдониму.\\n "
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr "Управление псевдонимами команд."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr "Управление глобальными псевдонимами."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr "Добавить псевдоним для команды."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
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:263
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists on this server."
|
||||
msgstr "Вы пытались создать новый псевдоним {name}, но этот псевдоним уже существует на этом сервере."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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}, но это имя является недопустимым псевдонимом. Имена псевдонимов не могут содержать пробелов."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
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:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr "Новый псевдоним с триггером `{name}` был создан."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr "Добавить глобальный псевдоним для команды."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
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:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
msgstr "Вы попытались создать новый глобальный псевдоним {name}, но этот псевдоним уже существует на этом сервере."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
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}, но это имя является недопустимым псевдонимом. Имена псевдонимов не могут содержать пробелов."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr "Новый глобальный псевдоним с триггером `{name}` был создан."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr "Попробуйте вызвать справку для базовой команды псевдонима."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "Псевдоним не существует."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr "Показать, какую команду выполняет псевдоним."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr "Псевдоним `{alias_name}` будет выполнять команду `{command}`"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr "Нет псевдонима с именем `{name}`"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr "Удалить существующий псевдоним на этом сервере."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr "На этом сервере нет псевдонимов."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr "Псевдоним с именем `{name}` был успешно удален."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr "Псевдоним с именем `{name}` не найден."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr "Удалить существующий глобальный псевдоним."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "У этого бота нет псевдонимов."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr "У этого бота нет глобальных псевдонимов."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr "Список доступных псевдонимов на этом сервере."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Псевдонимы:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr "Список доступных глобальных псевдонимов для этого бота."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 "Аргументы должны быть последовательными. Отсутствующие аргументы: "
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Slovak\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: sk\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: sk_SK\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:12\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Serbian (Cyrillic)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: sr\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: sr_SP\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:13\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Swedish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: sv-SE\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: sv_SE\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "Detta alias existerar inte."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this 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:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "Det finns inga alias för denna bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "Alias:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:13\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Turkish\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: tr\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: tr_TR\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr "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
|
||||
msgid "Arguments must be specified with a number."
|
||||
msgstr "Girdiler numara ile özelleştirilmiş olmalıdır."
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
msgstr "Prefix yani komut başlangıcı bulunamadı."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:116
|
||||
msgid "Aliases:\\n"
|
||||
msgstr "Takma adlar"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:118
|
||||
msgid "Arguments must be sequential. Missing arguments: "
|
||||
msgstr "Girdiler sırayla olmalıdır. Eksik girdiler:"
|
||||
msgid "\\n\\nPage {page}/{total}"
|
||||
msgstr "Sayfa"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:168
|
||||
msgid "No prefix found."
|
||||
msgstr "Öneki bulundu."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:235
|
||||
#: redbot/cogs/alias/alias.py:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr "Komut diğer adları yönetmek."
|
||||
msgstr "Komut kısaltmalarını yönet."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr "Küresel diğer adları yönetmek."
|
||||
msgstr "Global kısaltmaları yönet."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr "Bir komut için bir diğer ad ekleyin."
|
||||
msgstr "Bir komut için kısaltma ekleyin."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
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."
|
||||
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: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:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr "{name} adıyla yeni bir diğer ad oluşturmaya çalıştınız, ancak bu diğer ad zaten var."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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."
|
||||
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:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
msgstr "Mevcut olmayan bir komut için kısayol oluşturmaya çalıştınız."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr "Yeni bir takma ad tetikleyici '{name}' ile oluşturuldu."
|
||||
msgstr "Yeni bir kısaltma '{name}' ismi ile oluşturuldu."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
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:204
|
||||
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
|
||||
msgid "You attempted to create a new global 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 adı zaten bu bot bir komutudur."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr "{name} adıyla yeni bir genel diğer ad oluşturmaya çalıştınız, ancak bu diğer ad zaten var."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
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:249
|
||||
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}' ismi ile oluşturuldu."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
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ısaltma komutlarını detaylıca öğrenmek için yardım komutunu kullanmayı deneyiniz."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
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:265
|
||||
#, docstring
|
||||
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:270
|
||||
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:275
|
||||
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:281
|
||||
#, docstring
|
||||
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:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
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:288 redbot/cogs/alias/alias.py:303
|
||||
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:291 redbot/cogs/alias/alias.py:306
|
||||
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:296
|
||||
#, docstring
|
||||
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
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "Bu botta takma adlar yok."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr "Bu botta herhangi bir global kısaltma bulunmuyor."
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
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
|
||||
msgid "Aliases:"
|
||||
msgstr "Takma adlar:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
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:324
|
||||
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: "
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:13\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Ukrainian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"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-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: uk\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: uk_UA\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:13\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Vietnamese\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: vi\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: vi_VN\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:10\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: zh-CN\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: zh_CN\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
msgstr "您尝试使用名称{name}创建新的全局别名,但该别名已经存在于此服务器上。"
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
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}创建新的全局别名,但该名称是无效的别名。别名不能包含空格。"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr "已经创建一个包含触发器`{name}`的全局别名。"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr "不存在该别名。"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr "`{alias_name}`别要名将执行命令`{command}`"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr "没有名为`{name}`的别名"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr "在这个服务器上没有别名。"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr "已经成功删除名为`{name}`的别名。"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr "找不到名为`{name}`的别名。"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
msgstr "这个机器人上没有别名。"
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr "别名:"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:11\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Traditional, Hong Kong\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: zh-HK\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: zh_HK\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: red-discordbot\n"
|
||||
"POT-Creation-Date: 2020-04-02 12:07+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 12:10\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2020-06-18 12:13+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Chinese Traditional\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,143 +10,151 @@ msgstr ""
|
||||
"Generated-By: redgettext 3.1\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: red-discordbot\n"
|
||||
"X-Crowdin-Project-ID: 289505\n"
|
||||
"X-Crowdin-Language: zh-TW\n"
|
||||
"X-Crowdin-File: /cogs/alias/locales/messages.pot\n"
|
||||
"X-Crowdin-File-ID: 8\n"
|
||||
"Language: zh_TW\n"
|
||||
|
||||
#: redbot/cogs/alias/alias.py:35
|
||||
#: redbot/cogs/alias/alias.py:31
|
||||
#, docstring
|
||||
msgid "Create aliases for commands.\\n\\n Aliases are alternative names shortcuts for commands. They\\n can act as both a lambda (storing arguments for repeated use)\\n or as simply a shortcut to saying \\\"x y z\\\".\\n\\n When run, aliases will accept any additional arguments\\n and append them to the stored alias.\\n "
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:111
|
||||
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
|
||||
#: redbot/cogs/alias/alias.py:86
|
||||
msgid "No prefix found."
|
||||
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:128
|
||||
#, docstring
|
||||
msgid "Manage command aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:240
|
||||
#: redbot/cogs/alias/alias.py:133
|
||||
#, docstring
|
||||
msgid "Manage global aliases."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:247
|
||||
#: redbot/cogs/alias/alias.py:140
|
||||
#, docstring
|
||||
msgid "Add an alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:252
|
||||
#: redbot/cogs/alias/alias.py:145
|
||||
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
#: redbot/cogs/alias/alias.py:156
|
||||
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:274
|
||||
#: redbot/cogs/alias/alias.py:167
|
||||
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 ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:286
|
||||
#: redbot/cogs/alias/alias.py:179 redbot/cogs/alias/alias.py:238
|
||||
msgid "You attempted to create a new alias for a command that doesn't exist."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:300
|
||||
#: redbot/cogs/alias/alias.py:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:306
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:311
|
||||
#: redbot/cogs/alias/alias.py:204
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:322
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists on this server."
|
||||
#: redbot/cogs/alias/alias.py:215
|
||||
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:333
|
||||
#: redbot/cogs/alias/alias.py:226
|
||||
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:349
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:357
|
||||
#: redbot/cogs/alias/alias.py:256
|
||||
#, docstring
|
||||
msgid "Try to execute help for the base command of the alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:369
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:374
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:379
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:384
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:390
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:395 redbot/cogs/alias/alias.py:431
|
||||
#: redbot/cogs/alias/alias.py:442
|
||||
#: redbot/cogs/alias/alias.py:283 redbot/cogs/alias/alias.py:315
|
||||
msgid "There are no aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:400 redbot/cogs/alias/alias.py:418
|
||||
#: redbot/cogs/alias/alias.py:288 redbot/cogs/alias/alias.py:303
|
||||
msgid "Alias with the name `{name}` was successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:403 redbot/cogs/alias/alias.py:421
|
||||
#: redbot/cogs/alias/alias.py:291 redbot/cogs/alias/alias.py:306
|
||||
msgid "Alias with name `{name}` was not found."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:408
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:413
|
||||
msgid "There are no aliases on this bot."
|
||||
#: redbot/cogs/alias/alias.py:298
|
||||
msgid "There are no global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:426
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:427 redbot/cogs/alias/alias.py:438
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:437
|
||||
#: redbot/cogs/alias/alias.py:321
|
||||
#, docstring
|
||||
msgid "List the available global aliases on this bot."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:324
|
||||
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 ""
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
from redbot.core import commands
|
||||
|
||||
from .audio import Audio
|
||||
|
||||
|
||||
def setup(bot: commands.Bot):
|
||||
cog = Audio(bot)
|
||||
bot.add_cog(cog)
|
||||
@@ -1,942 +0,0 @@
|
||||
import asyncio
|
||||
import base64
|
||||
import contextlib
|
||||
import datetime
|
||||
import json
|
||||
import logging
|
||||
import random
|
||||
import time
|
||||
from collections import namedtuple
|
||||
from typing import Callable, List, MutableMapping, Optional, TYPE_CHECKING, Tuple, Union, NoReturn
|
||||
|
||||
import aiohttp
|
||||
import discord
|
||||
import lavalink
|
||||
from lavalink.rest_api import LoadResult
|
||||
|
||||
from redbot.core import Config, commands
|
||||
from redbot.core.bot import Red
|
||||
from redbot.core.i18n import Translator, cog_i18n
|
||||
|
||||
from . import audio_dataclasses
|
||||
from .databases import CacheInterface, SQLError
|
||||
from .errors import DatabaseError, SpotifyFetchError, YouTubeApiError, TrackEnqueueError
|
||||
from .playlists import get_playlist
|
||||
from .utils import CacheLevel, Notifier, is_allowed, queue_duration, track_limit
|
||||
|
||||
log = logging.getLogger("red.audio.cache")
|
||||
_ = Translator("Audio", __file__)
|
||||
|
||||
_TOP_100_GLOBALS = "https://www.youtube.com/playlist?list=PL4fGSI1pDJn6puJdseH2Rt9sMvt9E2M4i"
|
||||
_TOP_100_US = "https://www.youtube.com/playlist?list=PL4fGSI1pDJn5rWitrRWFKdm-ulaFiIyoK"
|
||||
|
||||
if TYPE_CHECKING:
|
||||
_database: CacheInterface
|
||||
_bot: Red
|
||||
_config: Config
|
||||
else:
|
||||
_database = None
|
||||
_bot = None
|
||||
_config = None
|
||||
|
||||
|
||||
def _pass_config_to_apis(config: Config, bot: Red):
|
||||
global _database, _config, _bot
|
||||
if _config is None:
|
||||
_config = config
|
||||
if _bot is None:
|
||||
_bot = bot
|
||||
if _database is None:
|
||||
_database = CacheInterface()
|
||||
|
||||
|
||||
class SpotifyAPI:
|
||||
"""Wrapper for the Spotify API."""
|
||||
|
||||
def __init__(self, bot: Red, session: aiohttp.ClientSession):
|
||||
self.bot = bot
|
||||
self.session = session
|
||||
self.spotify_token: Optional[MutableMapping[str, Union[str, int]]] = None
|
||||
self.client_id = None
|
||||
self.client_secret = None
|
||||
|
||||
@staticmethod
|
||||
async def _check_token(token: MutableMapping):
|
||||
now = int(time.time())
|
||||
return token["expires_at"] - now < 60
|
||||
|
||||
@staticmethod
|
||||
def _make_token_auth(
|
||||
client_id: Optional[str], client_secret: Optional[str]
|
||||
) -> MutableMapping[str, Union[str, int]]:
|
||||
if client_id is None:
|
||||
client_id = ""
|
||||
if client_secret is None:
|
||||
client_secret = ""
|
||||
|
||||
auth_header = base64.b64encode((client_id + ":" + client_secret).encode("ascii"))
|
||||
return {"Authorization": "Basic %s" % auth_header.decode("ascii")}
|
||||
|
||||
async def _make_get(
|
||||
self, url: str, headers: MutableMapping = None, params: MutableMapping = None
|
||||
) -> MutableMapping[str, str]:
|
||||
if params is None:
|
||||
params = {}
|
||||
async with self.session.request("GET", url, params=params, headers=headers) as r:
|
||||
if r.status != 200:
|
||||
log.debug(
|
||||
"Issue making GET request to {0}: [{1.status}] {2}".format(
|
||||
url, r, await r.json()
|
||||
)
|
||||
)
|
||||
return await r.json()
|
||||
|
||||
async def _get_auth(self) -> NoReturn:
|
||||
tokens = await self.bot.get_shared_api_tokens("spotify")
|
||||
self.client_id = tokens.get("client_id", "")
|
||||
self.client_secret = tokens.get("client_secret", "")
|
||||
|
||||
async def _request_token(self) -> MutableMapping[str, Union[str, int]]:
|
||||
await self._get_auth()
|
||||
|
||||
payload = {"grant_type": "client_credentials"}
|
||||
headers = self._make_token_auth(self.client_id, self.client_secret)
|
||||
r = await self.post_call(
|
||||
"https://accounts.spotify.com/api/token", payload=payload, headers=headers
|
||||
)
|
||||
return r
|
||||
|
||||
async def _get_spotify_token(self) -> Optional[str]:
|
||||
if self.spotify_token and not await self._check_token(self.spotify_token):
|
||||
return self.spotify_token["access_token"]
|
||||
token = await self._request_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()) + token["expires_in"]
|
||||
except KeyError:
|
||||
return
|
||||
self.spotify_token = token
|
||||
log.debug("Created a new access token for Spotify: {0}".format(token))
|
||||
return self.spotify_token["access_token"]
|
||||
|
||||
async def post_call(
|
||||
self, url: str, payload: MutableMapping, headers: MutableMapping = None
|
||||
) -> MutableMapping[str, Union[str, int]]:
|
||||
async with self.session.post(url, data=payload, headers=headers) as r:
|
||||
if r.status != 200:
|
||||
log.debug(
|
||||
"Issue making POST request to {0}: [{1.status}] {2}".format(
|
||||
url, r, await r.json()
|
||||
)
|
||||
)
|
||||
return await r.json()
|
||||
|
||||
async def get_call(
|
||||
self, url: str, params: MutableMapping
|
||||
) -> MutableMapping[str, Union[str, int]]:
|
||||
token = await self._get_spotify_token()
|
||||
return await self._make_get(
|
||||
url, params=params, headers={"Authorization": "Bearer {0}".format(token)}
|
||||
)
|
||||
|
||||
async def get_categories(self) -> List[MutableMapping]:
|
||||
url = "https://api.spotify.com/v1/browse/categories"
|
||||
params = {}
|
||||
result = await self.get_call(url, 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]
|
||||
|
||||
async def get_playlist_from_category(self, category: str):
|
||||
url = f"https://api.spotify.com/v1/browse/categories/{category}/playlists"
|
||||
params = {}
|
||||
result = await self.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"),
|
||||
}
|
||||
for c in playlists
|
||||
]
|
||||
|
||||
|
||||
class YouTubeAPI:
|
||||
"""Wrapper for the YouTube Data API."""
|
||||
|
||||
def __init__(self, bot: Red, session: aiohttp.ClientSession):
|
||||
self.bot = bot
|
||||
self.session = session
|
||||
self.api_key = None
|
||||
|
||||
async def _get_api_key(self,) -> str:
|
||||
tokens = await self.bot.get_shared_api_tokens("youtube")
|
||||
self.api_key = tokens.get("api_key", "")
|
||||
return self.api_key
|
||||
|
||||
async def get_call(self, query: str) -> Optional[str]:
|
||||
params = {
|
||||
"q": query,
|
||||
"part": "id",
|
||||
"key": await self._get_api_key(),
|
||||
"maxResults": 1,
|
||||
"type": "video",
|
||||
}
|
||||
yt_url = "https://www.googleapis.com/youtube/v3/search"
|
||||
async with self.session.request("GET", yt_url, 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']}"
|
||||
|
||||
|
||||
@cog_i18n(_)
|
||||
class MusicCache:
|
||||
"""Handles music queries to the Spotify and Youtube Data API.
|
||||
|
||||
Always tries the Cache first.
|
||||
"""
|
||||
|
||||
def __init__(self, bot: Red, session: aiohttp.ClientSession):
|
||||
self.bot = bot
|
||||
self.spotify_api: SpotifyAPI = SpotifyAPI(bot, session)
|
||||
self.youtube_api: YouTubeAPI = YouTubeAPI(bot, session)
|
||||
self._session: aiohttp.ClientSession = session
|
||||
self.database = _database
|
||||
|
||||
self._tasks: MutableMapping = {}
|
||||
self._lock: asyncio.Lock = asyncio.Lock()
|
||||
self.config: Optional[Config] = None
|
||||
|
||||
async def initialize(self, config: Config):
|
||||
self.config = config
|
||||
await _database.init()
|
||||
|
||||
@staticmethod
|
||||
def _spotify_format_call(qtype: str, key: str) -> Tuple[str, MutableMapping]:
|
||||
params = {}
|
||||
if qtype == "album":
|
||||
query = f"https://api.spotify.com/v1/albums/{key}/tracks"
|
||||
elif qtype == "track":
|
||||
query = f"https://api.spotify.com/v1/tracks/{key}"
|
||||
else:
|
||||
query = f"https://api.spotify.com/v1/playlists/{key}/tracks"
|
||||
return query, params
|
||||
|
||||
@staticmethod
|
||||
def _get_spotify_track_info(track_data: MutableMapping) -> Tuple[str, ...]:
|
||||
artist_name = track_data["artists"][0]["name"]
|
||||
track_name = track_data["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
|
||||
|
||||
async def _spotify_first_time_query(
|
||||
self,
|
||||
ctx: commands.Context,
|
||||
query_type: str,
|
||||
uri: str,
|
||||
notifier: Notifier,
|
||||
skip_youtube: bool = False,
|
||||
current_cache_level: CacheLevel = CacheLevel.none(),
|
||||
) -> List[str]:
|
||||
youtube_urls = []
|
||||
|
||||
tracks = await self._spotify_fetch_tracks(query_type, uri, params=None, notifier=notifier)
|
||||
total_tracks = len(tracks)
|
||||
database_entries = []
|
||||
track_count = 0
|
||||
time_now = int(datetime.datetime.now(datetime.timezone.utc).timestamp())
|
||||
youtube_cache = CacheLevel.set_youtube().is_subset(current_cache_level)
|
||||
for track in tracks:
|
||||
if track.get("error", {}).get("message") == "invalid id":
|
||||
continue
|
||||
(
|
||||
song_url,
|
||||
track_info,
|
||||
uri,
|
||||
artist_name,
|
||||
track_name,
|
||||
_id,
|
||||
_type,
|
||||
) = self._get_spotify_track_info(track)
|
||||
|
||||
database_entries.append(
|
||||
{
|
||||
"id": _id,
|
||||
"type": _type,
|
||||
"uri": uri,
|
||||
"track_name": track_name,
|
||||
"artist_name": artist_name,
|
||||
"song_url": song_url,
|
||||
"track_info": track_info,
|
||||
"last_updated": time_now,
|
||||
"last_fetched": time_now,
|
||||
}
|
||||
)
|
||||
if skip_youtube is False:
|
||||
val = None
|
||||
if youtube_cache:
|
||||
update = True
|
||||
with contextlib.suppress(SQLError):
|
||||
(val, update) = await self.database.fetch_one(
|
||||
"youtube", "youtube_url", {"track": track_info}
|
||||
)
|
||||
if update:
|
||||
val = None
|
||||
if val is None:
|
||||
val = await self._youtube_first_time_query(
|
||||
ctx, track_info, current_cache_level=current_cache_level
|
||||
)
|
||||
if youtube_cache and val:
|
||||
task = ("update", ("youtube", {"track": track_info}))
|
||||
self.append_task(ctx, *task)
|
||||
|
||||
if val:
|
||||
youtube_urls.append(val)
|
||||
else:
|
||||
youtube_urls.append(track_info)
|
||||
await asyncio.sleep(0)
|
||||
track_count += 1
|
||||
if notifier and ((track_count % 2 == 0) or (track_count == total_tracks)):
|
||||
await notifier.notify_user(current=track_count, total=total_tracks, key="youtube")
|
||||
if CacheLevel.set_spotify().is_subset(current_cache_level):
|
||||
task = ("insert", ("spotify", database_entries))
|
||||
self.append_task(ctx, *task)
|
||||
return youtube_urls
|
||||
|
||||
async def _youtube_first_time_query(
|
||||
self,
|
||||
ctx: commands.Context,
|
||||
track_info: str,
|
||||
current_cache_level: CacheLevel = CacheLevel.none(),
|
||||
) -> str:
|
||||
track_url = await self.youtube_api.get_call(track_info)
|
||||
if CacheLevel.set_youtube().is_subset(current_cache_level) and track_url:
|
||||
time_now = int(datetime.datetime.now(datetime.timezone.utc).timestamp())
|
||||
task = (
|
||||
"insert",
|
||||
(
|
||||
"youtube",
|
||||
[
|
||||
{
|
||||
"track_info": track_info,
|
||||
"track_url": track_url,
|
||||
"last_updated": time_now,
|
||||
"last_fetched": time_now,
|
||||
}
|
||||
],
|
||||
),
|
||||
)
|
||||
self.append_task(ctx, *task)
|
||||
return track_url
|
||||
|
||||
async def _spotify_fetch_tracks(
|
||||
self,
|
||||
query_type: str,
|
||||
uri: str,
|
||||
recursive: Union[str, bool] = False,
|
||||
params: MutableMapping = None,
|
||||
notifier: Optional[Notifier] = None,
|
||||
) -> Union[MutableMapping, List[str]]:
|
||||
|
||||
if recursive is False:
|
||||
(call, params) = self._spotify_format_call(query_type, uri)
|
||||
results = await self.spotify_api.get_call(call, params)
|
||||
else:
|
||||
results = await self.spotify_api.get_call(recursive, params)
|
||||
try:
|
||||
if results["error"]["status"] == 401 and not recursive:
|
||||
raise SpotifyFetchError(
|
||||
(
|
||||
"The Spotify API key or client secret has not been set properly. "
|
||||
"\nUse `{prefix}audioset spotifyapi` for instructions."
|
||||
)
|
||||
)
|
||||
elif recursive:
|
||||
return {"next": None}
|
||||
except KeyError:
|
||||
pass
|
||||
if recursive:
|
||||
return results
|
||||
tracks = []
|
||||
track_count = 0
|
||||
total_tracks = results.get("tracks", results).get("total", 1)
|
||||
while True:
|
||||
new_tracks = []
|
||||
if query_type == "track":
|
||||
new_tracks = results
|
||||
tracks.append(new_tracks)
|
||||
elif query_type == "album":
|
||||
tracks_raw = results.get("tracks", results).get("items", [])
|
||||
if tracks_raw:
|
||||
new_tracks = tracks_raw
|
||||
tracks.extend(new_tracks)
|
||||
else:
|
||||
tracks_raw = results.get("tracks", results).get("items", [])
|
||||
if tracks_raw:
|
||||
new_tracks = [k["track"] for k in tracks_raw if k.get("track")]
|
||||
tracks.extend(new_tracks)
|
||||
track_count += len(new_tracks)
|
||||
if notifier:
|
||||
await notifier.notify_user(current=track_count, total=total_tracks, key="spotify")
|
||||
|
||||
try:
|
||||
if results.get("next") is not None:
|
||||
results = await self._spotify_fetch_tracks(
|
||||
query_type, uri, results["next"], params, notifier=notifier
|
||||
)
|
||||
continue
|
||||
else:
|
||||
break
|
||||
except KeyError:
|
||||
raise SpotifyFetchError(
|
||||
"This doesn't seem to be a valid Spotify playlist/album URL or code."
|
||||
)
|
||||
|
||||
return tracks
|
||||
|
||||
async def spotify_query(
|
||||
self,
|
||||
ctx: commands.Context,
|
||||
query_type: str,
|
||||
uri: str,
|
||||
skip_youtube: bool = False,
|
||||
notifier: Optional[Notifier] = None,
|
||||
) -> List[str]:
|
||||
"""Queries the Database then falls back to Spotify and YouTube APIs.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
ctx: commands.Context
|
||||
The context this method is being called under.
|
||||
query_type : str
|
||||
Type of query to perform (Pl
|
||||
uri: str
|
||||
Spotify URL ID .
|
||||
skip_youtube:bool
|
||||
Whether or not to skip YouTube API Calls.
|
||||
notifier: Notifier
|
||||
A Notifier object to handle the user UI notifications while tracks are loaded.
|
||||
Returns
|
||||
-------
|
||||
List[str]
|
||||
List of Youtube URLs.
|
||||
"""
|
||||
current_cache_level = CacheLevel(await self.config.cache_level())
|
||||
cache_enabled = CacheLevel.set_spotify().is_subset(current_cache_level)
|
||||
if query_type == "track" and cache_enabled:
|
||||
update = True
|
||||
with contextlib.suppress(SQLError):
|
||||
(val, update) = await self.database.fetch_one(
|
||||
"spotify", "track_info", {"uri": f"spotify:track:{uri}"}
|
||||
)
|
||||
if update:
|
||||
val = None
|
||||
else:
|
||||
val = None
|
||||
youtube_urls = []
|
||||
if val is None:
|
||||
urls = await self._spotify_first_time_query(
|
||||
ctx,
|
||||
query_type,
|
||||
uri,
|
||||
notifier,
|
||||
skip_youtube,
|
||||
current_cache_level=current_cache_level,
|
||||
)
|
||||
youtube_urls.extend(urls)
|
||||
else:
|
||||
if query_type == "track" and cache_enabled:
|
||||
task = ("update", ("spotify", {"uri": f"spotify:track:{uri}"}))
|
||||
self.append_task(ctx, *task)
|
||||
youtube_urls.append(val)
|
||||
return youtube_urls
|
||||
|
||||
async def spotify_enqueue(
|
||||
self,
|
||||
ctx: commands.Context,
|
||||
query_type: str,
|
||||
uri: str,
|
||||
enqueue: bool,
|
||||
player: lavalink.Player,
|
||||
lock: Callable,
|
||||
notifier: Optional[Notifier] = None,
|
||||
) -> List[lavalink.Track]:
|
||||
track_list = []
|
||||
has_not_allowed = False
|
||||
try:
|
||||
current_cache_level = CacheLevel(await self.config.cache_level())
|
||||
guild_data = await self.config.guild(ctx.guild).all()
|
||||
|
||||
# now = int(time.time())
|
||||
enqueued_tracks = 0
|
||||
consecutive_fails = 0
|
||||
queue_dur = await queue_duration(ctx)
|
||||
queue_total_duration = lavalink.utils.format_time(queue_dur)
|
||||
before_queue_length = len(player.queue)
|
||||
tracks_from_spotify = await self._spotify_fetch_tracks(
|
||||
query_type, uri, params=None, notifier=notifier
|
||||
)
|
||||
total_tracks = len(tracks_from_spotify)
|
||||
if total_tracks < 1:
|
||||
lock(ctx, False)
|
||||
embed3 = discord.Embed(
|
||||
colour=await ctx.embed_colour(),
|
||||
title=_("This doesn't seem to be a supported Spotify URL or code."),
|
||||
)
|
||||
await notifier.update_embed(embed3)
|
||||
|
||||
return track_list
|
||||
database_entries = []
|
||||
time_now = int(datetime.datetime.now(datetime.timezone.utc).timestamp())
|
||||
|
||||
youtube_cache = CacheLevel.set_youtube().is_subset(current_cache_level)
|
||||
spotify_cache = CacheLevel.set_spotify().is_subset(current_cache_level)
|
||||
for track_count, track in enumerate(tracks_from_spotify):
|
||||
(
|
||||
song_url,
|
||||
track_info,
|
||||
uri,
|
||||
artist_name,
|
||||
track_name,
|
||||
_id,
|
||||
_type,
|
||||
) = self._get_spotify_track_info(track)
|
||||
|
||||
database_entries.append(
|
||||
{
|
||||
"id": _id,
|
||||
"type": _type,
|
||||
"uri": uri,
|
||||
"track_name": track_name,
|
||||
"artist_name": artist_name,
|
||||
"song_url": song_url,
|
||||
"track_info": track_info,
|
||||
"last_updated": time_now,
|
||||
"last_fetched": time_now,
|
||||
}
|
||||
)
|
||||
val = None
|
||||
if youtube_cache:
|
||||
update = True
|
||||
with contextlib.suppress(SQLError):
|
||||
(val, update) = await self.database.fetch_one(
|
||||
"youtube", "youtube_url", {"track": track_info}
|
||||
)
|
||||
if update:
|
||||
val = None
|
||||
if val is None:
|
||||
val = await self._youtube_first_time_query(
|
||||
ctx, track_info, current_cache_level=current_cache_level
|
||||
)
|
||||
if youtube_cache and val:
|
||||
task = ("update", ("youtube", {"track": track_info}))
|
||||
self.append_task(ctx, *task)
|
||||
|
||||
if val:
|
||||
try:
|
||||
(result, called_api) = await self.lavalink_query(
|
||||
ctx, player, audio_dataclasses.Query.process_input(val)
|
||||
)
|
||||
except (RuntimeError, aiohttp.ServerDisconnectedError):
|
||||
lock(ctx, False)
|
||||
error_embed = discord.Embed(
|
||||
colour=await ctx.embed_colour(),
|
||||
title=_("The connection was reset while loading the playlist."),
|
||||
)
|
||||
await notifier.update_embed(error_embed)
|
||||
break
|
||||
except asyncio.TimeoutError:
|
||||
lock(ctx, False)
|
||||
error_embed = discord.Embed(
|
||||
colour=await ctx.embed_colour(),
|
||||
title=_("Player timeout, skipping remaining tracks."),
|
||||
)
|
||||
await notifier.update_embed(error_embed)
|
||||
break
|
||||
track_object = result.tracks
|
||||
else:
|
||||
track_object = []
|
||||
if (track_count % 2 == 0) or (track_count == total_tracks):
|
||||
key = "lavalink"
|
||||
seconds = "???"
|
||||
second_key = None
|
||||
await notifier.notify_user(
|
||||
current=track_count,
|
||||
total=total_tracks,
|
||||
key=key,
|
||||
seconds_key=second_key,
|
||||
seconds=seconds,
|
||||
)
|
||||
|
||||
if consecutive_fails >= 10:
|
||||
error_embed = discord.Embed(
|
||||
colour=await ctx.embed_colour(),
|
||||
title=_("Failing to get tracks, skipping remaining."),
|
||||
)
|
||||
await notifier.update_embed(error_embed)
|
||||
break
|
||||
if not track_object:
|
||||
consecutive_fails += 1
|
||||
continue
|
||||
consecutive_fails = 0
|
||||
single_track = track_object[0]
|
||||
if not await is_allowed(
|
||||
ctx.guild,
|
||||
(
|
||||
f"{single_track.title} {single_track.author} {single_track.uri} "
|
||||
f"{str(audio_dataclasses.Query.process_input(single_track))}"
|
||||
),
|
||||
):
|
||||
has_not_allowed = True
|
||||
log.debug(f"Query is not allowed in {ctx.guild} ({ctx.guild.id})")
|
||||
continue
|
||||
track_list.append(single_track)
|
||||
if enqueue:
|
||||
if len(player.queue) >= 10000:
|
||||
continue
|
||||
if guild_data["maxlength"] > 0:
|
||||
if track_limit(single_track, guild_data["maxlength"]):
|
||||
enqueued_tracks += 1
|
||||
player.add(ctx.author, single_track)
|
||||
self.bot.dispatch(
|
||||
"red_audio_track_enqueue",
|
||||
player.channel.guild,
|
||||
single_track,
|
||||
ctx.author,
|
||||
)
|
||||
else:
|
||||
enqueued_tracks += 1
|
||||
player.add(ctx.author, single_track)
|
||||
self.bot.dispatch(
|
||||
"red_audio_track_enqueue",
|
||||
player.channel.guild,
|
||||
single_track,
|
||||
ctx.author,
|
||||
)
|
||||
|
||||
if not player.current:
|
||||
await player.play()
|
||||
if len(track_list) == 0:
|
||||
if not has_not_allowed:
|
||||
raise SpotifyFetchError(
|
||||
message=_(
|
||||
"Nothing found.\nThe YouTube API key may be invalid "
|
||||
"or you may be rate limited on YouTube's search service.\n"
|
||||
"Check the YouTube API key again and follow the instructions "
|
||||
"at `{prefix}audioset youtubeapi`."
|
||||
).format(prefix=ctx.prefix)
|
||||
)
|
||||
player.maybe_shuffle()
|
||||
if enqueue and tracks_from_spotify:
|
||||
if total_tracks > enqueued_tracks:
|
||||
maxlength_msg = " {bad_tracks} tracks cannot be queued.".format(
|
||||
bad_tracks=(total_tracks - enqueued_tracks)
|
||||
)
|
||||
else:
|
||||
maxlength_msg = ""
|
||||
|
||||
embed = discord.Embed(
|
||||
colour=await ctx.embed_colour(),
|
||||
title=_("Playlist Enqueued"),
|
||||
description=_("Added {num} tracks to the queue.{maxlength_msg}").format(
|
||||
num=enqueued_tracks, maxlength_msg=maxlength_msg
|
||||
),
|
||||
)
|
||||
if not guild_data["shuffle"] and queue_dur > 0:
|
||||
embed.set_footer(
|
||||
text=_(
|
||||
"{time} until start of playlist"
|
||||
" playback: starts at #{position} in queue"
|
||||
).format(time=queue_total_duration, position=before_queue_length + 1)
|
||||
)
|
||||
|
||||
await notifier.update_embed(embed)
|
||||
lock(ctx, False)
|
||||
|
||||
if spotify_cache:
|
||||
task = ("insert", ("spotify", database_entries))
|
||||
self.append_task(ctx, *task)
|
||||
except Exception as e:
|
||||
lock(ctx, False)
|
||||
raise e
|
||||
finally:
|
||||
lock(ctx, False)
|
||||
return track_list
|
||||
|
||||
async def youtube_query(self, ctx: commands.Context, track_info: str) -> str:
|
||||
current_cache_level = CacheLevel(await self.config.cache_level())
|
||||
cache_enabled = CacheLevel.set_youtube().is_subset(current_cache_level)
|
||||
val = None
|
||||
if cache_enabled:
|
||||
update = True
|
||||
with contextlib.suppress(SQLError):
|
||||
(val, update) = await self.database.fetch_one(
|
||||
"youtube", "youtube_url", {"track": track_info}
|
||||
)
|
||||
if update:
|
||||
val = None
|
||||
if val is None:
|
||||
youtube_url = await self._youtube_first_time_query(
|
||||
ctx, track_info, current_cache_level=current_cache_level
|
||||
)
|
||||
else:
|
||||
if cache_enabled:
|
||||
task = ("update", ("youtube", {"track": track_info}))
|
||||
self.append_task(ctx, *task)
|
||||
youtube_url = val
|
||||
return youtube_url
|
||||
|
||||
async def lavalink_query(
|
||||
self,
|
||||
ctx: commands.Context,
|
||||
player: lavalink.Player,
|
||||
query: audio_dataclasses.Query,
|
||||
forced: bool = False,
|
||||
) -> Tuple[LoadResult, bool]:
|
||||
"""A replacement for :code:`lavalink.Player.load_tracks`. This will try to get a valid
|
||||
cached entry first if not found or if in valid it will then call the lavalink API.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
ctx: commands.Context
|
||||
The context this method is being called under.
|
||||
player : lavalink.Player
|
||||
The player who's requesting the query.
|
||||
query: audio_dataclasses.Query
|
||||
The Query object for the query in question.
|
||||
forced:bool
|
||||
Whether or not to skip cache and call API first..
|
||||
Returns
|
||||
-------
|
||||
Tuple[lavalink.LoadResult, bool]
|
||||
Tuple with the Load result and whether or not the API was called.
|
||||
"""
|
||||
current_cache_level = CacheLevel(await self.config.cache_level())
|
||||
cache_enabled = CacheLevel.set_lavalink().is_subset(current_cache_level)
|
||||
val = None
|
||||
_raw_query = audio_dataclasses.Query.process_input(query)
|
||||
query = str(_raw_query)
|
||||
if cache_enabled and not forced and not _raw_query.is_local:
|
||||
update = True
|
||||
with contextlib.suppress(SQLError):
|
||||
(val, update) = await self.database.fetch_one("lavalink", "data", {"query": query})
|
||||
if update:
|
||||
val = None
|
||||
if val and isinstance(val, dict):
|
||||
log.debug(f"Querying Local Database for {query}")
|
||||
task = ("update", ("lavalink", {"query": query}))
|
||||
self.append_task(ctx, *task)
|
||||
else:
|
||||
val = None
|
||||
if val and not forced and isinstance(val, dict):
|
||||
data = val
|
||||
data["query"] = query
|
||||
if data.get("loadType") == "V2_COMPACT":
|
||||
data["loadType"] = "V2_COMPAT"
|
||||
results = LoadResult(data)
|
||||
called_api = False
|
||||
if results.has_error:
|
||||
# If cached value has an invalid entry make a new call so that it gets updated
|
||||
return await self.lavalink_query(ctx, player, _raw_query, forced=True)
|
||||
else:
|
||||
called_api = True
|
||||
results = None
|
||||
try:
|
||||
results = await player.load_tracks(query)
|
||||
except KeyError:
|
||||
results = None
|
||||
except RuntimeError:
|
||||
raise TrackEnqueueError
|
||||
if results is None:
|
||||
results = LoadResult({"loadType": "LOAD_FAILED", "playlistInfo": {}, "tracks": []})
|
||||
if (
|
||||
cache_enabled
|
||||
and results.load_type
|
||||
and not results.has_error
|
||||
and not _raw_query.is_local
|
||||
and results.tracks
|
||||
):
|
||||
with contextlib.suppress(SQLError):
|
||||
time_now = int(datetime.datetime.now(datetime.timezone.utc).timestamp())
|
||||
data = json.dumps(results._raw)
|
||||
if all(
|
||||
k in data for k in ["loadType", "playlistInfo", "isSeekable", "isStream"]
|
||||
):
|
||||
task = (
|
||||
"insert",
|
||||
(
|
||||
"lavalink",
|
||||
[
|
||||
{
|
||||
"query": query,
|
||||
"data": data,
|
||||
"last_updated": time_now,
|
||||
"last_fetched": time_now,
|
||||
}
|
||||
],
|
||||
),
|
||||
)
|
||||
self.append_task(ctx, *task)
|
||||
return results, called_api
|
||||
|
||||
async def run_tasks(self, ctx: Optional[commands.Context] = None, _id=None):
|
||||
lock_id = _id or ctx.message.id
|
||||
lock_author = ctx.author if ctx else None
|
||||
async with self._lock:
|
||||
if lock_id in self._tasks:
|
||||
log.debug(f"Running database writes for {lock_id} ({lock_author})")
|
||||
with contextlib.suppress(Exception):
|
||||
tasks = self._tasks[ctx.message.id]
|
||||
del self._tasks[ctx.message.id]
|
||||
await asyncio.gather(
|
||||
*[self.database.insert(*a) for a in tasks["insert"]],
|
||||
return_exceptions=True,
|
||||
)
|
||||
await asyncio.gather(
|
||||
*[self.database.update(*a) for a in tasks["update"]],
|
||||
return_exceptions=True,
|
||||
)
|
||||
log.debug(f"Completed database writes for {lock_id} " f"({lock_author})")
|
||||
|
||||
async def run_all_pending_tasks(self):
|
||||
async with self._lock:
|
||||
log.debug("Running pending writes to database")
|
||||
with contextlib.suppress(Exception):
|
||||
tasks = {"update": [], "insert": []}
|
||||
for (k, task) in self._tasks.items():
|
||||
for t, args in task.items():
|
||||
tasks[t].append(args)
|
||||
self._tasks = {}
|
||||
|
||||
await asyncio.gather(
|
||||
*[self.database.insert(*a) for a in tasks["insert"]], return_exceptions=True
|
||||
)
|
||||
await asyncio.gather(
|
||||
*[self.database.update(*a) for a in tasks["update"]], return_exceptions=True
|
||||
)
|
||||
log.debug("Completed pending writes to database have finished")
|
||||
|
||||
def append_task(self, ctx: commands.Context, event: str, task: tuple, _id=None):
|
||||
lock_id = _id or ctx.message.id
|
||||
if lock_id not in self._tasks:
|
||||
self._tasks[lock_id] = {"update": [], "insert": []}
|
||||
self._tasks[lock_id][event].append(task)
|
||||
|
||||
async def get_random_from_db(self):
|
||||
tracks = []
|
||||
try:
|
||||
query_data = {}
|
||||
date = datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(days=7)
|
||||
date = int(date.timestamp())
|
||||
query_data["day"] = date
|
||||
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()))
|
||||
query_data["maxage"] = maxage_int
|
||||
|
||||
vals = await self.database.fetch_all("lavalink", "data", query_data)
|
||||
recently_played = [r.tracks for r in vals if r if isinstance(tracks, dict)]
|
||||
|
||||
if recently_played:
|
||||
track = random.choice(recently_played)
|
||||
if track.get("loadType") == "V2_COMPACT":
|
||||
track["loadType"] = "V2_COMPAT"
|
||||
results = LoadResult(track)
|
||||
tracks = list(results.tracks)
|
||||
except Exception:
|
||||
tracks = []
|
||||
|
||||
return tracks
|
||||
|
||||
async def autoplay(self, player: lavalink.Player):
|
||||
autoplaylist = await self.config.guild(player.channel.guild).autoplaylist()
|
||||
current_cache_level = CacheLevel(await self.config.cache_level())
|
||||
cache_enabled = CacheLevel.set_lavalink().is_subset(current_cache_level)
|
||||
playlist = None
|
||||
tracks = None
|
||||
if autoplaylist["enabled"]:
|
||||
with contextlib.suppress(Exception):
|
||||
playlist = await get_playlist(
|
||||
autoplaylist["id"],
|
||||
autoplaylist["scope"],
|
||||
self.bot,
|
||||
player.channel.guild,
|
||||
player.channel.guild.me,
|
||||
)
|
||||
tracks = playlist.tracks_obj
|
||||
|
||||
if not tracks or not getattr(playlist, "tracks", None):
|
||||
if cache_enabled:
|
||||
tracks = await self.get_random_from_db()
|
||||
if not tracks:
|
||||
ctx = namedtuple("Context", "message")
|
||||
(results, called_api) = await self.lavalink_query(
|
||||
ctx(player.channel.guild),
|
||||
player,
|
||||
audio_dataclasses.Query.process_input(_TOP_100_US),
|
||||
)
|
||||
tracks = list(results.tracks)
|
||||
if tracks:
|
||||
multiple = len(tracks) > 1
|
||||
track = tracks[0]
|
||||
|
||||
valid = not multiple
|
||||
tries = len(tracks)
|
||||
while valid is False and multiple:
|
||||
tries -= 1
|
||||
if tries <= 0:
|
||||
raise DatabaseError("No valid entry found")
|
||||
track = random.choice(tracks)
|
||||
query = audio_dataclasses.Query.process_input(track)
|
||||
await asyncio.sleep(0.001)
|
||||
if not query.valid:
|
||||
continue
|
||||
if query.is_local and not query.track.exists():
|
||||
continue
|
||||
if not await is_allowed(
|
||||
player.channel.guild,
|
||||
(
|
||||
f"{track.title} {track.author} {track.uri} "
|
||||
f"{str(audio_dataclasses.Query.process_input(track))}"
|
||||
),
|
||||
):
|
||||
log.debug(
|
||||
"Query is not allowed in "
|
||||
f"{player.channel.guild} ({player.channel.guild.id})"
|
||||
)
|
||||
continue
|
||||
valid = True
|
||||
|
||||
track.extras["autoplay"] = True
|
||||
player.add(player.channel.guild.me, track)
|
||||
self.bot.dispatch(
|
||||
"red_audio_track_auto_play", player.channel.guild, track, player.channel.guild.me
|
||||
)
|
||||
if not player.current:
|
||||
await player.play()
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,675 +0,0 @@
|
||||
import asyncio
|
||||
import contextlib
|
||||
import glob
|
||||
import ntpath
|
||||
import os
|
||||
import posixpath
|
||||
import re
|
||||
from pathlib import Path, PosixPath, WindowsPath
|
||||
from typing import List, Optional, Union, MutableMapping, Iterator, AsyncIterator
|
||||
from urllib.parse import urlparse
|
||||
|
||||
import lavalink
|
||||
|
||||
from redbot.core import Config
|
||||
from redbot.core.bot import Red
|
||||
from redbot.core.i18n import Translator
|
||||
|
||||
_config: Optional[Config] = None
|
||||
_bot: Optional[Red] = None
|
||||
_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",
|
||||
".m4a",
|
||||
".aac",
|
||||
".ra",
|
||||
".wav",
|
||||
".opus",
|
||||
".wma",
|
||||
".ts",
|
||||
".au",
|
||||
# These do not work
|
||||
# ".mid",
|
||||
# ".mka",
|
||||
# ".amr",
|
||||
# ".aiff",
|
||||
# ".ac3",
|
||||
# ".voc",
|
||||
# ".dsf",
|
||||
)
|
||||
_PARTIALLY_SUPPORTED_VIDEO_EXT = (
|
||||
".mp4",
|
||||
".mov",
|
||||
".flv",
|
||||
".webm",
|
||||
".mkv",
|
||||
".wmv",
|
||||
".3gp",
|
||||
".m4v",
|
||||
".mk3d", # https://github.com/Devoxin/lavaplayer
|
||||
".mka", # https://github.com/Devoxin/lavaplayer
|
||||
".mks", # https://github.com/Devoxin/lavaplayer
|
||||
# These do not work
|
||||
# ".vob",
|
||||
# ".mts",
|
||||
# ".avi",
|
||||
# ".mpg",
|
||||
# ".mpeg",
|
||||
# ".swf",
|
||||
)
|
||||
_PARTIALLY_SUPPORTED_MUSIC_EXT += _PARTIALLY_SUPPORTED_VIDEO_EXT
|
||||
|
||||
|
||||
def _pass_config_to_dataclasses(config: Config, bot: Red, folder: str):
|
||||
global _config, _bot, _localtrack_folder
|
||||
if _config is None:
|
||||
_config = config
|
||||
if _bot is None:
|
||||
_bot = bot
|
||||
_localtrack_folder = folder
|
||||
|
||||
|
||||
class LocalPath:
|
||||
"""Local tracks class.
|
||||
|
||||
Used to handle system dir trees in a cross system manner. The only use of this class is for
|
||||
`localtracks`.
|
||||
"""
|
||||
|
||||
_all_music_ext = _FULLY_SUPPORTED_MUSIC_EXT + _PARTIALLY_SUPPORTED_MUSIC_EXT
|
||||
|
||||
def __init__(self, path, **kwargs):
|
||||
self._path = path
|
||||
if isinstance(path, (Path, WindowsPath, PosixPath, LocalPath)):
|
||||
path = str(path.absolute())
|
||||
elif path is not None:
|
||||
path = str(path)
|
||||
|
||||
self.cwd = Path.cwd()
|
||||
_lt_folder = Path(_localtrack_folder) if _localtrack_folder else self.cwd
|
||||
_path = Path(path) if path else self.cwd
|
||||
|
||||
if _lt_folder.parts[-1].lower() == "localtracks" and not kwargs.get("forced"):
|
||||
self.localtrack_folder = _lt_folder
|
||||
elif kwargs.get("forced"):
|
||||
if _path.parts[-1].lower() == "localtracks":
|
||||
self.localtrack_folder = _path
|
||||
else:
|
||||
self.localtrack_folder = _path / "localtracks"
|
||||
else:
|
||||
self.localtrack_folder = _lt_folder / "localtracks"
|
||||
|
||||
try:
|
||||
_path = Path(path)
|
||||
_path.relative_to(self.localtrack_folder)
|
||||
self.path = _path
|
||||
except (ValueError, TypeError):
|
||||
for sep in _PATH_SEPS:
|
||||
if path and path.startswith(f"localtracks{sep}{sep}"):
|
||||
path = path.replace(f"localtracks{sep}{sep}", "", 1)
|
||||
elif path and path.startswith(f"localtracks{sep}"):
|
||||
path = path.replace(f"localtracks{sep}", "", 1)
|
||||
self.path = self.localtrack_folder.joinpath(path) if path else self.localtrack_folder
|
||||
|
||||
try:
|
||||
if self.path.is_file():
|
||||
parent = self.path.parent
|
||||
else:
|
||||
parent = self.path
|
||||
self.parent = Path(parent)
|
||||
except OSError:
|
||||
self.parent = None
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return str(self.path.name)
|
||||
|
||||
@property
|
||||
def suffix(self):
|
||||
return str(self.path.suffix)
|
||||
|
||||
def is_dir(self):
|
||||
try:
|
||||
return self.path.is_dir()
|
||||
except OSError:
|
||||
return False
|
||||
|
||||
def exists(self):
|
||||
try:
|
||||
return self.path.exists()
|
||||
except OSError:
|
||||
return False
|
||||
|
||||
def is_file(self):
|
||||
try:
|
||||
return self.path.is_file()
|
||||
except OSError:
|
||||
return False
|
||||
|
||||
def absolute(self):
|
||||
try:
|
||||
return self.path.absolute()
|
||||
except OSError:
|
||||
return self._path
|
||||
|
||||
@classmethod
|
||||
def joinpath(cls, *args):
|
||||
modified = cls(None)
|
||||
modified.path = modified.path.joinpath(*args)
|
||||
return modified
|
||||
|
||||
def rglob(self, pattern, folder=False) -> Iterator[str]:
|
||||
if folder:
|
||||
return glob.iglob(f"{self.path}{os.sep}**{os.sep}", recursive=True)
|
||||
else:
|
||||
return glob.iglob(f"{self.path}{os.sep}**{os.sep}{pattern}", recursive=True)
|
||||
|
||||
def glob(self, pattern, folder=False) -> Iterator[str]:
|
||||
if folder:
|
||||
return glob.iglob(f"{self.path}{os.sep}*{os.sep}", recursive=False)
|
||||
else:
|
||||
return glob.iglob(f"{self.path}{os.sep}*{pattern}", recursive=False)
|
||||
|
||||
async def multiglob(self, *patterns, folder=False) -> AsyncIterator["LocalPath"]:
|
||||
for p in patterns:
|
||||
for rp in self.glob(p):
|
||||
rp = LocalPath(rp)
|
||||
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"]:
|
||||
for p in patterns:
|
||||
for rp in self.rglob(p):
|
||||
rp = LocalPath(rp)
|
||||
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):
|
||||
return self.to_string()
|
||||
|
||||
def __repr__(self):
|
||||
return str(self)
|
||||
|
||||
def to_string(self):
|
||||
try:
|
||||
return str(self.path.absolute())
|
||||
except OSError:
|
||||
return str(self._path)
|
||||
|
||||
def to_string_user(self, arg: str = None):
|
||||
string = str(self.absolute()).replace(
|
||||
(str(self.localtrack_folder.absolute()) + os.sep) if arg is None else arg, ""
|
||||
)
|
||||
chunked = False
|
||||
while len(string) > 145 and os.sep in string:
|
||||
string = string.split(os.sep, 1)[-1]
|
||||
chunked = True
|
||||
|
||||
if chunked:
|
||||
string = f"...{os.sep}{string}"
|
||||
return string
|
||||
|
||||
async def tracks_in_tree(self):
|
||||
tracks = []
|
||||
async for track in self.multirglob(*[f"{ext}" for ext in self._all_music_ext]):
|
||||
with contextlib.suppress(ValueError):
|
||||
if track.path.parent != self.localtrack_folder and track.path.relative_to(
|
||||
self.path
|
||||
):
|
||||
tracks.append(Query.process_input(track))
|
||||
return sorted(tracks, key=lambda x: x.to_string_user().lower())
|
||||
|
||||
async def subfolders_in_tree(self):
|
||||
return_folders = []
|
||||
async for f in self.multirglob("", folder=True):
|
||||
with contextlib.suppress(ValueError):
|
||||
if (
|
||||
f not in return_folders
|
||||
and f.path != self.localtrack_folder
|
||||
and f.path.relative_to(self.path)
|
||||
):
|
||||
return_folders.append(f)
|
||||
return sorted(return_folders, key=lambda x: x.to_string_user().lower())
|
||||
|
||||
async def tracks_in_folder(self):
|
||||
tracks = []
|
||||
async for track in self.multiglob(*[f"{ext}" for ext in self._all_music_ext]):
|
||||
with contextlib.suppress(ValueError):
|
||||
if track.path.parent != self.localtrack_folder and track.path.relative_to(
|
||||
self.path
|
||||
):
|
||||
tracks.append(Query.process_input(track))
|
||||
return sorted(tracks, key=lambda x: x.to_string_user().lower())
|
||||
|
||||
async def subfolders(self):
|
||||
return_folders = []
|
||||
async for f in self.multiglob("", folder=True):
|
||||
with contextlib.suppress(ValueError):
|
||||
if (
|
||||
f not in return_folders
|
||||
and f.path != self.localtrack_folder
|
||||
and f.path.relative_to(self.path)
|
||||
):
|
||||
return_folders.append(f)
|
||||
return sorted(return_folders, key=lambda x: x.to_string_user().lower())
|
||||
|
||||
def __eq__(self, other):
|
||||
if isinstance(other, LocalPath):
|
||||
return self.path._cparts == other.path._cparts
|
||||
elif isinstance(other, Path):
|
||||
return self.path._cparts == other._cpart
|
||||
return NotImplemented
|
||||
|
||||
def __hash__(self):
|
||||
try:
|
||||
return self._hash
|
||||
except AttributeError:
|
||||
self._hash = hash(tuple(self.path._cparts))
|
||||
return self._hash
|
||||
|
||||
def __lt__(self, other):
|
||||
if isinstance(other, LocalPath):
|
||||
return self.path._cparts < other.path._cparts
|
||||
elif isinstance(other, Path):
|
||||
return self.path._cparts < other._cpart
|
||||
return NotImplemented
|
||||
|
||||
def __le__(self, other):
|
||||
if isinstance(other, LocalPath):
|
||||
return self.path._cparts <= other.path._cparts
|
||||
elif isinstance(other, Path):
|
||||
return self.path._cparts <= other._cpart
|
||||
return NotImplemented
|
||||
|
||||
def __gt__(self, other):
|
||||
if isinstance(other, LocalPath):
|
||||
return self.path._cparts > other.path._cparts
|
||||
elif isinstance(other, Path):
|
||||
return self.path._cparts > other._cpart
|
||||
return NotImplemented
|
||||
|
||||
def __ge__(self, other):
|
||||
if isinstance(other, LocalPath):
|
||||
return self.path._cparts >= other.path._cparts
|
||||
elif isinstance(other, Path):
|
||||
return self.path._cparts >= other._cpart
|
||||
return NotImplemented
|
||||
|
||||
|
||||
class Query:
|
||||
"""Query data class.
|
||||
|
||||
Use: Query.process_input(query) to generate the Query object.
|
||||
"""
|
||||
|
||||
def __init__(self, query: Union[LocalPath, str], **kwargs):
|
||||
query = kwargs.get("queryforced", query)
|
||||
self._raw: Union[LocalPath, str] = query
|
||||
|
||||
_localtrack: LocalPath = LocalPath(query)
|
||||
|
||||
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.is_local: bool = kwargs.get("local", False)
|
||||
self.is_spotify: bool = kwargs.get("spotify", False)
|
||||
self.is_youtube: bool = kwargs.get("youtube", False)
|
||||
self.is_soundcloud: bool = kwargs.get("soundcloud", False)
|
||||
self.is_bandcamp: bool = kwargs.get("bandcamp", False)
|
||||
self.is_vimeo: bool = kwargs.get("vimeo", False)
|
||||
self.is_mixer: bool = kwargs.get("mixer", False)
|
||||
self.is_twitch: bool = kwargs.get("twitch", False)
|
||||
self.is_other: bool = kwargs.get("other", False)
|
||||
self.is_playlist: bool = kwargs.get("playlist", False)
|
||||
self.is_album: bool = kwargs.get("album", False)
|
||||
self.is_search: bool = kwargs.get("search", False)
|
||||
self.is_stream: bool = kwargs.get("stream", False)
|
||||
self.single_track: bool = kwargs.get("single", False)
|
||||
self.id: Optional[str] = kwargs.get("id", None)
|
||||
self.invoked_from: Optional[str] = kwargs.get("invoked_from", None)
|
||||
self.local_name: Optional[str] = kwargs.get("name", None)
|
||||
self.search_subfolders: bool = kwargs.get("search_subfolders", False)
|
||||
self.spotify_uri: Optional[str] = kwargs.get("uri", None)
|
||||
self.uri: Optional[str] = kwargs.get("url", None)
|
||||
self.is_url: bool = kwargs.get("is_url", False)
|
||||
|
||||
self.start_time: int = kwargs.get("start_time", 0)
|
||||
self.track_index: Optional[int] = kwargs.get("track_index", None)
|
||||
|
||||
if self.invoked_from == "sc search":
|
||||
self.is_youtube = False
|
||||
self.is_soundcloud = True
|
||||
|
||||
self.lavalink_query: str = self._get_query()
|
||||
|
||||
if self.is_playlist or self.is_album:
|
||||
self.single_track = False
|
||||
self._hash = hash(
|
||||
(
|
||||
self.valid,
|
||||
self.is_local,
|
||||
self.is_spotify,
|
||||
self.is_youtube,
|
||||
self.is_soundcloud,
|
||||
self.is_bandcamp,
|
||||
self.is_vimeo,
|
||||
self.is_mixer,
|
||||
self.is_twitch,
|
||||
self.is_other,
|
||||
self.is_playlist,
|
||||
self.is_album,
|
||||
self.is_search,
|
||||
self.is_stream,
|
||||
self.single_track,
|
||||
self.id,
|
||||
self.spotify_uri,
|
||||
self.start_time,
|
||||
self.track_index,
|
||||
self.uri,
|
||||
)
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return str(self.lavalink_query)
|
||||
|
||||
@classmethod
|
||||
def process_input(cls, query: Union[LocalPath, lavalink.Track, "Query", str], **kwargs):
|
||||
"""A replacement for :code:`lavalink.Player.load_tracks`. This will try to get a valid
|
||||
cached entry first if not found or if in valid it will then call the lavalink API.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
query : Union[Query, LocalPath, lavalink.Track, str]
|
||||
The query string or LocalPath object.
|
||||
Returns
|
||||
-------
|
||||
Query
|
||||
Returns a parsed Query object.
|
||||
"""
|
||||
if not query:
|
||||
query = "InvalidQueryPlaceHolderName"
|
||||
possible_values = {}
|
||||
|
||||
if isinstance(query, str):
|
||||
query = query.strip("<>")
|
||||
while "ytsearch:" in query:
|
||||
query = query.replace("ytsearch:", "")
|
||||
while "scsearch:" in query:
|
||||
query = query.replace("scsearch:", "")
|
||||
|
||||
elif isinstance(query, Query):
|
||||
for key, val in kwargs.items():
|
||||
setattr(query, key, val)
|
||||
return query
|
||||
elif isinstance(query, lavalink.Track):
|
||||
possible_values["stream"] = query.is_stream
|
||||
query = query.uri
|
||||
|
||||
possible_values.update(dict(**kwargs))
|
||||
possible_values.update(cls._parse(query, **kwargs))
|
||||
return cls(query, **possible_values)
|
||||
|
||||
@staticmethod
|
||||
def _parse(track, **kwargs) -> MutableMapping:
|
||||
returning = {}
|
||||
if (
|
||||
type(track) == type(LocalPath)
|
||||
and (track.is_file() or track.is_dir())
|
||||
and track.exists()
|
||||
):
|
||||
returning["local"] = True
|
||||
returning["name"] = track.name
|
||||
if track.is_file():
|
||||
returning["single"] = True
|
||||
elif track.is_dir():
|
||||
returning["album"] = True
|
||||
else:
|
||||
track = str(track)
|
||||
if track.startswith("spotify:"):
|
||||
returning["spotify"] = True
|
||||
if ":playlist:" in track:
|
||||
returning["playlist"] = True
|
||||
elif ":album:" in track:
|
||||
returning["album"] = True
|
||||
elif ":track:" in track:
|
||||
returning["single"] = True
|
||||
_id = track.split(":", 2)[-1]
|
||||
_id = _id.split("?")[0]
|
||||
returning["id"] = _id
|
||||
if "#" in _id:
|
||||
match = re.search(_RE_SPOTIFY_TIMESTAMP, track)
|
||||
if match:
|
||||
returning["start_time"] = (int(match.group(1)) * 60) + int(match.group(2))
|
||||
returning["uri"] = track
|
||||
return returning
|
||||
if track.startswith("sc ") or track.startswith("list "):
|
||||
if track.startswith("sc "):
|
||||
returning["invoked_from"] = "sc search"
|
||||
returning["soundcloud"] = True
|
||||
elif track.startswith("list "):
|
||||
returning["invoked_from"] = "search list"
|
||||
track = _RE_REMOVE_START.sub("", track, 1)
|
||||
returning["queryforced"] = track
|
||||
|
||||
_localtrack = LocalPath(track)
|
||||
if _localtrack.exists():
|
||||
if _localtrack.is_file():
|
||||
returning["local"] = True
|
||||
returning["single"] = True
|
||||
returning["name"] = _localtrack.name
|
||||
return returning
|
||||
elif _localtrack.is_dir():
|
||||
returning["album"] = True
|
||||
returning["local"] = True
|
||||
returning["name"] = _localtrack.name
|
||||
return returning
|
||||
try:
|
||||
query_url = urlparse(track)
|
||||
if all([query_url.scheme, query_url.netloc, query_url.path]):
|
||||
returning["url"] = track
|
||||
returning["is_url"] = True
|
||||
url_domain = ".".join(query_url.netloc.split(".")[-2:])
|
||||
if not query_url.netloc:
|
||||
url_domain = ".".join(query_url.path.split("/")[0].split(".")[-2:])
|
||||
if url_domain in ["youtube.com", "youtu.be"]:
|
||||
returning["youtube"] = True
|
||||
_has_index = "&index=" in track
|
||||
if "&t=" in track:
|
||||
match = re.search(_RE_YOUTUBE_TIMESTAMP, track)
|
||||
if match:
|
||||
returning["start_time"] = int(match.group(1))
|
||||
if _has_index:
|
||||
match = re.search(_RE_YOUTUBE_INDEX, track)
|
||||
if match:
|
||||
returning["track_index"] = int(match.group(1)) - 1
|
||||
if all(k in track for k in ["&list=", "watch?"]):
|
||||
returning["track_index"] = 0
|
||||
returning["playlist"] = True
|
||||
returning["single"] = False
|
||||
elif all(x in track for x in ["playlist?"]):
|
||||
returning["playlist"] = not _has_index
|
||||
returning["single"] = _has_index
|
||||
elif any(k in track for k in ["list="]):
|
||||
returning["track_index"] = 0
|
||||
returning["playlist"] = True
|
||||
returning["single"] = False
|
||||
else:
|
||||
returning["single"] = True
|
||||
elif url_domain == "spotify.com":
|
||||
returning["spotify"] = True
|
||||
if "/playlist/" in track:
|
||||
returning["playlist"] = True
|
||||
elif "/album/" in track:
|
||||
returning["album"] = True
|
||||
elif "/track/" in track:
|
||||
returning["single"] = True
|
||||
val = re.sub(_RE_SPOTIFY_URL, "", track).replace("/", ":")
|
||||
if "user:" in val:
|
||||
val = val.split(":", 2)[-1]
|
||||
_id = val.split(":", 1)[-1]
|
||||
_id = _id.split("?")[0]
|
||||
|
||||
if "#" in _id:
|
||||
_id = _id.split("#")[0]
|
||||
match = re.search(_RE_SPOTIFY_TIMESTAMP, track)
|
||||
if match:
|
||||
returning["start_time"] = (int(match.group(1)) * 60) + int(
|
||||
match.group(2)
|
||||
)
|
||||
|
||||
returning["id"] = _id
|
||||
returning["uri"] = f"spotify:{val}"
|
||||
elif url_domain == "soundcloud.com":
|
||||
returning["soundcloud"] = True
|
||||
if "#t=" in track:
|
||||
match = re.search(_RE_SOUNDCLOUD_TIMESTAMP, track)
|
||||
if match:
|
||||
returning["start_time"] = (int(match.group(1)) * 60) + int(
|
||||
match.group(2)
|
||||
)
|
||||
if "/sets/" in track:
|
||||
if "?in=" in track:
|
||||
returning["single"] = True
|
||||
else:
|
||||
returning["playlist"] = True
|
||||
else:
|
||||
returning["single"] = True
|
||||
elif url_domain == "bandcamp.com":
|
||||
returning["bandcamp"] = True
|
||||
if "/album/" in track:
|
||||
returning["album"] = True
|
||||
else:
|
||||
returning["single"] = True
|
||||
elif url_domain == "vimeo.com":
|
||||
returning["vimeo"] = True
|
||||
elif url_domain in ["mixer.com", "beam.pro"]:
|
||||
returning["mixer"] = True
|
||||
elif url_domain == "twitch.tv":
|
||||
returning["twitch"] = True
|
||||
if "?t=" in track:
|
||||
match = re.search(_RE_TWITCH_TIMESTAMP, track)
|
||||
if match:
|
||||
returning["start_time"] = (
|
||||
(int(match.group(1)) * 60 * 60)
|
||||
+ (int(match.group(2)) * 60)
|
||||
+ int(match.group(3))
|
||||
)
|
||||
|
||||
if not any(x in track for x in ["/clip/", "/videos/"]):
|
||||
returning["stream"] = True
|
||||
else:
|
||||
returning["other"] = True
|
||||
returning["single"] = True
|
||||
else:
|
||||
if kwargs.get("soundcloud", False):
|
||||
returning["soundcloud"] = True
|
||||
else:
|
||||
returning["youtube"] = True
|
||||
returning["search"] = True
|
||||
returning["single"] = True
|
||||
except Exception:
|
||||
returning["search"] = True
|
||||
returning["youtube"] = True
|
||||
returning["single"] = True
|
||||
return returning
|
||||
|
||||
def _get_query(self):
|
||||
if self.is_local:
|
||||
return self.track.to_string()
|
||||
elif self.is_spotify:
|
||||
return self.spotify_uri
|
||||
elif self.is_search and self.is_youtube:
|
||||
return f"ytsearch:{self.track}"
|
||||
elif self.is_search and self.is_soundcloud:
|
||||
return f"scsearch:{self.track}"
|
||||
return self.track
|
||||
|
||||
def to_string_user(self):
|
||||
if self.is_local:
|
||||
return str(self.track.to_string_user())
|
||||
return str(self._raw)
|
||||
|
||||
@property
|
||||
def suffix(self):
|
||||
if self.is_local:
|
||||
return self.track.suffix
|
||||
return None
|
||||
|
||||
def __eq__(self, other):
|
||||
if not isinstance(other, Query):
|
||||
return NotImplemented
|
||||
return self.to_string_user() == other.to_string_user()
|
||||
|
||||
def __hash__(self):
|
||||
try:
|
||||
return self._hash
|
||||
except AttributeError:
|
||||
self._hash = hash(
|
||||
(
|
||||
self.valid,
|
||||
self.is_local,
|
||||
self.is_spotify,
|
||||
self.is_youtube,
|
||||
self.is_soundcloud,
|
||||
self.is_bandcamp,
|
||||
self.is_vimeo,
|
||||
self.is_mixer,
|
||||
self.is_twitch,
|
||||
self.is_other,
|
||||
self.is_playlist,
|
||||
self.is_album,
|
||||
self.is_search,
|
||||
self.is_stream,
|
||||
self.single_track,
|
||||
self.id,
|
||||
self.spotify_uri,
|
||||
self.start_time,
|
||||
self.track_index,
|
||||
self.uri,
|
||||
)
|
||||
)
|
||||
return self._hash
|
||||
|
||||
def __lt__(self, other):
|
||||
if not isinstance(other, Query):
|
||||
return NotImplemented
|
||||
return self.to_string_user() < other.to_string_user()
|
||||
|
||||
def __le__(self, other):
|
||||
if not isinstance(other, Query):
|
||||
return NotImplemented
|
||||
return self.to_string_user() <= other.to_string_user()
|
||||
|
||||
def __gt__(self, other):
|
||||
if not isinstance(other, Query):
|
||||
return NotImplemented
|
||||
return self.to_string_user() > other.to_string_user()
|
||||
|
||||
def __ge__(self, other):
|
||||
if not isinstance(other, Query):
|
||||
return NotImplemented
|
||||
return self.to_string_user() >= other.to_string_user()
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -1,515 +0,0 @@
|
||||
import argparse
|
||||
import functools
|
||||
import re
|
||||
from typing import Optional, Tuple, Union, MutableMapping, TYPE_CHECKING
|
||||
|
||||
import discord
|
||||
|
||||
from redbot.core import Config, commands
|
||||
from redbot.core.bot import Red
|
||||
from redbot.core.i18n import Translator
|
||||
|
||||
from .errors import NoMatchesFound, TooManyMatches
|
||||
from .playlists import get_all_playlist_converter, standardize_scope
|
||||
from .utils import PlaylistScope
|
||||
|
||||
_ = Translator("Audio", __file__)
|
||||
|
||||
__all__ = [
|
||||
"ComplexScopeParser",
|
||||
"PlaylistConverter",
|
||||
"ScopeParser",
|
||||
"LazyGreedyConverter",
|
||||
"standardize_scope",
|
||||
"get_lazy_converter",
|
||||
"get_playlist_converter",
|
||||
]
|
||||
|
||||
if TYPE_CHECKING:
|
||||
_bot: Red
|
||||
_config: Config
|
||||
else:
|
||||
_bot = None
|
||||
_config = None
|
||||
|
||||
_SCOPE_HELP = """
|
||||
Scope must be a valid version of one of the following:
|
||||
Global
|
||||
Guild
|
||||
User
|
||||
"""
|
||||
_USER_HELP = """
|
||||
Author must be a valid version of one of the following:
|
||||
User ID
|
||||
User Mention
|
||||
User Name#123
|
||||
"""
|
||||
_GUILD_HELP = """
|
||||
Guild must be a valid version of one of the following:
|
||||
Guild ID
|
||||
Exact guild name
|
||||
"""
|
||||
|
||||
MENTION_RE = 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]:
|
||||
m = MENTION_RE.match(arg)
|
||||
if m:
|
||||
return int(m.group(1))
|
||||
|
||||
|
||||
async def global_unique_guild_finder(ctx: commands.Context, arg: str) -> discord.Guild:
|
||||
bot: commands.Bot = ctx.bot
|
||||
_id = _match_id(arg)
|
||||
|
||||
if _id is not None:
|
||||
guild: discord.Guild = bot.get_guild(_id)
|
||||
if guild is not None:
|
||||
return guild
|
||||
|
||||
maybe_matches = []
|
||||
for obj in bot.guilds:
|
||||
if obj.name == arg or str(obj) == arg:
|
||||
maybe_matches.append(obj)
|
||||
|
||||
if not maybe_matches:
|
||||
raise NoMatchesFound(
|
||||
_(
|
||||
'"{arg}" was not found. It must be the ID or '
|
||||
"complete name of a server which the bot can see."
|
||||
).format(arg=arg)
|
||||
)
|
||||
elif len(maybe_matches) == 1:
|
||||
return maybe_matches[0]
|
||||
else:
|
||||
raise TooManyMatches(
|
||||
_(
|
||||
'"{arg}" does not refer to a unique server. '
|
||||
"Please use the ID for the server you're trying to specify."
|
||||
).format(arg=arg)
|
||||
)
|
||||
|
||||
|
||||
async def global_unique_user_finder(
|
||||
ctx: commands.Context, arg: str, guild: discord.guild = None
|
||||
) -> discord.abc.User:
|
||||
bot: commands.Bot = ctx.bot
|
||||
guild = guild or ctx.guild
|
||||
_id = _match_id(arg)
|
||||
|
||||
if _id is not None:
|
||||
user: discord.User = bot.get_user(_id)
|
||||
if user is not None:
|
||||
return user
|
||||
|
||||
objects = bot.users
|
||||
|
||||
maybe_matches = []
|
||||
for obj in objects:
|
||||
if obj.name == arg or str(obj) == arg:
|
||||
maybe_matches.append(obj)
|
||||
|
||||
if guild is not None:
|
||||
for member in guild.members:
|
||||
if member.nick == arg and not any(obj.id == member.id for obj in maybe_matches):
|
||||
maybe_matches.append(member)
|
||||
|
||||
if not maybe_matches:
|
||||
raise NoMatchesFound(
|
||||
_(
|
||||
'"{arg}" was not found. It must be the ID or name or '
|
||||
"mention a user which the bot can see."
|
||||
).format(arg=arg)
|
||||
)
|
||||
elif len(maybe_matches) == 1:
|
||||
return maybe_matches[0]
|
||||
else:
|
||||
raise TooManyMatches(
|
||||
_(
|
||||
'"{arg}" does not refer to a unique server. '
|
||||
"Please use the ID for the server you're trying to specify."
|
||||
).format(arg=arg)
|
||||
)
|
||||
|
||||
|
||||
class PlaylistConverter(commands.Converter):
|
||||
async def convert(self, ctx: commands.Context, arg: str) -> MutableMapping:
|
||||
global_matches = await get_all_playlist_converter(
|
||||
PlaylistScope.GLOBAL.value, _bot, arg, guild=ctx.guild, author=ctx.author
|
||||
)
|
||||
guild_matches = await get_all_playlist_converter(
|
||||
PlaylistScope.GUILD.value, _bot, arg, guild=ctx.guild, author=ctx.author
|
||||
)
|
||||
user_matches = await get_all_playlist_converter(
|
||||
PlaylistScope.USER.value, _bot, arg, guild=ctx.guild, author=ctx.author
|
||||
)
|
||||
if not user_matches and not guild_matches and not global_matches:
|
||||
raise commands.BadArgument(_("Could not match '{}' to a playlist.").format(arg))
|
||||
return {
|
||||
PlaylistScope.GLOBAL.value: global_matches,
|
||||
PlaylistScope.GUILD.value: guild_matches,
|
||||
PlaylistScope.USER.value: user_matches,
|
||||
"all": [*global_matches, *guild_matches, *user_matches],
|
||||
"arg": arg,
|
||||
}
|
||||
|
||||
|
||||
class NoExitParser(argparse.ArgumentParser):
|
||||
def error(self, message):
|
||||
raise commands.BadArgument()
|
||||
|
||||
|
||||
class ScopeParser(commands.Converter):
|
||||
async def convert(
|
||||
self, ctx: commands.Context, argument: str
|
||||
) -> Tuple[Optional[str], discord.User, Optional[discord.Guild], bool]:
|
||||
|
||||
target_scope: Optional[str] = None
|
||||
target_user: Optional[Union[discord.Member, discord.User]] = None
|
||||
target_guild: Optional[discord.Guild] = None
|
||||
specified_user = False
|
||||
|
||||
argument = argument.replace("—", "--")
|
||||
|
||||
command, *arguments = argument.split(" -- ")
|
||||
if arguments:
|
||||
argument = " -- ".join(arguments)
|
||||
else:
|
||||
command = None
|
||||
|
||||
parser = NoExitParser(description="Playlist Scope Parsing.", add_help=False)
|
||||
parser.add_argument("--scope", nargs="*", dest="scope", default=[])
|
||||
parser.add_argument("--guild", nargs="*", dest="guild", default=[])
|
||||
parser.add_argument("--server", nargs="*", dest="guild", default=[])
|
||||
parser.add_argument("--author", nargs="*", dest="author", default=[])
|
||||
parser.add_argument("--user", nargs="*", dest="author", default=[])
|
||||
parser.add_argument("--member", nargs="*", dest="author", default=[])
|
||||
|
||||
if not command:
|
||||
parser.add_argument("command", nargs="*")
|
||||
|
||||
try:
|
||||
vals = vars(parser.parse_args(argument.split()))
|
||||
except Exception as exc:
|
||||
raise commands.BadArgument() from exc
|
||||
|
||||
if vals["scope"]:
|
||||
scope_raw = " ".join(vals["scope"]).strip()
|
||||
scope = scope_raw.upper().strip()
|
||||
valid_scopes = PlaylistScope.list() + [
|
||||
"GLOBAL",
|
||||
"GUILD",
|
||||
"AUTHOR",
|
||||
"USER",
|
||||
"SERVER",
|
||||
"MEMBER",
|
||||
"BOT",
|
||||
]
|
||||
if scope not in valid_scopes:
|
||||
raise commands.ArgParserFailure("--scope", scope_raw, custom_help=_SCOPE_HELP)
|
||||
target_scope = standardize_scope(scope)
|
||||
elif "--scope" in argument and not vals["scope"]:
|
||||
raise commands.ArgParserFailure("--scope", "Nothing", custom_help=_SCOPE_HELP)
|
||||
|
||||
is_owner = await ctx.bot.is_owner(ctx.author)
|
||||
guild = vals.get("guild", None) or vals.get("server", None)
|
||||
if is_owner and guild:
|
||||
server_error = ""
|
||||
target_guild = None
|
||||
guild_raw = " ".join(guild).strip()
|
||||
try:
|
||||
target_guild = await global_unique_guild_finder(ctx, guild_raw)
|
||||
except TooManyMatches as err:
|
||||
server_error = f"{err}\n"
|
||||
except NoMatchesFound as err:
|
||||
server_error = f"{err}\n"
|
||||
if target_guild is None:
|
||||
raise commands.ArgParserFailure(
|
||||
"--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"])):
|
||||
raise commands.BadArgument("You cannot use `--guild`")
|
||||
elif any(x in argument for x in ["--guild", "--server"]):
|
||||
raise commands.ArgParserFailure("--guild", "Nothing", custom_help=_GUILD_HELP)
|
||||
|
||||
author = vals.get("author", None) or vals.get("user", None) or vals.get("member", None)
|
||||
if author:
|
||||
user_error = ""
|
||||
target_user = None
|
||||
user_raw = " ".join(author).strip()
|
||||
try:
|
||||
target_user = await global_unique_user_finder(ctx, user_raw, guild=target_guild)
|
||||
specified_user = True
|
||||
except TooManyMatches as err:
|
||||
user_error = f"{err}\n"
|
||||
except NoMatchesFound as err:
|
||||
user_error = f"{err}\n"
|
||||
|
||||
if target_user is None:
|
||||
raise commands.ArgParserFailure(
|
||||
"--author", user_raw, custom_help=f"{user_error}{_USER_HELP}"
|
||||
)
|
||||
elif any(x in argument for x in ["--author", "--user", "--member"]):
|
||||
raise commands.ArgParserFailure("--scope", "Nothing", custom_help=_USER_HELP)
|
||||
|
||||
target_scope: str = target_scope or None
|
||||
target_user: Union[discord.Member, discord.User] = target_user or ctx.author
|
||||
target_guild: discord.Guild = target_guild or ctx.guild
|
||||
|
||||
return target_scope, target_user, target_guild, specified_user
|
||||
|
||||
|
||||
class ComplexScopeParser(commands.Converter):
|
||||
async def convert(
|
||||
self, ctx: commands.Context, argument: str
|
||||
) -> Tuple[
|
||||
str,
|
||||
discord.User,
|
||||
Optional[discord.Guild],
|
||||
bool,
|
||||
str,
|
||||
discord.User,
|
||||
Optional[discord.Guild],
|
||||
bool,
|
||||
]:
|
||||
|
||||
target_scope: Optional[str] = None
|
||||
target_user: Optional[Union[discord.Member, discord.User]] = None
|
||||
target_guild: Optional[discord.Guild] = None
|
||||
specified_target_user = False
|
||||
|
||||
source_scope: Optional[str] = None
|
||||
source_user: Optional[Union[discord.Member, discord.User]] = None
|
||||
source_guild: Optional[discord.Guild] = None
|
||||
specified_source_user = False
|
||||
|
||||
argument = argument.replace("—", "--")
|
||||
|
||||
command, *arguments = argument.split(" -- ")
|
||||
if arguments:
|
||||
argument = " -- ".join(arguments)
|
||||
else:
|
||||
command = None
|
||||
|
||||
parser = NoExitParser(description="Playlist Scope Parsing.", add_help=False)
|
||||
|
||||
parser.add_argument("--to-scope", nargs="*", dest="to_scope", default=[])
|
||||
parser.add_argument("--to-guild", nargs="*", dest="to_guild", default=[])
|
||||
parser.add_argument("--to-server", nargs="*", dest="to_server", default=[])
|
||||
parser.add_argument("--to-author", nargs="*", dest="to_author", default=[])
|
||||
parser.add_argument("--to-user", nargs="*", dest="to_user", default=[])
|
||||
parser.add_argument("--to-member", nargs="*", dest="to_member", default=[])
|
||||
|
||||
parser.add_argument("--from-scope", nargs="*", dest="from_scope", default=[])
|
||||
parser.add_argument("--from-guild", nargs="*", dest="from_guild", default=[])
|
||||
parser.add_argument("--from-server", nargs="*", dest="from_server", default=[])
|
||||
parser.add_argument("--from-author", nargs="*", dest="from_author", default=[])
|
||||
parser.add_argument("--from-user", nargs="*", dest="from_user", default=[])
|
||||
parser.add_argument("--from-member", nargs="*", dest="from_member", default=[])
|
||||
|
||||
if not command:
|
||||
parser.add_argument("command", nargs="*")
|
||||
|
||||
try:
|
||||
vals = vars(parser.parse_args(argument.split()))
|
||||
except Exception as exc:
|
||||
raise commands.BadArgument() from exc
|
||||
|
||||
is_owner = await ctx.bot.is_owner(ctx.author)
|
||||
valid_scopes = PlaylistScope.list() + [
|
||||
"GLOBAL",
|
||||
"GUILD",
|
||||
"AUTHOR",
|
||||
"USER",
|
||||
"SERVER",
|
||||
"MEMBER",
|
||||
"BOT",
|
||||
]
|
||||
|
||||
if vals["to_scope"]:
|
||||
to_scope_raw = " ".join(vals["to_scope"]).strip()
|
||||
to_scope = to_scope_raw.upper().strip()
|
||||
if to_scope not in valid_scopes:
|
||||
raise commands.ArgParserFailure(
|
||||
"--to-scope", to_scope_raw, custom_help=_SCOPE_HELP
|
||||
)
|
||||
target_scope = standardize_scope(to_scope)
|
||||
elif "--to-scope" in argument and not vals["to_scope"]:
|
||||
raise commands.ArgParserFailure("--to-scope", "Nothing", custom_help=_SCOPE_HELP)
|
||||
|
||||
if vals["from_scope"]:
|
||||
from_scope_raw = " ".join(vals["from_scope"]).strip()
|
||||
from_scope = from_scope_raw.upper().strip()
|
||||
|
||||
if from_scope not in valid_scopes:
|
||||
raise commands.ArgParserFailure(
|
||||
"--from-scope", from_scope_raw, custom_help=_SCOPE_HELP
|
||||
)
|
||||
source_scope = standardize_scope(from_scope)
|
||||
elif "--from-scope" in argument and not vals["to_scope"]:
|
||||
raise commands.ArgParserFailure("--to-scope", "Nothing", custom_help=_SCOPE_HELP)
|
||||
|
||||
to_guild = vals.get("to_guild", None) or vals.get("to_server", None)
|
||||
if is_owner and to_guild:
|
||||
target_server_error = ""
|
||||
target_guild = None
|
||||
to_guild_raw = " ".join(to_guild).strip()
|
||||
try:
|
||||
target_guild = await global_unique_guild_finder(ctx, to_guild_raw)
|
||||
except TooManyMatches as err:
|
||||
target_server_error = f"{err}\n"
|
||||
except NoMatchesFound as err:
|
||||
target_server_error = f"{err}\n"
|
||||
if target_guild is None:
|
||||
raise commands.ArgParserFailure(
|
||||
"--to-guild", to_guild_raw, custom_help=f"{target_server_error}{_GUILD_HELP}"
|
||||
)
|
||||
elif not is_owner and (
|
||||
to_guild or any(x in argument for x in ["--to-guild", "--to-server"])
|
||||
):
|
||||
raise commands.BadArgument("You cannot use `--to-server`")
|
||||
elif any(x in argument for x in ["--to-guild", "--to-server"]):
|
||||
raise commands.ArgParserFailure("--to-server", "Nothing", custom_help=_GUILD_HELP)
|
||||
|
||||
from_guild = vals.get("from_guild", None) or vals.get("from_server", None)
|
||||
if is_owner and from_guild:
|
||||
source_server_error = ""
|
||||
source_guild = None
|
||||
from_guild_raw = " ".join(to_guild).strip()
|
||||
try:
|
||||
source_guild = await global_unique_guild_finder(ctx, from_guild_raw)
|
||||
except TooManyMatches as err:
|
||||
source_server_error = f"{err}\n"
|
||||
except NoMatchesFound as err:
|
||||
source_server_error = f"{err}\n"
|
||||
if source_guild is None:
|
||||
raise commands.ArgParserFailure(
|
||||
"--from-guild",
|
||||
from_guild_raw,
|
||||
custom_help=f"{source_server_error}{_GUILD_HELP}",
|
||||
)
|
||||
elif not is_owner and (
|
||||
from_guild or any(x in argument for x in ["--from-guild", "--from-server"])
|
||||
):
|
||||
raise commands.BadArgument("You cannot use `--from-server`")
|
||||
elif any(x in argument for x in ["--from-guild", "--from-server"]):
|
||||
raise commands.ArgParserFailure("--from-server", "Nothing", custom_help=_GUILD_HELP)
|
||||
|
||||
to_author = (
|
||||
vals.get("to_author", None) or vals.get("to_user", None) or vals.get("to_member", None)
|
||||
)
|
||||
if to_author:
|
||||
target_user_error = ""
|
||||
target_user = None
|
||||
to_user_raw = " ".join(to_author).strip()
|
||||
try:
|
||||
target_user = await global_unique_user_finder(ctx, to_user_raw, guild=target_guild)
|
||||
specified_target_user = True
|
||||
except TooManyMatches as err:
|
||||
target_user_error = f"{err}\n"
|
||||
except NoMatchesFound as err:
|
||||
target_user_error = f"{err}\n"
|
||||
if target_user is None:
|
||||
raise commands.ArgParserFailure(
|
||||
"--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"]):
|
||||
raise commands.ArgParserFailure("--to-user", "Nothing", custom_help=_USER_HELP)
|
||||
|
||||
from_author = (
|
||||
vals.get("from_author", None)
|
||||
or vals.get("from_user", None)
|
||||
or vals.get("from_member", None)
|
||||
)
|
||||
if from_author:
|
||||
source_user_error = ""
|
||||
source_user = None
|
||||
from_user_raw = " ".join(to_author).strip()
|
||||
try:
|
||||
source_user = await global_unique_user_finder(
|
||||
ctx, from_user_raw, guild=target_guild
|
||||
)
|
||||
specified_target_user = True
|
||||
except TooManyMatches as err:
|
||||
source_user_error = f"{err}\n"
|
||||
except NoMatchesFound as err:
|
||||
source_user_error = f"{err}\n"
|
||||
if source_user is None:
|
||||
raise commands.ArgParserFailure(
|
||||
"--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"]):
|
||||
raise commands.ArgParserFailure("--from-user", "Nothing", custom_help=_USER_HELP)
|
||||
|
||||
target_scope: str = target_scope or PlaylistScope.GUILD.value
|
||||
target_user: Union[discord.Member, discord.User] = target_user or ctx.author
|
||||
target_guild: discord.Guild = target_guild or ctx.guild
|
||||
|
||||
source_scope: str = source_scope or PlaylistScope.GUILD.value
|
||||
source_user: Union[discord.Member, discord.User] = source_user or ctx.author
|
||||
source_guild: discord.Guild = source_guild or ctx.guild
|
||||
|
||||
return (
|
||||
source_scope,
|
||||
source_user,
|
||||
source_guild,
|
||||
specified_source_user,
|
||||
target_scope,
|
||||
target_user,
|
||||
target_guild,
|
||||
specified_target_user,
|
||||
)
|
||||
|
||||
|
||||
class LazyGreedyConverter(commands.Converter):
|
||||
def __init__(self, splitter: str):
|
||||
self.splitter_Value = splitter
|
||||
|
||||
async def convert(self, ctx: commands.Context, argument: str) -> str:
|
||||
full_message = ctx.message.content.partition(f" {argument} ")
|
||||
if len(full_message) == 1:
|
||||
full_message = (
|
||||
(argument if argument not in full_message else "") + " " + full_message[0]
|
||||
)
|
||||
elif len(full_message) > 1:
|
||||
full_message = (
|
||||
(argument if argument not in full_message else "") + " " + full_message[-1]
|
||||
)
|
||||
greedy_output = (" " + full_message.replace("—", "--")).partition(
|
||||
f" {self.splitter_Value}"
|
||||
)[0]
|
||||
return f"{greedy_output}".strip()
|
||||
|
||||
|
||||
def get_lazy_converter(splitter: str) -> type:
|
||||
"""Returns a typechecking safe `LazyGreedyConverter` suitable for use with discord.py."""
|
||||
|
||||
class PartialMeta(type(LazyGreedyConverter)):
|
||||
__call__ = functools.partialmethod(type(LazyGreedyConverter).__call__, splitter)
|
||||
|
||||
class ValidatedConverter(LazyGreedyConverter, metaclass=PartialMeta):
|
||||
pass
|
||||
|
||||
return ValidatedConverter
|
||||
|
||||
|
||||
def get_playlist_converter() -> type:
|
||||
"""Returns a typechecking safe `PlaylistConverter` suitable for use with discord.py."""
|
||||
|
||||
class PartialMeta(type(PlaylistConverter)):
|
||||
__call__ = functools.partialmethod(type(PlaylistConverter).__call__)
|
||||
|
||||
class ValidatedConverter(PlaylistConverter, metaclass=PartialMeta):
|
||||
pass
|
||||
|
||||
return ValidatedConverter
|
||||
@@ -1,26 +0,0 @@
|
||||
server:
|
||||
host: "localhost"
|
||||
port: 2333 # REST server
|
||||
lavalink:
|
||||
server:
|
||||
password: "youshallnotpass"
|
||||
sources:
|
||||
youtube: true
|
||||
bandcamp: true
|
||||
soundcloud: true
|
||||
twitch: true
|
||||
vimeo: true
|
||||
mixer: true
|
||||
http: true
|
||||
local: true
|
||||
sentryDsn: ""
|
||||
bufferDurationMs: 400
|
||||
youtubePlaylistLoadLimit: 10000
|
||||
logging:
|
||||
file:
|
||||
max-history: 30
|
||||
max-size: 1GB
|
||||
path: ./logs/
|
||||
level:
|
||||
root: INFO
|
||||
lavalink: INFO
|
||||
@@ -1,372 +0,0 @@
|
||||
import asyncio
|
||||
import concurrent.futures
|
||||
import contextlib
|
||||
import datetime
|
||||
import json
|
||||
import logging
|
||||
import time
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Dict, List, Optional, TYPE_CHECKING, Tuple, Union, MutableMapping, Mapping
|
||||
|
||||
import apsw
|
||||
|
||||
from redbot.core import Config
|
||||
from redbot.core.bot import Red
|
||||
from redbot.core.data_manager import cog_data_path
|
||||
|
||||
from .errors import InvalidTableError
|
||||
from .sql_statements import *
|
||||
from .utils import PlaylistScope
|
||||
|
||||
log = logging.getLogger("red.audio.database")
|
||||
|
||||
if TYPE_CHECKING:
|
||||
database_connection: apsw.Connection
|
||||
_bot: Red
|
||||
_config: Config
|
||||
else:
|
||||
_config = None
|
||||
_bot = None
|
||||
database_connection = None
|
||||
|
||||
|
||||
SCHEMA_VERSION = 3
|
||||
SQLError = apsw.ExecutionCompleteError
|
||||
|
||||
|
||||
_PARSER: Mapping = {
|
||||
"youtube": {
|
||||
"insert": YOUTUBE_UPSERT,
|
||||
"youtube_url": {"query": YOUTUBE_QUERY},
|
||||
"update": YOUTUBE_UPDATE,
|
||||
},
|
||||
"spotify": {
|
||||
"insert": SPOTIFY_UPSERT,
|
||||
"track_info": {"query": SPOTIFY_QUERY},
|
||||
"update": SPOTIFY_UPDATE,
|
||||
},
|
||||
"lavalink": {
|
||||
"insert": LAVALINK_UPSERT,
|
||||
"data": {"query": LAVALINK_QUERY, "played": LAVALINK_QUERY_LAST_FETCHED_RANDOM},
|
||||
"update": LAVALINK_UPDATE,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def _pass_config_to_databases(config: Config, bot: Red):
|
||||
global _config, _bot, database_connection
|
||||
if _config is None:
|
||||
_config = config
|
||||
if _bot is None:
|
||||
_bot = bot
|
||||
if database_connection is None:
|
||||
database_connection = apsw.Connection(
|
||||
str(cog_data_path(_bot.get_cog("Audio")) / "Audio.db")
|
||||
)
|
||||
|
||||
|
||||
@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)
|
||||
|
||||
|
||||
@dataclass
|
||||
class CacheFetchResult:
|
||||
query: Optional[Union[str, 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) and all(
|
||||
k in self.query for k in ["loadType", "playlistInfo", "isSeekable", "isStream"]
|
||||
):
|
||||
self.query = json.loads(self.query)
|
||||
|
||||
|
||||
@dataclass
|
||||
class CacheLastFetchResult:
|
||||
tracks: List[MutableMapping] = field(default_factory=lambda: [])
|
||||
|
||||
def __post_init__(self):
|
||||
if isinstance(self.tracks, str):
|
||||
self.tracks = json.loads(self.tracks)
|
||||
|
||||
|
||||
@dataclass
|
||||
class CacheGetAllLavalink:
|
||||
query: str
|
||||
data: List[MutableMapping] = field(default_factory=lambda: [])
|
||||
|
||||
def __post_init__(self):
|
||||
if isinstance(self.data, str):
|
||||
self.data = json.loads(self.data)
|
||||
|
||||
|
||||
class CacheInterface:
|
||||
def __init__(self):
|
||||
self.database = database_connection.cursor()
|
||||
|
||||
@staticmethod
|
||||
def close():
|
||||
with contextlib.suppress(Exception):
|
||||
database_connection.close()
|
||||
|
||||
async def init(self):
|
||||
self.database.execute(PRAGMA_SET_temp_store)
|
||||
self.database.execute(PRAGMA_SET_journal_mode)
|
||||
self.database.execute(PRAGMA_SET_read_uncommitted)
|
||||
self.maybe_migrate()
|
||||
|
||||
self.database.execute(LAVALINK_CREATE_TABLE)
|
||||
self.database.execute(LAVALINK_CREATE_INDEX)
|
||||
self.database.execute(YOUTUBE_CREATE_TABLE)
|
||||
self.database.execute(YOUTUBE_CREATE_INDEX)
|
||||
self.database.execute(SPOTIFY_CREATE_TABLE)
|
||||
self.database.execute(SPOTIFY_CREATE_INDEX)
|
||||
|
||||
await self.clean_up_old_entries()
|
||||
|
||||
async def clean_up_old_entries(self):
|
||||
max_age = await _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.execute, LAVALINK_DELETE_OLD_ENTRIES, values)
|
||||
executor.submit(self.database.execute, YOUTUBE_DELETE_OLD_ENTRIES, values)
|
||||
executor.submit(self.database.execute, SPOTIFY_DELETE_OLD_ENTRIES, values)
|
||||
|
||||
def maybe_migrate(self):
|
||||
current_version = self.database.execute(PRAGMA_FETCH_user_version).fetchone()
|
||||
if isinstance(current_version, tuple):
|
||||
current_version = current_version[0]
|
||||
if current_version == SCHEMA_VERSION:
|
||||
return
|
||||
self.database.execute(PRAGMA_SET_user_version, {"version": SCHEMA_VERSION})
|
||||
|
||||
async def insert(self, table: str, values: List[MutableMapping]):
|
||||
try:
|
||||
query = _PARSER.get(table, {}).get("insert")
|
||||
if query is None:
|
||||
raise InvalidTableError(f"{table} is not a valid table in the database.")
|
||||
self.database.execute("BEGIN;")
|
||||
self.database.executemany(query, values)
|
||||
self.database.execute("COMMIT;")
|
||||
except Exception as err:
|
||||
log.debug("Error during audio db insert", exc_info=err)
|
||||
|
||||
async def update(self, table: str, values: Dict[str, Union[str, int]]):
|
||||
try:
|
||||
table = _PARSER.get(table, {})
|
||||
sql_query = table.get("update")
|
||||
time_now = int(datetime.datetime.now(datetime.timezone.utc).timestamp())
|
||||
values["last_fetched"] = time_now
|
||||
if not table:
|
||||
raise InvalidTableError(f"{table} is not a valid table in the database.")
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
|
||||
executor.submit(self.database.execute, sql_query, values)
|
||||
except Exception as err:
|
||||
log.debug("Error during audio db update", exc_info=err)
|
||||
|
||||
async def fetch_one(
|
||||
self, table: str, query: str, values: Dict[str, Union[str, int]]
|
||||
) -> Tuple[Optional[str], bool]:
|
||||
table = _PARSER.get(table, {})
|
||||
sql_query = table.get(query, {}).get("query")
|
||||
if not table:
|
||||
raise InvalidTableError(f"{table} is not a valid table in the database.")
|
||||
max_age = await _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})
|
||||
output = self.database.execute(sql_query, values).fetchone() or (None, 0)
|
||||
result = CacheFetchResult(*output)
|
||||
return result.query, False
|
||||
|
||||
async def fetch_all(
|
||||
self, table: str, query: str, values: Dict[str, Union[str, int]]
|
||||
) -> List[CacheLastFetchResult]:
|
||||
table = _PARSER.get(table, {})
|
||||
sql_query = table.get(query, {}).get("played")
|
||||
if not table:
|
||||
raise InvalidTableError(f"{table} is not a valid table in the database.")
|
||||
|
||||
output = []
|
||||
for index, row in enumerate(self.database.execute(sql_query, values), start=1):
|
||||
if index % 50 == 0:
|
||||
await asyncio.sleep(0.01)
|
||||
output.append(CacheLastFetchResult(*row))
|
||||
return output
|
||||
|
||||
async def fetch_random(
|
||||
self, table: str, query: str, values: Dict[str, Union[str, int]]
|
||||
) -> CacheLastFetchResult:
|
||||
table = _PARSER.get(table, {})
|
||||
sql_query = table.get(query, {}).get("played")
|
||||
if not table:
|
||||
raise InvalidTableError(f"{table} is not a valid table in the database.")
|
||||
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
|
||||
for future in concurrent.futures.as_completed(
|
||||
[executor.submit(self.database.execute, sql_query, values)]
|
||||
):
|
||||
try:
|
||||
row = future.result()
|
||||
row = row.fetchone()
|
||||
except Exception as exc:
|
||||
log.debug(f"Failed to completed random fetch from database", exc_info=exc)
|
||||
return CacheLastFetchResult(*row)
|
||||
|
||||
|
||||
class PlaylistInterface:
|
||||
def __init__(self):
|
||||
self.cursor = database_connection.cursor()
|
||||
self.cursor.execute(PRAGMA_SET_temp_store)
|
||||
self.cursor.execute(PRAGMA_SET_journal_mode)
|
||||
self.cursor.execute(PRAGMA_SET_read_uncommitted)
|
||||
self.cursor.execute(PLAYLIST_CREATE_TABLE)
|
||||
self.cursor.execute(PLAYLIST_CREATE_INDEX)
|
||||
|
||||
@staticmethod
|
||||
def close():
|
||||
with contextlib.suppress(Exception):
|
||||
database_connection.close()
|
||||
|
||||
@staticmethod
|
||||
def get_scope_type(scope: str) -> int:
|
||||
if scope == PlaylistScope.GLOBAL.value:
|
||||
table = 1
|
||||
elif scope == PlaylistScope.USER.value:
|
||||
table = 3
|
||||
else:
|
||||
table = 2
|
||||
return table
|
||||
|
||||
def fetch(self, scope: str, playlist_id: int, scope_id: int) -> PlaylistFetchResult:
|
||||
scope_type = self.get_scope_type(scope)
|
||||
row = (
|
||||
self.cursor.execute(
|
||||
PLAYLIST_FETCH,
|
||||
({"playlist_id": playlist_id, "scope_id": scope_id, "scope_type": scope_type}),
|
||||
).fetchone()
|
||||
or []
|
||||
)
|
||||
|
||||
return PlaylistFetchResult(*row) if row else None
|
||||
|
||||
async def fetch_all(
|
||||
self, scope: str, scope_id: int, author_id=None
|
||||
) -> List[PlaylistFetchResult]:
|
||||
scope_type = self.get_scope_type(scope)
|
||||
if author_id is not None:
|
||||
output = []
|
||||
for index, row in enumerate(
|
||||
self.cursor.execute(
|
||||
PLAYLIST_FETCH_ALL_WITH_FILTER,
|
||||
({"scope_type": scope_type, "scope_id": scope_id, "author_id": author_id}),
|
||||
),
|
||||
start=1,
|
||||
):
|
||||
if index % 50 == 0:
|
||||
await asyncio.sleep(0.01)
|
||||
output.append(row)
|
||||
else:
|
||||
output = []
|
||||
for index, row in enumerate(
|
||||
self.cursor.execute(
|
||||
PLAYLIST_FETCH_ALL, ({"scope_type": scope_type, "scope_id": scope_id})
|
||||
),
|
||||
start=1,
|
||||
):
|
||||
if index % 50 == 0:
|
||||
await asyncio.sleep(0.01)
|
||||
output.append(row)
|
||||
return [PlaylistFetchResult(*row) for row in output] if output else []
|
||||
|
||||
async def fetch_all_converter(
|
||||
self, scope: str, playlist_name, playlist_id
|
||||
) -> List[PlaylistFetchResult]:
|
||||
scope_type = self.get_scope_type(scope)
|
||||
try:
|
||||
playlist_id = int(playlist_id)
|
||||
except Exception:
|
||||
playlist_id = -1
|
||||
|
||||
output = []
|
||||
for index, row in enumerate(
|
||||
self.cursor.execute(
|
||||
PLAYLIST_FETCH_ALL_CONVERTER,
|
||||
(
|
||||
{
|
||||
"scope_type": scope_type,
|
||||
"playlist_name": playlist_name,
|
||||
"playlist_id": playlist_id,
|
||||
}
|
||||
),
|
||||
),
|
||||
start=1,
|
||||
):
|
||||
if index % 50 == 0:
|
||||
await asyncio.sleep(0.01)
|
||||
output.append(row)
|
||||
return [PlaylistFetchResult(*row) for row in output] if output else []
|
||||
|
||||
def delete(self, scope: str, playlist_id: int, scope_id: int):
|
||||
scope_type = self.get_scope_type(scope)
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
|
||||
executor.submit(
|
||||
self.cursor.execute,
|
||||
PLAYLIST_DELETE,
|
||||
({"playlist_id": playlist_id, "scope_id": scope_id, "scope_type": scope_type}),
|
||||
)
|
||||
|
||||
def delete_scheduled(self):
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
|
||||
executor.submit(self.cursor.execute, PLAYLIST_DELETE_SCHEDULED)
|
||||
|
||||
def drop(self, scope: str):
|
||||
scope_type = self.get_scope_type(scope)
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
|
||||
executor.submit(
|
||||
self.cursor.execute, PLAYLIST_DELETE_SCOPE, ({"scope_type": scope_type})
|
||||
)
|
||||
|
||||
def create_table(self, scope: str):
|
||||
scope_type = self.get_scope_type(scope)
|
||||
return self.cursor.execute(PLAYLIST_CREATE_TABLE, ({"scope_type": scope_type}))
|
||||
|
||||
def upsert(
|
||||
self,
|
||||
scope: str,
|
||||
playlist_id: int,
|
||||
playlist_name: str,
|
||||
scope_id: int,
|
||||
author_id: int,
|
||||
playlist_url: Optional[str],
|
||||
tracks: List[MutableMapping],
|
||||
):
|
||||
scope_type = self.get_scope_type(scope)
|
||||
with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
|
||||
executor.submit(
|
||||
self.cursor.execute,
|
||||
PLAYLIST_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),
|
||||
},
|
||||
)
|
||||
@@ -1,47 +0,0 @@
|
||||
# The equalizer class and some audio eq functions are derived from
|
||||
# 180093157554388993's work, with his permission
|
||||
|
||||
|
||||
class Equalizer:
|
||||
def __init__(self):
|
||||
self._band_count = 15
|
||||
self.bands = [0.0 for _loop_counter in range(self._band_count)]
|
||||
|
||||
def set_gain(self, band: int, gain: float):
|
||||
if band < 0 or band >= self._band_count:
|
||||
raise IndexError(f"Band {band} does not exist!")
|
||||
|
||||
gain = min(max(gain, -0.25), 1.0)
|
||||
|
||||
self.bands[band] = gain
|
||||
|
||||
def get_gain(self, band: int):
|
||||
if band < 0 or band >= self._band_count:
|
||||
raise IndexError(f"Band {band} does not exist!")
|
||||
return self.bands[band]
|
||||
|
||||
def visualise(self):
|
||||
block = ""
|
||||
bands = [str(band + 1).zfill(2) for band in range(self._band_count)]
|
||||
bottom = (" " * 8) + " ".join(bands)
|
||||
gains = [1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 0.0, -0.1, -0.2, -0.25]
|
||||
|
||||
for gain in gains:
|
||||
prefix = ""
|
||||
if gain > 0:
|
||||
prefix = "+"
|
||||
elif gain == 0:
|
||||
prefix = " "
|
||||
|
||||
block += f"{prefix}{gain:.2f} | "
|
||||
|
||||
for value in self.bands:
|
||||
if value >= gain:
|
||||
block += "[] "
|
||||
else:
|
||||
block += " "
|
||||
|
||||
block += "\n"
|
||||
|
||||
block += bottom
|
||||
return block
|
||||
@@ -1,112 +0,0 @@
|
||||
import aiohttp
|
||||
|
||||
|
||||
class AudioError(Exception):
|
||||
"""Base exception for errors in the Audio cog."""
|
||||
|
||||
|
||||
class LavalinkDownloadFailed(AudioError, RuntimeError):
|
||||
"""Downloading the Lavalink jar failed.
|
||||
|
||||
Attributes
|
||||
----------
|
||||
response : aiohttp.ClientResponse
|
||||
The response from the server to the failed GET request.
|
||||
should_retry : bool
|
||||
Whether or not the Audio cog should retry downloading the jar.
|
||||
"""
|
||||
|
||||
def __init__(self, *args, response: aiohttp.ClientResponse, should_retry: bool = False):
|
||||
super().__init__(*args)
|
||||
self.response = response
|
||||
self.should_retry = should_retry
|
||||
|
||||
def __repr__(self) -> str:
|
||||
str_args = [*map(str, self.args), self._response_repr()]
|
||||
return f"LavalinkDownloadFailed({', '.join(str_args)}"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"{super().__str__()} {self._response_repr()}"
|
||||
|
||||
def _response_repr(self) -> str:
|
||||
return f"[{self.response.status} {self.response.reason}]"
|
||||
|
||||
|
||||
class QueryUnauthorized(AudioError):
|
||||
"""Provided an unauthorized query to audio."""
|
||||
|
||||
def __init__(self, message, *args):
|
||||
self.message = message
|
||||
super().__init__(*args)
|
||||
|
||||
|
||||
class TrackEnqueueError(AudioError):
|
||||
"""Unable to play track."""
|
||||
|
||||
|
||||
class PlayListError(AudioError):
|
||||
"""Base exception for errors related to playlists."""
|
||||
|
||||
|
||||
class InvalidPlaylistScope(PlayListError):
|
||||
"""Provided playlist scope is not valid."""
|
||||
|
||||
|
||||
class MissingGuild(PlayListError):
|
||||
"""Trying to access the Guild scope without a guild."""
|
||||
|
||||
|
||||
class MissingAuthor(PlayListError):
|
||||
"""Trying to access the User scope without an user id."""
|
||||
|
||||
|
||||
class TooManyMatches(PlayListError):
|
||||
"""Too many playlist match user input."""
|
||||
|
||||
|
||||
class NoMatchesFound(PlayListError):
|
||||
"""No entries found for this input."""
|
||||
|
||||
|
||||
class NotAllowed(PlayListError):
|
||||
"""Too many playlist match user input."""
|
||||
|
||||
|
||||
class ApiError(AudioError):
|
||||
"""Base exception for API errors in the Audio cog."""
|
||||
|
||||
|
||||
class SpotifyApiError(ApiError):
|
||||
"""Base exception for Spotify API errors."""
|
||||
|
||||
|
||||
class SpotifyFetchError(SpotifyApiError):
|
||||
"""Fetching Spotify data failed."""
|
||||
|
||||
def __init__(self, message, *args):
|
||||
self.message = message
|
||||
super().__init__(*args)
|
||||
|
||||
|
||||
class YouTubeApiError(ApiError):
|
||||
"""Base exception for YouTube Data API errors."""
|
||||
|
||||
|
||||
class DatabaseError(AudioError):
|
||||
"""Base exception for database errors in the Audio cog."""
|
||||
|
||||
|
||||
class InvalidTableError(DatabaseError):
|
||||
"""Provided table to query is not a valid table."""
|
||||
|
||||
|
||||
class LocalTrackError(AudioError):
|
||||
"""Base exception for local track errors."""
|
||||
|
||||
|
||||
class InvalidLocalTrack(LocalTrackError):
|
||||
"""Base exception for local track errors."""
|
||||
|
||||
|
||||
class InvalidLocalTrackFolder(LocalTrackError):
|
||||
"""Base exception for local track errors."""
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user