mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-12-05 17:02:32 -05:00
Compare commits
275 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
734ab49f6a | ||
|
|
204d82db8f | ||
|
|
77a5b4c742 | ||
|
|
7707fec199 | ||
|
|
4ef51a165f | ||
|
|
574dabbeac | ||
|
|
e463c307ea | ||
|
|
b8e56f3632 | ||
|
|
dc3fe1f8f8 | ||
|
|
1dda0f95de | ||
|
|
5e5687d0bb | ||
|
|
e0ad67aa3d | ||
|
|
c3eb4abd7a | ||
|
|
d97760997e | ||
|
|
81193d17c7 | ||
|
|
cf78ea06e2 | ||
|
|
26122e56a0 | ||
|
|
d8d3e9fceb | ||
|
|
b3281385e9 | ||
|
|
e6947bdbf6 | ||
|
|
a6d924221d | ||
|
|
cf7db1e891 | ||
|
|
bc544d476b | ||
|
|
10976f218b | ||
|
|
a589838a41 | ||
|
|
e36d1f143d | ||
|
|
9a6f78e62e | ||
|
|
649db87a8a | ||
|
|
c6f9a78d57 | ||
|
|
bd89e4386d | ||
|
|
a962f94a58 | ||
|
|
3471011f85 | ||
|
|
186dbe6118 | ||
|
|
a59ff57c27 | ||
|
|
0cd3bede0d | ||
|
|
637fa37fad | ||
|
|
07dcf38291 | ||
|
|
ff1f7362ee | ||
|
|
d30e83b5fc | ||
|
|
14349d0649 | ||
|
|
49b19450fd | ||
|
|
5b612b8ac7 | ||
|
|
e0b922c949 | ||
|
|
60df447550 | ||
|
|
2cf7a1f80d | ||
|
|
4dd0fb97fe | ||
|
|
12bce6a560 | ||
|
|
d869410d36 | ||
|
|
31bb43ca38 | ||
|
|
07e480ff7a | ||
|
|
c251804162 | ||
|
|
ff72e415aa | ||
|
|
7d30e3de14 | ||
|
|
8b529f488b | ||
|
|
b5930155df | ||
|
|
632840384b | ||
|
|
a96e814af4 | ||
|
|
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 | ||
|
|
f1b6b5f6f9 | ||
|
|
e06b3fceb5 | ||
|
|
4628dd07e4 | ||
|
|
55a3d9b157 | ||
|
|
c70c1d97e5 | ||
|
|
da4e4d4ad0 | ||
|
|
3d9ee3f2b4 | ||
|
|
b9331ffa55 | ||
|
|
2b0935c4aa | ||
|
|
9d7047864e | ||
|
|
20d507dbef | ||
|
|
be7d1d2cd2 | ||
|
|
587968710f | ||
|
|
a0b30bb3ae | ||
|
|
60e954634d | ||
|
|
ffecf1ed15 | ||
|
|
b7a142c21e | ||
|
|
5716cebb0f | ||
|
|
ff68538085 | ||
|
|
7c251b8017 | ||
|
|
bf5917177a | ||
|
|
dacfb931bb | ||
|
|
97d77f5c51 | ||
|
|
fce8186759 | ||
|
|
d35f6abca0 | ||
|
|
cf31c22e5d | ||
|
|
3f7c2e8842 | ||
|
|
ecdcc27749 | ||
|
|
497d244f95 | ||
|
|
a738736d6b | ||
|
|
a4ce2d01ce | ||
|
|
41c2b76d8d | ||
|
|
35ebc4899e | ||
|
|
9552d210f5 | ||
|
|
9370b5110e | ||
|
|
7009be8922 | ||
|
|
c1a96c83fb | ||
|
|
5d66e4eaf8 | ||
|
|
ed267d17f2 | ||
|
|
6e91ebeb3d | ||
|
|
d70c6e1734 | ||
|
|
4de4c32c0e | ||
|
|
637ae34839 | ||
|
|
d23144bc61 | ||
|
|
e90868072e | ||
|
|
980d2a8dc3 | ||
|
|
eef5ddb416 | ||
|
|
3d7ff7a149 | ||
|
|
287edb755d | ||
|
|
8c612a96c8 | ||
|
|
efe67e2acc | ||
|
|
2cdf3c16ab | ||
|
|
a88b2af4a9 | ||
|
|
b9f07e8684 | ||
|
|
d957e44e1e | ||
|
|
15e3437001 | ||
|
|
eebea59fe3 | ||
|
|
5074f2dbab | ||
|
|
0f364a6d13 | ||
|
|
d9db03bca3 | ||
|
|
b9e2e1098f | ||
|
|
a126da5f23 | ||
|
|
23eae27a8f | ||
|
|
3e1bb88ab7 | ||
|
|
4de7ce32dd | ||
|
|
6128d54601 | ||
|
|
4d81887bcf | ||
|
|
2e5dc82692 | ||
|
|
4afe1ff569 | ||
|
|
3ff127d514 | ||
|
|
ea3ca66303 | ||
|
|
279f0e4f6c | ||
|
|
61fc00dc08 | ||
|
|
d6f9ddc3af | ||
|
|
b52c838018 | ||
|
|
e0de25ed65 |
4
.gitattributes
vendored
Normal file
4
.gitattributes
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
* text eol=lf
|
||||
|
||||
# binary file excludsions
|
||||
*.png binary
|
||||
5
.github/CODEOWNERS
vendored
5
.github/CODEOWNERS
vendored
@@ -1,6 +1,3 @@
|
||||
# Default
|
||||
* @Twentysix26
|
||||
|
||||
# Core
|
||||
redbot/core/bank.py @palmtree5
|
||||
redbot/core/checks.py @tekulvw
|
||||
@@ -30,7 +27,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.
|
||||
12
.github/workflows/publish_crowdin.yml
vendored
12
.github/workflows/publish_crowdin.yml
vendored
@@ -35,9 +35,6 @@ jobs:
|
||||
- name: Download translations
|
||||
run: |
|
||||
make download_translations
|
||||
- name: Remove files from PR which only have a date changed
|
||||
run: |
|
||||
git checkout HEAD -- $(git diff HEAD --numstat | awk 'BEGIN {ORS=" "} $1 == "1" && $2 == "1" && $3 ~ /.po$/ {print $3}')
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v2
|
||||
with:
|
||||
@@ -47,12 +44,5 @@ jobs:
|
||||
body: |
|
||||
This is an automated PR.
|
||||
Please ensure that there are no errors or invalid files are in the PR.
|
||||
labels: "Automated PR, Category: i18n"
|
||||
labels: "Automated PR, Category: i18n, Changelog Entry: Skipped"
|
||||
branch: "automated/i18n"
|
||||
- name: Repository Dispatch
|
||||
uses: peter-evans/repository-dispatch@v1
|
||||
with:
|
||||
token: ${{ secrets.cogcreators_bot_repo_scoped }}
|
||||
repository: Cog-Creators/Red-DiscordBot
|
||||
event-type: dispatched_test
|
||||
client-payload: '{"ref": "automated/i18n"}'
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -6,6 +6,7 @@
|
||||
!/tests/cogs/dataconverter/data/**/*.json
|
||||
Pipfile
|
||||
Pipfile.lock
|
||||
.directory
|
||||
|
||||
### JetBrains template
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
|
||||
|
||||
@@ -11,9 +11,8 @@
|
||||
* [4.4 Make](#44-make)
|
||||
* [4.5 Keeping your dependencies up to date](#45-keeping-your-dependencies-up-to-date)
|
||||
* [4.6 To contribute changes](#46-to-contribute-changes)
|
||||
* [4.7 Using towncrier](#47-using-towncrier)
|
||||
* [4.8 How To Report A Bug](#48-how-to-report-a-bug)
|
||||
* [4.9 How To Suggest A Feature Or Enhancement](#49-how-to-suggest-a-feature-or-enhancement)
|
||||
* [4.7 How To Report A Bug](#47-how-to-report-a-bug)
|
||||
* [4.8 How To Suggest A Feature Or Enhancement](#48-how-to-suggest-a-feature-or-enhancement)
|
||||
* [5. Code Review Process](#5-code-review-process)
|
||||
* [5.1 Issues](#51-issues)
|
||||
* [5.2 Pull Requests](#52-pull-requests)
|
||||
@@ -116,39 +115,17 @@ Whenever you pull from upstream (V3/develop on the main repository) and you noti
|
||||
1. Create a new branch on your fork
|
||||
2. Make the changes
|
||||
3. If you like the changes and think the main Red project could use it:
|
||||
* Create a towncrier entry for the changes. (See next section for details)
|
||||
* Run tests with `tox` to ensure your code is up to scratch
|
||||
* Create a Pull Request on GitHub with your changes
|
||||
- If you are contributing a behavior change, please keep in mind that behavior changes
|
||||
are conditional on them being appropriate for the project's current goals.
|
||||
If you would like to reduce the risk of putting in effort for something we aren't
|
||||
going to use, open an issue discussing it first.
|
||||
|
||||
### 4.7 Using towncrier
|
||||
|
||||
Red uses towncrier to create changelogs.
|
||||
|
||||
To create a towncrier entry for your PR, create a file in `changelog.d` for it. If the changes are for a specific cog, place the file in the related subdirectory.
|
||||
|
||||
The filename should be of the format `issuenumber.changetype(.count).rst`, where `(.count)` is an optional
|
||||
part of the filename should multiple entries for the same issue number and type be necessary.
|
||||
If there is not an issue associated with your PR,
|
||||
you may use the PR number in place of the issue number.
|
||||
|
||||
Valid changetypes are:
|
||||
|
||||
* breaking : Breaking changes
|
||||
* dep : Changes to dependencies
|
||||
* enhance : Enhancements
|
||||
* feature : New features
|
||||
* bugfix : Bugfixes
|
||||
* docs : documentation improvements and additions
|
||||
* removal : removal of something
|
||||
* misc : any changes which don't have a user facing change, and don't belong in the changelog for users
|
||||
|
||||
The contents of the file should be a short, human readable description of the impact of the changes made,
|
||||
not the technical details of the change.
|
||||
|
||||
### 4.8 How To Report A Bug
|
||||
### 4.7 How To Report A Bug
|
||||
Please see our **ISSUES.MD** for more information.
|
||||
|
||||
### 4.9 How To Suggest A Feature Or Enhancement
|
||||
### 4.8 How To Suggest A Feature Or Enhancement
|
||||
The goal of Red is to be as useful to as many people as possible, this means that all features must be useful to anyone and any server that uses Red.
|
||||
|
||||
If you find yourself wanting a feature that Red does not already have, you're probably not alone. There's bound to be a great number of users out there needing the same thing and a lot of the features that Red has today have been added because of the needs of our users. Open an issue on our issues list and describe the feature you would like to see, how you would use it, how it should work, and why it would be useful to the Red community as a whole.
|
||||
3
LICENSE
3
LICENSE
@@ -700,3 +700,6 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
This project vendors discord.ext.menus package (https://github.com/Rapptz/discord-ext-menus) made by Danny Y. (Rapptz) which is distributed under MIT License.
|
||||
Copy of this license can be found in discord-ext-menus.LICENSE file in redbot/vendored folder of this repository.
|
||||
|
||||
13
Makefile
13
Makefile
@@ -1,12 +1,14 @@
|
||||
PYTHON ?= python3.8
|
||||
|
||||
ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
|
||||
|
||||
# Python Code Style
|
||||
reformat:
|
||||
$(PYTHON) -m black `git ls-files "*.py"`
|
||||
$(PYTHON) -m black $(ROOT_DIR)
|
||||
stylecheck:
|
||||
$(PYTHON) -m black --check `git ls-files "*.py"`
|
||||
$(PYTHON) -m black --check $(ROOT_DIR)
|
||||
stylediff:
|
||||
$(PYTHON) -m black --check --diff `git ls-files "*.py"`
|
||||
$(PYTHON) -m black --check --diff $(ROOT_DIR)
|
||||
|
||||
# Translations
|
||||
gettext:
|
||||
@@ -27,8 +29,3 @@ newenv:
|
||||
$(MAKE) syncenv
|
||||
syncenv:
|
||||
.venv/bin/pip install -Ur ./tools/dev-requirements.txt
|
||||
|
||||
# Changelog check
|
||||
checkchangelog:
|
||||
bash tools/check_changelog_entries.sh
|
||||
$(PYTHON) -m towncrier --draft
|
||||
|
||||
@@ -126,3 +126,6 @@ Red is named after the main character of "Transistor", a video game by
|
||||
|
||||
Artwork created by [Sinlaire](https://sinlaire.deviantart.com/) on Deviant Art for the Red Discord
|
||||
Bot Project.
|
||||
|
||||
This project vendors [discord.ext.menus](https://github.com/Rapptz/discord-ext-menus) package made by Danny Y. (Rapptz) which is distributed under MIT License.
|
||||
Copy of this license can be found in [discord-ext-menus.LICENSE](redbot/vendored/discord-ext-menus.LICENSE) file in [redbot/vendored](redbot/vendored) folder of this repository.
|
||||
|
||||
1
changelog.d/.gitignore
vendored
1
changelog.d/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
@@ -1 +0,0 @@
|
||||
Use websockets 8.1
|
||||
@@ -1,4 +0,0 @@
|
||||
Add caching for ignored channels/guilds.
|
||||
Add caching for white/blacklist.
|
||||
Add consume-rest for white/blacklist commands.
|
||||
Allow ignoring channel categories.
|
||||
@@ -1 +0,0 @@
|
||||
Show DeprecationWarning's
|
||||
1
changelog.d/admin/.gitignore
vendored
1
changelog.d/admin/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/alias/.gitignore
vendored
1
changelog.d/alias/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/audio/.gitignore
vendored
1
changelog.d/audio/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
@@ -1 +0,0 @@
|
||||
``[p]remove`` command now accepts an URL or Index, if an URL is used it will remove all tracks in the queue with that URL.
|
||||
1
changelog.d/bank/.gitignore
vendored
1
changelog.d/bank/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/cleanup/.gitignore
vendored
1
changelog.d/cleanup/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/customcom/.gitignore
vendored
1
changelog.d/customcom/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/downloader/.gitignore
vendored
1
changelog.d/downloader/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/economy/.gitignore
vendored
1
changelog.d/economy/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
@@ -1 +0,0 @@
|
||||
Changes next_payday to last_payday. last_payday stores the latest time the command runned successfully, allows the command to dynamicly change with the PAYDAY_TIME variable, by checking if last_payday + PAYDAY_TIME >= current time.
|
||||
1
changelog.d/filter/.gitignore
vendored
1
changelog.d/filter/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/general/.gitignore
vendored
1
changelog.d/general/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/image/.gitignore
vendored
1
changelog.d/image/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/mod/.gitignore
vendored
1
changelog.d/mod/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
@@ -1 +0,0 @@
|
||||
Move ignore commands and checks into core.
|
||||
@@ -1,2 +0,0 @@
|
||||
Allow mentions in hackban and ban commands.
|
||||
Have the correct lower bound on length of a snowflake for the converter.
|
||||
1
changelog.d/modlog/.gitignore
vendored
1
changelog.d/modlog/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/mutes/.gitignore
vendored
1
changelog.d/mutes/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/permissions/.gitignore
vendored
1
changelog.d/permissions/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/reports/.gitignore
vendored
1
changelog.d/reports/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/streams/.gitignore
vendored
1
changelog.d/streams/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
@@ -1 +0,0 @@
|
||||
Added ``[p]streamset timer`` command, which can be used to control how often the cog checks for livestreams.
|
||||
@@ -1 +0,0 @@
|
||||
Changed the YouTube streams logic to use an RSS instead of the search endpoint, significantly reducing quota usage.
|
||||
@@ -1 +0,0 @@
|
||||
Use new Twitch API and Bearer tokens. Escape markdown and mass mentions for "streamer_name is live!" messages, and use humanize_number for every numbers.
|
||||
1
changelog.d/trivia/.gitignore
vendored
1
changelog.d/trivia/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
1
changelog.d/warnings/.gitignore
vendored
1
changelog.d/warnings/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
!.gitignore
|
||||
@@ -1 +0,0 @@
|
||||
Don't use `inspect.getsource` to check for ``is_owner`` check.
|
||||
@@ -1,5 +1,676 @@
|
||||
.. 3.3.x Changelogs
|
||||
|
||||
Redbot 3.3.12 (2020-08-18)
|
||||
==========================
|
||||
|
||||
| Thanks to all these amazing people that contributed to this release:
|
||||
| :ghuser:`Dav-Git`, :ghuser:`douglas-cpp`, :ghuser:`flaree`, :ghuser:`jack1142`, :ghuser:`Kowlin`, :ghuser:`MeatyChunks`, :ghuser:`PredaaA`, :ghuser:`Predeactor`, :ghuser:`thisisjvgrace`, :ghuser:`Vexed01`, :ghuser:`zephyrkul`
|
||||
|
||||
End-user changelog
|
||||
------------------
|
||||
|
||||
Core Bot
|
||||
********
|
||||
|
||||
- Red now logs clearer error if it can't find package to load in any cog path during bot startup (:issue:`4079`)
|
||||
|
||||
Mod
|
||||
***
|
||||
|
||||
- ``[p]mute voice`` and ``[p]unmute voice`` now take action instantly if bot has Move Members permission (:issue:`4064`)
|
||||
- Added typing to ``[p](un)mute guild`` to indicate that mute is being processed (:issue:`4066`, :issue:`4172`)
|
||||
|
||||
Streams
|
||||
*******
|
||||
|
||||
- Improve error messages for invalid channel names/IDs (:issue:`4147`, :issue:`4148`)
|
||||
|
||||
Trivia Lists
|
||||
************
|
||||
|
||||
- Added ``whosthatpokemon2`` trivia containing Pokémons from 2nd generation (:issue:`4102`)
|
||||
- Added ``whosthatpokemon3`` trivia containing Pokémons from 3rd generation (:issue:`4141`)
|
||||
|
||||
|
||||
Miscellaneous
|
||||
-------------
|
||||
|
||||
- Updated features list in ``[p]serverinfo`` with the latest changes from Discord (:issue:`4116`)
|
||||
- Simple version of ``[p]serverinfo`` now shows info about more detailed ``[p]serverinfo 1`` (:issue:`4121`)
|
||||
|
||||
|
||||
Redbot 3.3.11 (2020-08-10)
|
||||
==========================
|
||||
|
||||
| Thanks to all these amazing people that contributed to this release:
|
||||
| :ghuser:`douglas-cpp`, :ghuser:`Drapersniper`, :ghuser:`jack1142`, :ghuser:`MeatyChunks`, :ghuser:`Vexed01`, :ghuser:`yamikaitou`
|
||||
|
||||
End-user changelog
|
||||
------------------
|
||||
|
||||
Audio
|
||||
*****
|
||||
|
||||
- Audio should now work again on all voice regions (:issue:`4162`, :issue:`4168`)
|
||||
- Removed an edge case where an unfriendly error message was sent in Audio cog (:issue:`3879`)
|
||||
|
||||
Cleanup
|
||||
*******
|
||||
|
||||
- Fixed a bug causing ``[p]cleanup`` commands to clear all messages within last 2 weeks when ``0`` is passed as the amount of messages to delete (:issue:`4114`, :issue:`4115`)
|
||||
|
||||
CustomCommands
|
||||
**************
|
||||
|
||||
- ``[p]cc show`` now sends an error message when command with the provided name couldn't be found (:issue:`4108`)
|
||||
|
||||
Downloader
|
||||
**********
|
||||
|
||||
- ``[p]findcog`` no longer fails for 3rd-party cogs without any author (:issue:`4032`, :issue:`4042`)
|
||||
- Update commands no longer crash when a different repo is added under a repo name that was once used (:issue:`4086`)
|
||||
|
||||
Permissions
|
||||
***********
|
||||
|
||||
- ``[p]permissions removeserverrule`` and ``[p]permissions removeglobalrule`` no longer error when trying to remove a rule that doesn't exist (:issue:`4028`, :issue:`4036`)
|
||||
|
||||
Warnings
|
||||
********
|
||||
|
||||
- ``[p]warn`` now sends an error message (instead of no feedback) when an unregistered reason is used by someone who doesn't have Administrator permission (:issue:`3839`, :issue:`3840`)
|
||||
|
||||
|
||||
Redbot 3.3.10 (2020-07-09)
|
||||
===================================
|
||||
|
||||
| Thanks to all these amazing people that contributed to this release:
|
||||
| :ghuser:`aikaterna`, :ghuser:`bobloy`, :ghuser:`Dav-Git`, :ghuser:`Drapersniper`, :ghuser:`Flame442`, :ghuser:`flaree`, :ghuser:`jack1142`, :ghuser:`MiniJennJenn`, :ghuser:`NeuroAssassin`, :ghuser:`thisisjvgrace`, :ghuser:`Vexed01`, :ghuser:`Injabie3`, :ghuser:`mikeshardmind`
|
||||
|
||||
End-user changelog
|
||||
------------------
|
||||
|
||||
Audio
|
||||
*****
|
||||
|
||||
- Added information about internally managed jar to ``[p]audioset info`` (:issue:`3915`)
|
||||
- Updated to Lavaplayer 1.3.50
|
||||
- Twitch playback and YouTube searching should be functioning again.
|
||||
|
||||
Core Bot
|
||||
********
|
||||
|
||||
- Fixed delayed help when ``[p]set deletedelay`` is enabled (:issue:`3884`, :issue:`3883`)
|
||||
- Bumped the Discord.py requirement from 1.3.3 to 1.3.4 (:issue:`4053`)
|
||||
- Added settings view commands for nearly all cogs. (:issue:`4041`)
|
||||
- Added more strings to be fully translatable by i18n. (:issue:`4044`)
|
||||
|
||||
Downloader
|
||||
**********
|
||||
|
||||
- Added ``[p]cog listpinned`` subcommand to see currently pinned cogs (:issue:`3974`)
|
||||
- Fixed unnecessary typing when running downloader commands (:issue:`3964`, :issue:`3948`)
|
||||
- Added embed version of ``[p]findcog`` (:issue:`3965`, :issue:`3944`)
|
||||
- Fixed ``[p]findcog`` not differentiating between core cogs and local cogs(:issue:`3969`, :issue:`3966`)
|
||||
|
||||
Filter
|
||||
******
|
||||
|
||||
- Added ``[p]filter list`` to show filtered words, and removed DMs when no subcommand was passed (:issue:`3973`)
|
||||
|
||||
Image
|
||||
*****
|
||||
|
||||
- Updated instructions for obtaining and setting the GIPHY API key (:issue:`3994`)
|
||||
|
||||
Mod
|
||||
***
|
||||
|
||||
- Added option to delete messages within the passed amount of days with ``[p]tempban`` (:issue:`3958`)
|
||||
- Added the ability to permanently ban a temporary banned user with ``[p]hackban`` (:issue:`4025`)
|
||||
- Fixed the passed reason not being used when using ``[p]tempban`` (:issue:`3958`)
|
||||
- Fixed invite being sent with ``[p]tempban`` even when no invite was set (:issue:`3991`)
|
||||
- Prevented an issue whereby the author may lock him self out of using the bot via whitelists (:issue:`3903`)
|
||||
- Reduced the number of API calls made to the storage APIs (:issue:`3910`)
|
||||
|
||||
Permissions
|
||||
***********
|
||||
|
||||
- Uploaded YAML files now accept integer commands without quotes (:issue:`3987`, :issue:`3185`)
|
||||
- Uploaded YAML files now accept command rules with empty dictionaries (:issue:`3987`, :issue:`3961`)
|
||||
|
||||
Streams
|
||||
*******
|
||||
|
||||
- Fixed streams cog sending multiple owner notifications about twitch secret not set (:issue:`3901`, :issue:`3587`)
|
||||
- Fixed old bearer tokens not being invalidated when the API key is updated (:issue:`3990`, :issue:`3917`)
|
||||
|
||||
Trivia Lists
|
||||
************
|
||||
|
||||
- Fixed URLs in ``whosthatpokemon`` (:issue:`3975`, :issue:`3023`)
|
||||
- Fixed trivia files ``leagueults`` and ``sports`` (:issue:`4026`)
|
||||
- Updated ``greekmyth`` to include more answer variations (:issue:`3970`)
|
||||
- Added new ``lotr`` trivia list (:issue:`3980`)
|
||||
- Added new ``r6seige`` trivia list (:issue:`4026`)
|
||||
|
||||
|
||||
Developer changelog
|
||||
-------------------
|
||||
|
||||
- Added the utility functions ``map``, ``find``, and ``next`` to ``AsyncIter`` (:issue:`3921`, :issue:`3887`)
|
||||
- Updated deprecation times for ``APIToken``, and loops being passed to various functions to the first minor release (represented by ``X`` in ``3.X.0``) after 2020-08-05 (:issue:`3608`)
|
||||
- Updated deprecation warnings for shared libs to reflect that they have been moved for an undefined time (:issue:`3608`)
|
||||
- Added new ``discord.com`` domain to ``INVITE_URL_RE`` common filter (:issue:`4012`)
|
||||
- Fixed incorrect role mention regex in ``MessagePredicate`` (:issue:`4030`)
|
||||
- Vendor the ``discord.ext.menus`` module (:issue:`4039`)
|
||||
|
||||
|
||||
Documentation changes
|
||||
---------------------
|
||||
|
||||
|
||||
|
||||
Miscellaneous
|
||||
-------------
|
||||
|
||||
- Improved error responses for when Modlog and Autoban on mention spam were already disabled (:issue:`3951`, :issue:`3949`)
|
||||
- Clarified that ``[p]embedset user`` only affects commands executed in DMs (:issue:`3972`, :issue:`3953`)
|
||||
- Added link to Getting Started guide if the bot was not in any guilds (:issue:`3906`)
|
||||
- Fixed exceptions being ignored or not sent to log files in special cases (:issue:`3895`)
|
||||
- Added the option of using dots in the instance name when creating your instances (:issue:`3920`)
|
||||
- Added a confirmation when using hyphens in instance names to discourage the use of them (:issue:`3920`)
|
||||
- Fixed migration owner notifications being sent even when migration was not necessary (:issue:`3911`. :issue:`3909`)
|
||||
- Fixed commands being translated where they should not be (:issue:`3938`, :issue:`3919`)
|
||||
- Fixed grammar errors and added full stopts in ``core_commands.py`` (:issue:`4023`)
|
||||
|
||||
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)
|
||||
=========================
|
||||
|
||||
| Thanks to all these amazing people that contributed to this release:
|
||||
| :ghuser:`jack1142`, :ghuser:`Kowlin`
|
||||
|
||||
End-user changelog
|
||||
------------------
|
||||
|
||||
Core Bot
|
||||
********
|
||||
|
||||
- "Outdated" field no longer shows in ``[p]info`` when Red is up-to-date (:issue:`3730`)
|
||||
|
||||
Alias
|
||||
*****
|
||||
|
||||
- Fixed regression in ``[p]alias add`` that caused it to reject commands containing arguments (:issue:`3734`)
|
||||
|
||||
|
||||
Redbot 3.3.4 (2020-04-05)
|
||||
=========================
|
||||
|
||||
| Thanks to all these amazing people that contributed to this release:
|
||||
| :ghuser:`jack1142`, :ghuser:`kennnyshiwa`
|
||||
|
||||
End-user changelog
|
||||
------------------
|
||||
|
||||
Core Bot
|
||||
********
|
||||
|
||||
- Fixed checks related to bank's global state that were used in commands in Bank, Economy and Trivia cogs (:issue:`3707`)
|
||||
|
||||
Alias
|
||||
*****
|
||||
|
||||
- ``[p]alias add`` now sends an error when command user tries to alias doesn't exist (:issue:`3710`, :issue:`3545`)
|
||||
|
||||
Developer changelog
|
||||
-------------------
|
||||
|
||||
Core Bot
|
||||
********
|
||||
|
||||
- Bump dependencies, including update to discord.py 1.3.3 (:issue:`3723`)
|
||||
|
||||
Utility Functions
|
||||
*****************
|
||||
|
||||
- `redbot.core.utils.common_filters.filter_invites` now filters ``discord.io/discord.li`` invites links (:issue:`3717`)
|
||||
- Fixed false-positives in `redbot.core.utils.common_filters.filter_invites` (:issue:`3717`)
|
||||
|
||||
Documentation changes
|
||||
---------------------
|
||||
|
||||
- Versions of pre-requirements are now included in Windows install guide (:issue:`3708`)
|
||||
|
||||
|
||||
Redbot 3.3.3 (2020-03-28)
|
||||
=========================
|
||||
|
||||
| Thanks to all these amazing people that contributed to this release:
|
||||
| :ghuser:`AnonGuy`, :ghuser:`Dav-Git`, :ghuser:`FancyJesse`, :ghuser:`Ianardo-DiCaprio`, :ghuser:`jack1142`, :ghuser:`kennnyshiwa`, :ghuser:`Kowlin`, :ghuser:`NeuroAssassin`, :ghuser:`PredaaA`, :ghuser:`Stonedestroyer`, :ghuser:`TrustyJAID`
|
||||
|
||||
End-user changelog
|
||||
------------------
|
||||
|
||||
Core Bot
|
||||
********
|
||||
|
||||
- Delete delay for command messages has been moved from Mod cog to Core (:issue:`3638`, :issue:`3636`)
|
||||
- Fixed various bugs with blacklist and whitelist (:issue:`3643`, :issue:`3642`)
|
||||
- Added ``[p]set regionalformat`` command that allows users to set regional formatting that is different from bot's locale (:issue:`3677`, :issue:`3588`)
|
||||
- ``[p]set locale`` allows any valid locale now, not just locales for which Red has translations (:issue:`3676`, :issue:`3596`)
|
||||
- Permissions for commands in Bank, Economy and Trivia cogs can now be overriden by Permissions cog (:issue:`3672`, :issue:`3233`)
|
||||
- Outages of ``pypi.org`` no longer prevent the bot from starting (:issue:`3663`)
|
||||
- Fixed formatting of help strings in fuzzy search results (:issue:`3673`, :issue:`3507`)
|
||||
- Fixed few deprecation warnings related to menus and uvloop (:issue:`3644`, :issue:`3700`)
|
||||
|
||||
Core Commands
|
||||
*************
|
||||
|
||||
- ``[p]set game`` no longer errors when trying to clear the status (:issue:`3630`, :issue:`3628`)
|
||||
- All owner notifcations in Core now use proper prefixes in messages (:issue:`3632`)
|
||||
- Added ``[p]set playing`` and ``[p]set streaming`` aliases for respectively ``[p]set game`` and ``[p]set stream`` (:issue:`3646`, :issue:`3590`)
|
||||
|
||||
ModLog
|
||||
******
|
||||
|
||||
- Modlog's cases now keep last known username to prevent losing that information from case's message on edit (:issue:`3674`, :issue:`3443`)
|
||||
|
||||
CustomCom
|
||||
*********
|
||||
|
||||
- Added ``[p]cc search`` command that allows users to search through created custom commands (:issue:`2573`)
|
||||
|
||||
Cleanup
|
||||
*******
|
||||
|
||||
- Added ``[p]cleanup spam`` command that deletes duplicate messages from the last X messages and keeps only one copy (:issue:`3688`)
|
||||
- Removed regex support in ``[p]cleanup self`` (:issue:`3704`)
|
||||
|
||||
Downloader
|
||||
**********
|
||||
|
||||
- ``[p]cog checkforupdates`` now includes information about cogs that can't be installed due to Red/Python version requirements (:issue:`3678`, :issue:`3448`)
|
||||
|
||||
General
|
||||
*******
|
||||
|
||||
- Added more detailed mode to ``[p]serverinfo`` command that can be accessed with ``[p]serverinfo 1`` (:issue:`2382`, :issue:`3659`)
|
||||
|
||||
Image
|
||||
*****
|
||||
|
||||
- Users can now specify how many images should be returned in ``[p]imgur search`` and ``[p]imgur subreddit`` using ``[count]`` argument (:issue:`3667`, :issue:`3044`)
|
||||
- ``[p]imgur search`` and ``[p]imgur subreddit`` now return one image by default (:issue:`3667`, :issue:`3044`)
|
||||
|
||||
Mod
|
||||
***
|
||||
|
||||
- ``[p]userinfo`` now shows user's activities (:issue:`3669`)
|
||||
- ``[p]userinfo`` now shows status icon near the username (:issue:`3669`)
|
||||
- Muting no longer fails if user leaves while applying overwrite (:issue:`3627`)
|
||||
- Fixed error that happened when Mod cog was loaded for the first time during bot startup (:issue:`3632`, :issue:`3626`)
|
||||
|
||||
Permissions
|
||||
***********
|
||||
|
||||
- Commands for setting default rules now error when user tries to deny access to command designated as being always available (:issue:`3504`, :issue:`3465`)
|
||||
|
||||
Streams
|
||||
*******
|
||||
|
||||
- Fixed an error that happened when no game was set on Twitch stream (:issue:`3631`)
|
||||
- Preview picture for YouTube stream alerts is now bigger (:issue:`3689`, :issue:`3685`)
|
||||
- YouTube channels with a livestream that doesn't have any current viewer are now properly showing as streaming (:issue:`3690`)
|
||||
- Failures in Twitch API authentication are now logged (:issue:`3657`)
|
||||
|
||||
Trivia
|
||||
******
|
||||
|
||||
- Added ``[p]triviaset custom upload/delete/list`` commands for managing custom trivia lists from Discord (:issue:`3420`, :issue:`3307`)
|
||||
- Trivia sessions no longer error on payout when winner's balance would exceed max balance (:issue:`3666`, :issue:`3584`)
|
||||
|
||||
Warnings
|
||||
********
|
||||
|
||||
- Sending warnings to warned user can now be disabled with ``[p]warnset toggledm`` command (:issue:`2929`, :issue:`2800`)
|
||||
- Added ``[p]warnset warnchannel`` command that allows to set a channel where warnings should be sent to instead of the channel command was called in (:issue:`2929`, :issue:`2800`)
|
||||
- Added ``[p]warnset togglechannel`` command that allows to disable sending warn message in guild channel (:issue:`2929`, :issue:`2800`)
|
||||
- ``[p]warn`` now tells the moderator when bot wasn't able to send the warning to the user (:issue:`3653`, :issue:`3633`)
|
||||
|
||||
|
||||
Developer changelog
|
||||
-------------------
|
||||
|
||||
Core Bot
|
||||
********
|
||||
|
||||
- Deprecation warnings issued by Red now use correct stack level so that the cog developers can find the cause of them (:issue:`3644`)
|
||||
|
||||
Dev Cog
|
||||
*******
|
||||
|
||||
- Add ``__name__`` to environment's globals (:issue:`3649`, :issue:`3648`)
|
||||
|
||||
|
||||
Documentation changes
|
||||
---------------------
|
||||
|
||||
- Fixed install instructions for Mac in `install_linux_mac` (:issue:`3675`, :issue:`3436`)
|
||||
- Windows install instructions now use ``choco upgrade`` commands instead of ``choco install`` to ensure up-to-date packages (:issue:`3684`)
|
||||
|
||||
|
||||
Miscellaneous
|
||||
-------------
|
||||
|
||||
- **Core Bot** - Command errors (i.e. command on cooldown, dm-only and guild-only commands, etc) can now be translated (:issue:`3665`, :issue:`2988`)
|
||||
- **Core Bot** - ``redbot-setup`` now prints link to Getting started guide at the end of the setup (:issue:`3027`)
|
||||
- **Core Bot** - Whitelist and blacklist commands now properly require passing at least one user (or role in case of local whitelist/blacklist) (:issue:`3652`, :issue:`3645`)
|
||||
- **Downloader** - Fix misleading error appearing when repo name is already taken in ``[p]repo add`` (:issue:`3695`)
|
||||
- **Downloader** - Improved error messages for unexpected errors in ``[p]repo add`` (:issue:`3656`)
|
||||
- **Downloader** - Prevent encoding errors from crashing ``[p]cog update`` (:issue:`3639`, :issue:`3637`)
|
||||
- **Trivia** - Non-finite numbers can no longer be passed to ``[p]triviaset timelimit``, ``[p]triviaset stopafter`` and ``[p]triviaset payout`` (:issue:`3668`, :issue:`3583`)
|
||||
- **Utility Functions** - `redbot.core.utils.menus.menu()` now checks permissions *before* trying to clear reactions (:issue:`3589`, :issue:`3145`)
|
||||
|
||||
|
||||
Redbot 3.3.2 (2020-02-28)
|
||||
=========================
|
||||
|
||||
@@ -240,4 +911,4 @@ Mod
|
||||
Permissions
|
||||
-----------
|
||||
|
||||
- Now has stronger enforcement of prioritizing botwide settings.
|
||||
- Now has stronger enforcement of prioritizing botwide settings.
|
||||
|
||||
@@ -217,6 +217,7 @@ intersphinx_mapping = {
|
||||
"python": ("https://docs.python.org/3", None),
|
||||
"dpy": (f"https://discordpy.readthedocs.io/en/v{dpy_version}/", None),
|
||||
"motor": ("https://motor.readthedocs.io/en/stable/", None),
|
||||
"babel": ("http://babel.pocoo.org/en/stable/", None),
|
||||
}
|
||||
|
||||
# Extlinks
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -33,21 +33,17 @@ Tutorial
|
||||
|
||||
After making your cog, generate a :code:`messages.pot` file
|
||||
|
||||
The process of generating this will depend on the operating system
|
||||
you are using
|
||||
We recommend using redgettext - a modified version of pygettext for Red.
|
||||
You can install redgettext by running :code:`pip install redgettext` in a command prompt.
|
||||
|
||||
In a command prompt in your cog's package (where yourcog.py is),
|
||||
create a directory called "locales".
|
||||
Then do one of the following:
|
||||
|
||||
Windows: :code:`python <your python install path>\Tools\i18n\pygettext.py -D -n -p locales`
|
||||
|
||||
Mac: ?
|
||||
|
||||
Linux: :code:`pygettext3 -D -n -p locales`
|
||||
|
||||
This will generate a messages.pot file with strings to be translated, including
|
||||
To generate the :code:`messages.pot` file, you will now need to run
|
||||
:code:`python -m redgettext -c [path_to_cog]`
|
||||
This file will contain all strings to be translated, including
|
||||
docstrings.
|
||||
(For advanced usage check :code:`python -m redgettext -h`)
|
||||
|
||||
You can now use a tool like `poedit
|
||||
<https://poedit.net/>`_ to translate the strings in your messages.pot file.
|
||||
|
||||
-------------
|
||||
API Reference
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -20,7 +20,7 @@ The pre-requirements are:
|
||||
- Python 3.8.1 or greater
|
||||
- Pip 18.1 or greater
|
||||
- Git 2.11+
|
||||
- Java Runtime Environment 11 or later (for audio support)
|
||||
- Java Runtime Environment 11 (for audio support)
|
||||
|
||||
We also recommend installing some basic compiler tools, in case our dependencies don't provide
|
||||
pre-built "wheels" for your architecture.
|
||||
@@ -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,12 +86,12 @@ 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`.
|
||||
|
||||
@@ -163,20 +173,18 @@ following, then press Enter:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
|
||||
|
||||
After the installation, install the required packages by pasting the commands and pressing enter,
|
||||
one-by-one:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
brew install python --with-brewed-openssl
|
||||
brew install python@3.8
|
||||
echo 'export PATH="/usr/local/opt/python@3.8/bin:$PATH"' >> ~/.profile
|
||||
source ~/.profile
|
||||
brew install git
|
||||
brew tap caskroom/versions
|
||||
brew cask install homebrew/cask-versions/adoptopenjdk11
|
||||
|
||||
It's possible you will have network issues. If so, go in your Applications folder, inside it, go in
|
||||
the Python 3.8 folder then double click ``Install certificates.command``.
|
||||
brew cask install adoptopenjdk/openjdk/adoptopenjdk11
|
||||
|
||||
Continue by `creating-venv-linux`.
|
||||
|
||||
@@ -199,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:
|
||||
@@ -232,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:
|
||||
@@ -263,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`.
|
||||
@@ -291,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>`.
|
||||
@@ -315,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.5 -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
|
||||
@@ -336,7 +409,7 @@ After that is finished, run:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
pyenv global 3.8.1
|
||||
pyenv global 3.8.5
|
||||
|
||||
Pyenv is now installed and your system should be configured to run Python 3.8.
|
||||
|
||||
|
||||
@@ -4,41 +4,55 @@
|
||||
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"
|
||||
right-click on it and then click "Run as administrator".
|
||||
|
||||
Then run each of the following commands:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
|
||||
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
|
||||
choco install git --params "/GitOnlyOnPath /WindowsTerminal" -y
|
||||
choco install visualstudio2019-workload-vctools -y
|
||||
choco install python3 -y
|
||||
choco upgrade git --params "/GitOnlyOnPath /WindowsTerminal" -y
|
||||
choco upgrade visualstudio2019-workload-vctools -y
|
||||
choco upgrade python3 -y
|
||||
|
||||
For Audio support, you should also run the following command before exiting:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
choco install adoptopenjdk11jre -y
|
||||
choco upgrade adoptopenjdk11jre -y
|
||||
|
||||
|
||||
From here, exit the prompt then continue onto `creating-venv-windows`.
|
||||
|
||||
----
|
||||
|
||||
********************************
|
||||
Manually installing dependencies
|
||||
********************************
|
||||
@@ -50,17 +64,20 @@ Manually installing dependencies
|
||||
|
||||
* `MSVC Build tools <https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2019>`_
|
||||
|
||||
* `Python <https://www.python.org/downloads/>`_ - Red needs Python 3.8.1 or greater
|
||||
* `Python 3.8.1 or greater <https://www.python.org/downloads/>`_
|
||||
|
||||
.. attention:: Please make sure that the box to add Python to PATH is CHECKED, otherwise
|
||||
you may run into issues when trying to run Red.
|
||||
|
||||
* `Git <https://git-scm.com/download/win>`_
|
||||
* `Git 2.11+ <https://git-scm.com/download/win>`_
|
||||
|
||||
.. attention:: Please choose the option to "Git from the command line and also from 3rd-party software" in Git's setup.
|
||||
|
||||
* `Java <https://adoptopenjdk.net/?variant=openjdk11&jvmVariant=hotspot>`_ - needed for Audio
|
||||
* `Java 11 <https://adoptopenjdk.net/?variant=openjdk11&jvmVariant=hotspot>`_ - needed for Audio
|
||||
|
||||
From here, continue onto `creating-venv-windows`.
|
||||
|
||||
----
|
||||
|
||||
.. _creating-venv-windows:
|
||||
|
||||
@@ -70,7 +87,7 @@ Creating a Virtual Environment
|
||||
|
||||
.. tip::
|
||||
|
||||
If you want to learn more about virtual environments, see page: `about-venvs`
|
||||
If you want to learn more about virtual environments, see page: `about-venvs`.
|
||||
|
||||
We require installing Red into a virtual environment. Don't be scared, it's very
|
||||
straightforward.
|
||||
@@ -79,17 +96,26 @@ First, choose a directory where you would like to create your virtual environmen
|
||||
to keep it in a location which is easy to type out the path to. From now, we'll call it
|
||||
``redenv`` and it will be located in your home directory.
|
||||
|
||||
Start with opening a command prompt (open Start, search for "command prompt", then click it)
|
||||
Start with opening a command prompt (open Start, search for "command prompt", then click it).
|
||||
|
||||
.. note::
|
||||
|
||||
You shouldn't run command prompt as administrator when creating your virtual environment, or
|
||||
running Red.
|
||||
|
||||
.. warning::
|
||||
|
||||
These commands will not work in PowerShell - you have to use command prompt as said above.
|
||||
|
||||
Then create your virtual environment with the following command::
|
||||
Then create your virtual environment with the following command
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
py -3.8 -m venv "%userprofile%\redenv"
|
||||
|
||||
And activate it with the following command::
|
||||
And activate it with the following command
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
"%userprofile%\redenv\Scripts\activate.bat"
|
||||
|
||||
@@ -124,11 +150,6 @@ Run **one** of the following set of commands, depending on what extras you want
|
||||
python -m pip install -U pip setuptools wheel
|
||||
python -m pip install -U Red-DiscordBot[postgres]
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
These commands are also used for updating Red
|
||||
|
||||
--------------------------
|
||||
Setting Up and Running Red
|
||||
--------------------------
|
||||
|
||||
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.**
|
||||
@@ -17,9 +17,11 @@ Guarantees
|
||||
Anything in the ``redbot.core`` module or any of its submodules
|
||||
which is not private (even if not documented) should not break without notice.
|
||||
|
||||
Anything in the ``redbot.cogs`` module or any of it's submodules is specifically
|
||||
Anything in the ``redbot.cogs`` and ``redbot.vendored`` modules or any of their 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.
|
||||
|
||||
|
||||
18
make.bat
18
make.bat
@@ -5,24 +5,18 @@ if [%1] == [] goto help
|
||||
REM This allows us to expand variables at execution
|
||||
setlocal ENABLEDELAYEDEXPANSION
|
||||
|
||||
REM This will set PYFILES as a list of tracked .py files
|
||||
set PYFILES=
|
||||
for /F "tokens=* USEBACKQ" %%A in (`git ls-files "*.py"`) do (
|
||||
set PYFILES=!PYFILES! %%A
|
||||
)
|
||||
|
||||
goto %1
|
||||
|
||||
:reformat
|
||||
black !PYFILES!
|
||||
black "%~dp0."
|
||||
exit /B %ERRORLEVEL%
|
||||
|
||||
:stylecheck
|
||||
black --check !PYFILES!
|
||||
black --check "%~dp0."
|
||||
exit /B %ERRORLEVEL%
|
||||
|
||||
:stylediff
|
||||
black --check --diff !PYFILES!
|
||||
black --check --diff "%~dp0."
|
||||
exit /B %ERRORLEVEL%
|
||||
|
||||
:newenv
|
||||
@@ -34,12 +28,6 @@ goto syncenv
|
||||
.\.venv\Scripts\python -m pip install -Ur .\tools\dev-requirements.txt
|
||||
exit /B %ERRORLEVEL%
|
||||
|
||||
:checkchangelog
|
||||
REM This should be written for windows at some point I guess.
|
||||
REM If we can swith to powershell, it can make this much easier.
|
||||
echo This doesn^'t do anything on windows ^(yet^)
|
||||
exit /b 0
|
||||
|
||||
:help
|
||||
echo Usage:
|
||||
echo make ^<command^>
|
||||
|
||||
127
pyproject.toml
127
pyproject.toml
@@ -14,131 +14,6 @@
|
||||
| buck-out
|
||||
| build
|
||||
| dist
|
||||
| redbot\/vendored
|
||||
)/
|
||||
'''
|
||||
|
||||
[tool.towncrier]
|
||||
package = "redbot"
|
||||
filename = "CHANGELOG.rst"
|
||||
directory = "changelog.d"
|
||||
issue_format = "`#{issue} <https://github.com/Cog-Creators/Red-DiscordBot/issues/{issue}>`_"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = ""
|
||||
name = "Core Bot Changes"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "admin"
|
||||
name = "Admin"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "alias"
|
||||
name = "Alias"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "audio"
|
||||
name = "Audio"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "bank"
|
||||
name = "Bank"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "cleanup"
|
||||
name = "Cleanup"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "customcom"
|
||||
name = "CustomCom"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "downloader"
|
||||
name = "Downloader"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "economy"
|
||||
name = "Economy"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "filter"
|
||||
name = "Filter"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "general"
|
||||
name = "General"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "image"
|
||||
name = "Image"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "mod"
|
||||
name = "Mod"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "modlog"
|
||||
name = "ModLog"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "mutes"
|
||||
name = "Mutes"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "permissions"
|
||||
name = "Permissions"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "reports"
|
||||
name = "Reports"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "streams"
|
||||
name = "Streams"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "trivia"
|
||||
name = "Trivia"
|
||||
|
||||
[[tool.towncrier.section]]
|
||||
path = "warnings"
|
||||
name = "Warnings"
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "breaking"
|
||||
name = "Breaking Changes"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "bugfix"
|
||||
name = "Bug Fixes"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "enhance"
|
||||
name = "Enhancements"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "feature"
|
||||
name = "New Feature"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "removal"
|
||||
name = "Removals"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "misc"
|
||||
name = "Miscellaneous changes"
|
||||
showcontent = false
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "dep"
|
||||
name = "Changes to dependencies"
|
||||
showcontent = true
|
||||
|
||||
[[tool.towncrier.type]]
|
||||
directory = "docs"
|
||||
name = "Documentation Changes"
|
||||
showcontent = true
|
||||
|
||||
@@ -191,7 +191,7 @@ def _update_event_loop_policy():
|
||||
_asyncio.set_event_loop_policy(_uvloop.EventLoopPolicy())
|
||||
|
||||
|
||||
__version__ = "3.3.2"
|
||||
__version__ = "3.3.12"
|
||||
version_info = VersionInfo.from_str(__version__)
|
||||
|
||||
# Filter fuzzywuzzy slow sequence matcher warning
|
||||
@@ -215,9 +215,11 @@ if "--debug" not in _sys.argv:
|
||||
_warnings.filterwarnings("ignore", category=DeprecationWarning, module="aiohttp", lineno=21)
|
||||
# DeprecationWarning: rename klass to create_protocol
|
||||
# warnings.warn("rename klass to create_protocol", DeprecationWarning)
|
||||
#
|
||||
# discord.py is using deprecated kwarg name when making websockets connection
|
||||
# https://github.com/Rapptz/discord.py/issues/2574
|
||||
_warnings.filterwarnings(
|
||||
"ignore", category=DeprecationWarning, module="websockets", lineno=407
|
||||
)
|
||||
# DeprecationWarning: The loop argument is deprecated since Python 3.8, and scheduled for removal in Python 3.10.
|
||||
# transport, protocol = await self._create_connection()
|
||||
_warnings.filterwarnings(
|
||||
"ignore", category=DeprecationWarning, module="websockets", lineno=535
|
||||
)
|
||||
|
||||
@@ -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-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: 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
|
||||
@@ -21,31 +21,31 @@ msgstr "Pokusil jsem se udělat něco, co mi Discord odepřel. Tvůj příkaz se
|
||||
|
||||
#: 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 "Nemohu dát {role.name} uživateli {member.display_name}, protože tato role je vyšší nebo rovna mé nejvyšší roli v Discord hierarchii."
|
||||
|
||||
#: 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 "Nemohu odebrat {role.name} uživateli {member.display_name}, protože tato role je vyšší nebo rovna mé nejvyšší roli v Discord hierarchii."
|
||||
|
||||
#: 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 "Nemohu upravit {role.name}, protože tato role je vyšší, než moje nebo stejná jako nejvyšší role v Discord hierarchii."
|
||||
|
||||
#: 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 "Nemohu ti dovolit dát {role.name} uživateli {member.display_name}, protože tato role je vyšší nebo rovna tvé nejvyšší roli v Discord hierarchii."
|
||||
|
||||
#: 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 "Nemohu ti dovolit odebrat {role.name} uživateli {member.display_name}, protože tato role je vyšší nebo rovna tvé nejvyšší roli v Discord hierarchii."
|
||||
|
||||
#: 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 "Nemohu ti dovolit upravit {role.name}, protože tato role je vyšší nebo rovna tvé nejvyšší roli v Discord hierarchii."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:58
|
||||
msgid "I need manage roles permission to do that."
|
||||
msgstr ""
|
||||
msgstr "K tomu potřebuji oprávnění spravovat role."
|
||||
|
||||
#: 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 "Kolekce nástrojů pro správu serveru."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:126
|
||||
msgid "{member.display_name} already has the role {role.name}."
|
||||
msgstr ""
|
||||
msgstr "{member.display_name} již má roli {role.name}."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:146
|
||||
msgid "I successfully added {role.name} to {member.display_name}"
|
||||
@@ -66,7 +66,7 @@ msgstr "Úspěšně jsem přidal {role.name} k {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} již má roli {role.name}."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:176
|
||||
msgid "I successfully removed {role.name} from {member.display_name}"
|
||||
@@ -75,12 +75,12 @@ msgstr "Úspěšně jsem odstranil {role.name} od {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 Přidá roli uživateli.\\n\\n Pokud role obsahuje mezery, použijte dvojí uvozovky.\\n Ponecháte-li uživatel prázdný, výchozí hodnota autorovi příkazu.\\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 Odebrat roli uživateli.\\n\\n Pokud role obsahuje mezery, použijte dvojí uvozovky.\\n Ponecháte-li uživatel prázdný, výchozí hodnota autorovi příkazu.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:217
|
||||
#, docstring
|
||||
@@ -90,7 +90,7 @@ msgstr "Upraví nastavení role."
|
||||
#: 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 Upravit barvu role.\\n\\n Pokud role obsahuje mezery, použij dvojité uvozovky.\\n Barva musí být v hexadecimálním formátu.\\n [Výběr barev online](http://www.w3schools.com/colors/colors_picker.asp)\\n\\n Příklady:\\n `[p]editrole colour \\\"Spravce\\\" #ff0000`\\n `[p]editrole colour Spravce #ff9900`\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:253 redbot/cogs/admin/admin.py:286
|
||||
msgid "Done."
|
||||
@@ -99,12 +99,12 @@ msgstr "Hotovo."
|
||||
#: 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 Upraví název role\\n\\n Použijte dvojité uvozovky, pokud role nebo název obsahuje mezery.\\n\\n Příklady:\\n `[p]editrole name \\\"Spravce\\\" Admin`\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:291
|
||||
#, docstring
|
||||
msgid "Announce a message to all servers the bot is in."
|
||||
msgstr ""
|
||||
msgstr "Oznámit zprávu na všechny servery ve kterých je bot."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:298
|
||||
msgid "The announcement has begun."
|
||||
@@ -117,7 +117,7 @@ msgstr "Zrušit běžící oznámení."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:307
|
||||
msgid "There is no currently running announcement."
|
||||
msgstr ""
|
||||
msgstr "V současné době neexistuje žádné spuštěné oznámení."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:310
|
||||
msgid "The current announcement has been cancelled."
|
||||
@@ -126,12 +126,12 @@ msgstr "Momentální oznámení bylo zrušeno."
|
||||
#: redbot/cogs/admin/admin.py:316
|
||||
#, docstring
|
||||
msgid "Change how announcements are sent in this guild."
|
||||
msgstr ""
|
||||
msgstr "Změňte způsob odesílání oznámení v tomto klanu."
|
||||
|
||||
#: 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 Změňte kanál, kde bude bot odesílat oznámení.\\n \\n Pokud je kanál ponechán prázdný, výchozí je aktuální kanál.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:330
|
||||
msgid "The announcement channel has been set to {channel.mention}"
|
||||
@@ -140,35 +140,35 @@ msgstr "Kanál pro oznámení byl nastaven na {channel.mention}"
|
||||
#: redbot/cogs/admin/admin.py:335
|
||||
#, docstring
|
||||
msgid "Toggle announcements being enabled this server."
|
||||
msgstr ""
|
||||
msgstr "Zapne oznamování na tomto serveru."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:340
|
||||
msgid "The server {guild.name} will receive announcements."
|
||||
msgstr ""
|
||||
msgstr "Server {guild.name} obdrží oznámení."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:344
|
||||
msgid "The server {guild.name} will not receive announcements."
|
||||
msgstr ""
|
||||
msgstr "Server {guild.name} nebude dostávat oznámení."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:370
|
||||
#, docstring
|
||||
msgid "Apply selfroles."
|
||||
msgstr ""
|
||||
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 ""
|
||||
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
|
||||
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 Odstraní vámself-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:397
|
||||
#, docstring
|
||||
msgid "\\n Lists all available selfroles.\\n "
|
||||
msgstr ""
|
||||
msgstr "\\n Seznam všech dostupných self-rolí.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:407
|
||||
msgid "Available Selfroles:\\n{selfroles}"
|
||||
@@ -177,37 +177,37 @@ msgstr "Dostupné vlastní role:\\n{selfroles}"
|
||||
#: redbot/cogs/admin/admin.py:413
|
||||
#, docstring
|
||||
msgid "Manage selfroles."
|
||||
msgstr ""
|
||||
msgstr "Spravovat self-role."
|
||||
|
||||
#: 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 Přidá roli do seznamu dostupných self-rolí.\\n\\n POZNÁMKA: Role je citlivá na malá a velká písmena!\\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 "Nemohu ti dovolit odebrat {role.name} jako self-roli uživateli, protože tato role je vyšší nebo rovna tvé nejvyšší roli v Discord hierarchii."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:433
|
||||
msgid "Added."
|
||||
msgstr ""
|
||||
msgstr "Přidáno."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:436
|
||||
msgid "That role is already a selfrole."
|
||||
msgstr ""
|
||||
msgstr "Tato role je již self-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 Odstraní roli ze seznamu dostupných self-rolí.\\n\\n POZNÁMKA: Role je citlivá na malá a velká písmena!\\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 "Nemohu ti dovolit odebrat {role.name} uživateli, protože tato role je vyšší nebo rovna tvé nejvyšší roli v Discord hierarchii."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:455
|
||||
msgid "Removed."
|
||||
msgstr ""
|
||||
msgstr "Odstraněno."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:460
|
||||
#, docstring
|
||||
@@ -224,17 +224,17 @@ msgstr "Bot je nyní serverem uzamčen."
|
||||
|
||||
#: redbot/cogs/admin/announcer.py:75
|
||||
msgid "I could not announce to the following server: "
|
||||
msgstr ""
|
||||
msgstr "Nemohu oznámit následujícímu serveru: "
|
||||
|
||||
#: redbot/cogs/admin/announcer.py:77
|
||||
msgid "I could not announce to the following servers: "
|
||||
msgstr ""
|
||||
msgstr "Nemohu oznámit následujícím serverům: "
|
||||
|
||||
#: redbot/cogs/admin/converters.py:12
|
||||
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 ""
|
||||
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-02-20 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: German\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -11,41 +10,42 @@ 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
|
||||
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
|
||||
msgstr "Ich habe versucht etwas zu tun, für das mir Discord die Befugnis verweigerte. Dein Befehl konnte nicht erfolgreich ausgeführt werden."
|
||||
msgstr "Ich habe versucht, etwas zu tun, wofür mir Discord die Erlaubnis verweigert hat. Dein Befehl wurde nicht erfolgreich ausgeführt."
|
||||
|
||||
#: 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 "Ich kann {role.name} nicht an {member.display_name} vergeben, da diese Rolle gleich oder höher meiner höchsten Rolle in der Discord-Hierarchie ist."
|
||||
msgstr "Ich kann die Rolle „{role.name}“ nicht an {member.display_name} vergeben, weil diese Rolle höher oder gleich meiner höchsten Rolle in der Discord Rollen-Hierarchie ist."
|
||||
|
||||
#: 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 "Ich kann {member.display_name} die Rolle {role.name} nicht entziehen, da diese gleich oder höher meiner höchsten Rolle in der Discord-Hierarchie ist."
|
||||
msgstr "Ich kann {member.display_name} nicht die Rolle „{role.name}“ entziehen, weil diese Rolle höher oder gleich meiner höchsten Rolle in der Discord Rollen-Hierarchie ist."
|
||||
|
||||
#: 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 "Ich kann die Rolle \"{role.name}\" nicht bearbeiten, da diese höher oder gleich meiner höchsten Rolle in der Discord-Hierarchie ist."
|
||||
msgstr "Ich kann die Rolle „{role.name}“ nicht bearbeiten, weil diese Rolle höher oder gleich meiner höchsten Rolle in der Discord Rollen-Hierarchie ist."
|
||||
|
||||
#: 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 "Ich kann dir nicht erlauben, die Rolle {role.name} an {member.display_name} zu vergeben, da diese Rolle höher oder gleich deiner höchsten Rolle in der Discord-Hierarchie ist."
|
||||
msgstr "Du darfst, die Rolle „{role.name}“ nicht an {member.display_name} vergeben, weil diese Rolle höher oder gleich deiner höchsten Rolle in der Discord Rollen-Hierarchie ist."
|
||||
|
||||
#: 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 "Du kannst {member.display_name} die Rolle \"{role.name}\" entziehen, da diese gleich oder über deiner höchsten Rolle in der Discord-Hierarchie ist."
|
||||
msgstr "Du darfst {member.display_name} nicht die Rolle „{role.name}“ entziehen, weil diese Rolle höher oder gleich deiner höchsten Rolle in der Discord Rollen-Hierarchie ist."
|
||||
|
||||
#: 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 "Ich kann dir nicht erlauben, die Rolle {role.name} zu bearbeiten, da diese Rolle höher oder gleich deiner höchsten Rolle in der Discord-Hierarchie ist."
|
||||
msgstr "Du darfst nicht die Rolle „{role.name}“ bearbeiten, weil diese Rolle höher oder gleich deiner höchsten Rolle in der Discord Rollen-Hierarchie ist."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:58
|
||||
msgid "I need manage roles permission to do that."
|
||||
msgstr "Ich benötige die Berechtigung \"Rollen verwalten\" um das zu tun."
|
||||
msgstr "Ich braucht dafür die Bereichtigung „Rollen verwalten“."
|
||||
|
||||
#: 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,43 +54,43 @@ msgstr "Ich kündige bereits etwas an. Wenn du eine andere Ankündigung machen w
|
||||
#: redbot/cogs/admin/admin.py:70
|
||||
#, docstring
|
||||
msgid "A collection of server administration utilities."
|
||||
msgstr "Eine Sammlung von administrativen Server-Verwaltungsprogramme."
|
||||
msgstr "Eine Sammlung von administrativen Server-Verwaltungsprogrammen."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:126
|
||||
msgid "{member.display_name} already has the role {role.name}."
|
||||
msgstr "{member.display_name} hat die Rolle {role.name} bereits."
|
||||
msgstr "{member.display_name} hat die Rolle „{role.name}“ bereits."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:146
|
||||
msgid "I successfully added {role.name} to {member.display_name}"
|
||||
msgstr "Ich habe erfolgreich {role.name} zu {member.display_name} hinzugefügt"
|
||||
msgstr "Ich habe {member.display_name} erfolgreich die Rolle „{role.name}“ gegeben."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:156
|
||||
msgid "{member.display_name} does not have the role {role.name}."
|
||||
msgstr "{member.display_name} hat nicht die Rolle {role.name}."
|
||||
msgstr "{member.display_name} hat nicht die Rolle „{role.name}“."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:176
|
||||
msgid "I successfully removed {role.name} from {member.display_name}"
|
||||
msgstr "Ich habe erfolgreich {role.name} von {member.display_name} entfernt"
|
||||
msgstr "Ich habe die Rolle „{role.name}“ erfolgreich von {member.display_name} entfernt."
|
||||
|
||||
#: 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 "\\n Füge einem Nutzer eine Rolle hinzu.\\n\\n Benutze Anführungszeichen, wenn im Namen Leerzeichen entahlten sind.\\n Wenn kein Benutzer definiert ist, wird die Rolle dem Autor hinzugefügt.\\n "
|
||||
msgstr "\\n Füge einem Mitglied eine Rolle hinzu.\\n\\n Benutze (amerikanische) Anführungszeichen, wenn im Namen Leerzeichen enthalten sind.\\n Wenn keine Person definiert wurde, wird die Rolle dem Ausführer des Befehls gegeben.\\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 "\\n Entferne eine Rolle von einem Nutzer.\\n\\n Benutze Anführungszeichen, wenn im Namen Leerzeichen entahlten sind.\\n Wenn kein Benutzer definiert ist, wird die Rolle vom Autor entfernt.\\n "
|
||||
msgstr "\\n Füge einem Mitglied eine Rolle hinzu.\\n\\n Benutze (amerikanische) Anführungszeichen, wenn im Namen Leerzeichen enthalten sind.\\n Wenn keine Person definiert wurde, wird die Rolle von dem Ausführer des Befehls entfernt.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:217
|
||||
#, docstring
|
||||
msgid "Edit role settings."
|
||||
msgstr "Bearbeiten der Rollen Einstellungen."
|
||||
msgstr "Rolleneinstellungen bearbeiten."
|
||||
|
||||
#: 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 "\\n Bearbeite die Farbe einer Rolle.\\n\\n Verwende Anführungszeichen, wenn die Rolle Leerzeichen enthält.\\n Die Farbe muss im Hexadezimalformat angegeben werden.\\n [Online Farbwähler](http://www.w3schools.com/colors/colors_picker.asp)\\n\\n Beispiele:\\n `[p]editrole colour \\\"The Transistor\\\" #ff0000`\\n `[p]editrole colour Test #ff9900`\\n "
|
||||
msgstr "\\n Bearbeite die Farbe einer Rolle.\\n\\n Verwende (amerikanische) Anführungszeichen, wenn die Rolle Leerzeichen enthält.\\n Die Farbe muss im Hexadezimalformat angegeben werden.\\n [Online Farbwähler](http://www.w3schools.com/colors/colors_picker.asp)\\n\\n Beispiele:\\n `[p]editrole colour \\\"The Transistor\\\" #ff0000`\\n `[p]editrole colour Test #ff9900`\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:253 redbot/cogs/admin/admin.py:286
|
||||
msgid "Done."
|
||||
@@ -99,7 +99,7 @@ msgstr "Erledigt."
|
||||
#: 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 "\\n Bearbeite den Namen einer Rolle.\\n\\n Verwende Anführungszeichen, wenn die Rolle Leerzeichen enthält.\\n\\n Beispiel:\\n `[p]editrole name \\\"The Transistor\\\" Test`\\n "
|
||||
msgstr "\\n Bearbeite den Namen einer Rolle.\\n\\n Verwende (amerikanische) Anführungszeichen, wenn die Rolle Leerzeichen enthält.\\n\\n Beispiel:\\n `[p]editrole name \\\"The Transistor\\\" Test`\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:291
|
||||
#, docstring
|
||||
@@ -117,7 +117,7 @@ msgstr "Breche eine laufende Ankündigung ab."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:307
|
||||
msgid "There is no currently running announcement."
|
||||
msgstr "Es gibt keine laufende Ankündigung."
|
||||
msgstr "Es gibt keine derzeit laufende Ankündigung."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:310
|
||||
msgid "The current announcement has been cancelled."
|
||||
@@ -131,11 +131,11 @@ msgstr "Ändere, wie Ankündigungen in diesem Server gesendet werden."
|
||||
#: 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 "\\n Ändert den Kanal, in den der Bot Ankündigungen sendet.\\n \\n Wenn kein Kanal angegeben wird, wird er standardmäßig auf den aktuellen Kanal gesetzt.\\n "
|
||||
msgstr "\\n Ändert den Kanal, in dem der Bot Ankündigungen senden wird.\\n \\n Wenn kein Kanal angegeben wird, wird standardmäßig der aktuelle Kanal gewählt.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:330
|
||||
msgid "The announcement channel has been set to {channel.mention}"
|
||||
msgstr "Der für Ankündigungen gewählte Kanal wurde festgelegt auf {channel.mention}"
|
||||
msgstr "{channel.mention} wurde nun als Ankündigungskanal festgelegt."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:335
|
||||
#, docstring
|
||||
@@ -153,17 +153,17 @@ msgstr "Der Server {guild.name} wird keine Ankündigunen erhalten."
|
||||
#: redbot/cogs/admin/admin.py:370
|
||||
#, docstring
|
||||
msgid "Apply selfroles."
|
||||
msgstr "Selbst-hinzufügbare Rollen anwenden."
|
||||
msgstr "Selbst hinzufügbare Rollen anwenden."
|
||||
|
||||
#: 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 Gib dir selbst eine Rolle.\\n\\n Server Admins müssen die Rolle für Nutzer freigeben.\\n\\n HINWEIS: Beachte Groß- und Kleinschreibung!\\n "
|
||||
msgstr "\\n Gib dir selbst eine Rolle.\\n\\n Server Admins müssen die Rolle für Mitglieder freigeben.\\n\\n HINWEIS: Beachte Groß- und Kleinschreibung!\\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 "\\n Entferne eine Rolle von dir selbst.\\n\\n Server Admins müssen die Rolle für Nutzer freigeben.\\n\\n HINWEIS: Beachte Groß- und Kleinschreibung!\\n "
|
||||
msgstr "\\n Entferne eine Rolle von dir selbst.\\n\\n Server Admins müssen die Rolle für Mitglieder freigeben.\\n\\n HINWEIS: Beachte Groß- und Kleinschreibung!\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:397
|
||||
#, docstring
|
||||
@@ -172,21 +172,21 @@ msgstr "\\nGibt eine Liste verfügbarer selbst auswählbarer Rollen aus.\\n
|
||||
|
||||
#: redbot/cogs/admin/admin.py:407
|
||||
msgid "Available Selfroles:\\n{selfroles}"
|
||||
msgstr "Verfügbare, selbst auswählbare Rollen:\\n{selfroles}"
|
||||
msgstr "Verfügbare selbst auswählbare Rollen:\\n{selfroles}"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:413
|
||||
#, docstring
|
||||
msgid "Manage selfroles."
|
||||
msgstr "Selbst-hinzufügbare Rollen verwalten."
|
||||
msgstr "Selbst hinzufügbare Rollen verwalten."
|
||||
|
||||
#: 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 "\\n Füge eine Rolle zur Liste der selbst-hinzufügbaren Rollen hinzu.\\n\\n HINWEIS: Beachte Groß- und Kleinschreibung!\\n "
|
||||
msgstr "\\n Füge eine Rolle zur Liste der selbst hinzufügbaren Rollen hinzu.\\n\\n HINWEIS: Beachte Groß- und Kleinschreibung!\\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 "Du kannst dir nicht die Rolle {role.name} zuweisen, da diese gleich oder über deiner höchsten Rolle in der Discord-Hierarchie ist."
|
||||
msgstr "Du kannst dir nicht die Rolle „{role.name}“ zuweisen, weil diese Rolle höher oder gleich deiner höchsten Rolle in der Discord Rollen-Hierarchie ist."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:433
|
||||
msgid "Added."
|
||||
@@ -194,16 +194,16 @@ msgstr "Hinzugefügt."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:436
|
||||
msgid "That role is already a selfrole."
|
||||
msgstr "Diese Rolle ist bereits selbst-hinzufügbar."
|
||||
msgstr "Diese Rolle ist bereits selbst hinzufügbar."
|
||||
|
||||
#: 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 "\\n Entferne eine Rolle von der Liste der selbst-hinzufügbaren Rollen.\\n\\n HINWEIS: Beachte Groß- und Kleinschreibung!\\n "
|
||||
msgstr "\\n Entferne eine Rolle von der Liste der selbst hinzufügbaren Rollen.\\n\\n HINWEIS: Beachte Groß- und Kleinschreibung!\\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 "Ich kann dir nicht erlauben, {role.name} von der Liste der selbst-hinzufügbaren Rollen zu entfernen, weil diese Rolle höher oder gleich deiner höchsten Rolle in der Discord-Hierarchie ist."
|
||||
msgstr "Du darfst nicht die Rolle „{role.name}“ von der Liste der selbst hinzufügbaren Rollen entfernen, weil diese Rolle höher oder gleich deiner höchsten Rolle in der Discord Rollen-Hierarchie ist."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:455
|
||||
msgid "Removed."
|
||||
@@ -212,11 +212,11 @@ msgstr "Entfernt."
|
||||
#: redbot/cogs/admin/admin.py:460
|
||||
#, docstring
|
||||
msgid "Lock a bot to its current servers only."
|
||||
msgstr "Sperrt den Bot neuen Servern beizutreten."
|
||||
msgstr "Der Bot kann keinem neuen Server beitreten."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:465
|
||||
msgid "The bot is no longer serverlocked."
|
||||
msgstr "Der Bot ist nicht länger gesperrt neuen Servern beizutreten."
|
||||
msgstr "Der Bot kann nun anderen Servern beitreten."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:467
|
||||
msgid "The bot is now serverlocked."
|
||||
@@ -224,17 +224,17 @@ msgstr "Der Bot ist jetzt gesperrt neuen Servern beizutreten."
|
||||
|
||||
#: redbot/cogs/admin/announcer.py:75
|
||||
msgid "I could not announce to the following server: "
|
||||
msgstr "Ich konnte nicht in den folgenden Servern ankündigen: "
|
||||
msgstr "Ich konnte die Ankündigung auf diesem Server nicht ausführen: "
|
||||
|
||||
#: redbot/cogs/admin/announcer.py:77
|
||||
msgid "I could not announce to the following servers: "
|
||||
msgstr "Ich konnte nicht in den folgenden Servern ankündigen: "
|
||||
msgstr "Ich konnte die Ankündigung auf diesen Servern nicht ausführen: "
|
||||
|
||||
#: redbot/cogs/admin/converters.py:12
|
||||
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 vorausgesetzte Rolle ist keine berechtigte selbst auswählbare Rolle."
|
||||
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-02-27 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
|
||||
@@ -21,31 +21,31 @@ msgstr "J'ai tenté de faire quelque chose que pour lequel Discord m'a refusé l
|
||||
|
||||
#: 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 "Je ne peux pas donner {role.name} à {member.display_name} car ce rôle est supérieur ou égal à mon rôle le plus élevé dans la hiérarchie 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 "Je ne peux pas supprimer {role.name} de {member.display_name} car ce rôle est supérieur ou égal à mon rôle le plus élevé dans la hiérarchie 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 "Je ne peux pas modifier {role.name} parce que ce rôle est supérieur ou égal à mon rôle le plus élevé dans la hiérarchie 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 "Je ne peux pas vous laisser donner {role.name} à {member.display_name} car ce rôle est supérieur ou égal à votre rôle le plus haut dans la hiérarchie 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 "Je ne peux pas vous permettre de supprimer {role.name} de {member.display_name} car ce rôle est supérieur ou égal à votre rôle le plus élevé dans la hiérarchie 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 "Je ne peux pas vous permettre de modifier {role.name} car ce rôle est supérieur ou égal à votre rôle le plus élevé dans la hiérarchie Discord."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:58
|
||||
msgid "I need manage roles permission to do that."
|
||||
msgstr ""
|
||||
msgstr "J’ai besoin de la permission de gérer les rôles pour faire cela."
|
||||
|
||||
#: 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 "Un ensemble d'utilitaires d'administration du serveur."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:126
|
||||
msgid "{member.display_name} already has the role {role.name}."
|
||||
msgstr ""
|
||||
msgstr "{member.display_name} a déjà le rôle {role.name}."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:146
|
||||
msgid "I successfully added {role.name} to {member.display_name}"
|
||||
@@ -66,7 +66,7 @@ msgstr "J'ai bien ajouté le rôle {role.name} à {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} n'a pas le rôle {role.name}."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:176
|
||||
msgid "I successfully removed {role.name} from {member.display_name}"
|
||||
@@ -75,12 +75,12 @@ msgstr "J'ai bien retiré le rôle {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 Ajouter un rôle à un utilisateur.\\n\\n Utilisez des guillemets si le rôle contient des espaces.\\n Si l'utilisateur est laissé vide, c'est par défaut l'auteur de la commande.\\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 Retirer un rôle d'un utilisateur.\\n\\n Utilisez des guillemets doubles si le rôle contient des espaces.\\n Si l'utilisateur est laissé vide, c'est par défaut l'auteur de la commande.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:217
|
||||
#, docstring
|
||||
@@ -90,7 +90,7 @@ msgstr "Modifier les paramètres d'un rôle."
|
||||
#: 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 Modifiez la couleur d'un rôle.\\n\\n Utilisez des guillemets doubles si le rôle contient des espaces.\\n La couleur doit être au format hexadécimal.\\n [Sélecteur de couleurs en ligne](http://www.w3schools.com/colors/colors_picker.asp)\\n\\n Exemples:\\n `[p]editrole color \\\"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 "Fait."
|
||||
#: 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 Modifier le nom d'un rôle.\\n\\n Utiliser des guillemets si le rôle ou le nom contient des espaces.\\n\\n Exemple:\\n `[p]editrole name \\\"The Transistor\\\" Test`\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:291
|
||||
#, docstring
|
||||
@@ -117,7 +117,7 @@ msgstr "Interrompre une annonce en cours."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:307
|
||||
msgid "There is no currently running announcement."
|
||||
msgstr ""
|
||||
msgstr "Il n'y a aucune annonce en cours d'exécution."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:310
|
||||
msgid "The current announcement has been cancelled."
|
||||
@@ -126,12 +126,12 @@ msgstr "L'annonce actuelle a été interrompue."
|
||||
#: redbot/cogs/admin/admin.py:316
|
||||
#, docstring
|
||||
msgid "Change how announcements are sent in this guild."
|
||||
msgstr ""
|
||||
msgstr "Change la façon dont les annonces sont envoyées dans ce serveur."
|
||||
|
||||
#: 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 Changer le salon où le bot enverra des annonces.\\n \\n Si le salon est laissé vide, il est par défaut sur le salon actuel.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:330
|
||||
msgid "The announcement channel has been set to {channel.mention}"
|
||||
@@ -153,17 +153,17 @@ msgstr "Le serveur {guild.name} ne recevra plus les annonces."
|
||||
#: redbot/cogs/admin/admin.py:370
|
||||
#, docstring
|
||||
msgid "Apply selfroles."
|
||||
msgstr ""
|
||||
msgstr "Appliquer auto-rôles."
|
||||
|
||||
#: 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 Ajouter un auto-rôle à vous-même.\\n\\n Les administrateurs du serveur doivent avoir configuré le rôle en tant qu'utilisable par les utilisateurs.\\n NOTE : Le rôle est sensible aux majuscules et minuscules !\\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 Supprimez un auto-rôle de vous-même.\\n\\n Les administrateurs du serveur doivent avoir configuré le rôle en tant qu'utilisable par les utilisateurs.\\n NOTE : Le rôle est sensible aux majuscules et minuscules !\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:397
|
||||
#, docstring
|
||||
@@ -182,7 +182,7 @@ msgstr "Gérer les auto-roles."
|
||||
#: 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 "\\nAjouter un rôle à la liste des auto-rôles disponibles.\\n\\n NOTE : Le nom du rôle est sensible aux majuscules et minuscules !\\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."
|
||||
@@ -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-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, 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
|
||||
@@ -21,31 +21,31 @@ msgstr "Eu tentei fazer algo que o Discord me negou as permissões. Seu comando
|
||||
|
||||
#: 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 "Não posso atribuir o cargo {role.name} para {member.display_name} porque este cargo é mais alto ou igual que o meu cargo mais alto 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 o cargo {role.name} de {member.display_name} porque este cargo é mais alto ou igual que o meu cargo mais alto 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."
|
||||
msgstr ""
|
||||
msgstr "Não posso alterar o cargo {role.name} porque este cargo é mais alto ou igual que o meu cargo mais alto na hierarquia do 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 "Não posso deixar você atribuir o cargo {role.name} para {member.display_name} porque este cargo é mais alto ou igual que o meu cargo mais alto na hierarquia do 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 "Não posso deixar você rmover o cargo {role.name} de {member.display_name} porque este cargo é mais alto ou igual que o meu cargo mais alto na hierarquia do 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 "Não posso deixar você alterar o cargo {role.name} porque este cargo é mais alto ou igual que o meu cargo mais alto na hierarquia do Discord."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:58
|
||||
msgid "I need manage roles permission to do that."
|
||||
msgstr ""
|
||||
msgstr "Preciso da permissão para alterar os cargos para fazer isto."
|
||||
|
||||
#: 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,11 +54,11 @@ msgstr "Eu já estou anunciando algo. Se quer fazer um anúncio diferente, por f
|
||||
#: redbot/cogs/admin/admin.py:70
|
||||
#, docstring
|
||||
msgid "A collection of server administration utilities."
|
||||
msgstr "Uma coleção de ferramentas de administração para o servidor."
|
||||
msgstr "Um conjunto de ferramentas para a administração do servidor."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:126
|
||||
msgid "{member.display_name} already has the role {role.name}."
|
||||
msgstr ""
|
||||
msgstr "{member.display_name} já tem o cargo {role.name}."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:146
|
||||
msgid "I successfully added {role.name} to {member.display_name}"
|
||||
@@ -66,31 +66,31 @@ msgstr "Eu adicionei com sucesso {role.name} de {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} não tem o cargo {role.name}."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:176
|
||||
msgid "I successfully removed {role.name} from {member.display_name}"
|
||||
msgstr "Eu removi com sucesso {role.name} de {member.display_name}"
|
||||
msgstr "Eu removi {role.name} de {member.display_name} com sucesso"
|
||||
|
||||
#: 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 Concede um cargo a um(a) usuário(a).\\n\\n Use aspas duplas se o nome do cargo contiver espaços.\\n Se o usuário for deixado em branco, por padrão será usado a(o) autor(a) do 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 Remove um cargo de um(a) usuário(a).\\n\\n Use aspas duplas se o nome do cargo contiver espaços.\\n Se o usuário for deixado em branco, por padrão será usado a(o) autor(a) do comando.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:217
|
||||
#, docstring
|
||||
msgid "Edit role settings."
|
||||
msgstr "Edite as configurações de cargo."
|
||||
msgstr "Altera as configurações de cargo."
|
||||
|
||||
#: 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 a cor de um cargo.\\n\\n Use aspas duplas se o cargo contiver espaços.\\n A cor precisa estar em formato hexadecimal.\\n [Seletor de cores online](http://www.w3schools.com/colors/colors_picker.asp)\\n\\n Exemplos:\\n `[p]editrole colour \\\"O Transistor\\\" #ff0000`\\n `[p]editrole colour Teste #ff9900`\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:253 redbot/cogs/admin/admin.py:286
|
||||
msgid "Done."
|
||||
@@ -99,142 +99,142 @@ msgstr "Concluído."
|
||||
#: 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 Alterar o nome de um cargo.\\n\\n Use aspas duplas se o cargo ou o nome contiverem espaços.\\n\\n Exemplo:\\n `[p]editrole name \\\"O Transistor\\\" Teste`\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:291
|
||||
#, docstring
|
||||
msgid "Announce a message to all servers the bot is in."
|
||||
msgstr ""
|
||||
msgstr "Anuncia uma mensagem para todos os servidores onde o bot está."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:298
|
||||
msgid "The announcement has begun."
|
||||
msgstr ""
|
||||
msgstr "O anúncio começou."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:305
|
||||
#, docstring
|
||||
msgid "Cancel a running announce."
|
||||
msgstr ""
|
||||
msgstr "Cancela um anúncio em andamento."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:307
|
||||
msgid "There is no currently running announcement."
|
||||
msgstr ""
|
||||
msgstr "Não existe nenhum anúncio em andamento."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:310
|
||||
msgid "The current announcement has been cancelled."
|
||||
msgstr ""
|
||||
msgstr "O anúncio atual foi cancelado."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:316
|
||||
#, docstring
|
||||
msgid "Change how announcements are sent in this guild."
|
||||
msgstr ""
|
||||
msgstr "Altera como os anúncios são enviados nessa guilda."
|
||||
|
||||
#: 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 Altera o canal para onde o bot enviará os anúncios.\\n \\n Se o canal for deixado em branco, por padrão será usado o canal atual.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:330
|
||||
msgid "The announcement channel has been set to {channel.mention}"
|
||||
msgstr ""
|
||||
msgstr "O canal de anúncios foi definido como {channel.mention}"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:335
|
||||
#, docstring
|
||||
msgid "Toggle announcements being enabled this server."
|
||||
msgstr ""
|
||||
msgstr "Alterna se os anúncios estão habilitados nesse servidor."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:340
|
||||
msgid "The server {guild.name} will receive announcements."
|
||||
msgstr ""
|
||||
msgstr "O servidor {guild.name} receberá anúncios."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:344
|
||||
msgid "The server {guild.name} will not receive announcements."
|
||||
msgstr ""
|
||||
msgstr "O servidor {guild.name} não receberá anúncios."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:370
|
||||
#, docstring
|
||||
msgid "Apply selfroles."
|
||||
msgstr ""
|
||||
msgstr "Concede cargos autoatribuíveis a si."
|
||||
|
||||
#: 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 Concede um cargo autoatribuível a si.\\n\\n Os administradores do servidor precisarão configurar o cargo como autoatribuível.\\n NOTA: o nome do cargo diferencia entre maiúsculas e minú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 Remove um cargo autoatribuível de si.\\n\\n Os administradores do servidor precisarão configurar o cargo como autoatribuível.\\n NOTA: o nome do cargo diferencia entre maiúsculas e minúsculas!\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:397
|
||||
#, docstring
|
||||
msgid "\\n Lists all available selfroles.\\n "
|
||||
msgstr ""
|
||||
msgstr "\\n Lista todos os cargos autoatribuíveis.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:407
|
||||
msgid "Available Selfroles:\\n{selfroles}"
|
||||
msgstr ""
|
||||
msgstr "Cargos autoatribuíveis disponíveis:\\n{selfroles}"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:413
|
||||
#, docstring
|
||||
msgid "Manage selfroles."
|
||||
msgstr ""
|
||||
msgstr "Gerenciar cargos autoatribuíveis."
|
||||
|
||||
#: 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 Adiciona um cargo à lista de cargos autoatribuíveis.\\n\\n NOTA: o nome do cargo diferencia entre maiúsculas e minú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 "Não posso deixar você atribuir {role.name} como um cargo autoatribuível porque este cargo é mais alto ou igual ao seu mais alto cargo na hierarquia do Discord."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:433
|
||||
msgid "Added."
|
||||
msgstr ""
|
||||
msgstr "Adicionado."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:436
|
||||
msgid "That role is already a selfrole."
|
||||
msgstr ""
|
||||
msgstr "Este cargo já é autoatribuível."
|
||||
|
||||
#: 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 Remove um cargo da lista de cargos autoatribuíveis.\\n\\n NOTA: o nome do cargo diferencia entre maiúsculas e minú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 "Não posso deixar você remover o cargo {role.name} da lista de cargos autoatribuíveis porque este cargo é mais alto ou igual ao seu mais alto cargo na hierarquia do Discord."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:455
|
||||
msgid "Removed."
|
||||
msgstr ""
|
||||
msgstr "Removido."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:460
|
||||
#, docstring
|
||||
msgid "Lock a bot to its current servers only."
|
||||
msgstr ""
|
||||
msgstr "Restringe o bot somente aos servidores atuais."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:465
|
||||
msgid "The bot is no longer serverlocked."
|
||||
msgstr ""
|
||||
msgstr "O bot não está mais restrito aos servidores atuais."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:467
|
||||
msgid "The bot is now serverlocked."
|
||||
msgstr ""
|
||||
msgstr "O está restrito aos servidores atuais."
|
||||
|
||||
#: redbot/cogs/admin/announcer.py:75
|
||||
msgid "I could not announce to the following server: "
|
||||
msgstr ""
|
||||
msgstr "Não pude anunciar no seguinte servidor: "
|
||||
|
||||
#: redbot/cogs/admin/announcer.py:77
|
||||
msgid "I could not announce to the following servers: "
|
||||
msgstr ""
|
||||
msgstr "Não pude anunciar nos seguintes servidores: "
|
||||
|
||||
#: redbot/cogs/admin/converters.py:12
|
||||
msgid "The Admin cog is not loaded."
|
||||
msgstr ""
|
||||
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 ""
|
||||
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-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: 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
|
||||
@@ -21,27 +21,27 @@ msgstr "Я попыталась сделать что-то, в чем Discord о
|
||||
|
||||
#: 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 "Невозможно выдать роль {role.name} для {member.display_name}, потому что эта роль выше или равна моей самой высокой роли в иерархии 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 "Я не могу убрать {role.name} у {member.display_name}, потому что эта роль выше или равна моей самой высокой роли в иерархии 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 "Я не могу редактировать {role.name}, потому что эта роль выше моей или равна самой высокой роли в иерархии 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 "Я не могу вам дать {role.name}, {member.display_name}, поскольку эта роль выше или равна вашей самой высокой роли в иерархии 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 "Я не могу позволить вам удалить {role.name} у {member.display_name}, потому что эта роль выше или равна вашей самой высокой роли в иерархии 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 "Я не могу позволить вам редактировать {role.name}, потому что эта роль больше или равна вашей самой высокой роли в иерархии Discord."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:58
|
||||
msgid "I need manage roles permission to do that."
|
||||
@@ -58,7 +58,7 @@ msgstr "Набор утилит администрирования сервер
|
||||
|
||||
#: redbot/cogs/admin/admin.py:126
|
||||
msgid "{member.display_name} already has the role {role.name}."
|
||||
msgstr ""
|
||||
msgstr "{member.display_name} уже имеет роль {role.name}."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:146
|
||||
msgid "I successfully added {role.name} to {member.display_name}"
|
||||
@@ -66,7 +66,7 @@ msgstr "Я успешно добавила роль {role.name} пользова
|
||||
|
||||
#: redbot/cogs/admin/admin.py:156
|
||||
msgid "{member.display_name} does not have the role {role.name}."
|
||||
msgstr ""
|
||||
msgstr "{member.display_name} не имеет роли {role.name}."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:176
|
||||
msgid "I successfully removed {role.name} from {member.display_name}"
|
||||
@@ -75,12 +75,12 @@ msgstr "Я успешно забрала роль {role.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 Добавить роль пользователю.\\n\\n Используйте двойные кавычки, если роль содержит пробелы.\\n Если пользователь не указан, по умолчанию используется автор команды.\\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 Удалить роль у пользователя.\\n\\n Используйте двойные кавычки, если роль содержит пробелы.\\n Если пользователь не указан, по умолчанию используется автор команды.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:217
|
||||
#, docstring
|
||||
@@ -90,7 +90,7 @@ msgstr "Изменение параметров роли."
|
||||
#: 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 Изменить цвет роли.\\n\\n Используйте двойные кавычки, если роль содержит пробелы.\\n Цвет должен быть в шестнадцатеричном формате.\\n [Онлайн-палитра цветов](http://www.w3schools.com/colors/colors_picker.asp)\\n\\n Примеры:\\n `[p]editrole colour \\\"The Transistor\\\" #ff0000`\\n `[p]editrole colour Test #ff9900`\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:253 redbot/cogs/admin/admin.py:286
|
||||
msgid "Done."
|
||||
@@ -99,7 +99,7 @@ msgstr "Готово."
|
||||
#: 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 Изменить название роли.\\n\\n Используйте двойные кавычки, если роль или имя содержат пробелы.\\n\\n Примеры:\\n `[p]editrole name \\\"The Transistor\\\" Test`\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:291
|
||||
#, docstring
|
||||
@@ -117,7 +117,7 @@ msgstr "Отменить текущее объявление."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:307
|
||||
msgid "There is no currently running announcement."
|
||||
msgstr ""
|
||||
msgstr "В данный момент нет запущенных объявлений."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:310
|
||||
msgid "The current announcement has been cancelled."
|
||||
@@ -126,12 +126,12 @@ msgstr "Текущее объявление было отменено."
|
||||
#: redbot/cogs/admin/admin.py:316
|
||||
#, docstring
|
||||
msgid "Change how announcements are sent in this guild."
|
||||
msgstr ""
|
||||
msgstr "Изменить способ отправки объявлений на этом сервере."
|
||||
|
||||
#: 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 Изменить канал, в котором бот будет отправлять объявления.\\n \\n Если канал не указан, по умолчанию используется текущий канал.\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:330
|
||||
msgid "The announcement channel has been set to {channel.mention}"
|
||||
@@ -153,17 +153,17 @@ msgstr "Сервер {guild.name} не будет получать объявл
|
||||
#: redbot/cogs/admin/admin.py:370
|
||||
#, docstring
|
||||
msgid "Apply selfroles."
|
||||
msgstr ""
|
||||
msgstr "Применить свои роли."
|
||||
|
||||
#: 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 Добавить собственную роль себе.\\n\\n Администраторы сервера должны настроить роль как устанавливаемую пользователем.\\n ПРИМЕЧАНИЕ: Роль чувствительна к регистру!\\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 Удалить собственную роль у себя.\\n\\n Администраторы сервера должны настроить роль как устанавливаемую пользователем.\\n ПРИМЕЧАНИЕ: Роль чувствительна к регистру!\\n "
|
||||
|
||||
#: redbot/cogs/admin/admin.py:397
|
||||
#, docstring
|
||||
@@ -172,42 +172,42 @@ msgstr "\\n Список всех доступных Собственны
|
||||
|
||||
#: redbot/cogs/admin/admin.py:407
|
||||
msgid "Available Selfroles:\\n{selfroles}"
|
||||
msgstr "Доступные Собственные роли:\\n{selfroles}"
|
||||
msgstr "Доступные собственные роли:\\n{selfroles}"
|
||||
|
||||
#: redbot/cogs/admin/admin.py:413
|
||||
#, docstring
|
||||
msgid "Manage selfroles."
|
||||
msgstr ""
|
||||
msgstr "Управление своими ролями."
|
||||
|
||||
#: 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 Добавить роль в список доступных своих ролей.\\n\\n ПРИМЕЧАНИЕ: Роль чувствительна к регистру!\\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} в качестве собственной роли, потому что эта роль выше или равна вашей самой высшей роли в иерархии Discord."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:433
|
||||
msgid "Added."
|
||||
msgstr ""
|
||||
msgstr "Добавлено."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:436
|
||||
msgid "That role is already a selfrole."
|
||||
msgstr ""
|
||||
msgstr "У вас уже имеется эта роль."
|
||||
|
||||
#: 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 Удалить роль из списка доступных собственных ролей.\\n\\n ПРИМЕЧАНИЕ: Роль чувствительна к регистру!\\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}, потому что эта роль выше или равна вашей самой высокой роли в иерархии Discord."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:455
|
||||
msgid "Removed."
|
||||
msgstr ""
|
||||
msgstr "Удалено."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:460
|
||||
#, docstring
|
||||
@@ -224,17 +224,17 @@ msgstr "Бот теперь зафиксирован на сервере."
|
||||
|
||||
#: redbot/cogs/admin/announcer.py:75
|
||||
msgid "I could not announce to the following server: "
|
||||
msgstr ""
|
||||
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 "Модуль 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,85 +21,85 @@ 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 Discord hiyerarşisinde rolüme eşit veya daha yüksek."
|
||||
|
||||
#: 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 Discord hiyerarşisinde rolüme eşit veya daha yüksek."
|
||||
|
||||
#: 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 Discord hiyerarşisinde rolüme eşit veya daha yüksek."
|
||||
|
||||
#: 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ü verilemedi çünkü bu rol discord hiyerarşisinde 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."
|
||||
msgstr "Zaten şuan da bir duyuru yapmaktayım. Başka bir duyuru yapmak istiyorsanız lütfen bu komutu kullanın: `{prefix}announce cancel`."
|
||||
msgstr "Zaten şu anda bir duyuru yapmaktayım. Başka bir duyuru yapmak istiyorsanız lütfen bu komutu kullanın: `{prefix}announce cancel`."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:70
|
||||
#, 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
|
||||
@@ -113,25 +113,25 @@ msgstr "Duyuru başladı."
|
||||
#: redbot/cogs/admin/admin.py:305
|
||||
#, docstring
|
||||
msgid "Cancel a running announce."
|
||||
msgstr "Şuan yapılan duyuruyu iptal eder."
|
||||
msgstr "Şu an yapılan duyuruyu iptal eder."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:307
|
||||
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."
|
||||
msgstr "Şuan yapılan duyuru iptal edildi."
|
||||
msgstr "Şu an 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,97 +144,97 @@ 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
|
||||
msgid "Lock a bot to its current servers only."
|
||||
msgstr "Botu şuan bulunduğu sunucularda kilitler."
|
||||
msgstr "Botu şu an bulunduğu sunucularda kilitler."
|
||||
|
||||
#: redbot/cogs/admin/admin.py:465
|
||||
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
|
||||
@@ -279,13 +172,20 @@ 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
|
||||
|
||||
# At this point we know we need to make a new alias
|
||||
# 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))
|
||||
|
||||
@@ -309,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
|
||||
@@ -331,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))
|
||||
|
||||
@@ -345,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
|
||||
@@ -381,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)
|
||||
)
|
||||
@@ -399,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)
|
||||
)
|
||||
@@ -415,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-02-20 12:09+0000\n"
|
||||
"PO-Revision-Date: 2020-02-20 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,139 +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:293
|
||||
#: 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:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:299
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:304
|
||||
#: 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:315
|
||||
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:326
|
||||
#: 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:342
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:350
|
||||
#: 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:362
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:367
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:372
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:377
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:383
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:388 redbot/cogs/alias/alias.py:424
|
||||
#: redbot/cogs/alias/alias.py:435
|
||||
#: 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:393 redbot/cogs/alias/alias.py:411
|
||||
#: 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:396 redbot/cogs/alias/alias.py:414
|
||||
#: 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:401
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:406
|
||||
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:419
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:420 redbot/cogs/alias/alias.py:431
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:430
|
||||
#: 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-02-20 12:09+0000\n"
|
||||
"PO-Revision-Date: 2020-02-20 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,139 +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:293
|
||||
#: 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:193
|
||||
msgid "A new alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:299
|
||||
#: redbot/cogs/alias/alias.py:199
|
||||
#, docstring
|
||||
msgid "Add a global alias for a command."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:304
|
||||
#: 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:315
|
||||
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:326
|
||||
#: 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:342
|
||||
#: redbot/cogs/alias/alias.py:249
|
||||
msgid "A new global alias with the trigger `{name}` has been created."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:350
|
||||
#: 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:362
|
||||
#: redbot/cogs/alias/alias.py:261
|
||||
msgid "No such alias exists."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:367
|
||||
#: redbot/cogs/alias/alias.py:265
|
||||
#, docstring
|
||||
msgid "Show what command the alias executes."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:372
|
||||
#: redbot/cogs/alias/alias.py:270
|
||||
msgid "The `{alias_name}` alias will execute the command `{command}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:377
|
||||
#: redbot/cogs/alias/alias.py:275
|
||||
msgid "There is no alias with the name `{name}`"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:383
|
||||
#: redbot/cogs/alias/alias.py:281
|
||||
#, docstring
|
||||
msgid "Delete an existing alias on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:388 redbot/cogs/alias/alias.py:424
|
||||
#: redbot/cogs/alias/alias.py:435
|
||||
#: 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:393 redbot/cogs/alias/alias.py:411
|
||||
#: 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:396 redbot/cogs/alias/alias.py:414
|
||||
#: 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:401
|
||||
#: redbot/cogs/alias/alias.py:296
|
||||
#, docstring
|
||||
msgid "Delete an existing global alias."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:406
|
||||
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:419
|
||||
#: redbot/cogs/alias/alias.py:312
|
||||
#, docstring
|
||||
msgid "List the available aliases on this server."
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:420 redbot/cogs/alias/alias.py:431
|
||||
msgid "Aliases:"
|
||||
msgstr ""
|
||||
|
||||
#: redbot/cogs/alias/alias.py:430
|
||||
#: 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 ""
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user