Compare commits

..

275 Commits

Author SHA1 Message Date
jack1142
734ab49f6a Version bump 2020-08-18 01:08:48 +02:00
jack1142
204d82db8f Red 3.3.12 - Changelog (#4194) 2020-08-18 01:01:53 +02:00
zephyrkul
77a5b4c742 [Filter] Add missing parentheses (#4185) 2020-08-17 23:40:41 +02:00
Douglas
7707fec199 Don't send message about DMing ACL when command's called from DM (#4188)
* Only send a message telling the user the file will be send via DM if the original message didn't come from a DM

* Remove unused import for AsyncIter

* Changed channel instance comparison to discord.DMChannel

Co-authored-by: douglas-cpp <douglasc.dev@gmail.com>
2020-08-17 23:40:41 +02:00
PredaaA
4ef51a165f [Audio] Send an more user friendly message at "Track Stuck" errors (#4061)
Co-authored-by: Draper <27962761+Drapersniper@users.noreply.github.com>
2020-08-17 23:40:40 +02:00
Dav
574dabbeac [Reports] Give friendly error if no report channel set (#4136) 2020-08-17 23:40:40 +02:00
Dav
e463c307ea [Core] Typo fix (#4035) 2020-08-17 23:40:40 +02:00
Jamie
b8e56f3632 [Streams] Attempt to fix unclear error in youtubestream (#4148) 2020-08-17 23:40:40 +02:00
MeatyChunks
dc3fe1f8f8 Fix amount of messages in log message of [p]cleanup message (#4156)
Fixes #4155
2020-08-17 23:40:39 +02:00
Kowlin
1dda0f95de [Streams] Allow for consume all on messages (#4183)
* Added consume all to streams.

* Updated help doc

* Styling checks, man...
2020-08-17 23:40:39 +02:00
Predeactor
5e5687d0bb Propose more info on simple serverinfo (#4121)
* Propose more info on simple serverinfo

* Fixed black + serverinfo

* Fix black (Sorry)

* Merge jack's suggestions

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

* Change separator

👍

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

* Black

* Update general.py

Co-authored-by: Ubuntu <ubuntu@vps-35e65bf5.vps.ovh.net>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-08-17 23:40:39 +02:00
Jyu Viole Grace
e0ad67aa3d [Trivia] whosthatpokemon2 trivia - Generation 2 Pokémons (#4102)
* Generation 2 Pokemons for whosthatpokemon trivia

* replace "pokemon" with "Pokémon"
2020-08-17 23:40:39 +02:00
Jyu Viole Grace
c3eb4abd7a use "Pokémon" instead of "pokemon" 2020-08-17 23:40:38 +02:00
jack1142
d97760997e Give friendlier error when package can't be found during bot startup (#4079) 2020-08-17 23:40:38 +02:00
Vexed
81193d17c7 [Mod] [p]mute|unmute voice now take action instantly (#4064)
* make mute and unmute have the same fail string

* now add the jucy bits

* hmm no

This reverts commit a445bd8415.

* Apply suggestions from code review

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

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-08-17 23:40:38 +02:00
Dav
cf78ea06e2 [Mute] Indicate that a guild mute/unmute is currently being processed. (#4172)
Co-authored-by: fixator10
2020-08-17 23:40:38 +02:00
PredaaA
26122e56a0 [General] Change PUBLIC feature to COMMUNITY in serverinfo (#4116) 2020-08-17 23:40:37 +02:00
Flame442
d8d3e9fceb [Trivia] Remove an unnecessary .format (#4175) 2020-08-10 01:17:44 +02:00
jack1142
b3281385e9 3.3.11 changelog (#4173)
* 3.3.11 changelog

* Update docs/changelog_3_3_0.rst

Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>

* Update docs/changelog_3_3_0.rst

Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>

* Update docs/changelog_3_3_0.rst

Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>

* Update docs/changelog_3_3_0.rst

Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>

Co-authored-by: Flame442 <34169552+Flame442@users.noreply.github.com>
2020-08-10 01:17:37 +02:00
jack1142
e6947bdbf6 Bump to 3.3.11 2020-08-10 01:10:35 +02:00
Douglas
a6d924221d [Trivia] Fix unresolved reference to bank.BalanceTooHigh (#4170)
Co-authored-by: douglas-cpp <douglasc.dev@gmail.com>
2020-08-10 00:50:22 +02:00
Vexed
cf7db1e891 Docs improvements after watching two self-proclaimed incompetent people install it (#4119)
* the thing

* right

* hmm

* review
2020-08-10 00:50:03 +02:00
jack1142
bc544d476b Fix the errors related to installed module having invalid commit data (#4086) 2020-08-10 00:49:17 +02:00
MeatyChunks
10976f218b [Economy] Prevent forbidden error when blocked by user (#4120)
Stop `[p]payouts` throwing a console error if the user has blocked the bot. Probably too spammy to put the payout message in chat.
2020-08-10 00:48:34 +02:00
jack1142
a589838a41 Only accept positive integers in [p]cleanup commands (#4115) 2020-08-10 00:48:26 +02:00
Ryan
e36d1f143d [CustomCom] Add missing await (#4108) 2020-08-10 00:47:36 +02:00
jack1142
9a6f78e62e Update chocolatey install commands per chocolatey.org (#4098) 2020-08-10 00:47:28 +02:00
Draper
649db87a8a [Audio] Ensure TrackEnqueueError is always handled (#3879)
Signed-off-by: Drapersniper <27962761+drapersniper@users.noreply.github.com>
2020-08-10 00:43:20 +02:00
jack1142
c6f9a78d57 Update pyenv instructions to install Python 3.8.5 (#4094) 2020-08-10 00:35:30 +02:00
jack1142
bd89e4386d Fix no message when unregistered reason is used in [p]warn (#3840) 2020-08-10 00:34:26 +02:00
jack1142
a962f94a58 Ignore that the rule for model doesn't exist when trying to remove it (#4036) 2020-08-10 00:34:10 +02:00
jack1142
3471011f85 Fix the error for empty author list in [p]findcog (#4042) 2020-08-10 00:34:01 +02:00
Draper
186dbe6118 Lavalink.jar bump for internal manager (#4168) 2020-08-10 00:27:45 +02:00
Kowlin
a59ff57c27 Dev bump for 3.3.11 (#4056) 2020-07-09 08:55:40 +02:00
Kowlin
0cd3bede0d 3.3.10 release bump. (#4054) 2020-07-09 08:45:17 +02:00
Neuro Assassin
637fa37fad Red 3.3.10 - Changelog (#3967)
* Add 3.3.10 or 3.4.0 section

* PR 3981

* PR 3951

* PR 3975

* PR 3974

* PR 3964

* PR 3884

* Various things

* PR 3972

* PR 3970

* Add contributor

* PR 3980

* Add Draper as contributor

* PR 3973

* PR 3965

* PR 3987

* PR 3901

* PR 3906

* PR 3958

* PR 3895

* PR 3920

* PR 3915

* oops

* I don't like info

* PR 3969

* PR 3990

* PR 3911

* PR 3921

* PR 3938

* PR 3608

* Update entries about PR 3608

* PR 4012

* PR 4030

* PR 4026

* PR 4039

* PR 3994

* PR 3991

* PR 4023

* Actually fix conflicts

* A lot of PRs.

* And stamp a date on top of it.

* Fun fact, we format it with YYYY-MM-DD...

* Forgot Sinbad, 👀 Sorry

* Update changelog_3_3_0.rst

Co-authored-by: Neuro Assassin <wrbrown70@yahoo.com>
Co-authored-by: Kowlin <Kowlin@users.noreply.github.com>
2020-07-09 08:41:56 +02:00
aikaterna
07dcf38291 Update Lavalink.jar version (#4055) 2020-07-09 08:28:00 +02:00
Lui
ff1f7362ee Bump d.py dependency (#4053) 2020-07-09 07:38:49 +02:00
Draper
d30e83b5fc Reduce config calls when changing white/blacklist and use sets for their cache (#3910)
* optimise use of config ctx manager to reduce calls to config

* fine you potato

* since jack said yes i'll abuse it

* Apply suggestions from code review

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

* difference_update and update

* Apply suggestions from code review

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

* Update redbot/core/settings_caches.py

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

* one last tweak

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-07-08 19:25:14 +02:00
Dav
14349d0649 Make strings in help command *truly* translatable (#4044)
* make help.py translatable

* jack's not-review 1

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

* pylint is going crazy her, not sure what I'm missing

* Jack's now-this-is-actually-a-review 1

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

* Jack's review 2

* Let's not bother Dav with one missing backtick

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-07-08 15:11:04 +02:00
Dav
49b19450fd [Mod] Make tempbans permanent when using [p]hackban (#4025)
* Remove users from tempban unban list when hackbanning them

* black and missing bracket

* make sure this actually gets processed

* let the user know when a tempban was upgraded

* say more things

* reduce config calls

* jack loves performance

* adress review

* review the 2nd
2020-07-08 01:15:42 +02:00
Dav
5b612b8ac7 [Docs] Update framework_i18n.rst (#4018)
* Update framework_i18n.rst

* Update framework_i18n.rst

* -h flag note

* Add hyphen

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-07-08 00:53:03 +02:00
Draper
e0b922c949 Make localwhitelist check if caller will still be able to use bot after changes (#3903)
* Check invokers theoretical perms in localwhitelist add before completing command

* remove unnecessary code

* add check to remove

* ignore bot owner and server owner

* Update core_commands.py

* lets not crash shit
2020-07-07 20:08:06 +02:00
Michael H
60df447550 Add settings view commands (#4041)
Any group which sent help + settings views has had the settings view
  split into a seperate command. This ensures that custom help behavior
  does not interfere with settings views.
2020-07-07 00:53:41 +02:00
Vexed
2cf7a1f80d [Core] Docstring full stops and a few other grammar fixes (#4023)
* core full stops/other grammar fixes

* need to read better (i'm keeping it on two lines)

* apply review

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

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-07-06 20:21:45 +02:00
jack1142
4dd0fb97fe Stop putting text about invite when invite isn't sent in tempban message (#3991) 2020-07-06 18:57:16 +01:00
Vexed
12bce6a560 [Image] Update instructions for setting the GIPHY API (#3994)
* update wording for giphy api

* of cource master draper
#3938 - make the command untranslateable

* i18n <your_api_key_here>

* commas to parens as discused in discord
2020-07-06 19:11:04 +02:00
Michael H
d869410d36 Add .gitattributes to ensure project consistent line endings (#4037)
- Renormalized as well
2020-07-06 18:53:10 +02:00
Draper
31bb43ca38 Vendor discord.ext.menus (#4039)
Vendor `discord.ext.menus` from commit `cc108bed812d0e481a628ca573c2eeeca9226b42` at https://github.com/Rapptz/discord-ext-menus

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-07-06 17:37:52 +02:00
jack1142
07e480ff7a Stop using git ls-files *.py for style check (#4040) 2020-07-06 14:45:46 +01:00
MiniJennJenn
c251804162 Trivia Update (#4026)
Co-authored-by: hatred2k <hatred2k@gmail.com>
2020-07-06 09:29:56 +01:00
github-actions[bot]
ff72e415aa Automated Crowdin downstream (#4033)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-07-02 19:04:35 +02:00
aikaterna
7d30e3de14 [Utils] Fix regex for role mentions in MessagePredicate (#4030) 2020-07-01 03:29:16 +02:00
bobloy
8b529f488b Add 'discord.com/invite' to docs of filter_invites() function (#4027) 2020-06-30 14:49:45 +02:00
github-actions[bot]
b5930155df Automated Crowdin downstream (#4016)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-06-25 17:20:12 +02:00
bobloy
632840384b Add discord.com to supported domains in INVITE_URL_RE (#4012)
* Support for discord.com

* Modified to support discord.com requiring `/invite`

* Non-capturing
2020-06-24 20:06:11 +02:00
jack1142
a96e814af4 Add project_urls and improve our use of classifiers (#4006) 2020-06-22 21:18:53 +02:00
jack1142
b49b53934d Update deprecation warnings (#3608)
* Make deprecation notice specify minor release based on soonest date

* Stop specifying a specific release in shared libs deprecation notice

* Add actual deprecation warning for `APIToken` (OMG, this is so cool)

* Add dates (2020-08-05 for all)

* address review

* improve consistency

* Add __dir__ and show APIToken in docs (or maybe I want to annoy Flame)

* fix module name when importing non-existent name from parent package

* Fix stack level used by depr warn in `redbot.core.commands`
2020-06-22 03:25:33 +02:00
Dav
df410529b0 [i18n/Streams] Change strings mentioning commands to use {command} variable (#3938)
* hopefully all strings in streams.py

* black streams.py

* don't touch docstrings

* uniformity is good

* thx draper

Co-authored-by: Draper <27962761+Drapersniper@users.noreply.github.com>

* aaaaaaaaaaaaaaaaaaaaaa

* translate more

* sure, joining some strings for jack

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

* more strings to join

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

* yup... I missed this

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

* jaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaack blaaaaaaaaaaaaaaaaaaaaaack

Co-authored-by: Draper <27962761+Drapersniper@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-06-21 20:38:31 +02:00
Draper
477186d09d Add map(), find() and next() methods to AsyncIter (#3921)
* properly handle prefixes

* Docsss and typehinting

* aaaaaaaaaaa

* Apply suggestions from code review

* ffs

* docs

* docs

* Apply suggestions from code review

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

* skip await if map is none

* implement `.next()`

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-06-21 19:47:48 +02:00
Draper
81f146a2ef [Mod] Only send the DM about migration if at least 1 scope entry has a non-default value (#3911)
* Only send notify_owners in mod migration if at least 1 scope entry has a non default value

* update string

* use asynciter on these potentially large loops

* check server settings too
2020-06-21 19:45:35 +02:00
Jamie
84d0282815 [Streams] Invalidate old bearer token when api key is updated. (#3990) 2020-06-21 18:44:38 +01:00
Vexed
d2de3c109a [Downloader] Differentiate core and local cogs in [p]findcog (#3969) 2020-06-21 17:59:52 +01:00
Draper
aad36c7430 Expose info about internally managed jar in [p]audioset info (#3915)
* since i have no clue when RW will be release ... lets add this as it helps out a lot

* update branch name regex

* recheck version after download since now we are showing it.
2020-06-20 01:07:39 +02:00
Vexed
4c62c67fd4 [redbot.setup] Ask for confirmation when passed instance name contains hyphens + allow to use dots (#3920)
* Change regex and the error message

* few changes see ^^^ GH comment

if it doesn't pass the RegEx `[a-zA-Z0-9_\.]*` then:
- if on Linux and contains a "-" anywhere, not allowed
- if it contains a space or starts with a "-", not allowed
- if the top two don't trigger, then `confirm()` with the user.

* black why

* 3.3.9

* fk

* ty aika

* review :aha:

* oopsie

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

* this is just vexed tries and jack fixes

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

* quite sad really

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

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-06-19 16:16:22 +02:00
Flame442
144b7b36d0 [Mod] Consistency periods & proper logging (#3895)
* Consistency periods & proper logging

* woooo jack

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

* Update kickban.py

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-06-19 12:58:40 +02:00
Dav
802641ce6b Use timedelta converter for ban duration and add option to pass delete days to [p]tempban (#3958)
* add duration atribute

* sanity checks

* add days parameter

* maybe resolve conflicts?

* black and make linting happy

* right... I need to send this

* but I still need to return... oops
2020-06-19 01:51:06 +02:00
Vexed
2d63e3d6aa Print getting started guide on startup when bot is in no guilds (#3906)
* Link getting started guide

* 3.3.9

* fk
2020-06-19 01:13:01 +02:00
Vexed
728252ac87 Fix capitalisation in cog creation docs (dev version note) (#3968) 2020-06-19 01:05:48 +02:00
Draper
79d042ad29 [Streams] Only send message about missing client secret once (#3901)
* Send Notify owner messages only when a key has been invalidated since last notify_owner

* grammar

* welp im dumb

* Black and lower config call frequency

* Update redbot/cogs/streams/streams.py

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

* dont use a generic name now to avoid a config migration later

* be even more explicit with var name

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-06-18 23:39:52 +02:00
Neuro Assassin
dd4095b15b [Permissions] Fix integer commands and empty dict rules (#3987) 2020-06-18 21:44:47 +01:00
Vexed
1cf8308d03 [Downloader] Embed version of findcog (#3965) 2020-06-18 21:37:46 +01:00
Jamie
4e890814ff [Filter] Add listing commands (#3973) 2020-06-18 21:23:16 +01:00
Draper
175fbebd73 Move logic for fetching latest Red version info to internal util (#3904)
* Only Send out of date message to Final builds available on PyPi

* Only Send out of date message to Final builds available on PyPi

* sorted the resulting list so that the newest build is first in the list

* forgot about this one

* well jack is a bitch but we love him.

* simplify logic

* Add the new function to `__all__`

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-06-18 22:21:59 +02:00
Jyu Viole Grace
879d21c528 [Trivia] addition of Lord of the Rings trivia (#3980) 2020-06-18 17:32:15 +01:00
Jyu Viole Grace
c7202b353d [Trivia] Minor correction in greekmyth trivia (#3970)
* [Trivia] Minor correction in greekmyth trivia

In greekmyth trivia, there is a question: `Who is the God of Medicine and the son of Apollo?` and the only answer written in the yaml file is `Asclepius` , however `Aesculapius` or `Hepius` can also be considered as a right answer. 

Source: https://en.wikipedia.org/wiki/Asclepius

* Lord of The Rings trivia

* Added AUTHOR key

* Revert "Added AUTHOR key"

This reverts commit d60e336771.

* Revert "Lord of The Rings trivia"

This reverts commit d7365e87b9.

Co-authored-by: Jyu Viole Grace <thisisjvgrace@users.noreply.github.com>
2020-06-18 17:05:12 +02:00
Vexed
3a0574eae8 [Core] Change [p]embedset user docstring and message to explicitly say DMs only (#3972)
* change docstring and message to explicitly say DMs

* didn't think i'd need to run black...

* wrong branch...

This reverts commit aa6aa5cf4b.

* wait its the right branch

* review - seperate enabled & disabled strings

* review

Co-authored-by: Draper <27962761+Drapersniper@users.noreply.github.com>

Co-authored-by: Draper <27962761+Drapersniper@users.noreply.github.com>
2020-06-18 16:00:08 +02:00
jack1142
70c733e146 Use a task instead of awaiting for delete delay (#3884) 2020-06-18 15:50:42 +02:00
jack1142
a64c28aa44 Fix unnecessary typing before running commands in Downloader (#3964) 2020-06-18 15:47:12 +02:00
aikaterna
35365a7154 [Downloader] Add command to list pinned cogs (#3974) 2020-06-18 15:43:59 +02:00
aikaterna
9594284f6c [Trivia] Fix whosthatpokemon urls (#3975) 2020-06-18 14:42:01 +02:00
github-actions[bot]
0358473af5 Automated Crowdin downstream (#3984)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-06-18 14:33:59 +02:00
jack1142
8d553a3fc6 Improve command error responses (#3951)
* Update settings.py

* Update modlog.py
2020-06-18 13:46:20 +02:00
Vexed
373dcded2c add the space (#3981) 2020-06-17 15:00:49 +02:00
jack1142
e59d52bae4 Dev bump (#3960) 2020-06-12 01:50:37 +02:00
jack1142
fa00314b77 Bump to 3.3.9 (#3959) 2020-06-12 01:24:06 +02:00
jack1142
7aad3ae3b5 Red 3.3.9 - Changelog (#3876)
* Add 3.3.9 or 3.4.0 section

* PR 3889

* PR 3890

* PR 3891

* PR 3781

* PR 3900

* PR 3899

* PR 3916

* PR 3892

* PR 3941 (issue 3940)

* PR 3907 (issue 3102)

* PR 3878 (issue 3877)

* PR 3880

* PR 3925

* PR 3923

* PR 3942

* PR 3935

* PR 3946

* PR 3954

* PR 3955 (issue 3107)

* Add "Read before updating" section

* PR 3957

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

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

  resolves #3107

* minor nitpicking over ordering consistency

* a single new line for style compliance

* Fix a typo + alphabet went wrong

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

* sanity checks

* obviously that didn't work...

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

* Address review

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

* few changes

* hmm

* cant make my mind up how to word it

* fk i forgot "and"

this is the last one, i promise

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

* oh, see ^^^ review

* `click on` instead of `select`

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

* Lets show active storage on start up message

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

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

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

* Address review

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

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

* Finish implementation

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

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

* add class docstring to reports

* add class docstring to streams

* black formatting

oops lets not forget what tox checks for

* wording changes

* add cog board link

* hmm actually no (undo)

* wait grammar exists? who knew...

* remove admin only commands

* Review

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

* alias help and show

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

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

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

* the Kowlin way of life

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

* more performance magic

* found an error + black

* forgot warning channel existed

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

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

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

* Address requested changes

* Apply suggestions from code review

* One more

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

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

* Add 3.3.8 or 3.4.0 section

* PR 3815 (issue 3814)

* PR 3822

* PR 3817, 3823, 3837

* PR 3816

* PR 3819

* PR 3829 (issue 3796)

* PR 3844 (issue 3834)

* PR 3851

* PR 3855 (issue 3854)

* PR 3857

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

* PR 3861

* PR 3862

* PR 3744

* PR 3873

* PR 3847

* PR 3856

* PR 3867

* PR 3843

* PR 3826 (issue 3825)

* PR 3864

* PR 3849

* PR 3793

* PR 3805 (issue 3778)

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

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

* That actually makes sense...

* Aaand those should probably be turned off as well

* jack and draper.... oi

* Update docs/update_red.rst

* Update docs/update_red.rst

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

* God, this is stupid

* Add logging of unexpected exceptions

* Add more specific info for Forbidden error

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

* you idiot

* Me likey Danny's way

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

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

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

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

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

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

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

* Bump RLL to 0.5.1

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

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

* welp lets simplify this

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

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

* Use Java 11 for Arch Linux

* Update getting started guide to recommend Ubuntu 20.04 over 18

* Use Java 11 for Fedora Linux

* Use Java 11 for openSUSE Tumbleweed

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

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

* use headless jre everywhere

* add non interactive flag to zypper calls

* Add emphasis on info about pyenv's warning

* reverse order of Ubuntu LTS versions

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

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

* update pyenv instructions to use Python 3.8.3

* Install git after installing everything else in CentOS 7 instructions

* use zypper flags properly

* improve the sentence a little

* I like consistency

* add missing `sudo`s in CentOS instructions

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

* Install gcc 8 from SCL in CentOS 7

* use git222 instead of git2u on CentOS 7

* Add missing `source ~/.bashrc` line

* use git224 instead of git222 on CentOS 7

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

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

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

* ...

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

* a bit more clarity

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

* sure thing Jack

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

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

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

* add translation support

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

* better translation support for these

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

* Update redbot/core/events.py

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

* Apply suggestions from code review

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

* review

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

* Revert black fuckery

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

* aaaaaaaaaaaaaaaaaaaaaaaaaaa

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

* address jacks review

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

* black

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

* Apply suggestions from code review

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

* Update redbot/core/events.py

* Update redbot/core/events.py

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

* Apply suggestions from code review

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

* Update redbot/core/utils/_internal_utils.py

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

* Apply suggestions from code review

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

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

* How do I typo things sometimes...

* Update .github/ISSUE_TEMPLATE/config.yml

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

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

Also adds some new tests regarding partial primary keys.

Resolves #3796.

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

* PR 3746

* commit b8ac70e

* PR 3747

* PR 3759 (issue 3758)

* PR 3764

* PR 3766

* PR 3767

* PR 3776

* PR 3757

* PR 3773 (issue 3772)

* PR 3740

* PR 3774

* PR 3784 (issue 3778)

* PR 3782

* PR 3783

* PR 3783

* PR 3718

* PR 3742

* PR 3791

* PR 3792

* PR 3794

* PR 3780

* PR 3790

* PR 3795

* PR 3714 (issue 3115)

* PR 3788

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

* Add 3.0.2 or older instructions

* rephrase

* emphasis

* another rephrase

* Add 3.2.0+ instructions for Linux & Mac

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

* Update redbot/core/bot.py

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

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

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

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

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

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

* moar docs

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

* moar docs

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

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

* Make whitespace in docstrings consistent

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

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

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

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

* ....

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

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

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

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

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

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

* missed this one

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

* nothing to see here

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

* lets reduce config calls here

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

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

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

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

* missed this one

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

* welp

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

* welp

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

* welp

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

* jack

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

* Update redbot/cogs/mod/kickban.py

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

* Update redbot/cogs/filter/filter.py

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

* jack

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

* make all large loops async to avoid blocking larger bots

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

* ...

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

* okay now working AsyncGen

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

* may or may not have forgotten black

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

* Apply suggestions from code review

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

* jack's review

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

* DOCS

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

* DOCS

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

* Apply suggestions from code review

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

* jack

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

* Apply suggestions from code review

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

* Update redbot/core/utils/__init__.py

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

* Update redbot/core/utils/__init__.py

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

* avoid loop if possible and if not only iterate once

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

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

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

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

* missed this one

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

* welp

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

* welp

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

* welp

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

* jack

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

* Update redbot/cogs/mod/kickban.py

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

* jack

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

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

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

* ....

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

* nothing to see here

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

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

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

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

* Fix the thing I was actually annoyed about.

* Updated error texts

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

* Update settings_caches.py

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

* PR 3730

* PR 3734

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

* Meh

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

Who designed this shit?!

* Update __init__.py
2020-04-05 04:10:32 +02:00
Kowlin
b9331ffa55 Update __init__.py (#3725) 2020-04-05 04:05:53 +02:00
jack1142
2b0935c4aa Red 3.3.4 - Changelog (#3706)
* Add 3.3.4 section

* PR 3710 (issue 3545)

* PR 3708

* PR 3717

* PR 3723

* PR 3707

* Add release date, remove unused section
2020-04-05 03:58:39 +02:00
Kowlin
9d7047864e Version bump (#3724) 2020-04-05 03:57:50 +02:00
jack1142
20d507dbef Fix bank check (used in Bank, Economy and Trivia cogs) 2020-04-05 03:49:02 +02:00
jack1142
be7d1d2cd2 Bump deps (includes d.py bump) (#3723) 2020-04-05 03:34:53 +02:00
github-actions[bot]
587968710f Automated Crowdin downstream (#3719)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-04-04 06:28:55 +02:00
jack1142
a0b30bb3ae Fix Flame's irk with code blocks in windows install guide (#3722)
* Update install_windows.rst

* God, I'm an idiot
2020-04-04 03:08:39 +02:00
kennnyshiwa
60e954634d Include domains added in #3717 in filter_invites's docstring (#3721) 2020-04-02 20:17:46 +02:00
kennnyshiwa
ffecf1ed15 Fix redbot.core.utils.common_filters.INVITE_URL_RE regex (#3717)
* Fix invite_url_re

Found that the regex used previously could falsely catch strings such as discord member and discord gggggg which aren't invites and shouldn't be caught, testing with this regex string still catches all invite url variations while allowing these other previously caught strings to keep working

* Update redbot/core/utils/common_filters.py

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

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-04-02 09:11:12 +02:00
jack1142
b7a142c21e Include versions for pre-requirements in Windows install guide (#3708)
* Update install_windows.rst

* Update install_linux_mac.rst
2020-03-30 10:00:01 +02:00
jack1142
5716cebb0f Send error in [p]alias add when target command doesn't exist (#3710) 2020-03-30 06:48:51 +02:00
jack1142
ff68538085 Bump version to 3.3.4.dev1 (#3705) 2020-03-29 00:02:01 +01:00
Kowlin
7c251b8017 Bump version to 3.3.3 (#3703)
* Bump version to 3.3.3

* Update manager.py
2020-03-28 23:51:09 +01:00
jack1142
bf5917177a Red 3.3.3 - Changelog (#3660)
* Add 3.3.3 section

* PR 3630 (issue 3628)

* PR 3589 (issue 3145)

* PR 3631

* PR 3627

* PR 3504 (issue 3465)

* PR 3632 (issue 3626)

* PR 2929 (issue 2800)

* PR 3646 (issue 3590)

* PR 2382

* PR 3659

* PR 3653 (issue 3633)

* PR 3668 (issue 3583)

* PR 3663

* PR 3666 (issue 3584)

* PR 3656

* PR 3644

* PR 3420 (issue 3307)

* PR 3643 (issue 3642)

* PR 3638 (issue 3636)

* PR 3665 (issue 2988)

* PR 3667 (issue 3044)

* PR 3689 (issue 3685)

* PR 3688

* PR 3675 (issue 3436)

* PR 3695 (issue 2826)

* PR 3027

* PR 3637 (issue 3639)

* PR 3674 (issue 3443)

* PR 3690

* PR 3673 (issue 3507)

* PR 3652 (issue 3645)

* PR 2573

* PR 3657

* PR 3678 (issue 3448)

* PR 3684

* PR 3700

* PR 3669

* PR 3649 (issue 3648)

* PR 3676 (issue 3596)

* PR 3677 (issue 3588)

* PR 3672 (issue 3233)

* PR 3704

* Add release date
2020-03-28 23:50:50 +01:00
jack1142
dacfb931bb remove dis (#3704) 2020-03-28 23:45:37 +01:00
jack1142
97d77f5c51 Make checks in Bank, Economy and Trivia cogs Permissions-friendly (#3672)
* Create converters.py

* Update trivia.py

* Create checks.py

* Update checks.py

* Update checks.py

* Update trivia.py

* Update checks.py

* Update checks.py

* Update trivia.py

* Update bank.py

* Update economy.py

* Update trivia.py

* Update checks.py

* Update checks.py

* Update __init__.py
2020-03-28 23:24:12 +01:00
jack1142
fce8186759 Add [p]set regionalformat command to set regional formatting (#3677)
* Add `[p]set region` command to set regional formatting

* Add Babel to intersphinx

* rename 'region' to 'regional format`
2020-03-28 23:23:02 +01:00
jack1142
d35f6abca0 Use Babel in [p]set locale to allow any valid locale (#3676)
* Use Babel in `[p]set locale` to allow any valid locale

* Remove `[p]listlocales` and link to Crowdin in `[p]set locale`

* import babel.Locale as BabelLocale to avoid confousion
2020-03-28 23:11:25 +01:00
jack1142
cf31c22e5d Revert "Add changelog label to merged PRs (#3664)" (#3702)
This reverts commit 3d7ff7a149.
2020-03-28 23:06:41 +01:00
jack1142
3f7c2e8842 Update dev_commands.py (#3649) 2020-03-28 23:05:50 +01:00
PredaaA
ecdcc27749 Fix count of streaming members and a typo in [p]serverinfo (#3701) 2020-03-28 20:15:16 +01:00
kennnyshiwa
497d244f95 Show member's activities in [p]userinfo command (#3669)
* [mod] status improvements in userinfo command

Adds support for statues in the userinfo command including custom status, playing and listening improvements

* fix style

* maybe fix style now

* Update redbot/cogs/mod/names.py

Co-Authored-By: Draper <27962761+Drapersniper@users.noreply.github.com>

* fix spaces

* address review and add emojis

* fix broken variable

* Update redbot/cogs/mod/names.py

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

* Update redbot/cogs/mod/names.py

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

* Update redbot/cogs/mod/names.py

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

* Update redbot/cogs/mod/names.py

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

* Update redbot/cogs/mod/names.py

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

* Update names.py

* Update names.py

* Update redbot/cogs/mod/names.py

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

* Update names.py

* Update redbot/cogs/mod/names.py

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

* Update redbot/cogs/mod/names.py

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

Co-authored-by: Draper <27962761+Drapersniper@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-03-28 19:44:56 +01:00
jack1142
a738736d6b Update __init__.py (#3700) 2020-03-28 19:30:16 +01:00
jack1142
a4ce2d01ce Use choco upgrade, not choco install (#3684)
* Use `choco upgrade`, not `choco install` and add `--version` for Python

* Update install_windows.rst

* actually, nah
2020-03-28 16:08:25 +01:00
jack1142
41c2b76d8d Make [p]cog checkforupdates indicate when cog can't be updated on current Red/Python version 2020-03-28 15:53:10 +01:00
jack1142
35ebc4899e Log failures when requesting Twitch bearer token (#3657)
* [Streams] Log failures when requesting Twitch bearer token

* Oops

* Style
2020-03-28 15:51:36 +01:00
jack1142
9552d210f5 Remove towncrier (#3661) 2020-03-28 02:46:15 +01:00
Neuro Assassin
9370b5110e Add [p]cc search command (#2573)
* Add search command for Custom Commands

* Spelling mistake

* Create 2573.feature.rst

* Remove `bot.db` usage, improve returned message

* remove towncrier entry

* Fix CI errors

* Fix more CI errors

* Add `@staticmethod` decorator

Co-authored-by: Toby Harradine <Tobotimus@users.noreply.github.com>
Co-authored-by: Michael H <michael@michaelhall.tech>
Co-authored-by: Kowlin <Kowlin@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-03-28 02:11:36 +01:00
jack1142
7009be8922 white/blacklist commands now properly require at least one user passed (#3652) 2020-03-28 01:38:46 +01:00
jack1142
c1a96c83fb Update _internal_utils.py (#3673) 2020-03-28 01:37:59 +01:00
jack1142
5d66e4eaf8 Update streamtypes.py (#3690) 2020-03-28 01:35:51 +01:00
jack1142
ed267d17f2 [ModLog] Keep last known username in case's data (#3674) 2020-03-28 01:34:40 +01:00
jack1142
6e91ebeb3d Use surrogateescape when decoding subprocess's stream (#3639)
* use surrogateescape when decoding subprocess's stream

* stop using surrogateescape for logging
2020-03-28 01:14:54 +01:00
jack1142
d70c6e1734 Update mod.py (#3683) 2020-03-28 01:05:25 +01:00
PredaaA
4de4c32c0e Bump Red-Lavalink (#3687) 2020-03-28 00:46:09 +01:00
Jeremiah Boby
637ae34839 Print quickstart guide at the end of redbot-setup (#3027)
* Print quickstart guide during setup

Resolves #3025

* Refer users to stable documentation
2020-03-26 22:33:57 +01:00
jack1142
d23144bc61 [Docs] Fix Mac instructions in the install guide (#3675)
* Update install_linux_mac.rst

* Address review

* Use new Homebrew installer

* Add python@3.8 to PATH
2020-03-26 22:33:12 +01:00
FancyJesse
e90868072e [Cleanup] Add [p]cleanup spam command (#3688)
* Added `[p]cleanup spam` function

* formatting

* accepts number and considers command message to total counts

* use existing kwarg instead

Safer to use the before kwarg as other messages might get included accidentally between invoking and executing

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

* safer way to compare embeds and skip attachment only msgs

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

* keeps the original message before the spam starts

* now asks if its ok to delete 100+ spam msgs if found

* unnecessary calculations, just add after

* code styling and reverted history oldest_first option

* switched to recommended logging formatting, thank you jack1142

* now using `get_messages_for_deletion()`, added needed limit kwarg

* ugh forgot to swap em

* duh

* small string clarification

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-03-26 22:32:10 +01:00
Kowlin
980d2a8dc3 Removal of Dispatch, since its not working. (#3696)
* Removal of Dispatch, since its not working.

* Add changelog behavior
2020-03-26 14:13:30 +01:00
github-actions[bot]
eef5ddb416 Automated Crowdin downstream (#3697)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-03-26 14:06:51 +01:00
jack1142
3d7ff7a149 Add changelog label to merged PRs (#3664) 2020-03-26 13:56:10 +01:00
Stonedestroyer
287edb755d Fix misleading error appearing when repo name is already taken (#3695)
* Error string change

* String
2020-03-26 13:26:05 +01:00
Dav
8c612a96c8 [Streams] Make preview picture for stream alerts bigger (#3689) 2020-03-25 11:22:33 +01:00
jack1142
efe67e2acc [Image] Add [count] argument to [p]imgur commands (#3667)
* Update image.py

* Update image.py

* welp

* Update image.py

* Add `count` arg to `[p]imgur subreddit`

* me dumb (a little)
2020-03-24 00:42:27 +01:00
jack1142
2cdf3c16ab Make command errors translatable (#3665)
* Make command errors translatable

* style

* moar style

* Update events.py

* Separate strings to make it better for translators
2020-03-24 00:35:32 +01:00
PredaaA
a88b2af4a9 [General] Fix streaming count in serverinfo command. (#3680)
* [General] Fix streaming count on serverinfo command.

* Update general.py

* Update general.py

* is
2020-03-21 22:23:56 +01:00
TrustyJAID
b9f07e8684 [Mod] Move deletedelay to core (#3638)
* Move deletedelay to core

* line lengths

* address review

* move settings change

* fine...
2020-03-21 18:39:58 +01:00
TrustyJAID
d957e44e1e Fix issues with the black/whitelist cache (#3643)
* Fix issues with the black/whitelist cache

* Address review

* address review

* or
2020-03-21 18:14:49 +01:00
Stonedestroyer
15e3437001 [Trivia] Commands for managing custom trivia lists (#3420)
* Trivia upload

* Second push

* Black

* A bit further

* Logic fix

* Getting closer

* Almost there

* Abomination ready for review.

Abomination ready for review.

* Upload trivia review

* Black

* Fix debug

* Delete a trivia

* List cleaned.

* Make it nicer

* Pass black

* Unlink file

* Translation

* Thanks Jack

* Beautify

* Black

* Fix

* Handling empty custom lists

* Use existing fileobject.

* Black

* Test

* Change up

* Black

* Changelog

* Typo error

* Fix up issues.

* Fixes stuff.

* Styling

* Add reactions

* Reactions

* Add safe handling of reactions

* Style

* Fix grammar and remove obsolete code

* Timeout

* Fix

* Requested changes

* Styling

* Fixes

* Typehint

* Remove

* mistake

* Constant

* Style

* return
2020-03-21 16:30:33 +01:00
jack1142
eebea59fe3 Remove usage of loop arg in calls to start_adding_reactions (#3644)
* fix stacklevels of warnings

* stop using loop arg when calling start_adding_reactions

* [Audio] Stop using loop arg when calling start_adding_reactions
2020-03-20 20:44:57 +01:00
jack1142
5074f2dbab Improve error message for OSError in [p]repo add (#3656)
* Update downloader.py

* Update downloader.py
2020-03-20 20:40:59 +01:00
github-actions[bot]
0f364a6d13 Automated Crowdin downstream (#3671)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-03-19 23:38:27 +01:00
jack1142
d9db03bca3 Tell the command caller when bot was unable to send warn (#3653) 2020-03-19 08:23:07 +01:00
jack1142
b9e2e1098f [Trivia] Forbid use of non-finite numbers in [p]triviaset subcommands (#3668)
* Update trivia.py

* style
2020-03-19 08:21:54 +01:00
jack1142
a126da5f23 Prevent PyPI's unavailability from causing command failure (#3663) 2020-03-19 08:19:01 +01:00
jack1142
23eae27a8f Update session.py (#3666) 2020-03-19 08:17:32 +01:00
github-actions[bot]
3e1bb88ab7 Automated Crowdin downstream (#3650)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2020-03-18 20:48:15 +01:00
PredaaA
4de7ce32dd [General] Add shard ID to serverinfo if bot uses multiple shards (#3659)
* [General] Add shard ID on serverinfo if there is over than two shards

* Update general.py

* Update general.py

* Update general.py

* Update general.py
2020-03-16 01:42:35 +01:00
PredaaA
6128d54601 [General] Add toggle to [p]serverinfo that shows more details (#2382)
* Improvements of "serverinfo" command

- Added some more informations about the server.
  (Verification level, AFK channel and timeout, custom emojis and special features).
- Added custom texts for Region (and Verification levels).
- Added more details about members (Number of humans, bots, and all status).
- Show special features only if the server has one.
- Show "Verified" logo only if the server is verified.
- And changed the footer by adding how many time the bot as join the server.

* Black formatting for serverinfo

* Black formatting fix and Sinbad suggestions

* Fix the discord.errors.NotFound on server command

Added exception on server command for the phrase "To leave a server, just type its number.".

* Update core_commands.py

* Delete core_commands.py

* Create core_commands.py

* Update core_commands.py

* Update core_commands.py

* Delete core_commands.py

* Create core_commands.py

* Update core_commands.py

* Update core_commands.py

* Little changes on serverinfo command

- Adding "lurkers" check, for the new feature that are on bot which allow users to join a server in read-only (Works only on verified servers for now)
- Adding streaming status.
- Adding mobile status with suggestion of Sinbad.

* Black style fix

* Add verbose for serverinfo and disable lurkers

I've added a bool that are False by default and sent the original serverinfo command, and if set to True send my edited version.
And I've disabled the lurkers detection until this bug (https://github.com/discordapp/discord-api-docs/issues/855) isn't fixed.

* Add of India region

* Code cleanup

* Emojis are not needed to be translated

* Update serverinfo

* Changelog.

* Update 2382.enhancement.rst

* Adress Jack's requests changes.

* oops

* Put guild description first + few last nitpicks

Co-authored-by: PredaMart <46051820+PredaMart@users.noreply.github.com>
Co-authored-by: Toby Harradine <Tobotimus@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
2020-03-15 23:46:21 +01:00
Dav
4d81887bcf [Core] Unify commands that set bot's activity status (#3646)
* alias [p]set game

* Implement suggestions
2020-03-12 22:46:19 +01:00
Ianardo DiCaprio
2e5dc82692 [Warnings] Add setting for warn channel and DMing warns toggle (#2929)
* Initial Commit

* Add changelog

* Review changes

* Changed to use contextlib.suppress

* Update warnings.py

* Update redbot/cogs/warnings/warnings.py

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

* Update redbot/cogs/warnings/warnings.py

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

* Update redbot/cogs/warnings/warnings.py

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

* Update redbot/cogs/warnings/warnings.py

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

* Update redbot/cogs/warnings/warnings.py

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

* Update redbot/cogs/warnings/warnings.py

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

* Update redbot/cogs/warnings/warnings.py

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

* Update redbot/cogs/warnings/warnings.py

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

* Update redbot/cogs/warnings/warnings.py

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

* Rename 2932.bugfix.rst.txt to 2932.bugfix.rst

* Rename 2929.enhance.rst.txt to 2929.enhance.rst

* Update redbot/cogs/warnings/warnings.py

Co-Authored-By: Draper <27962761+Drapersniper@users.noreply.github.com>

* Update redbot/cogs/warnings/warnings.py

Co-Authored-By: Draper <27962761+Drapersniper@users.noreply.github.com>

* Update redbot/cogs/warnings/warnings.py

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

* Rename 2929.enhance.rst to 2929.feature.rst

* Update warnings.py

* Add files via upload

* Update warnings.py

* Black

* Update warnings.py

* black

* Update warnings.py

* Update warnings.py

* Delete 2932.bugfix.rst

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
Co-authored-by: Draper <27962761+Drapersniper@users.noreply.github.com>
2020-03-12 21:17:59 +01:00
jack1142
4afe1ff569 Use correct prefixes when sending messages to owners (#3632)
* use correct prefixes when sending messages to owners

* make internal util for this instead

* oops

* fix circular import

* let's add back the actual fix I made this PR for...

* fix wrong logger name

* improve log message
2020-03-12 17:31:33 +01:00
Kowlin
3ff127d514 Automated Crowdin downstream (#3640) 2020-03-05 22:01:26 +01:00
Kowlin
ea3ca66303 Handle users leaving the server while we're applying mutes (#3627)
* Handle when users leave a server while we're applying mutes

Goddamn guilds with >100 text channels >.<

* Damn you tox.

* Damn you Bread.

* Fixed a bug whereby Guild would always return a success

Also handled error checking on NotFound so that the propper handling can be done.

* Fixed flake8 compile error (whoops)

* Revert "Fixed flake8 compile error (whoops)"

This reverts commit ec8b672347.

* Revert "Fixed a bug whereby Guild would always return a success"

This reverts commit 8d08ac31af.

* Apply the lost commits that we actually want

Since cherry picking is hard.

* Isn't the English language FUN!?

* *sigh*
2020-03-01 21:11:46 +01:00
jack1142
279f0e4f6c Update streamtypes.py (#3631) 2020-02-29 17:47:50 +01:00
Stonedestroyer
61fc00dc08 [Permissions] Alwaysavailable error message (#3504)
* [Permissions] Fix message for always available commands.

* Changelog
2020-02-29 16:29:31 +01:00
jack1142
d6f9ddc3af Check permissions before trying to clear reactions (#3589) 2020-02-29 16:00:19 +01:00
Stonedestroyer
b52c838018 Fix game command empty argument. (#3630) 2020-02-29 15:35:44 +01:00
jack1142
e0de25ed65 dev bump (#3624) 2020-02-28 22:23:59 +01:00
1218 changed files with 200508 additions and 141485 deletions

4
.gitattributes vendored Normal file
View File

@@ -0,0 +1,4 @@
* text eol=lf
# binary file excludsions
*.png binary

5
.github/CODEOWNERS vendored
View File

@@ -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
View File

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

View File

@@ -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
View File

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

View File

@@ -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.

View File

@@ -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.

View File

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

View File

@@ -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.

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
Use websockets 8.1

View File

@@ -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.

View File

@@ -1 +0,0 @@
Show DeprecationWarning's

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -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.

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -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.

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
Move ignore commands and checks into core.

View File

@@ -1,2 +0,0 @@
Allow mentions in hackban and ban commands.
Have the correct lower bound on length of a snowflake for the converter.

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
Added ``[p]streamset timer`` command, which can be used to control how often the cog checks for livestreams.

View File

@@ -1 +0,0 @@
Changed the YouTube streams logic to use an RSS instead of the search endpoint, significantly reducing quota usage.

View File

@@ -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.

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
!.gitignore

View File

@@ -1 +0,0 @@
Don't use `inspect.getsource` to check for ``is_owner`` check.

View File

@@ -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.

View File

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

View File

@@ -34,3 +34,5 @@ extend functionalities used throughout the bot, as outlined below.
:members:
:exclude-members: convert
:no-undoc-members:
.. autoclass:: APIToken

View File

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

View File

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

View File

@@ -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.

View File

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

View File

@@ -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.

View File

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

View File

@@ -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.

View File

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

View File

@@ -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.

View File

@@ -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
View 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.**

View File

@@ -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.

View File

@@ -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^>

View File

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

View File

@@ -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
)

View File

@@ -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:

View File

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

View File

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

View File

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

View File

@@ -1,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 ""

View File

@@ -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 "الرتبة المذكورة ليست على قائمة الرتب الذاتية."

View File

@@ -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 ""

View File

@@ -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 ""

View File

@@ -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."

View File

@@ -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 ""

View File

@@ -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."

View File

@@ -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 ""

View File

@@ -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."

View File

@@ -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 ""

View File

@@ -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 "Jai 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."

View File

@@ -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 ""

View File

@@ -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 ""

View File

@@ -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 ""

View File

@@ -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."

View File

@@ -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 ""

View File

@@ -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 ""

View File

@@ -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."

View File

@@ -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 ""

View File

@@ -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 ""

View File

@@ -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."

View File

@@ -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."

View File

@@ -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 ""

View File

@@ -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 "Предоставленная роль не является допустимой ролью."

View File

@@ -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 ""

View File

@@ -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 ""

View File

@@ -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."

View File

@@ -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."

View File

@@ -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 ""

View File

@@ -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 ""

View File

@@ -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 ""

View File

@@ -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 ""

View File

@@ -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 ""

View File

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

View File

@@ -1,16 +1,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)

View File

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

View File

@@ -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 ""

View File

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