Compare commits

...

187 Commits

Author SHA1 Message Date
github-actions[bot]
0271dee092 Version bump to 3.5.21 (#6604)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-26 02:36:47 +02:00
github-actions[bot]
1e5620935d Automated Crowdin downstream (#6605)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-26 00:36:39 +00:00
Jakub Kuczys
031e57891c Red 3.5.21 - Changelog (#6603)
Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
2025-08-26 02:13:18 +02:00
Jakub Kuczys
72f8952baf Bump d.py version to 2.6.2 (#6597) 2025-08-25 19:52:36 -04:00
Jakub Kuczys
0e25534677 Fix LL YT plugin client options not being applied (#6601) 2025-08-25 19:34:26 -04:00
Jakub Kuczys
cfbf2fa401 Bump LL YT plugin version to 1.13.5 (#6602) 2025-08-25 19:33:31 -04:00
Jakub Kuczys
a65509c67c Bump dependencies (#6599)
Co-authored-by: Kowlin <10947836+Kowlin@users.noreply.github.com>
2025-08-25 22:41:45 +00:00
Jakub Kuczys
936e17338c Fix unhandled exception in stringification of DevOutput's result (#6592) 2025-08-25 17:43:41 -04:00
Jakub Kuczys
6c3c2e8fa7 Drop Ubuntu 20.04 and update supported RHEL versions (#6598) 2025-08-25 17:29:14 -04:00
Michael Oliveira
8c3cdf20a6 Inject guild locale information in app commands (#6579) 2025-08-25 22:52:06 +02:00
Michael Oliveira
f68580fab9 Improve i18n documentation for cog creators (#6595) 2025-08-17 19:06:39 +02:00
Michael Oliveira
ec66666036 Rewrite intents and public bots doc page (#6578) 2025-08-17 19:06:25 +02:00
Myra
3fd23d4163 Mod cog: Option to show an extra field with custom content on the ban embed (#6593)
Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
2025-08-10 17:54:51 -04:00
Jakub Kuczys
2dbbb51208 Disable Rich tracebacks by default (#6576) 2025-08-09 17:45:03 -04:00
TrustyJAID
b177c80b4e Fix an issue with alias quote detection (#6582)
Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
2025-08-09 16:55:37 -04:00
Ben Cos
029029e9a5 Add missing dependency in label pattern exhaustiveness check (#6589) 2025-08-01 04:59:48 +02:00
TrustyJAID
c6ff2191f3 Fix Reports in dm's not checking the selected guild for a configured channel (#6573) 2025-06-11 19:16:22 -04:00
Kreusada
6603cd1a86 Check attach_files permission inside send_interactive (#6552)
Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
2025-05-25 17:04:35 -04:00
Kreusada
1daf56f3d8 Add Group.all method explanation to Config framework (#6550)
Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
2025-05-25 14:48:47 -04:00
Kreusada
b3f0349ba2 [Docs] Update publishing cogs guide with [botname] substitution tip (#6539)
Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
2025-05-25 14:39:02 -04:00
A Frozen Lake
bfc3561928 Fix formatting of [p]names. (#6538)
Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
2025-05-25 14:33:28 -04:00
github-actions[bot]
8d8918b3c6 Version bump to 3.5.21.dev1 (#6571)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-03 16:13:01 +00:00
github-actions[bot]
550cf49bc8 Version bump to 3.5.20 (#6570)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-03 18:06:21 +02:00
Jakub Kuczys
313eeffc84 Red 3.5.20 - Changelog (#6569) 2025-05-03 15:42:37 +00:00
Jakub Kuczys
88e1f72467 Bump dependencies (#6568) 2025-05-03 16:35:33 +01:00
aikaterna
3c6146d6ca Bump YT plugin to 1.13.1 (#6566) 2025-05-03 17:30:26 +02:00
aikaterna
bfab9cc5f8 [Audio] Update application.yml generation for new sources (#6567)
Co-authored-by: Jakub Kuczys <me@jacken.men>
2025-05-03 17:26:05 +02:00
github-actions[bot]
07ee31a88f Version bump to 3.5.20.dev1 (#6562)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-27 03:19:35 +02:00
github-actions[bot]
bd61c105e0 Version bump to 3.5.19 (#6560)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-27 03:01:18 +02:00
github-actions[bot]
db0e831a2e Automated Crowdin downstream (#6561)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-27 03:01:03 +02:00
Jakub Kuczys
d7a56f1518 Red 3.5.19 - Changelog (#6559) 2025-04-27 03:00:39 +02:00
Jakub Kuczys
5f2c6d19d1 Bump dependencies + drop F40, add F42 to support matrix (#6558) 2025-04-27 02:56:38 +02:00
Jakub Kuczys
7b3600ecb1 Bump YT plugin version to 1.13.0 (#6557) 2025-04-27 00:08:36 +00:00
github-actions[bot]
6f5f34c80a Version bump to 3.5.19.dev1 (#6546)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-26 20:15:13 +01:00
github-actions[bot]
2e902b067e Version bump to 3.5.18 (#6545)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-26 20:04:52 +01:00
Jakub Kuczys
61695daded Red 3.5.18 - Changelog (#6544) 2025-03-26 20:00:45 +01:00
Jakub Kuczys
10889642ce Bump dependencies (#6543) 2025-03-26 18:53:40 +00:00
Kreusada
a3b254fe8e [Audio] Bump YT source plugin version (#6542) 2025-03-26 19:52:00 +01:00
github-actions[bot]
71554c981d Version bump to 3.5.18.dev1 (#6535)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-08 20:45:09 +00:00
github-actions[bot]
e1225029b0 Version bump to 3.5.17 (#6533)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-08 21:37:30 +01:00
github-actions[bot]
85923d4c0f Automated Crowdin downstream (#6534)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-08 21:36:48 +01:00
Jakub Kuczys
19b34c63b2 Red 3.5.17 - Changelog (#6532)
Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
2025-03-08 21:24:16 +01:00
Kowlin
60e819159f Bump d.py and Jinja2 (#6531) 2025-03-08 20:44:22 +01:00
Jakub Kuczys
0f4c7b0fe6 Bump deps (including d.py 2.5 bump) (#6529)
Co-authored-by: Kowlin <10947836+Kowlin@users.noreply.github.com>
2025-03-04 23:38:37 +01:00
aikaterna
3bf7c64d01 [Audio] Bump YT plugin version (#6530) 2025-03-04 22:57:52 +01:00
Karlo Prikratki
4558b72082 Fix YouTube upcoming stream's embed not being timezone-agnostic (#6527) 2025-02-15 23:33:15 +01:00
github-actions[bot]
73958d87f1 Version bump to 3.5.17.dev1 (#6522)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-06 02:44:41 +01:00
github-actions[bot]
d6054412f4 Version bump to 3.5.16 (#6520)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-06 02:36:23 +01:00
github-actions[bot]
5cf69bdc51 Automated Crowdin downstream (#6521)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-06 02:35:50 +01:00
Jakub Kuczys
2fd6ea88d9 Red 3.5.16 - Changelog (#6519) 2025-02-06 02:31:40 +01:00
Jakub Kuczys
50ad59a6c8 Catch TypeError when setting global locale (#6518) 2025-02-06 02:31:03 +01:00
Jakub Kuczys
dfc1e742f8 Handle invalid locale configuration graciously during startup (#6517) 2025-02-05 19:42:42 -05:00
github-actions[bot]
769c319ffd Version bump to 3.5.16.dev1 (#6516)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-03 02:13:08 +00:00
github-actions[bot]
3c1f2cddfd Version bump to 3.5.15 (#6514)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-03 02:43:09 +01:00
github-actions[bot]
1299db0f3a Automated Crowdin downstream (#6515)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-03 01:41:27 +00:00
Jakub Kuczys
c58d208ca2 Red 3.5.15 - Changelog (#6513) 2025-02-03 02:38:31 +01:00
Jakub Kuczys
c308ea0184 Bump dependencies and drop openSUSE Leap 15.5 (#6512) 2025-02-03 02:35:02 +01:00
Kowlin
8e0948d560 Truncate service names in [p]set api modal (#6502) 2025-02-01 18:36:37 -05:00
aikaterna
952a372652 [Audio] Bump YT plugin version (#6511) 2025-02-01 23:56:01 +01:00
Jakub Kuczys
a0c1713e78 Split public and private i18n APIs (#6022) 2025-01-26 19:33:06 -05:00
Jakub Kuczys
8b1daf1ad0 Move private things in modlog and redbot.core.errors (#6020) 2025-01-26 18:49:03 -05:00
Jakub Kuczys
dcdef9d798 Use build.jobs.install to avoid installing unnecessary deps (#6508) 2025-01-27 00:28:07 +01:00
Jakub Kuczys
f962aeb7b8 Split public and private config/driver APIs (#6024) 2025-01-26 18:25:53 -05:00
Jakub Kuczys
b13b1f8f16 Add explicit Sphinx config to .readthedocs.yml (#6507) 2025-01-27 00:10:10 +01:00
Jakub Kuczys
6bf2a88995 Single-source supported Java versions in Audio code (#6500) 2025-01-26 14:03:20 -08:00
Kowlin
22888f8014 Bump actions to V4 (#6504) 2025-01-07 20:41:17 +00:00
Jakub Kuczys
ba44370020 Add subnet masks in CIDR notation as answers to computers trivia (#6495) 2025-01-07 21:31:27 +01:00
Jakub Kuczys
cd0e8750c1 Allow usage of [p]audioset logs in DMs (#6499) 2024-12-28 16:48:24 -08:00
github-actions[bot]
679289fd1c Version bump to 3.5.15.dev1 (#6498)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-12-25 04:34:06 +00:00
github-actions[bot]
ce6489325e Version bump to 3.5.14 (#6496)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-12-25 05:25:15 +01:00
github-actions[bot]
d64cbdf83e Automated Crowdin downstream (#6497)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-12-25 04:24:55 +00:00
Jakub Kuczys
66d1c87b5a Red 3.5.14 - Changelog (#6493) 2024-12-25 05:20:47 +01:00
Jakub Kuczys
3888f09cfa Fix safety of `[p]repo list` (#6494) 2024-12-24 23:09:00 -05:00
Jakub Kuczys
8ad9c55d50 Bump dependencies and update OS matrix (#6492) 2024-12-24 19:54:56 +01:00
Glas
3aac07a4d7 Explain how to remove URL restrictions in the play error message (#6348)
Co-authored-by: aikaterna <20862007+aikaterna@users.noreply.github.com>
Co-authored-by: Jakub Kuczys <me@jacken.men>
2024-12-24 15:22:02 +01:00
Kowlin
bd26e7d5af Fix permissions fetching for User Installable Bots (#6457)
Co-authored-by: Jakub Kuczys <me@jacken.men>
2024-12-24 14:16:03 +00:00
Karlo Prikratki
9392077434 Allow passing multiple cogs to slash enablecog and slash disablecog (#6001)
Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
2024-12-23 22:49:19 -05:00
Chovin
1f48919005 Add a separate timeout for Lavalink download (#6461)
Co-authored-by: chovin <chovin@users.noreply.github.com>
Co-authored-by: Jakub Kuczys <me@jacken.men>
2024-12-24 04:08:49 +01:00
TrustyJAID
fdaa869130 [Help command] Utilize copy to clipboard (#6244)
Co-authored-by: Kreusada Ignad Amredes <67752638+Kreusada@users.noreply.github.com>
2024-12-24 03:23:26 +01:00
Michael Oliveira
18614b1604 Respect [p]bypasscooldowns in [p]slash sync (#6465) 2024-12-24 03:04:11 +01:00
Michael Oliveira
016684bcce Add methods for getting app command IDs/mentions from cache (#6278)
Co-authored-by: Jakub Kuczys <me@jacken.men>
2024-12-24 03:02:16 +01:00
Kowlin
5cfb8edab8 ANSI formatting support (#5538)
Co-authored-by: Kowlin <Kowlin@users.noreply.github.com>
Co-authored-by: Vexed <vex@vexcodes.com>
Co-authored-by: Jack Tealey <67752638+Kreusada@users.noreply.github.com>
2024-12-24 01:20:42 +00:00
cdaman3141
150692538f Fixed [p]ban raising an unhandled error if an ID too large is provided (#6486)
Co-authored-by: Jakub Kuczys <me@jacken.men>
2024-12-24 01:12:33 +00:00
TrustyJAID
f4ffc6bc80 Add support for SimpleMenu to use custom select options (#6480)
Co-authored-by: Jakub Kuczys <me@jacken.men>
2024-12-24 02:00:41 +01:00
Kevin Wang
9419f2642a Allow enforcing reason to be filled in Mod cog commands (#6477)
Co-authored-by: Jakub Kuczys <me@jacken.men>
2024-12-24 01:58:57 +01:00
Jakub Kuczys
f0a29e9815 Support [botname] substitutions in cog install messages too (#6491) 2024-12-23 19:18:36 -05:00
aikaterna
d29ae723c1 Bump YT plugin version (#6490) 2024-12-22 23:15:43 +01:00
Jakub Kuczys
9920628948 Bump YT plugin version and update LL server config (#6488) 2024-12-17 21:28:05 -08:00
Ascensionn
48b2fe77c0 [p]warn ask to ban when user not in server (#6481)
Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
2024-12-08 13:42:22 -05:00
palmtree5
33e0eac741 Remove deprecated options from .pylintrc (#6462)
Co-authored-by: Kreusada <67752638+Kreusada@users.noreply.github.com>
2024-11-17 17:01:31 +00:00
Kyla
2871992772 Define view once inside menus.menu for button menus (#6472) 2024-11-17 16:24:30 +00:00
Seaswimmer
30058c0f73 Add links to the output of [p]repo list (#6284)
Co-authored-by: Seaswimmer <102361830+SeaswimmerTheFsh@users.noreply.github.com>
Co-authored-by: Kreusada <67752638+Kreusada@users.noreply.github.com>
2024-10-29 18:10:02 +00:00
Jakub Kuczys
4134881fae Optimize Trivia list loading (#6336)
Co-authored-by: Kreusada <67752638+Kreusada@users.noreply.github.com>
2024-10-29 17:58:28 +00:00
Lemon Rose
4396323205 [Trivia] Add non-punctuated alias (#5889)
Co-authored-by: Kreusada <67752638+Kreusada@users.noreply.github.com>
2024-10-29 17:46:58 +00:00
sravan
4e27059209 [Core] Add error handling when [p]load tries to load "locales" (#6466) 2024-10-20 16:20:29 -04:00
Jakub Kuczys
d3887b595f Fix release helper subcommands (#6451) 2024-09-15 02:49:04 +02:00
Jakub Kuczys
005b8af10a Update docs vars to work with RTD changes (#6410) 2024-09-11 05:32:36 +02:00
Kreusada Ignar Yadrak
d304da7a16 [Downloader] Support [botname] substitutions in cog install messages (#6443) 2024-09-11 05:32:18 +02:00
Kreusada
f3c89ad8bd Fix header utility docstring (#6444) 2024-09-02 00:51:14 +02:00
Kreusada
05cf9b7f39 Add header, hyperlink and subtext utilities (#6102)
Co-authored-by: Kowlin <10947836+Kowlin@users.noreply.github.com>
2024-09-01 21:40:12 +00:00
Jakub Kuczys
907a3f7561 Split out non-Python assets in Publish Release workflow (#6440) 2024-08-28 15:47:35 +02:00
Mellow
2595c9de10 [Trivia] Correct typos in World Cup trivia list for Golden Glove questions (#6441) 2024-08-27 18:02:53 +01:00
Jakub Kuczys
8be7b0850c Version bump to 3.5.14.dev1 2024-08-27 02:12:58 +02:00
Jakub Kuczys
61ec913789 Change Red 3.5.13 release date 2024-08-27 02:00:28 +02:00
Jakub Kuczys
88b11f2b9c Add missing perm to Publish Release workflow 2024-08-27 02:00:13 +02:00
Jakub Kuczys
9ca0ced2d8 Fix publish release workflow 2024-08-27 01:54:47 +02:00
github-actions[bot]
a5a178bfaf Version bump to 3.5.13 (#6438)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-27 01:22:52 +02:00
github-actions[bot]
eeb90aaa45 Automated Crowdin downstream (#6439)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-26 23:21:43 +00:00
Jakub Kuczys
b7a59b5e4c Red 3.5.13 - Changelog (#6437) 2024-08-27 01:12:13 +02:00
Jakub Kuczys
2769ea025f Bump dependencies (#6436) 2024-08-26 18:08:50 -04:00
aikaterna
818420a641 [Audio] Fix trying to send notify message with no channel object (#6429) 2024-08-26 19:53:30 +02:00
aikaterna
3c49a77e34 [Audio] Update Lavalink.jar and yt source build numbers (#6435)
Co-authored-by: Jakub Kuczys <me@jacken.men>
2024-08-26 19:51:59 +02:00
Jakub Kuczys
90691ba2b9 Generate default LL server config and attach it to GH release (#6430) 2024-08-26 19:34:37 +02:00
Guyonsteroids
68f2806204 [Trivia] Correct Stephen to Steven (#6434)
Co-authored-by: Artemis6969 <82315185+Artemis6969@users.noreply.github.com>
2024-08-24 23:33:20 +02:00
github-actions[bot]
903992f48a Version bump to 3.5.13.dev1 (#6428)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-08 04:25:02 +02:00
github-actions[bot]
e4b75f5333 Version bump to 3.5.12 (#6426)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-08 04:11:33 +02:00
github-actions[bot]
254d5a91d6 Automated Crowdin downstream (#6427)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-08 02:11:20 +00:00
Jakub Kuczys
b979a7c4d1 Red 3.5.12 - Changelog (#6425) 2024-08-07 19:08:08 -07:00
aikaterna
54a29174ea [Audio] Update yt source version (#6424) 2024-08-07 22:38:46 +02:00
aikaterna
5bbced5b0d [Audio] Fix llset secured (#6423) 2024-08-07 22:36:27 +02:00
github-actions[bot]
5b21c89505 Version bump to 3.5.12.dev1 (#6421)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-04 22:07:27 +00:00
github-actions[bot]
04d856cfb0 Version bump to 3.5.11 (#6419)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Jakub Kuczys <me@jacken.men>
2024-08-04 23:54:31 +02:00
github-actions[bot]
701339f8a1 Automated Crowdin downstream (#6420)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-04 23:51:49 +02:00
Jakub Kuczys
3d04d696c1 Red 3.5.11 - Changelog (#6418) 2024-08-04 23:47:44 +02:00
Jakub Kuczys
0b8bcef86c Bump dependencies (#6417) 2024-08-04 23:37:47 +02:00
Kowlin
2d47d75919 Fix unmuting when a mod isn't a mod anymore. (#6411)
Co-authored-by: TrustyJAID <TrustyJAID@gmail.com>
2024-08-04 23:01:34 +02:00
Jakub Kuczys
7eb26da647 Bump YT source plugin version to 1.5.1 and add custom plugin config (#6415) 2024-08-04 12:33:59 -07:00
Kowlin
699471f27a Forcefully shutdown RPC to prevent hangs (#6412) 2024-08-04 21:28:17 +02:00
Jakub Kuczys
2c2080df12 Set ProcessType in macOS auto-restart service to 'interactive' (#6416) 2024-08-04 12:19:28 -07:00
anopem
fa7236af63 Get viewer count from stream data instead of user profile data (#6413) 2024-07-21 13:08:22 -08:00
Ryan
601816abc0 Allow SimpleMenu to delete ephemeral responses (#6304) 2024-07-18 23:35:52 +02:00
Lemon Rose
bf8c0d03b5 [RedTree] add UserFeedbackCheckFailure for app_commands (#6397)
Co-authored-by: Jakub Kuczys <me@jacken.men>
2024-07-12 13:30:22 -04:00
Jakub Kuczys
2e40ec4a1a Use PEP 508's req @ url syntax instead of deprecated egg fragments (#6408) 2024-07-12 18:08:43 +02:00
github-actions[bot]
9b9fdf555b Version bump to 3.5.11.dev1 (#6406)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-11 01:20:16 +02:00
Jakub Kuczys
7dee8d7963 Last-minute changelog fixes 2024-07-11 01:11:18 +02:00
github-actions[bot]
0281d6c93e Version bump to 3.5.10 (#6404)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-11 01:03:12 +02:00
github-actions[bot]
f4c8077268 Automated Crowdin downstream (#6405)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-11 01:02:52 +02:00
Jakub Kuczys
7b8acd7ef6 Red 3.5.10 - Changelog (#6403) 2024-07-11 00:42:52 +02:00
Jakub Kuczys
6ee976c341 Bump dependencies (#6402) 2024-07-10 17:47:46 -04:00
Michael Oliveira
0b0b23b971 Fix @commands.can_manage_channel always passing (#6398) 2024-07-10 20:41:24 +02:00
Jakub Kuczys
2b1e603124 Bump d.py version to 2.4.0 (#6401)
Co-authored-by: Ryan <yamikaitou@gmail.com>
2024-07-10 20:36:47 +02:00
Jakub Kuczys
dd61b669b0 Use YouTube source plugin over the deprecated built-in source (#6373)
Co-authored-by: aikaterna <20862007+aikaterna@users.noreply.github.com>
2024-07-10 07:13:23 -07:00
Michael Oliveira
57b76bc0d7 Fix info.json keys in approved CC guide (#6382) 2024-07-10 14:53:40 +02:00
Seaswimmer
573e5c2b40 Docs: remove Atom from the list of recommended editors (#6388) 2024-07-10 14:45:36 +02:00
Jakub Kuczys
ad1e1aa2ba OS support spring cleaning spree (#6386) 2024-06-30 21:11:02 +02:00
TrustyJAID
4242a7adf2 Fix an issue with autocomplete in ignored channels/servers (#6375) 2024-05-06 19:53:37 -04:00
Jakub Kuczys
e03f97d1cd Update macOS instructions to use default cask (#6368) 2024-05-04 14:18:31 -07:00
Jakub Kuczys
975c0007fe Add Ubuntu 24.04 instructions + support for Fedora 40 (#6364) 2024-04-29 01:22:56 -04:00
github-actions[bot]
bef3aa5f69 Version bump to 3.5.10.dev1 (#6363)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-21 02:12:28 +00:00
github-actions[bot]
cbf8247e6e Version bump to 3.5.9 (#6361)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-21 04:04:51 +02:00
github-actions[bot]
23c86d7850 Automated Crowdin downstream (#6362)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-21 04:04:35 +02:00
Jakub Kuczys
aa21091b84 Red 3.5.9 - Changelog (#6359) 2024-04-21 03:58:37 +02:00
Jakub Kuczys
72ec88aa3c Fix humanize_timedelta() docstring to account for negative values (#6360) 2024-04-20 21:55:33 -04:00
aikaterna
b1f331e51f [Audio] Update Lavalink.jar build (#6358) 2024-04-21 03:04:51 +02:00
TrustyJAID
0c9c210dbb Prevent OverflowError from very large timedeltas in Mutes (#6353) 2024-04-21 03:01:28 +02:00
Jakub Kuczys
47d4675f52 Fix error message edge case in parse_timedelta (#6357) 2024-04-21 00:27:40 +02:00
aikaterna
80d0bab29a Update Lavalink repo links to new lavalink-devs org owner (#6356) 2024-04-21 00:12:02 +02:00
Jakub Kuczys
e61327a65c Fix potential API compatibility issue in parse_timedelta() (#6355) 2024-04-20 23:42:20 +02:00
Zephyrkul
11ebd40dfa Fix TimedeltaConverter allowing negative values by default (#6354)
Co-authored-by: zephyrkul <zephyrkul@users.noreply.github.com>
2024-04-20 23:17:38 +02:00
Zephyrkul
00e41d38f9 Improve timedelta conversions (#6349)
Co-authored-by: zephyrkul <zephyrkul@users.noreply.github.com>
2024-04-14 12:58:00 -06:00
Zephyrkul
afb4f6079a humanize_timedelta improvements (#6350)
Co-authored-by: TrustyJAID <TrustyJAID@gmail.com>
Co-authored-by: zephyrkul <zephyrkul@users.noreply.github.com>
2024-04-14 12:56:42 -06:00
Louis Dominic
97b467939c Increase default timeout for ctx.send_interactive to 60 (#6352) 2024-04-11 21:18:40 -08:00
TrustyJAID
f54499eaba Increase default timeout for send_interactive to 60 (#6346) 2024-04-04 20:21:05 +02:00
gip
f8d6bbb0af Added discord timestamps (#6264)
Co-authored-by: palmtree5 <3577255+palmtree5@users.noreply.github.com>
2024-04-03 23:32:15 -08:00
github-actions[bot]
24afd61a85 Version bump to 3.5.9.dev1 (#6345)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-01 02:18:15 +00:00
github-actions[bot]
8e118733ea Version bump to 3.5.8 (#6343)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-01 04:05:22 +02:00
github-actions[bot]
f01c0ec675 Automated Crowdin downstream (#6344)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-01 02:04:48 +00:00
Jakub Kuczys
94d12cb45f Red 3.5.8 - Changelog (#6338) 2024-04-01 04:01:25 +02:00
Jakub Kuczys
e9ed52cf16 Fix placement of empty Trivia list check (#6335) 2024-03-31 21:11:00 -04:00
Jakub Kuczys
194dea545d Update Mutes docs with timeout changes (#6341) 2024-04-01 03:00:53 +02:00
aikaterna
59400204e8 [Trivia] Fix descriptions on Star Wars and Star Trek (#6342) 2024-04-01 02:45:34 +02:00
aikaterna
1c863c7b3b [Audio] Update Lavalink.jar build (#6340) 2024-04-01 02:11:11 +02:00
TrustyJAID
ad9e00d1d9 Menuify [p]activemutes command (#6266) 2024-04-01 02:06:38 +02:00
TrustyJAID
463f0c5e6d Add support for timeouts to Mutes cog (#5604)
Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
2024-04-01 02:05:37 +02:00
Jakub Kuczys
e71312ede0 Update LL version stringification and make parsing stricter (#6334) 2024-03-31 14:26:36 -07:00
Kreusada
48d74712bc Implement [p]trivia info and add DESCRIPTION to trivia schema (#5897)
Co-authored-by: Jakub Kuczys <me@jacken.men>
2024-03-31 03:11:17 +02:00
Jakub Kuczys
c3a493a500 Bump dependencies (#6333) 2024-03-30 17:56:11 -04:00
Jakub Kuczys
4034ddd452 Add Amazon Linux 2023 install guide (#6331) 2024-03-30 17:20:07 -04:00
Jakub Kuczys
2ae1eb9ec9 Ask for confirmation when path passed to addpath seems incorrect (#6330) 2024-03-27 00:57:47 -04:00
github-actions[bot]
0b390fe2f6 Version bump to 3.5.8.dev1 (#6328)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-24 01:07:22 +01:00
github-actions[bot]
b2e7458353 Version bump to 3.5.7 (#6326)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-24 00:33:29 +01:00
github-actions[bot]
6adb7e6de7 Automated Crowdin downstream (#6327)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-23 23:31:24 +00:00
Jakub Kuczys
1756593785 Red 3.5.7 - Changelog (#6325) 2024-03-23 19:27:42 -04:00
Karlo Prikratki
c3b96b7a9e Update image formats listed as supported by set bot avatar (#6323)
Co-authored-by: Jakub Kuczys <me@jacken.men>
2024-03-24 00:21:30 +01:00
Jakub Kuczys
a26b9d6d3a Fix behavior of the menu() function calls without user param (#6324) 2024-03-23 16:16:44 -07:00
Jakub Kuczys
76c2c75f2c Fix release helper not considering workflow status (#6320) 2024-03-24 00:14:31 +01:00
github-actions[bot]
afabc4769d Version bump to 3.5.7.dev1 (#6319)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-22 01:06:06 +00:00
699 changed files with 83679 additions and 51237 deletions

4
.github/labeler.yml vendored
View File

@@ -141,6 +141,8 @@
"Category: Core - API - App Commands Package":
# Source
- redbot/core/app_commands/*
# Docs
- docs/framework_app_commands.rst
# Tests
- tests/core/test_app_commands.py
"Category: Core - API - Commands Package":
@@ -160,6 +162,7 @@
- any:
- redbot/core/_drivers/**/*
- "!redbot/core/_drivers/**/locales/*"
- redbot/core/_config.py
- redbot/core/config.py
# Docs
- docs/framework_config.rst
@@ -213,6 +216,7 @@
- redbot/core/commands/help.py
"Category: Core - i18n":
# Source
- redbot/core/_i18n.py
- redbot/core/i18n.py
# Locale files
- redbot/**/locales/*

View File

@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
@@ -17,7 +17,7 @@ jobs:
- name: Install script's pre-requirements
run: |
python -m pip install -U pip
python -m pip install -U pathspec pyyaml rich
python -m pip install -U pathspec pyyaml rich typing_extensions
- name: Check label pattern exhaustiveness
run: |
python .github/workflows/scripts/check_label_pattern_exhaustiveness.py

View File

@@ -17,7 +17,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
@@ -34,14 +34,13 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
languages: 'python'
# Override the default behavior so that the action doesn't attempt
# to auto-install Python dependencies
# Learn more...
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#analyzing-python-dependencies
setup-python-dependencies: false
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -55,4 +54,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3

View File

@@ -9,7 +9,7 @@ jobs:
if: github.repository == 'Cog-Creators/Red-DiscordBot'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:

View File

@@ -14,13 +14,17 @@ jobs:
name: Lint Python
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
ref: ${{ env.ref }}
- uses: actions/setup-python@v4
with:
python-version: "3.8"
- run: "python -m pip install git+https://github.com/pycqa/pyflakes@1911c20#egg=pyflakes git+https://github.com/pycqa/pycodestyle@d219c68#egg=pycodestyle git+https://github.com/pycqa/flake8@3.7.9#egg=flake8"
- run: >
python -m pip install
'pyflakes @ https://github.com/pycqa/pyflakes/tarball/1911c20'
'pycodestyle @ https://github.com/pycqa/pycodestyle/tarball/d219c68'
'flake8 @ https://github.com/pycqa/flake8/tarball/3.7.9'
name: Install Flake8
- run: "python -m flake8 . --count --select=E9,F7,F82 --show-source"
name: Flake8 Linting

View File

@@ -16,7 +16,7 @@ jobs:
needs: pr_stable_bump
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
@@ -73,7 +73,7 @@ jobs:
milestone_number: ${{ steps.get_milestone_number.outputs.result }}
steps:
# Checkout repository and install Python
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
# Checkout repository and install Python
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
@@ -57,7 +57,7 @@ jobs:
name: Build package
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
@@ -75,27 +75,68 @@ jobs:
run: python -m twine check dist/*
- name: Upload packaged distributions
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: build-output
path: ./dist
generate_default_ll_server_config:
name: Generate default application.yml
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.8'
- name: Install script's dependencies
run: python -m pip install PyYAML
- name: Generate default application.yml
env:
APP_YML_FILE: "Red-DiscordBot-${{ github.ref_name }}-default-lavalink-application.yml"
run: |
mkdir -p release_assets
python .github/workflows/scripts/get_default_ll_server_config.py "release_assets/$APP_YML_FILE"
- name: Upload default application.yml
uses: actions/upload-artifact@v4
with:
name: ll-default-server-config
path: ./release_assets
release_to_pypi:
needs:
- release_information
- build
- generate_default_ll_server_config
environment: Release
name: Release to PyPI
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write
steps:
- name: Download packaged distributions
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: build-output
path: dist/
- name: Download default application.yml
uses: actions/download-artifact@v4
with:
name: ll-default-server-config
path: release_assets/
- name: Upload dists to GitHub Release
env:
GITHUB_TOKEN: "${{ github.token }}"
run: |
gh release upload "$GITHUB_REF_NAME" dist/* release_assets/* --repo "$GITHUB_REPOSITORY"
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
@@ -119,7 +160,7 @@ jobs:
run: |
echo "BASE_BRANCH=${TAG_BASE_BRANCH#'refs/heads/'}" >> $GITHUB_ENV
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
ref: ${{ env.BASE_BRANCH }}
- name: Set up Python

View File

@@ -15,7 +15,7 @@ jobs:
- macos-latest
steps:
- name: Checkout the repository.
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up Python 3.8.
uses: actions/setup-python@v4
@@ -48,7 +48,7 @@ jobs:
python .github/workflows/scripts/compile_requirements.py
- name: Upload requirements files.
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ${{ steps.compile_requirements.outputs.sys_platform }}
path: requirements/${{ steps.compile_requirements.outputs.sys_platform }}-*.txt
@@ -59,7 +59,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository.
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up Python 3.8.
uses: actions/setup-python@v4
@@ -71,17 +71,17 @@ jobs:
python -m pip install -U "packaging>=22.0"
- name: Download Windows requirements.
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: win32
path: requirements
- name: Download Linux requirements.
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: linux
path: requirements
- name: Download macOS requirements.
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: darwin
path: requirements
@@ -91,7 +91,7 @@ jobs:
python .github/workflows/scripts/merge_requirements.py
- name: Upload merged requirements files.
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: merged
path: |

View File

@@ -17,6 +17,12 @@ def pip_compile(version: str, name: str) -> None:
if EXCLUDE_STEM_RE.fullmatch(stem):
return
constraint_flags = [
arg
for file in REQUIREMENTS_FOLDER.glob(f"{sys.platform}-3.8-*.txt")
for arg in ("-c", file.name)
]
executable = ("py", f"-{version}") if sys.platform == "win32" else (f"python{version}",)
subprocess.check_call(
(
@@ -30,6 +36,7 @@ def pip_compile(version: str, name: str) -> None:
f"{name}.in",
"--output-file",
f"{stem}.txt",
*constraint_flags,
)
)

View File

@@ -0,0 +1,31 @@
import sys
from pathlib import Path
import yaml
ROOT_FOLDER = Path(__file__).parents[3].absolute()
AUDIO_FOLDER = ROOT_FOLDER / "redbot/cogs/audio"
# We want to import `redbot.cogs.audio.managed_node` package as if it were top-level package
# so we have to the `redbot/cogs/audio` directory to Python's path.
sys.path.insert(0, str(AUDIO_FOLDER))
def main() -> int:
try:
output_file = sys.argv[1]
except IndexError:
print("Usage:", sys.argv[0], "<output_file>", file=sys.stderr)
return 2
import managed_node
server_config = managed_node.get_default_server_config()
with open(output_file, "w", encoding="utf-8") as fp:
yaml.safe_dump(server_config, fp)
return 0
if __name__ == "__main__":
raise SystemExit(main())

View File

@@ -49,6 +49,8 @@ def get_requirements(fp: TextIO) -> List[RequirementData]:
via_prefix = "via "
if source.startswith(via_prefix):
source = source[len(via_prefix) :]
if source.startswith("-c ") and source != "-c base.txt":
continue
current.comments.add(source)
elif line and not line.startswith(("#", " ")):
current = RequirementData(line)
@@ -135,25 +137,27 @@ for name in names:
python_version_marker = (
# Requirement present on less Python versions than not.
" or ".join(
f"python_version == '{python_version}'" for python_version in python_versions
f"python_version == '{python_version}'"
for python_version in sorted(python_versions)
)
if len(python_versions) < len(all_python_versions - python_versions)
# Requirement present on more Python versions than not
# This may generate an empty string when Python version is irrelevant.
else " and ".join(
f"python_version != '{python_version}'"
for python_version in all_python_versions - python_versions
for python_version in sorted(all_python_versions - python_versions)
)
)
platform_marker = (
# Requirement present on less platforms than not.
" or ".join(f"sys_platform == '{platform}'" for platform in platforms)
" or ".join(f"sys_platform == '{platform}'" for platform in sorted(platforms))
if len(platforms) < len(all_platforms - platforms)
# Requirement present on more platforms than not
# This may generate an empty string when platform is irrelevant.
else " and ".join(
f"sys_platform != '{platform}'" for platform in all_platforms - platforms
f"sys_platform != '{platform}'"
for platform in sorted(all_platforms - platforms)
)
)
@@ -167,12 +171,12 @@ for name in names:
# Requirement present on less envs than not.
" or ".join(
f"(sys_platform == '{platform}' and python_version == '{python_version}')"
for platform, python_version in iter_envs(envs)
for platform, python_version in iter_envs(sorted(envs))
)
if len(envs) < len(all_envs - envs.keys())
else " and ".join(
f"(sys_platform != '{platform}' and python_version != '{python_version}')"
for platform, python_version in iter_envs(all_envs - envs.keys())
for platform, python_version in iter_envs(sorted(all_envs - envs.keys()))
)
)

View File

@@ -39,7 +39,7 @@ jobs:
fail-fast: false
name: Tox - ${{ matrix.friendly_name }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
ref: ${{ env.ref }}
- name: Set up Python
@@ -76,7 +76,7 @@ jobs:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
ref: ${{ env.ref }}
- name: Set up Python

View File

@@ -26,14 +26,6 @@ unsafe-load-any-extension=no
# run arbitrary code
extension-pkg-whitelist=
# Allow optimization of some AST trees. This will activate a peephole AST
# optimizer, which will apply various small optimizations. For instance, it can
# be used to obtain the result of joining multiple strings with the addition
# operator. Joining a lot of strings can lead to a maximum recursion error in
# Pylint and this flag can prevent that. It has one side effect, the resulting
# AST will be different than the one from reality.
optimize-ast=no
[MESSAGES CONTROL]
@@ -66,7 +58,6 @@ disable=C, # black is enforcing this for us already, incompatibly
[REPORTS]
output-format=parseable
files-output=no
reports=no

View File

@@ -4,6 +4,12 @@ build:
os: "ubuntu-22.04"
tools:
python: "3.8"
jobs:
install:
- pip install .[doc]
sphinx:
configuration: docs/conf.py
python:
install:

View File

@@ -1,5 +1,695 @@
.. Red changelogs
Redbot 3.5.21 (2025-08-26)
==========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`egypt1848`, :ghuser:`Flame442`, :ghuser:`Jackenmen`, :ghuser:`Kowlin`, :ghuser:`Kreusada`, :ghuser:`TrustyJAID`, :ghuser:`VasilisThePikachu`
Read before updating
--------------------
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
We've updated our default application.yml file and you should update your instance's ``application.yml`` accordingly.
More specifically, we bumped the version of YT source plugin.
`Download Red 3.5.21's default application.yml file <https://github.com/Cog-Creators/Red-DiscordBot/releases/download/3.5.21/Red-DiscordBot-3.5.21-default-lavalink-application.yml>`__
#. Following operating systems are no longer supported as they have already reached their end of life:
- Ubuntu 20.04 LTS
- versions of RHEL/Alma Linux/Oracle Linux/Rocky Linux 8 older than 8.10
- versions of RHEL/Alma Linux/Oracle Linux/Rocky Linux 9 older than 9.4
End-user changelog
------------------
Additions
*********
- |cool| **Cogs - Mod** - The DM message (``[p]modset dm``) sent by cog's ban commands can now include customizable extra field (:issue:`6593`)
This feature can, for example, be useful for providing the banned user with information about the ban appeal process.
To configure it, look at the subcommands listed in the help text of the ``[p]modset dm`` command.
Changes
*******
- **Core** - The application (slash) commands will now use the server's configured language rather than the bot's global language, same as regular text commands (:issue:`6272`, :issue:`6579`)
- **Core** - The option to request a ``file`` will no longer be provided in interactively sent messages when the bot does not actually have the permission to send files in the current channel (:issue:`6540`, :issue:`6552`)
- **Core - Command-line Interfaces** - Red's error logging will now use standard traceback formatting by default as the Rich tracebacks (previously default) proved to be impractical when providing support to users and affected performance (:issue:`6576`)
- If you want to continue using Rich tracebacks, you can pass the new ``--rich-tracebacks`` flag when starting Red.
- **Core - Dependencies** - Red's dependencies have been bumped (:issue:`6599`)
Removals
********
- **Core - OS Support** - Ubuntu 20.04 LTS is no longer supported as it has already reached its end of life (:issue:`6598`)
- **Core - OS Support** - Versions of RHEL/Alma Linux/Oracle Linux/Rocky Linux 8 older than 8.10 are no longer supported as they have already reached their end of life (:issue:`6598`)
- **Core - OS Support** - Versions of RHEL/Alma Linux/Oracle Linux/Rocky Linux 9 older than 9.4 are no longer supported as they have already reached their end of life (:issue:`6598`)
Fixes
*****
- |cool| **Cogs - Alias** - Fixed some of the issues with handling of quoted command arguments when using command aliases (:issue:`6582`)
- |cool| **Cogs - Audio** - Fixed recent YT playback issues (:issue:`6602`)
- **Cogs - Audio** - Fixed YT client configuration (:issue:`6601`)
- **Cogs - Mod** - Fixed formatting of the ``[p]names`` command (:issue:`6538`)
- **Cogs - Reports** - Fixed the ``[p]report`` command not working properly when invoked from a DM context (:issue:`6573`)
Developer changelog
-------------------
Changes
*******
- |cool| **Core - Dependencies** - Bumped ``discord.py`` to version 2.6.2 (:issue:`6597`)
Fixes
*****
- **Cogs - Dev** - Fixed issues with ``[p]eval/repl/debug`` commands erroring when string representation of the code's result is not valid UTF-8 (:issue:`6485`, :issue:`6592`)
Documentation changes
---------------------
- Refreshed the `intents` document with descriptions of how the intents are used in Red, our stance on public bots, and replaced some of the historical details with more up-to-date information (:issue:`6578`)
- Added more code examples to the `framework_i18n` document, including common pitfalls and an example of how to apply proper locale in non-command contexts (:issue:`6595`)
- Expanded the tutorial about creating translation catalogs for 3rd-party cogs in the `framework_i18n` document (:issue:`6595`)
- Added example of `Group.all()` method's usage to the tutorial in the `framework_config` document (:issue:`6295`, :issue:`6550`)
- Added a tip about the ``[botname]`` placeholder in the `guide_publish_cogs` document (:issue:`6539`)
----
Redbot 3.5.20 (2025-05-03)
==========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Jackenmen`, :ghuser:`Kreusada`
Read before updating
--------------------
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
We've updated our default application.yml file and you should update your instance's ``application.yml`` accordingly.
More specifically, we bumped the version of YT source plugin.
`Download Red 3.5.20's default application.yml file <https://github.com/Cog-Creators/Red-DiscordBot/releases/download/3.5.20/Red-DiscordBot-3.5.20-default-lavalink-application.yml>`__
End-user changelog
------------------
Changes
*******
- **Core - Dependencies** - Red's dependencies have been bumped (:issue:`6568`)
Fixes
*****
- |cool| **Cogs - Audio** - Fixed recent YT playback issues (:issue:`6566`, :issue:`6567`)
----
Redbot 3.5.19 (2025-04-27)
==========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Flame442`, :ghuser:`Jackenmen`
Read before updating
--------------------
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
We've updated our default application.yml file and you should update your instance's ``application.yml`` accordingly.
More specifically, we bumped the version of YT source plugin.
`Download Red 3.5.19's default application.yml file <https://github.com/Cog-Creators/Red-DiscordBot/releases/download/3.5.19/Red-DiscordBot-3.5.19-default-lavalink-application.yml>`__
#. Fedora 40 is no longer supported as it will soon reach its end of life. Fedora install instructions have been updated with support for Fedora 42.
End-user changelog
------------------
Changes
*******
- **Core - Dependencies** - Red's dependencies have been bumped (:issue:`6558`)
- **Core - OS Support** - Fedora 40 is no longer supported as it will soon reach its end of life (:issue:`6558`)
Fixes
*****
- |cool| **Cogs - Audio** - Fixed recent YT playback issues (:issue:`6557`)
Documentation changes
---------------------
Changes
*******
- Updated Fedora install instructions to work with Fedora 42 (:issue:`6558`)
----
Redbot 3.5.18 (2025-03-26)
==========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`Jackenmen`, :ghuser:`Kreusada`
Read before updating
--------------------
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
We've updated our default application.yml file and you should update your instance's ``application.yml`` accordingly.
More specifically, we bumped the version of YT source plugin.
`Download Red 3.5.18's default application.yml file <https://github.com/Cog-Creators/Red-DiscordBot/releases/download/3.5.18/Red-DiscordBot-3.5.18-default-lavalink-application.yml>`__
End-user changelog
------------------
Changes
*******
- **Core - Dependencies** - Red's dependencies have been bumped (:issue:`6543`)
Fixes
*****
- |cool| **Cogs - Audio** - Fixed recent YT playback issues (:issue:`6542`)
----
Redbot 3.5.17 (2025-03-08)
==========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Flame442`, :ghuser:`Jackenmen`, :ghuser:`karlsbjorn`, :ghuser:`Kowlin`
Read before updating
--------------------
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
We've updated our default application.yml file and you should update your instance's ``application.yml`` accordingly.
More specifically, we bumped the version of YT source plugin.
`Download Red 3.5.17's default application.yml file <https://github.com/Cog-Creators/Red-DiscordBot/releases/download/3.5.17/Red-DiscordBot-3.5.17-default-lavalink-application.yml>`__
End-user changelog
------------------
Changes
*******
- **Core - Dependencies** - Red's dependencies have been bumped (:issue:`6529`, :issue:`6531`)
- **Cogs - Cleanup** - The ``[p]cleanup duplicates`` command now considers more information about the message when determining if it's a duplicate. Notably, messages with polls are ignored and equivalent messages replying to different messages are now not considered duplicates (:issue:`6529`)
- **Cogs - Filter** - The cog now checks forwarded messages for filtered words (:issue:`6529`)
Fixes
*****
- |cool| **Cogs - Audio** - Fixed recent YT playback issues (:issue:`6530`)
- **Cogs - Streams** - Fixed upcoming stream alert showing an incorrect time when Red is hosted on a system using a non-UTC timezone (:issue:`6526`, :issue:`6527`)
Developer changelog
-------------------
Changes
*******
- |cool| **Core - Dependencies** - Bumped ``discord.py`` to version 2.5.2 (:issue:`6529`, :issue:`6531`)
----
Redbot 3.5.16 (2025-02-06)
==========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`Flame442`, :ghuser:`Jackenmen`
This is a hotfix release changing our implementation to prevent crash at startup
when invalid value of global locale/regional format configuration is encountered.
We have seen a few reports of this occurring and we believe that this was caused by
some 3rd-party cog(s) passing invalid values to Red <3.5 i18n APIs as those versions
did not validate the input in some scenarios. During startup, Red will now simply
log a warning, if it encounters incorrect global locale/regional format configuration
and reset it to a known valid value.
----
Redbot 3.5.15 (2025-02-03)
==========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Flame442`, :ghuser:`Jackenmen`, :ghuser:`Kowlin`
Read before updating
--------------------
#. openSUSE Leap 15.5 is no longer supported as it has already reached its end of life.
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
We've updated our default application.yml file and you should update your instance's ``application.yml`` accordingly.
More specifically, we bumped the version of YT source plugin.
`Download Red 3.5.15's default application.yml file <https://github.com/Cog-Creators/Red-DiscordBot/releases/download/3.5.15/Red-DiscordBot-3.5.15-default-lavalink-application.yml>`__
End-user changelog
------------------
Changes
*******
- **Core - Dependencies** - Red's dependencies have been bumped (:issue:`6512`)
- **Core - OS Support** - openSUSE Leap 15.5 is no longer supported as it has already reached its end of life (:issue:`6512`)
- **Cogs - Audio** - The ``[p]audioset logs`` command can now be used in DMs (:issue:`6499`)
- **Cogs - Trivia - Lists** - Added subnet masks in CIDR notations as answers to subnet-related questions in the ``computers`` trivia (:issue:`6495`)
Fixes
*****
- **Core - Bot Commands** - The ``[p]set api`` command no longer errors with long service names (:issue:`6478`, :issue:`6502`)
- |cool| **Cogs - Audio** - Fixed recent YT playback issues (:issue:`6509`, :issue:`6511`)
Developer changelog
-------------------
Changes
*******
- **Core - i18n** - Added `redbot.core.i18n.set_contextual_locale()` and `redbot.core.i18n.set_contextual_regional_format()` functions (:issue:`6022`)
----
Redbot 3.5.14 (2024-12-25)
==========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Ascensionn`, :ghuser:`cswimr`, :ghuser:`Chovin`, :ghuser:`cdaman3141`, :ghuser:`DJTOMATO`, :ghuser:`Flame442`, :ghuser:`japandotorg`, :ghuser:`Jackenmen`, :ghuser:`karlsbjorn`, :ghuser:`Kowlin`, :ghuser:`kpopdev`, :ghuser:`kevin1015wang`, :ghuser:`Kreusada`, :ghuser:`mellow-org`, :ghuser:`palmtree5`, :ghuser:`sravan1946`, :ghuser:`TrustyJAID`
Read before updating
--------------------
#. Following operating systems are no longer supported as they have already reached their end of life:
- Debian 11 (excluding Raspberry Pi OS 11)
- Fedora 39
- macOS 12 (Monterey)
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
We've updated our default application.yml file and you should update your instance's ``application.yml`` accordingly.
More specifically, we bumped the version of YT source plugin.
`Download Red 3.5.14's default application.yml file <https://github.com/Cog-Creators/Red-DiscordBot/releases/download/3.5.14/Red-DiscordBot-3.5.14-default-lavalink-application.yml>`__
End-user changelog
------------------
Additions
*********
- |cool| **Cogs - Mod** - Added new setting (``[p]modset requirereason``) for enforcing reason to be filled in cog's commands (:issue:`6477`)
Changes
*******
- |cool| **Core** - Updated the output from help command to enable use of the new copy to clipboard feature on Discord code blocks to copy the command input (:issue:`6244`)
- **Core** - Updated ID parser used by some (core and 3rd-party) commands to reject IDs that are larger than a Discord ID (snowflake) can be (:issue:`6431`, :issue:`6486`)
- |cool| **Core - Bot Commands** - The ``[p]slash disablecog`` and ``[p]slash enablecog`` commands can now be passed multiple cog names to disable/enable app commands from many cogs at the same time (:issue:`6001`)
- **Core - Dependencies** - Red's dependencies have been bumped (:issue:`6492`)
- **Core - OS Support** - Debian 11, Fedora 39, and macOS 12 (Monterey) are no longer supported as they have already reached end of life (:issue:`6492`)
- **Core - OS Support** - Ubuntu non-LTS version is currently considered unsupported due to lack of support for Python 3.12 from Red (:issue:`6492`)
- **Cogs - Audio** - The ``[p]play`` command will now mention how the URL restrictions can be disabled, if they're currently enabled (:issue:`6348`)
- **Cogs - Audio** - The Lavalink download process now has a separate, larger, timeout than the timeout for startup of the Lavalink process (:issue:`6460`, :issue:`6461`)
- **Cogs - Downloader** - Changed the format of the ``[p]repo list`` command's output to include repo links (:issue:`6284`)
- |cool| **Cogs - Warnings** - The ``[p]warn`` command will now prompt whether to ban the user, if that user has already left the server by the time the command was called (:issue:`6445`, :issue:`6481`)
- **Cogs - Trivia - Lists** - Added variants of the answers without punctuation to the ``harrypotter`` trivia list (:issue:`5889`)
Fixes
*****
- **Core** - Fixed issues with permission handling for user-installable app commands (:issue:`6457`)
- **Core - Bot Commands** - Fixed uncaught error when running ``[p]load locales`` command (:issue:`4623`)
- |cool| **Cogs - Audio** - Fixed various issues with YT playback resulting in "Something broke when playing the track" error (:issue:`6488`, :issue:`6490`)
- **Cogs - Trivia - Lists** - Fixed typos in Golden Glove questions in the ``worldcup`` trivia list (:issue:`6441`)
Developer changelog
-------------------
Additions
*********
- |cool| **Core - Bot Class** - Added `Red.get_app_command_id()` and `Red.get_app_command_mention()` methods for getting app command IDs/mentions from Red's cache (:issue:`5976`, :issue:`6278`)
- **Core - Utils Package** - Added `hyperlink()`, `header()`, and `subtext()` chat formatting functions (:issue:`6102`, :issue:`6444`)
- |cool| **Core - Utils Package** - Added `redbot.core.utils.chat_formatting.rich_markup()` function for generating Discord-compatible code blocks with ANSI formatting using a limited set of `Rich markup <https://rich.readthedocs.io/en/stable/markup.html>`__ (:issue:`5538`)
- **Cogs - Downloader** - Downloader will now replace ``[botname]`` in the install messages with the bot's name, same as is done for command help messages (:issue:`6443`)
Changes
*******
- **Core - Utils Package** - Added support for `SimpleMenu` to customize the select options before sending (:issue:`6455`, :issue:`6480`)
Deprecations
************
- **Core - Utils Package** - Deprecated `SimpleMenu.select_menu` attribute (:issue:`6480`)
Fixes
*****
- **Core** - Fixed the cooldown bypass (enabled by ``[p]bypasscooldowns`` command) not being respected by the ``[p]slash sync`` command (:issue:`6465`)
- **Core - Commands Package** - Updated `RawUserIdConverter` to reject IDs that are larger than a Discord ID (snowflake) can be (:issue:`6431`, :issue:`6486`)
----
Redbot 3.5.13 (2024-08-27)
==========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Guyonsteroids`, :ghuser:`Jackenmen`, :ghuser:`Kowlin`
Read before updating
--------------------
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
We've updated our default application.yml file and you should update your instance's ``application.yml`` accordingly.
More specifically, we bumped the version of YT source plugin.
`Download Red 3.5.13's default application.yml file <https://github.com/Cog-Creators/Red-DiscordBot/releases/download/3.5.13/Red-DiscordBot-3.5.13-default-lavalink-application.yml>`__
End-user changelog
------------------
Changes
*******
- **Core - Dependencies** - Red's dependencies have been bumped (:issue:`6436`)
Fixes
*****
- **Cogs - Audio** - Updated Audio to support planned changes to Discord API scheduled for November (:issue:`6435`)
- **Cogs - Audio** - Fixed YT live stream detection (:issue:`6435`)
- **Cogs - Audio** - Fixed Red erroneously trying to send a message to a notification channel when one is not set (:issue:`6429`)
- **Cogs - Trivia - Lists** - Fixed spelling of Steven Spielberg's first name in the ``entertainment`` trivia list (:issue:`6434`)
----
Redbot 3.5.12 (2024-08-08)
==========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Jackenmen`
Read before updating
--------------------
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
We've updated our default application.yml file and you should update your instance's ``application.yml`` accordingly.
More specifically, we bumped the version of YT source plugin.
`Download Red 3.5.12's default application.yml file <https://github.com/Cog-Creators/Red-DiscordBot/releases/download/3.5.12/Red-DiscordBot-3.5.12-default-lavalink-application.yml>`__
End-user changelog
------------------
Fixes
*****
- **Cogs - Audio** - Fixed the ``[p]llset secured`` command failing to send the response message (:issue:`6423`)
- **Cogs - Audio** - Fixed some age-restricted YT tracks not playing (:issue:`6424`)
----
Redbot 3.5.11 (2024-08-04)
==========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`anopem`, :ghuser:`Flame442`, :ghuser:`japandotorg`, :ghuser:`Jackenmen`, :ghuser:`Kowlin`, :ghuser:`palmtree5`, :ghuser:`yamikaitou`
Read before updating
--------------------
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
We've updated our default application.yml file and you should update your instance's ``application.yml`` accordingly.
More specifically, we bumped the version of YT source plugin and added new plugin configuration.
`Download Red 3.5.11's default application.yml file <https://github.com/Cog-Creators/Red-DiscordBot/releases/download/3.5.11/Red-DiscordBot-3.5.11-default-lavalink-application.yml>`__
End-user changelog
------------------
Changes
*******
- **Core** - Menus sent in ephemeral messages will now be deleted the same way menus in normal messages do (:issue:`6304`)
- **Core - Dependencies** - Red's dependencies have been bumped (:issue:`6417`)
Fixes
*****
- **Core - RPC** - RPC is now forcefully shut down after 2 minutes, if it cannot shutdown gracefully (:issue:`6391`, :issue:`6412`)
- |cool| **Cogs - Audio** - Fixed some of the recent YT playback issues (:issue:`6414`, :issue:`6415`)
- **Cogs - Mutes** - Fixed the cog failing to unmute a user, if they were muted by someone who no longer has permissions to mute that user (:issue:`6376`, :issue:`6411`)
- **Cogs - Streams** - Fixed the viewer count for Twitch streams (:issue:`6413`)
Developer changelog
-------------------
Additions
*********
- **Core - App Commands Package** - Added `app_commands.UserFeedbackCheckFailure` exception allowing the cog creators to return non-default error message when the check fails (:issue:`6397`)
Documentation changes
---------------------
Changes
*******
- Updated instructions for installing the development version of Red in `guide_cog_creation` (:issue:`6408`)
- Updated the contents of the ``red.plist`` file in the `autostart_mac` document to use no resource limitations, same as regular applications (:issue:`6416`)
----
Redbot 3.5.10 (2024-07-10)
==========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Flame442`, :ghuser:`Jackenmen`, :ghuser:`Kowlin`, :ghuser:`SeaswimmerTheFsh`, :ghuser:`TrustyJAID`, :ghuser:`yamikaitou`
Read before updating
--------------------
#. This release fixes a security issue in one of the APIs we provide for 3rd-party cog creators. See `Security changelog below <important-3510-1>` for more information.
#. Following operating systems are no longer supported as they have already reached their end of life:
- CentOS 7
- CentOS Stream 8
- Fedora 38
- versions of RHEL/Alma Linux/Oracle Linux/Rocky Linux 8 older than 8.8
- versions of RHEL/Alma Linux/Oracle Linux/Rocky Linux 9 older than 9.2
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
We've updated our default application.yml file and you should update your instance's ``application.yml`` accordingly.
More specifically, we switched from using the built-in YT source to YT source plugin.
`Download Red 3.5.10's default application.yml file <https://github.com/Cog-Creators/Red-DiscordBot/releases/download/3.5.10/Red-DiscordBot-3.5.10-default-lavalink-application.yml>`__
End-user changelog
------------------
.. _important-3510-1:
Security
********
- **Core** - Fixed incorrect authorization in one of the utilities provided to 3rd-party cog creators (`commands.can_manage_channel()`) resulting in anyone being authorized to run a command using it, if the command has no other permission controls. None of the core commands or core cogs are affected. The maintainers of the project are not aware of any public 3rd-party cog utilizing this API at the time of writing this changelog. `Full security advisory can be found on our GitHub <https://github.com/Cog-Creators/Red-DiscordBot/security/advisories/GHSA-5jq8-q6rj-9gq4>`__.
Additions
*********
- **Core - Bot Commands** - Added ``[p]set bot banner`` command for setting the bot's banner (:issue:`6321`, :issue:`6401`)
Changes
*******
- **Core** - Red's ``--team-members-are-owners`` flag now only considers Team Owner, Admins, and Developers as bot owners (:issue:`6401`)
- **Core - Dependencies** - Red's dependencies have been bumped (:issue:`6402`)
- **Cogs - Audio** - Updated the cog to configure managed Lavalink node to use YT source plugin instead of the built-in, no longer supported, implementation (:issue:`6373`)
- **Cogs - Filter** - The cog now checks poll contents and attachment alt text for filtered words (:issue:`6401`)
Fixes
*****
- **Core** - Fixed command autocompletion not showing any proper result (error message) when bot's global checks (channel/server ignores, allowlist/blocklist) do not pass (:issue:`6374`, :issue:`6375`)
- **Cogs - Audio** - Fixed one of the recent YT playback issues (:issue:`6373`)
Developer changelog
-------------------
Changes
*******
- |cool| **Core - Dependencies** - Bumped ``discord.py`` to version 2.4.0 (:issue:`6401`)
Documentation changes
---------------------
Additions
*********
- Added Ubuntu 24.04 install guide (:issue:`6364`)
Changes
*******
- Bumped Python version used by Arch Linux, RHEL 8, and RHEL 9 install guides to 3.11 (:issue:`6386`)
- Removed a mention of the Atom editor from the list of the recommended editor now that it's discontinued (:issue:`6388`)
Removals
********
- Removed all mentions of pyenv now that the last OS using it (CentOS 7) is no longer supported (:issue:`6386`)
Fixes
*****
- Fixed Java instructions in macOS install guide (:issue:`6368`)
- Fixed list of required ``info.json`` keys from the `guide_cog_creators` document (:issue:`6382`)
----
Redbot 3.5.9 (2024-04-21)
=========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`giplgwm`, :ghuser:`Jackenmen`, :ghuser:`Kuro-Rui`, :ghuser:`Kowlin`, :ghuser:`palmtree5`, :ghuser:`TrustyJAID`, :ghuser:`Zephyrkul`
Read before updating
--------------------
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
Red 3.5.9 uses a new Lavalink jar that you will need to manually update from `our GitHub <https://github.com/Cog-Creators/Lavalink-Jars/releases/tag/3.7.11%2Bred.3>`__.
End-user changelog
------------------
Fixes
*****
- **Core** - Fixed inaccuracies in error messages shown when the user passes a time duration outside accepted range (:issue:`6357`)
- **Core** - Commands that ask the user to "Type ``more`` to continue" when they return long output will now typically wait for 60 seconds rather than just 15 (:issue:`6346`, :issue:`6352`)
- |cool| **Cogs - Audio** - Resolved recent issues where the player would be stuck at 0:00 on some tracks (:issue:`6358`)
- **Cogs - Mutes** - The Mutes cog will no longer erroneously accept very large values (i.e. hundreds of years) for mute durations (:issue:`6353`)
- **Cogs - Mutes** - To avoid ambiguity, the Mutes cog will now parse the time only when it's placed at the beginning, the end, or directly after ``t=``/``time=`` prefix in the mute command arguments (:issue:`6274`, :issue:`6349`)
- **Cogs - Streams** - The schedule announcements for YT streams will now use relative Discord timestamps (:issue:`6257`, :issue:`6264`)
Developer changelog
-------------------
Changes
*******
- **Core - Commands Package** - Functions and converters for parsing text into `datetime.timedelta` or `dateutil.relativedelta.relativedelta` in the `redbot.core.commands.converter` package now support negative values when ``minimum`` parameter is set accordingly (:issue:`6349`)
- **Core - Utils Package** - The `redbot.core.utils.chat_formatting.humanize_timedelta()` function now allows specifying the maximum number of different units that will be present in the final string with the ``maximum_units`` parameter (:issue:`6350`)
- **Core - Utils Package** - The `redbot.core.utils.chat_formatting.humanize_timedelta()` function now supports formatting negative `datetime.timedelta` instances. New ``negative_format`` parameter was added to allow specifying a different way of formatting negative `datetime.timedelta` instances (:issue:`6350`)
Documentation changes
---------------------
Fixes
*****
- Updated links to the Lavalink repository (:issue:`6356`)
----
Redbot 3.5.8 (2024-04-01)
=========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Flame442`, :ghuser:`Jackenmen`, :ghuser:`Kreusada`, :ghuser:`TrustyJAID`
Read before updating
--------------------
#. Server-wide mutes in the Mutes cog can no longer be performed using channel permissions (overrides). Instead, the cog will now use Discord's native server timeout functionality when a mute role is not set. Role mutes and channel-specific mutes are not affected.
Red 3.5.7 and lower allowed usage of channel permissions (overrides) for server-wide mutes when ``[p]muteset forcerole`` setting was explicitly disabled and no mute role was set for the server. This behavior is no longer available and now, when mute role is not set, server-wide mutes will be performed using Discord's native server timeouts.
If you were one of the few users that chose to use channel permissions (overrides) for server-wide mutes, please note that the existing server mutes will now be considered channel-specific mutes and can only be removed with ``[p]channelunmute`` (and will be automatically removed after timeout elapses, if they have one set). If you want to quickly remove all channel-specific mutes (that were previously server-wide mutes) for a user, you can use the hidden ``[p]forceunmute <user>`` command that has been provided to ease the migration.
#. Information for Audio users that are using an external Lavalink instance (if you don't know what that is, you should skip this point):
Red 3.5.8 uses a new Lavalink jar that you will need to manually update from `our GitHub <https://github.com/Cog-Creators/Lavalink-Jars/releases/tag/3.7.11%2Bred.2>`__.
End-user changelog
------------------
Additions
*********
- |cool| **Cogs - Mutes** - Added support for Discord's native server timeouts. The cog will now use those when a mute role is not set or, when the new ``[p]timeout`` command is used (:issue:`5604`)
- **Cogs - Trivia** - Trivia lists can now have a description as documented in :ref:`guide_trivia_list_creation` (:issue:`5897`)
- |cool| **Cogs - Trivia** - Added ``[p]trivia info`` command for getting information about the specified Trivia list, including its setting overrides (:issue:`3978`, :issue:`5897`)
Changes
*******
- **Core - Bot Commands** - The ``[p]addpath`` command will now detect potentially incorrect paths and prompt for confirmation (:issue:`6330`)
- **Core - Bot Commands** - The ``[p]addpath`` command will now error out when the user tries adding a path that's part of the core path or instance's data path (:issue:`6330`)
- **Core - Dependencies** - Red's dependencies have been bumped (:issue:`6333`)
- **Cogs - Audio** - The cog will now log the reason for Lavalink.jar being re-downloaded (:issue:`6334`)
- |cool| **Cogs - Mutes** - The ``[p]activemutes`` command will now use menus for pagination (:issue:`6266`)
Removals
********
- **Cogs - Mutes** - Server-wide mutes can no longer be performed using channel permissions (overrides). Server timeouts or mute role can be used instead (:issue:`5604`)
- **Cogs - Mutes** - The ``[p]muteset forcerole`` command and the setting it adjusted has been removed. Server timeouts will now be used for a server, if it has no mute role set (:issue:`5604`)
Fixes
*****
- |cool| **Cogs - Audio** - Resolves recent issues where the wrong video was served for YT playback (:issue:`6337`, :issue:`6340`)
- **Cogs - Audio** - Fixed Lavalink.jar downloading for RC and Red-specific versions (:issue:`6334`)
Documentation changes
---------------------
Additions
*********
- |cool| Added install instructions for Amazon Linux 2023 (:issue:`6331`)
----
Redbot 3.5.7 (2024-03-24)
=========================
| Thanks to all these amazing people that contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`Flame442`, :ghuser:`karlsbjorn`, :ghuser:`Jackenmen`
This is a hotfix release fixing a bug with Red's reaction-based menus introduced in the previous release.
End-user changelog
------------------
Fixes
*****
- **Core** - Fixed an issue with Red's reaction-based menus *with custom controls* not working properly (:issue:`6324`)
- **Core - Bot Commands** - Updated supported image formats in ``[p]set bot avatar``'s error messages to include GIFs (:issue:`6323`)
----
Redbot 3.5.6 (2024-03-22)
=========================
@@ -63,12 +753,12 @@ Changes
- **Core - Utils Package** - The `menu()` utility function received a new `provisional <developer-guarantees-exclusions>` ``user`` parameter for defining who can interact with the menu (instead of the default ``ctx.author``) (:issue:`4913`)
If no issues arise, we plan on including this parameter under developer guarantees
in the first release made after 2024-05-18.
in the first release made after 2024-05-24.
- **Core - Utils Package** - The `SimpleMenu.start()` method received a new `provisional <developer-guarantees-exclusions>` ``user`` parameter for defining who can interact with the menu (instead of the default ``ctx.author``) (:issue:`4913`)
If no issues arise, we plan on including this parameter under developer guarantees
in the first release made after 2024-05-18.
in the first release made after 2024-05-24.
Fixes
*****

View File

@@ -5,7 +5,7 @@
<p class="first admonition-title">Warning</p>
<p class="last">
This document is for Red's development version, which can be significantly different from previous releases.
If you're a regular user, you should read the <a href="{{ dict(versions)['stable'] }}">Red documentation for the current stable release</a>.
If you're a regular user, you should read the <a href="/{{ rtd_language }}/stable/">Red documentation for the current stable release</a>.
</p>
</div>
{% endif %}

View File

@@ -57,6 +57,8 @@ Paste the following and replace the following:
<string>username</string>
<key>InitGroups</key>
<true/>
<key>ProcessType</key>
<string>Interactive</string>
</dict>
</plist>

View File

@@ -28,10 +28,6 @@ Next, your python :code:`path` can be fetched with the following commands:
$ source ~/redenv/bin/activate
(redenv) $ /usr/bin/which python
# If redbot is installed in a pyenv virtualenv
$ pyenv shell <virtualenv_name>
(redenv) $ pyenv which python
Then create the new service file:
:code:`sudo nano /etc/systemd/system/red@.service`

View File

@@ -17,7 +17,7 @@ find detailed docs about usage and commands.
You can see additional help for any command in this guide by using ``[p]help`` with the
command name, like ``[p]help playlist append``.
In this guide, you will see references to "Lavalink" or the "Lavalink.jar". `Lavalink <https://github.com/freyacodes/Lavalink/>`_ is the
In this guide, you will see references to "Lavalink" or the "Lavalink.jar". `Lavalink <https://github.com/lavalink-devs/Lavalink/>`_ is the
Java-based audio backend we use to be able to play music through the bot. Most users will
not have to worry much about Lavalink or what it is, as Audio manages this process for you
by default. Advanced users can read more about Lavalink and special cases under the
@@ -551,7 +551,7 @@ uses OpenJDK 17 in the managed Lavalink configuration. It can be installed by ru
sudo apt install openjdk-17-jre-headless -y
Otherwise, Lavalink works well with most versions of Java 11, 13, 15, 16, 17, and 18. Azul
Zulu builds are suggested, see `here <https://github.com/freyacodes/Lavalink/#requirements>`__ for more information.
Zulu builds are suggested, see `here <https://github.com/lavalink-devs/Lavalink/#requirements>`__ for more information.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Setting Up The Lavalink Folder
@@ -583,7 +583,7 @@ the ``cd lavalink`` command in the previous section, you can run the following c
.. code-block:: sh
curl https://raw.githubusercontent.com/freyacodes/Lavalink/master/LavalinkServer/application.yml.example > application.yml
curl https://raw.githubusercontent.com/lavalink-devs/Lavalink/master/LavalinkServer/application.yml.example > application.yml
curl -LOz Lavalink.jar https://github.com/Cog-Creators/Lavalink-Jars/releases/latest/download/Lavalink.jar
If you did it properly, the files ``Lavalink.jar`` and ``application.yml`` will show up when we run ``ls``, the Linux command

View File

@@ -2867,7 +2867,7 @@ Supports either an attachment or an image URL.
**Examples:**
- ``[p]set bot avatar`` - With an image attachment, this will set the avatar.
- ``[p]set bot avatar`` - Without an attachment, this will show the command help.
- ``[p]set bot avatar https://links.flaree.xyz/k95`` - Sets the avatar to the provided url.
- ``[p]set bot avatar https://avatars.githubusercontent.com/u/23690422`` - Sets the avatar to the provided url.
**Arguments:**
- ``[url]`` - An image url to be used as an avatar. Leave blank when uploading an attachment.
@@ -2895,6 +2895,57 @@ Removes Red's avatar.
**Example:**
- ``[p]set bot avatar remove``
.. _core-command-set-bot-banner:
""""""""""""""
set bot banner
""""""""""""""
.. note:: |owner-lock|
**Syntax**
.. code-block:: none
[p]set bot banner [url]
**Description**
Sets Red's banner
Supports either an attachment or an image URL.
**Examples:**
- ``[p]set bot banner`` - With an image attachment, this will set the banner.
- ``[p]set bot banner`` - Without an attachment, this will show the command help.
- ``[p]set bot banner https://opengraph.githubassets.com`` - Sets the banner to the provided url.
**Arguments:**
- ``[url]`` - An image url to be used as an banner. Leave blank when uploading an attachment.
.. _core-command-set-bot-banner-remove:
"""""""""""""""""""""
set bot banner remove
"""""""""""""""""""""
.. note:: |owner-lock|
**Syntax**
.. code-block:: none
[p]set bot banner remove
.. tip:: Alias: ``set bot banner clear``
**Description**
Removes Red's banner.
**Example:**
- ``[p]set bot banner remove``
.. _core-command-set-bot-custominfo:
""""""""""""""""""
@@ -4134,7 +4185,7 @@ slash disablecog
.. code-block:: none
[p]slash disablecog <cog_name>
[p]slash disablecog <cog_names...>
**Description**
@@ -4144,7 +4195,7 @@ This command does NOT sync the enabled commands with Discord, that must be done
with ``[p]slash sync`` for commands to appear in users' clients.
**Arguments:**
- ``<cog_name>`` - The cog to disable commands from. This argument is case sensitive.
- ``<cog_names>`` - The cogs to disable commands from. This argument is case sensitive.
.. _core-command-slash-enable:
@@ -4179,7 +4230,7 @@ slash enablecog
.. code-block:: none
[p]slash enablecog <cog_name>
[p]slash enablecog <cog_names...>
**Description**
@@ -4189,7 +4240,7 @@ This command does NOT sync the enabled commands with Discord, that must be done
with ``[p]slash sync`` for commands to appear in users' clients.
**Arguments:**
- ``<cog_name>`` - The cog to enable commands from. This argument is case sensitive.
- ``<cog_names>`` - The cogs to enable commands from. This argument is case sensitive.
.. _core-command-slash-list:

View File

@@ -253,7 +253,23 @@ modset dm
.. code-block:: none
[p]modset dm [enabled]
[p]modset dm
**Description**
Settings for messaging the user when being kicked or banned.
.. _mod-command-modset-dm-sendmessage:
"""""""""""""""""""""
modset dm sendmessage
"""""""""""""""""""""
**Syntax**
.. code-block:: none
[p]modset dm sendmessage [enabled]
**Description**
@@ -266,6 +282,94 @@ and reason as to why they were kicked/banned.
* ``[enabled]``: Whether a message should be sent to a user when they are kicked/banned. |bool-input|
.. _mod-command-modset-banshowextrafield:
"""""""""""""""""""""""""""
modset dm banshowextrafield
"""""""""""""""""""""""""""
**Syntax**
.. code-block:: none
[p]modset dm banshowextrafield [enabled]
**Description**
Toggle whether to show an extra customizable field when banning.
This can be used to add additional information for the banned user, such as a ban appeal link.
**Arguments**
* ``[enabled]``: If an extra customizable embed field should appear when banning. |bool-input|
.. _mod-command-modset-banextrafieldtitle:
""""""""""""""""""""""""""""
modset dm banextrafieldtitle
""""""""""""""""""""""""""""
**Syntax**
.. code-block:: none
[p]modset dm banextrafieldtitle [title]
**Description**
Set the title for the optional extra embed on ban.
Cannot be over 252 characters long.
**Arguments**
* ``[title]``: The title of the embed field. Can by any string of text under 252 charcters long.
.. _mod-command-modset-banextrafieldcontents:
"""""""""""""""""""""""""""""""
modset dm banextrafieldcontents
"""""""""""""""""""""""""""""""
**Syntax**
.. code-block:: none
[p]modset dm banextrafieldcontents [contents]
**Description**
Set the contents for the optional extra embed on ban
Cannot be over 1024 characters long.
**Arguments**
* ``[contents]``: The contents of the embed field. Can by any string of text under 1024 charcters long.
.. _mod-command-modset-requirereason:
""""""""""""""""""""
modset requirereason
""""""""""""""""""""
**Syntax**
.. code-block:: none
[p]modset requirereason [enabled]
**Description**
Toggle whether a reason is required for mod actions.
If this is enabled, the bot will require a reason to be provided for all mod actions.
**Arguments**
* ``[enabled]``: Whether a reason should be required when performing mod actions. |bool-input|
.. _mod-command-modset-hierarchy:
""""""""""""""""

View File

@@ -145,28 +145,6 @@ If no time interval is provided this will be cleared.
* ``[time]``: The length of time for a default mute.
.. _mutes-command-muteset-forcerole:
"""""""""""""""""
muteset forcerole
"""""""""""""""""
.. note:: |owner-lock|
**Syntax**
.. code-block:: none
[p]muteset forcerole <true_or_false>
**Description**
Whether or not to force role only mutes on the bot.
**Arguments**
* ``<true_or_false>``: Whether to enable or disable this setting, must provide ``true`` or ``false``.
.. _mutes-command-muteset-makerole:
""""""""""""""""
@@ -238,8 +216,8 @@ muteset role
Sets the role to be applied when muting a user.
If no role is setup the bot will attempt to mute a user by setting
channel overwrites in all channels to prevent the user from sending messages.
If no role is setup the bot will attempt to mute a user
by utilizing server timeouts.
.. Note::
@@ -362,6 +340,34 @@ Unmute a user in this channel (or in the parent of this thread).
* ``<users...>``: A space separated list of usernames, ID's, or mentions.
* ``[reason]``: The reason for the unmute.
.. _mutes-command-timeout:
^^^^^^^
timeout
^^^^^^^
.. note:: |mod-lock|
**Syntax**
.. code-block:: none
[p]timeout <users...> [time_and_reason]
**Description**
Timeout users.
Examples:
* ``[p]timeout @member1 @member2 spam 5 hours``
* ``[p]timeout @member1 3 days``
**Arguments**
* ``<users...>``: A space separated list of usernames, ID's, or mentions.
* ``[time_and_reason]``: The time and reason. If no time is provided, the mute will use the default set time or give an error if this hasn't been configured.
.. _mutes-command-voicemute:
^^^^^^^^^
@@ -372,7 +378,7 @@ voicemute
.. code-block:: none
[p]voicemute <users...> [reason]
[p]voicemute <users...> [time_and_reason]
**Description**

View File

@@ -334,6 +334,26 @@ will use all of the specified lists to select questions from.
- ``<categories...>`` The category to play. Can be multiple.
.. _trivia-command-trivia-info:
^^^^^^^^^^^
trivia info
^^^^^^^^^^^
**Syntax**
.. code-block:: none
[p]trivia info <category>
**Description**
Get information about a trivia category.
**Arguments**
* ``<category>``: The category to get the information for.
.. _trivia-command-trivia-leaderboard:
^^^^^^^^^^^^^^^^^^

View File

@@ -139,6 +139,9 @@ html_context = {
"github_user": "Cog-Creators",
"github_repo": "Red-DiscordBot",
"github_version": "V3/develop",
"version_slug": os.environ.get("READTHEDOCS_VERSION", ""),
"rtd_language": os.environ.get("READTHEDOCS_LANGUAGE", ""),
"READTHEDOCS": os.environ.get("READTHEDOCS", "") == "True",
}
# Add any paths that contain custom static files (such as style sheets) here,
@@ -250,7 +253,10 @@ intersphinx_mapping = {
extlinks = {
"dpy_docs": (f"{dpy_docs_url}%s", None),
"issue": ("https://github.com/Cog-Creators/Red-DiscordBot/issues/%s", "#%s"),
"ghuser": ("https://github.com/%s", "@%s"),
# below URL redirects to user page, if they don't have GH Sponsors set up,
# while allowing us to direct readers directly at a sponsorship opportunity,
# if they do
"ghuser": ("https://github.com/sponsors/%s", "@%s"),
}
# Doctest

View File

@@ -0,0 +1,13 @@
.. red app_commands module documentation
====================
App Commands Package
====================
This package acts almost identically to :doc:`discord.ext.app_commands <dpy:interactions/api>`; i.e.
all of the attributes from discord.py's are also in ours.
Some of these attributes, however, have been slightly modified, while others have been added to
extend functionalities used throughout the bot, as outlined below.
.. autoclass:: redbot.core.app_commands.UserFeedbackCheckFailure
:members:

View File

@@ -47,6 +47,9 @@ extend functionalities used throughout the bot, as outlined below.
.. autoclass:: redbot.core.commands.DMContext
.. autoclass:: redbot.core.commands.UserFeedbackCheckFailure
:members:
.. automodule:: redbot.core.commands.requires
:members: PrivilegeLevel, PermState, Requires

View File

@@ -155,6 +155,22 @@ Here is an example of the :code:`async with` syntax:
blah.append(new_blah)
await ctx.send("The new blah value has been added!")
There is also a :py:meth:`Group.all` method. This will return all the stored data associated
with a specific config group as a :py:class:`dict`. By negating the need to excessively call config,
this method can be particularly useful when multiple values are to be retrieved from the same group.
Here is an example of :py:meth:`Group.all` usage:
.. code-block:: python
@commands.command()
async def getall(self, ctx):
all_global_data = await self.config.all()
await ctx.send("Foobar is {foobar}, foo baz is {foo_baz}".format(
foobar=str(all_global_data["foobar"]),
foo_baz=str(all_global_data["foo"]["baz"])
))
.. important::
@@ -398,7 +414,7 @@ We're responsible pet owners here, so we've also got to have a way to feed our p
# We could accomplish the same thing a slightly different way
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)
await ctx.send("Your pet is now at {}/100 hunger!".format(new_hunger))
Of course, if we're less than responsible pet owners, there are consequences::
@@ -481,7 +497,7 @@ Config prioritizes being a safe data store without developers needing to
know how end users have configured their bot.
This does come with some performance costs, so keep the following in mind when choosing to
develop using config
develop using config.
* Config use in events should be kept minimal and should only occur
after confirming the event needs to interact with config

View File

@@ -14,36 +14,96 @@ Basic Usage
.. code-block:: python
from redbot.core import commands
from redbot.core.i18n import Translator, cog_i18n
from redbot.core.i18n import Translator, cog_i18n, set_contextual_locales_from_guild
# The translator should be defined in the module scope, with __file__ as the second parameter
_ = Translator("ExampleCog", __file__)
# This decorator must be used for cog and command docstrings to be translated!
@cog_i18n(_)
class ExampleCog:
"""description"""
class ExampleCog(commands.Cog):
"""Cog description"""
def __init__(self, bot):
self.bot = bot
@commands.command()
async def mycom(self, ctx):
"""command description"""
await ctx.send(_("This is a test command"))
"""Command description"""
# Correct way to translate strings:
await ctx.send(_("This is a test command run by {author}!").format(author=ctx.author.display_name))
# !!! Do not do this - String interpolation should happen after translation
await ctx.send(_("This is a test command run by {author}!".format(author=ctx.author.display_name)))
# !!! Do not use f-strings - String interpolation should happen after translation
await ctx.send(_(f"This is a test command run by {ctx.author.display_name}!"))
@commands.Cog.listener()
async def on_message(self, message):
# In non-command locations, you must manually call this method for guild locale settings to apply
await set_contextual_locales_from_guild(self.bot, message.guild)
if message.author.bot:
return
await message.channel.send(_("This is a non command with translation support!"))
--------
Tutorial
--------
After making your cog, generate a :code:`messages.pot` file
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Preparing your cog for translations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
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.
The first step to adding translations to your cog is to add Red's internationalization framework
to the strings in your cog. The first step is to instantiate an instance of
`redbot.core.i18n.Translator` just after the imports in each file. This object is traditionally
stored in the variable ``_`` to reduce its character count and visual impact on the code. Next,
add the `redbot.core.i18n.cog_i18n` decorator to your cog class. This will allow docstrings of
the class and its commands to be translated. Every user-facing string that is not a docstring
should then be wrapped by the Translator object. If variables are included in a string,
``.format()`` must be used, and should be called after the translation function call. This is
because ``.format()`` within the translation function call and f-strings cause the interpolation
to happen **before** the translation is applied. The translation logic needs to match the template
string to translate it, and will be unable to successfully match after interpolation occurs.
Finally, any non-command portions of your code, including listeners, tasks, and views, should call
`redbot.core.i18n.set_contextual_locales_from_guild` prior to translating any strings, as only
commands are able to implicitly determine which guild's configured locale to use. See the example
above for the exact recommended syntax.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Generating a messages.pot file
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A ``messages.pot`` file is a template for translating all of the strings in your cog. It should
be generated using ``redgettext`` - a modified version of ``pygettext`` for use with Red cogs.
You can install ``redgettext`` by running :code:`pip install redgettext` in your development
environment.
Once you have ``redgettext`` installed, you will now need to run
:code:`python -m redgettext -c [path_to_cog_folder]`
This will generate a ``messages.pot`` file in ``path_to_cog_folder/locales``. This file will
contain all strings to be translated, including docstrings.
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`)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Creating language specific translations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can now use a tool like `poedit
<https://poedit.net/>`_ to translate the strings in your messages.pot file.
<https://poedit.net/>`_ to translate the strings in your ``messages.pot`` file.
Alternatively, you can use any text editor to manually create translations. To do this, first
create a copy of the ``messages.pot`` file in the same folder, and name the copy
``LANGUAGE-CODE.po``, where ``LANGUAGE-CODE`` is a five character language code supported by
``[p]set locale``. Open the copy in your text editor of choice. This file contains the strings
in your cog prefixed by ``msgid`` and an empty string for you to apply translations prefixed by
``msgstr``. The original string should be translated to the target language by modifying the
associated ``msgstr``. Any variables within curly braces should **not** be translated to avoid
breaking the code when translations are applied. If keyword arguments were used in ``.format()``
calls, it may be safe to re-order variables if the grammer of the language requires doing so.
-------------
API Reference
@@ -51,4 +111,4 @@ API Reference
.. automodule:: redbot.core.i18n
:members:
:special-members: __call__
:special-members: __call__, __init__

View File

@@ -282,7 +282,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 22.04 LTS**.
you're a beginner, we recommend **Ubuntu 24.04 LTS**.
For Raspberry Pi users, just install `Raspbian
<https://www.raspberrypi.org/software/>`_ on a micro-SD card.

View File

@@ -31,7 +31,7 @@ Open a terminal or command prompt and type one of the following
.. note::
To install the development version, replace ``Red-DiscordBot`` in the above commands with the
link below. **The development version of the bot contains experimental changes. It is not
value below. **The development version of the bot contains experimental changes. It is not
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
@@ -40,7 +40,7 @@ Open a terminal or command prompt and type one of the following
.. code-block:: none
git+https://github.com/Cog-Creators/Red-DiscordBot@V3/develop#egg=Red-DiscordBot
Red-DiscordBot @ https://github.com/Cog-Creators/Red-DiscordBot/tarball/V3/develop
(Windows users may need to use :code:`py -3.8` or :code:`python` instead of :code:`python3.8`)
@@ -55,7 +55,7 @@ the purposes of this example, we'll call this :code:`mycog`).
In this folder, create three files: :code:`__init__.py`,
:code:`mycog.py`, and :code:`info.json`. Open the folder in
a text editor or IDE (examples include `Sublime Text 3 <https://www.sublimetext.com/>`_,
`Visual Studio Code <https://code.visualstudio.com/>`_, `Atom <https://atom.io/>`_, and
`Visual Studio Code <https://code.visualstudio.com/>`_, and
`PyCharm <http://www.jetbrains.com/pycharm/>`_).
.. attention::
@@ -147,7 +147,7 @@ have successfully created a cog!
------ __init__.py
------ coolcog.py
You would then use :code:`[p]addpath D:\red-cogs` to add the path
You would then use :code:`[p]addpath D:\\red-cogs` to add the path
and then you can use :code:`[p]load mycog` or :code:`[p]load coolcog`
to load them

View File

@@ -41,17 +41,16 @@ Any Cog Creator that does not follow these requirements will have their repo rem
- Repo-wide ``info.json`` file with the keys
- ``author``
- ``name``
- ``short``
- ``description``
- Cog ``info.json`` files with the keys
- ``author``
- ``name``
- ``short``
- ``requirements`` (if applicable)
- ``description``
- ``min_python_version`` (if applicable)
See `info-json-format` for more information on how to set up ``info.json`` files.

View File

@@ -47,7 +47,7 @@ Keys common to both repo and cog info.json (case sensitive)
is installed or a repo is added
.. tip:: You can use the ``[p]`` key in your string to use the prefix
used for installing.
used for installing, and ``[botname]`` to show the bot's username.
- ``short`` (string) - A short description of the cog or repo. For cogs, this info
is displayed when a user executes ``[p]cog list``

View File

@@ -41,12 +41,33 @@ If there are multiple authors, we can separate them with commas.
AUTHOR: Red, Rojo, Rouge
-----------------
Description Field
-----------------
We can also add an optional ``DESCRIPTION`` to our trivia list, which
will show from the output of ``[p]trivia info <category>``. The
description should indicate to the user what the trivia list is
about and what kind of questions they can expect to face.
For example, if you were writing a logo quiz trivia list, you could
create a description like this:
.. code-block:: yaml
AUTHOR: Kreusada
DESCRIPTION: >-
A quiz to test your logo knowledge to the limit. This trivia
will send image URLs and ask you to identify the company's name
from the logo that is sent.
---------------------
Questions and Answers
---------------------
Writing questions and answers is simple. Once you've finished your
``AUTHOR`` field, you can move on to your questions just below.
``AUTHOR`` field and ``DESCRIPTION`` field, you can move on to your questions
just below.
Questions should consist of at least one answer, with other
possible answers included if necessary. You must put a colon at the end
@@ -98,6 +119,7 @@ As you've added more questions, your file should look something like this:
.. code-block:: yaml
AUTHOR: Red
DESCRIPTION: A general quiz to test your knowledge.
How many days are there in a regular year?:
- 365
- three hundred and sixty five

View File

@@ -16,6 +16,17 @@ For Developers
Removals
~~~~~~~~
``SimpleMenu.select_menu`` attribute
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. deprecated-removed:: 3.5.14 60
The `SimpleMenu.select_menu` attribute has been deprecated.
Any behaviour enabled by the usage of this attribute should no longer be depended on.
If you need this for something and cannot replace it with the other functionality,
create an issue on Red's issue tracker.
Downloader's shared libraries
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@@ -71,6 +71,7 @@ Welcome to Red - Discord Bot's documentation!
framework_bot
framework_checks
framework_commands
framework_app_commands
framework_config
framework_datamanager
framework_events

View File

@@ -1,19 +0,0 @@
To install/update pyenv, run the following command:
.. prompt:: bash
command -v pyenv && pyenv update || curl https://pyenv.run | bash
After this command, you will see a warning about 'pyenv' not being in the load path. To address this,
you should run these commands:
.. prompt:: bash
profile=$([ -n "$ZSH_VERSION" ] && echo ~/.zprofile || ([ -f ~/.bash_profile ] && echo ~/.bash_profile || echo ~/.profile))
rcfile=$([ -n "$ZSH_VERSION" ] && echo ~/.zshrc || echo ~/.bashrc)
printf '%s\n%s\n%s\n' 'export PYENV_ROOT="$HOME/.pyenv"' 'export PATH="$PYENV_ROOT/bin:$PATH"' "$([ -f "$profile" ] && cat "$profile")" > "$profile"
echo 'eval "$(pyenv init --path)"' >> "$profile"
echo 'eval "$(pyenv init -)"' >> "$rcfile"
echo 'eval "$(pyenv virtualenv-init -)"' >> "$rcfile"
Then **log out and log back in** and run the following command:

View File

@@ -1,44 +0,0 @@
------------------------------
Creating a Virtual Environment
------------------------------
.. tip::
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.
**************************
Using ``pyenv virtualenv``
**************************
Using ``pyenv virtualenv`` saves you the headache of remembering where you installed your virtual
environments. This option is only available if you installed Python with pyenv.
First, ensure your pyenv interpreter is set to python 3.8.1 or greater with the following command:
.. prompt:: bash
pyenv version
Now, create a virtual environment with the following command:
.. prompt:: bash
pyenv virtualenv <name>
Replace ``<name>`` with whatever you like. If you ever forget what you named it,
you can always use the command ``pyenv versions`` to list all virtual environments.
Now activate your virtualenv with the following command:
.. prompt:: bash
pyenv shell <name>
.. important::
You must activate the virtual environment with the above command every time you open a new
shell to run, install or update Red. You can check out other commands like ``pyenv local`` and
``pyenv global`` if you wish to keep the virtualenv activated all the time.

View File

@@ -6,16 +6,14 @@
Installing the pre-requirements
-------------------------------
Red Hat Enterprise Linux (RHEL) 8.6-8.x and its derivatives have all required packages available in official repositories.
Red Hat Enterprise Linux (RHEL) 8.10 and its derivatives have all required packages available in official repositories.
Install them with dnf:
.. TODO: Use Python 3.11 once RHEL 8.6 goes EOL in 2024.
.. prompt:: bash
sudo dnf -y update
sudo dnf -y group install development
sudo dnf -y install python39 python39-devel java-17-openjdk-headless nano git
sudo dnf -y install python3.11 python3.11-devel java-17-openjdk-headless nano git
Set ``java`` executable to point to Java 17:
@@ -25,6 +23,6 @@ Set ``java`` executable to point to Java 17:
.. Include common instructions:
.. include:: _includes/create-env-with-venv3.9.rst
.. include:: _includes/create-env-with-venv3.11.rst
.. include:: _includes/install-and-setup-red-unix.rst

View File

@@ -6,17 +6,15 @@
Installing the pre-requirements
-------------------------------
Red Hat Enterprise Linux (RHEL) 9 and its derivatives have all required packages available in official repositories.
Red Hat Enterprise Linux (RHEL) 9.4-9.x and its derivatives have all required packages available in official repositories.
Install them with dnf:
.. TODO: Use Python 3.11 once RHEL 9.0 goes EOL in 2024.
.. prompt:: bash
sudo dnf -y install python39 python3-devel git java-17-openjdk-headless @development nano
sudo dnf -y install python3.11 python3.11-devel git java-17-openjdk-headless @development nano
.. Include common instructions:
.. include:: _includes/create-env-with-venv3.9.rst
.. include:: _includes/create-env-with-venv3.11.rst
.. include:: _includes/install-and-setup-red-unix.rst

View File

@@ -1,27 +0,0 @@
----------------------------
Installing Python with pyenv
----------------------------
On distributions where Python 3.9 needs to be compiled from source, we recommend the use of pyenv.
This simplifies the compilation process and has the added bonus of simplifying setting up Red in a
virtual environment.
.. include:: _includes/_install-pyenv-and-setup-path.rst
.. prompt:: bash
CONFIGURE_OPTS=--enable-optimizations pyenv install 3.9.18 -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
the ``CONFIGURE_OPTS=--enable-optimizations`` part from the front of the command, which will
drastically reduce the install time. However, be aware that this will make Python run about 10%
slower.
After that is finished, run:
.. prompt:: bash
pyenv global 3.9.18
Pyenv is now installed and your system should be configured to run Python 3.9.

View File

@@ -0,0 +1,26 @@
.. _install-amazon-linux-2023:
===================================
Installing Red on Amazon Linux 2023
===================================
.. include:: _includes/supported-arch-x64+aarch64.rst
.. include:: _includes/linux-preamble.rst
-------------------------------
Installing the pre-requirements
-------------------------------
Amazon Linux 2023 has all required packages available in official repositories. Install
them with dnf:
.. prompt:: bash
sudo dnf -y install python3.11 python3.11-devel git java-17-amazon-corretto-headless @development nano
.. Include common instructions:
.. include:: _includes/create-env-with-venv3.11.rst
.. include:: _includes/install-and-setup-red-unix.rst

View File

@@ -18,20 +18,20 @@ Install the pre-requirements with pacman:
sudo pacman -Syu git jre17-openjdk-headless base-devel nano
On Arch Linux, Python 3.10 can be installed from the Arch User Repository (AUR) from the ``python310`` package.
On Arch Linux, Python 3.11 can be installed from the Arch User Repository (AUR) from the ``python311`` package.
The manual build process is the Arch-supported install method for AUR packages. You can install ``python310`` package with the following commands:
The manual build process is the Arch-supported install method for AUR packages. You can install ``python311`` package with the following commands:
.. prompt:: bash
git clone https://aur.archlinux.org/python310.git /tmp/python310
cd /tmp/python310
git clone https://aur.archlinux.org/python311.git /tmp/python311
cd /tmp/python311
makepkg -sicL
cd -
rm -rf /tmp/python310
rm -rf /tmp/python311
.. Include common instructions:
.. include:: _includes/create-env-with-venv3.10.rst
.. include:: _includes/create-env-with-venv3.11.rst
.. include:: _includes/install-and-setup-red-unix.rst

View File

@@ -1,46 +0,0 @@
.. _install-centos-7:
==========================
Installing Red on CentOS 7
==========================
.. include:: _includes/supported-arch-x64+aarch64.rst
.. include:: _includes/linux-preamble.rst
-------------------------------
Installing the pre-requirements
-------------------------------
Install the pre-requirements with yum:
.. prompt:: bash
sudo yum -y groupinstall development
sudo yum -y install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel java-11-openjdk-headless nano git
In order to install gcc 8, we'll use SCL repository:
.. prompt:: bash
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:
.. prompt:: bash
sudo yum -y install https://repo.ius.io/ius-release-el7.rpm
sudo yum -y swap git git236
.. Include common instructions:
.. Python 3.10 requires OpenSSL 1.1.1 which CentOS 7 doesn't provide in base repository.
.. include:: _includes/install-python39-pyenv.rst
.. include:: _includes/create-env-with-pyenv-virtualenv.rst
.. include:: _includes/install-and-setup-red-unix.rst

View File

@@ -1,7 +0,0 @@
.. _install-centos-stream-8:
=================================
Installing Red on CentOS Stream 8
=================================
.. include:: _includes/install-guide-rhel8-derivatives.rst

View File

@@ -1,27 +0,0 @@
.. _install-debian-11:
====================================
Installing Red on Debian 11 Bullseye
====================================
.. include:: _includes/supported-arch-x64+aarch64+armv7l.rst
.. include:: _includes/linux-preamble.rst
-------------------------------
Installing the pre-requirements
-------------------------------
Debian 11 "Bullseye" has all required packages available in official repositories. Install them
with apt:
.. prompt:: bash
sudo apt update
sudo apt -y install python3 python3-dev python3-venv git openjdk-17-jre-headless build-essential nano
.. Include common instructions:
.. include:: _includes/create-env-with-venv3.9.rst
.. include:: _includes/install-and-setup-red-unix.rst

View File

@@ -12,12 +12,14 @@ Installing Red on Fedora Linux
Installing the pre-requirements
-------------------------------
Fedora Linux 38 and above has all required packages available in official repositories. Install
Fedora Linux 41 and above has all required packages available in official repositories. Install
them with dnf:
.. prompt:: bash
sudo dnf -y install python3.11 python3.11-devel git java-17-openjdk-headless @development-tools nano
sudo dnf -y install python3.11 python3.11-devel git adoptium-temurin-java-repository @development-tools nano
sudo dnf config-manager setopt adoptium-temurin-java-repository.enabled=1
sudo dnf -y install temurin-17-jre
.. Include common instructions:

View File

@@ -6,7 +6,7 @@ Installing Red
The list below shows the installation guides available based on the operating system being used.
If you want to host Red on a VPS and are unsure what operating system you should choose,
we recommend **Ubuntu 22.04 LTS**.
we recommend **Ubuntu 24.04 LTS**.
.. toctree::
:maxdepth: 1
@@ -15,11 +15,9 @@ we recommend **Ubuntu 22.04 LTS**.
mac
alma-linux-8
alma-linux-9
amazon-linux-2023
arch
centos-7
centos-stream-8
centos-stream-9
debian-11
debian-12
fedora
opensuse-leap-15
@@ -32,6 +30,6 @@ we recommend **Ubuntu 22.04 LTS**.
rhel-9
rocky-linux-8
rocky-linux-9
ubuntu-2004
ubuntu-2204
ubuntu-2404
ubuntu-non-lts

View File

@@ -28,8 +28,7 @@ one-by-one:
brew install python@3.11
brew install git
brew tap homebrew/cask-versions
brew install --cask temurin17
brew install temurin@17
By default, Python installed through Homebrew is not added to the load path.
To fix this, you should run these commands:

View File

@@ -1,7 +1,7 @@
.. _install-opensuse-leap-15:
=====================================
Installing Red on openSUSE Leap 15.5+
Installing Red on openSUSE Leap 15.6+
=====================================
.. include:: _includes/supported-arch-x64+aarch64.rst
@@ -12,7 +12,7 @@ Installing Red on openSUSE Leap 15.5+
Installing the pre-requirements
-------------------------------
openSUSE Leap 15.5+ has all required dependencies available in official repositories. Install them
openSUSE Leap 15.6+ has all required dependencies available in official repositories. Install them
with zypper:
.. prompt:: bash

View File

@@ -1,7 +1,7 @@
.. _install-rhel-8:
=========================================================
Installing Red on Red Hat Enterprise Linux (RHEL) 8.6-8.x
=========================================================
======================================================
Installing Red on Red Hat Enterprise Linux (RHEL) 8.10
======================================================
.. include:: _includes/install-guide-rhel8-derivatives.rst

View File

@@ -1,7 +1,7 @@
.. _install-rhel-9:
===================================================
Installing Red on Red Hat Enterprise Linux (RHEL) 9
===================================================
=========================================================
Installing Red on Red Hat Enterprise Linux (RHEL) 9.4-9.x
=========================================================
.. include:: _includes/install-guide-rhel9-derivatives.rst

View File

@@ -1,27 +0,0 @@
.. _install-ubuntu-2004:
==================================
Installing Red on Ubuntu 20.04 LTS
==================================
.. include:: _includes/supported-arch-x64+aarch64.rst
.. include:: _includes/linux-preamble.rst
-------------------------------
Installing the pre-requirements
-------------------------------
Ubuntu 20.04 LTS has all required packages available in official repositories. Install them
with apt:
.. prompt:: bash
sudo apt update
sudo apt -y install python3.9 python3.9-dev python3.9-venv git openjdk-17-jre-headless build-essential nano
.. Include common instructions:
.. include:: _includes/create-env-with-venv3.9.rst
.. include:: _includes/install-and-setup-red-unix.rst

View File

@@ -0,0 +1,33 @@
.. _install-ubuntu-2404:
==================================
Installing Red on Ubuntu 24.04 LTS
==================================
.. include:: _includes/supported-arch-x64+aarch64.rst
.. include:: _includes/linux-preamble.rst
-------------------------------
Installing the pre-requirements
-------------------------------
We recommend adding the ``deadsnakes`` ppa to install Python 3.11:
.. prompt:: bash
sudo apt update
sudo apt -y install software-properties-common
sudo add-apt-repository -y ppa:deadsnakes/ppa
Now install the pre-requirements with apt:
.. prompt:: bash
sudo apt -y install python3.11 python3.11-dev python3.11-venv git openjdk-17-jre-headless build-essential nano
.. Include common instructions:
.. include:: _includes/create-env-with-venv3.11.rst
.. include:: _includes/install-and-setup-red-unix.rst

View File

@@ -4,23 +4,10 @@
Installing Red on Ubuntu non-LTS versions
=========================================
.. include:: _includes/supported-arch-x64+aarch64.rst
Latest Ubuntu non-LTS version (24.10 at the time of writing) is not supported at current time
due to lack of availability of Python 3.11 or older in its repositories.
.. include:: _includes/linux-preamble.rst
The support should come back once we get back on track with supporting current Python versions.
-------------------------------
Installing the pre-requirements
-------------------------------
Now install the pre-requirements with apt:
.. prompt:: bash
sudo apt update
sudo apt -y install python3.11 python3.11-dev python3.11-venv git openjdk-17-jre-headless build-essential nano
.. Include common instructions:
.. include:: _includes/create-env-with-venv3.11.rst
.. include:: _includes/install-and-setup-red-unix.rst
We recommend usage of latest Ubuntu **LTS** versions instead, you can find
`an install guide for Ubuntu 24.04 <ubuntu-2404>` in our docs.

View File

@@ -8,40 +8,20 @@ About (privileged) intents and public bots
==========================================
This page aims to explain Red's current intents requirements,
our stance regarding "public bots" and the impact of some announced
Discord changes coming in April 2022.
our stance regarding "public bots", and the discord bot verification process.
To clarify:
- **Small bots** are bots under 100 servers. They currently do not need to undergo Discord's
bot verification process
- **Public bots** (or big bots) are bots that have reached 100 servers. They need to be
`verified <https://support.discord.com/hc/en-us/articles/360040720412-Bot-Verification-and-Data-Whitelisting>`_
`verified <https://support-dev.discord.com/hc/en-us/articles/23926564536471-How-Do-I-Get-My-App-Verified>`_
by Discord to join more than 100 servers and gain privileged intents
.. warning::
It is **very** important that you fully read this page if you're the owner of a public bot or strive to scale your bot at that level.
.. _intents-intents:
-------
Intents
-------
Red currently requires **all intents** to be active in order to function properly.
The reason for this requirement is that there are some technical challenges that need
to be overcome before we're able to adapt Red to function with only *some* intents:
these challenges are mainly due to the modular / extensible nature of Red and the fact
that Red has a long history (dating back to 2016!), making big changes naturally slower
to happen. In comparison, intents have been introduced fairly recently. |br|
This is not a problem if you have a small bot: you can simply go to the
`Discord development portal <https://discord.com/developers/applications/me>`_
and enable them. However, if you have a public bot Discord will want you to attain
verified status: you should read :ref:`our stance regarding public bots <intents-public-bots>`
and our guidelines for the :ref:`verification process <intents-bot-verification-process>`.
.. _intents-public-bots:
-----------
@@ -54,8 +34,10 @@ Red was designed with one single goal in mind: a bot that you can host on your o
and customize to your needs, making it really *your* bot. **The target audience of Red are server
owners with a few servers**, often with specific needs that can be covered by the vast cog ecosystem
that the community has built over the years. |br| Red was never built with big bots in mind,
bots with thousands upon thousands of servers: these bots face unique challenges.
Such Red instances *do exist*, it is not impossible to adapt Red and meet those criteria,
bots with thousands upon thousands of servers: these bots face unique challenges. Large bots need
to be extremely efficient to handle the large amount of requests they receive, and often need to
distribute this work across multiple processes or machines to keep up.
Such Red instances *do exist*, and it is not impossible to adapt Red and meet those criteria,
but it requires work and bot owners with the technical knowledge to make it happen.
It is **not** something that we support. |br|
When your bot reaches the public bot scale and it is therefore required to be verified it
@@ -75,8 +57,8 @@ the verification process.
Regardless of our stance, we do feel the need to give some pointers: many bot owners reach this point
and become fairly lost, as they've simply been *users* so far.
They have installed their bot, some cogs, personalized it, yadda yadda. Again, they have been users,
not developers. Unless they also have an interest in development, they will likely not have a clue about
They have installed their bot, some cogs, personalized it, but have not needed to write any code.
Unless they also have an interest in development, they will likely not have a clue about
what's going under the hood, much like you're not expected to be a mechanic to drive your car. And there's
nothing wrong with that! Red has been designed to be as user friendly as possible. |br|
The problem is this: Red is an outlier. Discord has built the bot verification process with the expectation
@@ -94,41 +76,44 @@ out your application:
of people that in their naivety went with the bad answer and it seems that at this point merely mentioning Red
is a guaranteed way to have your application rejected.
.. _intents-slash-commands:
.. _intents-intents:
---------------------------------
Message intent and slash commands
---------------------------------
-------
Intents
-------
.. warning::
Red expects **all intents** to be active. It is possible, but not recommended, to disable
specific intents using the ``--disable-intent`` flag. If an intent is missing, you may
experience errors due to Red expecting information provided by the intent to be present.
If you own a public bot it is extremely important that you read this section.
Discord currently considers 3 intents to be
`privileged <https://support-dev.discord.com/hc/en-us/articles/6205754771351-How-do-I-get-Privileged-Intents-for-my-bot>`_,
and requires large bots to additionally apply for access to these intents. **If you have a small
bot**, you can simply follow :ref:`these instructions <enabling-privileged-intents>` to enable them.
Discord has announced that **starting April 2022** the content of users' messages
`will be "locked" behind message intent <https://support-dev.discord.com/hc/en-us/articles/4404772028055>`_ |br|
If you're the owner of a small bot, fear not, this is yet another box that you have to tick from the
`Discord development portal <https://discord.com/developers/applications/me>`_. |br|
But if you're the owner of a public bot, things might be a lot less pleasant.
A breakdown of how privileged intents are used in Red is provided below.
To recap, unless you have
message intent, you will only receive message content for:
The **Message Content** intent is required to use text based commands and inputs for
configuration and all built in functionality. App commands (also known as slash commands)
are limited to a total of 100 top level commands, which is difficult to manage on
a modular bot. The approach we have taken to address this issue is to allow 3rd party
cogs to provide slash commands, but require bot owners to pick which slash commands
they actually want to use with the ``[p]slash`` command.
Under this system, bot management commands that are not exposed to users are still
expected to be provided as text commands, which requires the bot to be able to access
message content. There are no current plans to provide slash versions of core commands.
- Messages that your bot sends
- Messages that your bot receives in DM
- Messages in which your bot is mentioned
.. note::
It is possible to work around this intent by using the ``--mentionable``
flag, and using the bot mention as a prefix to use text based commands.
In case it's not clear by now, your bot needs message content to parse (see) the commands it receives. And if
you don't attain message intent, your bot will not be able to... well, do anything. |br|
The *bandaid fix* is for you to change your bot's prefix to a mention and a good portion of your commands will likely
still work. You will however lose many functions, namely anything that relies on seeing message content to act. |br|
The more *proper fix* is also not easy. You will need to justify your need for the message intent to Discord and
they will only accept "compelling use cases".
`It is not known what those even entail <https://gist.github.com/spiralw/091714718718379b6efcdbcaf807a024#q-what-usecases-will-be-valid>`_ at this point, but they have already stated that "parsing commands" is not a valid justification. |br|
To make the matter worse, Discord is making `a huge push for all bot developers to implement slash commands <https://support.discord.com/hc/en-us/articles/1500000368501-Slash-Commands-FAQ>`_, which at the moment
are rather lacking in features and cannot cover all the functionalities that standard commands offer. |br|
Discord staff
`stated that they will want your bot to have slash commands when you ask for message intent <https://gist.github.com/spiralw/091714718718379b6efcdbcaf807a024#q-if-we-are-granted-this-intent-will-bots-be-sanctioned-if-they-use-it-for-their-own-use-case-but-also-to-continue-to-run-normal-non-slash-commands-or-do-we-assume-that-if-you-are-granted-the-intent-you-are-trusted-with-it-and-are-allowed-to-use-it-for-additional-uses>`_. |br|
Slash commands might very well turn out to be a big undertaking for the Red team to implement, even more now that our
underlying library, `discord.py <https://github.com/Rapptz/discord.py>`_, has been discontinued. |br|
The time window that Discord is giving us to adapt is very narrow: **Red will likely not be able to support slash
commands for April 2022** and you should plan accordingly.
The **Guild Members** intent is required to properly cache member information, including
what users are in each server, what roles they have, what their name is, etc. It is also
required to receive events corresponding to when members join or leave a server, and when
they change their nickname or other server options. Almost all cogs expect to be able
to reference the member cache in order to avoid making API requests, and are not set
up to check if the intent is present before doing so.
The **Guild Presences** intent is required to view the activities and status of
users. Cogs which perform actions on users based on their activity or status will
be unable to access this information if this intent is not enabled.

View File

@@ -66,11 +66,6 @@ If you have Red 3.5.0 or newer, you can upgrade by following these steps:
source ~/redenv/bin/activate
If you used ``pyenv`` for your virtual environment, use:
.. prompt:: bash
pyenv shell <name>
#. Update Red with this command:
.. prompt:: bash
@@ -138,11 +133,6 @@ If you have a Red version between 3.2.0 and 3.4.19, you can upgrade by following
source ~/redenv/bin/activate
If you used ``pyenv`` for your virtual environment, use:
.. prompt:: bash
pyenv shell <name>
#. Update Red with this command:
.. prompt:: bash

View File

@@ -50,38 +50,34 @@ their end-of-life date.
================================ ======================= ============================================================
Operating system version Supported architectures Ideally supported until
================================ ======================= ============================================================
Windows 10 x86-64 `End/Retirement Date <https://docs.microsoft.com/en-us/lifecycle/products/windows-10-home-and-pro>`__
Windows 10 x86-64 2025-10-14 (`End/Retirement Date <https://docs.microsoft.com/en-us/lifecycle/products/windows-10-home-and-pro>`__)
Windows 11 x86-64 `Retirement Date <https://docs.microsoft.com/en-us/lifecycle/products/windows-11-home-and-pro-version-21h2>`__
macOS 12 (Monterey) x86-64, aarch64 ~2024-10
macOS 13 (Ventura) x86-64, aarch64 ~2025-10
macOS 14 (Sonoma) x86-64, aarch64 ~2026-10
Alma Linux 8 x86-64, aarch64 2029-05-31 (`How long will CloudLinux support AlmaLinux? <https://wiki.almalinux.org/FAQ.html#how-long-will-almalinux-be-supported>`__)
Alma Linux 9 x86-64, aarch64 2032-05-31
macOS 15 (Sequoia) x86-64, aarch64 ~2027-10
Alma Linux 8 x86-64, aarch64 2029-05-31 (`security support <https://wiki.almalinux.org/release-notes/>`__)
Alma Linux 9 x86-64, aarch64 2032-05-31 (`security support <https://wiki.almalinux.org/release-notes/>`__)
Amazon Linux 2023 x86-64, aarch64 2028-03-15 (`end-of-life <https://docs.aws.amazon.com/linux/al2023/release-notes/support-info-by-support-statement.html#support-info-by-support-statement-eol>`__)
Arch Linux x86-64 forever (support is only provided for an up-to-date system)
CentOS 7 x86-64, aarch64 2024-06-30 (`end of Maintenance Updates <https://wiki.centos.org/About/Product>`__)
CentOS Stream 8 x86-64, aarch64 2024-05-31 (`end of Maintenance Updates <https://wiki.centos.org/About/Product>`__)
CentOS Stream 9 x86-64, aarch64 2027-05-31 (`expected EOL <https://centos.org/stream9/#timeline>`__)
Debian 11 Bullseye x86-64, aarch64, armv7l ~2024-07 (`End of life <https://wiki.debian.org/DebianReleases#Production_Releases>`__)
Debian 12 Bookworm x86-64, aarch64, armv7l ~2026-09 (`End of life <https://wiki.debian.org/DebianReleases#Production_Releases>`__)
Fedora Linux 38 x86-64, aarch64 2024-05-14 (`End of Life <https://docs.fedoraproject.org/en-US/releases/lifecycle/#_maintenance_schedule>`__)
Fedora Linux 39 x86-64, aarch64 2024-11-12 (`End of Life <https://docs.fedoraproject.org/en-US/releases/lifecycle/#_maintenance_schedule>`__)
openSUSE Leap 15.5 x86-64, aarch64 2024-12-31 (`end of maintenance life cycle <https://en.opensuse.org/Lifetime#openSUSE_Leap>`__)
Debian 12 Bookworm x86-64, aarch64, armv7l 2026-06-10 (`End of life <https://wiki.debian.org/DebianReleases#Production_Releases>`__)
Fedora Linux 41 x86-64, aarch64 2025-11-19 (`End of Life <https://docs.fedoraproject.org/en-US/releases/lifecycle/#_maintenance_schedule>`__)
Fedora Linux 42 x86-64, aarch64 2026-05-13 (`End of Life <https://docs.fedoraproject.org/en-US/releases/lifecycle/#_maintenance_schedule>`__)
openSUSE Leap 15.6 x86-64, aarch64 2025-12-31 (`end of maintenance life cycle <https://en.opensuse.org/Lifetime#openSUSE_Leap>`__)
openSUSE Tumbleweed x86-64, aarch64 forever (support is only provided for an up-to-date system)
Oracle Linux 8 x86-64, aarch64 2029-07-31 (`End of Premier Support <https://www.oracle.com/us/support/library/elsp-lifetime-069338.pdf>`__)
Oracle Linux 9 x86-64, aarch64 2032-06-31 (`End of Premier Support <https://www.oracle.com/us/support/library/elsp-lifetime-069338.pdf>`__)
Raspberry Pi OS (Legacy) 11 armv7l ~2025-10 (approximate date of release of Raspberry Pi OS 13)
Raspberry Pi OS 12 aarch64, armv7l ~2025-10 (approximate date of release of Raspberry Pi OS 13)
RHEL 8 (latest) x86-64, aarch64 2029-05-31 (`End of Maintenance Support <https://access.redhat.com/support/policy/updates/errata#Life_Cycle_Dates>`__)
RHEL 8.6 x86-64, aarch64 2024-05-31 (`End of Extended Update Support <https://access.redhat.com/support/policy/updates/errata#Extended_Update_Support>`__)
RHEL 8.8 x86-64, aarch64 2025-05-31 (`End of Extended Update Support <https://access.redhat.com/support/policy/updates/errata#Extended_Update_Support>`__)
RHEL 8.10 x86-64, aarch64 2029-05-31 (`End of Extended Update Support <https://access.redhat.com/support/policy/updates/errata#Extended_Update_Support>`__)
RHEL 9 (latest) x86-64, aarch64 2032-05-31 (`End of Maintenance Support <https://access.redhat.com/support/policy/updates/errata#Life_Cycle_Dates>`__)
RHEL 9.0 x86-64, aarch64 2024-05-31 (`End of Extended Update Support <https://access.redhat.com/support/policy/updates/errata#Extended_Update_Support>`__)
RHEL 9.2 x86-64, aarch64 2025-05-31 (`End of Extended Update Support <https://access.redhat.com/support/policy/updates/errata#Extended_Update_Support>`__)
Rocky Linux 8 x86-64, aarch64 2029-05-31 (`end-of-life <https://rockylinux.org/download/>`__)
Rocky Linux 9 x86-64, aarch64 2032-05-31 (`end-of-life <https://rockylinux.org/download/>`__)
Ubuntu 20.04 LTS x86-64, aarch64 2025-04-30 (`End of Standard Support <https://wiki.ubuntu.com/Releases#Current>`__)
Ubuntu 22.04 LTS x86-64, aarch64 2027-04-30 (`End of Standard Support <https://wiki.ubuntu.com/Releases#Current>`__)
Ubuntu 23.10 x86-64, aarch64 2024-07-31 (`End of Standard Support <https://wiki.ubuntu.com/Releases#Current>`__)
RHEL 9.4 x86-64, aarch64 2026-04-30 (`End of Extended Update Support <https://access.redhat.com/support/policy/updates/errata#Extended_Update_Support>`__)
RHEL 9.6 x86-64, aarch64 2027-05-31 (`End of Extended Update Support <https://access.redhat.com/support/policy/updates/errata#Extended_Update_Support>`__)
Rocky Linux 8 x86-64, aarch64 2029-05-31 (`(i) Planned EOL <https://rockylinux.org/download>`__)
Rocky Linux 9 x86-64, aarch64 2032-05-31 (`(i) Planned EOL <https://rockylinux.org/download>`__)
Ubuntu 22.04 LTS x86-64, aarch64 2027-06-30 (`End of Standard Support <https://wiki.ubuntu.com/Releases#Current>`__)
Ubuntu 24.04 LTS x86-64, aarch64 2029-06-30 (`End of Standard Support <https://wiki.ubuntu.com/Releases#Current>`__)
================================ ======================= ============================================================
.. _developer-guarantees:

View File

@@ -339,7 +339,7 @@ def _early_init():
# This is bumped automatically by release workflow (`.github/workflows/scripts/bump_version.py`)
_VERSION = "3.5.6"
_VERSION = "3.5.21"
__version__, version_info = VersionInfo._get_version()

View File

@@ -397,7 +397,8 @@ async def run_bot(red: Red, cli_flags: Namespace) -> None:
"With that out of the way, depending on who you want to be considered as owner,"
" you can:\n"
"a) pass --team-members-are-owners when launching Red"
" - in this case Red will treat all members of the bot application's team as owners\n"
" - in this case Red will treat members of the bot application's team as owners,"
" if their team role is Owner, Admin, or Developer\n"
f"b) set owner manually with `redbot --edit {cli_flags.instance_name}`\n"
"c) pass owner ID(s) when launching Red with --owner"
" (and --co-owner if you need more than one) flag\n"

View File

@@ -122,7 +122,7 @@ msgstr "\n"
#: redbot/cogs/admin/admin.py:275
msgid "{author} ({author.id}) changed the colour of role '{role.name}'"
msgstr ""
msgstr "{author}({author.id}) تغيير لون رول {role.name}"
#: redbot/cogs/admin/admin.py:294 redbot/cogs/admin/admin.py:327
msgid "Done."
@@ -144,7 +144,7 @@ msgstr "\n"
#: redbot/cogs/admin/admin.py:308
msgid "{author} ({author.id}) changed the name of role '{old_name}' to '{name}'"
msgstr ""
msgstr "{author}({author.id}) تغيير اسم رول {old_name} إلى {name}"
#: redbot/cogs/admin/admin.py:332
#, docstring
@@ -185,7 +185,7 @@ msgstr "تم تحديث قناة الإعلانات إلى {channel.mention}"
#: redbot/cogs/admin/admin.py:375
#, docstring
msgid "Unsets the channel for announcements."
msgstr ""
msgstr "إزالة القناة من الإعلانات."
#: redbot/cogs/admin/admin.py:400
#, docstring
@@ -194,7 +194,11 @@ msgid "\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:413
#, docstring
@@ -253,15 +257,15 @@ msgstr "لا يمكنني السماح لك بإضافة {role.name} لرتبة
#: redbot/cogs/admin/admin.py:475
msgid "The role \"{role.name}\" is already a selfrole."
msgstr ""
msgstr "الرول \"{role.name}\" هو بالفعل رول شخصي."
#: redbot/cogs/admin/admin.py:481
msgid "Added {count} selfroles."
msgstr ""
msgstr "إضافة {count} رول شخصي."
#: redbot/cogs/admin/admin.py:483
msgid "Added 1 selfrole."
msgstr ""
msgstr "تم اضافة 1 رول شخصي."
#: redbot/cogs/admin/admin.py:489
#, docstring

323
redbot/cogs/admin/locales/et-EE.po generated Normal file
View File

@@ -0,0 +1,323 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2023-06-14 02:57+0000\n"
"Last-Translator: \n"
"Language-Team: Estonian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.4.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Project-ID: 289505\n"
"X-Crowdin-Language: et\n"
"X-Crowdin-File-ID: 42\n"
"Language: et_EE\n"
#: redbot/cogs/admin/admin.py:20
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
#: redbot/cogs/admin/admin.py:25
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 ""
#: redbot/cogs/admin/admin.py:31
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 ""
#: redbot/cogs/admin/admin.py:37
msgid "I can not edit {role.name} because that role is higher than my or equal to highest role in the Discord hierarchy."
msgstr ""
#: redbot/cogs/admin/admin.py:43
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 ""
#: redbot/cogs/admin/admin.py:49
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 ""
#: redbot/cogs/admin/admin.py:55
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 ""
#: redbot/cogs/admin/admin.py:61
msgid "I need the \"Manage Roles\" permission to do that."
msgstr ""
#: redbot/cogs/admin/admin.py:63
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
#: redbot/cogs/admin/admin.py:73
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
#: redbot/cogs/admin/admin.py:159
msgid "{member.display_name} already has the role {role.name}."
msgstr ""
#: redbot/cogs/admin/admin.py:180
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:190
msgid "{member.display_name} does not have the role {role.name}."
msgstr ""
#: redbot/cogs/admin/admin.py:211
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
#: redbot/cogs/admin/admin.py:226
#, 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 ""
#: redbot/cogs/admin/admin.py:244
#, 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 ""
#: redbot/cogs/admin/admin.py:256
#, docstring
msgid "Edit role settings."
msgstr ""
#: redbot/cogs/admin/admin.py:263
#, 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 ""
#: redbot/cogs/admin/admin.py:275
msgid "{author} ({author.id}) changed the colour of role '{role.name}'"
msgstr ""
#: redbot/cogs/admin/admin.py:294 redbot/cogs/admin/admin.py:327
msgid "Done."
msgstr ""
#: redbot/cogs/admin/admin.py:298
#, 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 ""
#: redbot/cogs/admin/admin.py:308
msgid "{author} ({author.id}) changed the name of role '{old_name}' to '{name}'"
msgstr ""
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
#: redbot/cogs/admin/admin.py:339
msgid "The announcement has begun."
msgstr ""
#: redbot/cogs/admin/admin.py:346
#, docstring
msgid "Cancel a running announce."
msgstr ""
#: redbot/cogs/admin/admin.py:348
msgid "There is no currently running announcement."
msgstr ""
#: redbot/cogs/admin/admin.py:351
msgid "The current announcement has been cancelled."
msgstr ""
#: redbot/cogs/admin/admin.py:357
#, docstring
msgid "Change how announcements are sent in this guild."
msgstr ""
#: redbot/cogs/admin/admin.py:367
#, docstring
msgid "Change the channel where the bot will send announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:370
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
#: redbot/cogs/admin/admin.py:375
#, docstring
msgid "Unsets the channel for announcements."
msgstr ""
#: redbot/cogs/admin/admin.py:400
#, docstring
msgid "\n"
" Add or 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 ""
#: redbot/cogs/admin/admin.py:413
#, 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 ""
#: redbot/cogs/admin/admin.py:424
#, 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 ""
#: redbot/cogs/admin/admin.py:435
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:445
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
#: redbot/cogs/admin/admin.py:451
#, docstring
msgid "Manage selfroles."
msgstr ""
#: redbot/cogs/admin/admin.py:456
#, docstring
msgid "\n"
" Add a role, or a selection of roles, to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:465
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 ""
#: redbot/cogs/admin/admin.py:475
msgid "The role \"{role.name}\" is already a selfrole."
msgstr ""
#: redbot/cogs/admin/admin.py:481
msgid "Added {count} selfroles."
msgstr ""
#: redbot/cogs/admin/admin.py:483
msgid "Added 1 selfrole."
msgstr ""
#: redbot/cogs/admin/admin.py:489
#, docstring
msgid "\n"
" Remove a role, or a selection of roles, from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
#: redbot/cogs/admin/admin.py:498
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 ""
#: redbot/cogs/admin/admin.py:508
msgid "Removed {count} selfroles."
msgstr ""
#: redbot/cogs/admin/admin.py:510
msgid "Removed 1 selfrole."
msgstr ""
#: redbot/cogs/admin/admin.py:516
#, docstring
msgid "Clear the list of available selfroles for this server."
msgstr ""
#: redbot/cogs/admin/admin.py:520
msgid "There are currently no selfroles."
msgstr ""
#: redbot/cogs/admin/admin.py:523
msgid "Are you sure you want to clear this server's selfrole list?"
msgstr ""
#: redbot/cogs/admin/admin.py:529
msgid "You took too long to respond."
msgstr ""
#: redbot/cogs/admin/admin.py:538
msgid "I cannot clear the selfroles because the selfrole '{role.name}' is higher than or equal to your highest role in the Discord hierarchy."
msgstr ""
#: redbot/cogs/admin/admin.py:544
msgid "Selfrole list cleared."
msgstr ""
#: redbot/cogs/admin/admin.py:546
msgid "No changes have been made."
msgstr ""
#: redbot/cogs/admin/admin.py:551
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
#: redbot/cogs/admin/admin.py:556
msgid "The bot is no longer serverlocked."
msgstr ""
#: redbot/cogs/admin/admin.py:558
msgid "The bot is now serverlocked."
msgstr ""
#: redbot/cogs/admin/announcer.py:68
msgid "I could not announce to the following server: "
msgstr ""
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to the following servers: "
msgstr ""
#: redbot/cogs/admin/converters.py:13
msgid "The Admin cog is not loaded."
msgstr ""
#: redbot/cogs/admin/converters.py:30
msgid "The role \"{role_name}\" is not a valid selfrole."
msgstr ""
#: redbot/cogs/admin/converters.py:36
msgid "This selfrole has more than one case insensitive match. Please ask a moderator to resolve the ambiguity, or use the role ID to reference the role."
msgstr ""

View File

@@ -127,7 +127,7 @@ msgstr "\n"
#: redbot/cogs/admin/admin.py:275
msgid "{author} ({author.id}) changed the colour of role '{role.name}'"
msgstr ""
msgstr "{author} ({author.id}) telah mengubah warna role '{role.name}'"
#: redbot/cogs/admin/admin.py:294 redbot/cogs/admin/admin.py:327
msgid "Done."
@@ -150,7 +150,7 @@ msgstr "\n"
#: redbot/cogs/admin/admin.py:308
msgid "{author} ({author.id}) changed the name of role '{old_name}' to '{name}'"
msgstr ""
msgstr "{author} ({author.id}) telah mengubah nama role '{old_name}' menjadi '{name}'"
#: redbot/cogs/admin/admin.py:332
#, docstring
@@ -362,5 +362,5 @@ msgstr "Role \"{role_name}\" bukan selfrole yang tepat."
#: redbot/cogs/admin/converters.py:36
msgid "This selfrole has more than one case insensitive match. Please ask a moderator to resolve the ambiguity, or use the role ID to reference the role."
msgstr ""
msgstr "Selfrole ini memiliki lebih dari satu kecocokan yang tidak membedakan huruf besar dan kecil. Mohon tanyakan kepada moderator untuk menyelesaikan ambiguitas ini, atau gunakan ID role untuk merujuk role tersebut."

View File

@@ -21,56 +21,56 @@ msgstr "Я намагався зробити щось, на що Discord від
#: redbot/cogs/admin/admin.py:25
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}, тому що ця роль є вищою за мою найвищу роль."
#: redbot/cogs/admin/admin.py:31
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}, тому що ця роль є вищою за мою найвищу роль."
#: redbot/cogs/admin/admin.py:37
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}, тому що ця роль є вищою ніж моя найвища роль."
#: redbot/cogs/admin/admin.py:43
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}, тому що ця роль вища за вашу найвищу роль."
#: redbot/cogs/admin/admin.py:49
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}, тому що ця роль є вищою за вашу найвищу роль."
#: redbot/cogs/admin/admin.py:55
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}, тому що ця роль вища за вашу найвищу роль."
#: redbot/cogs/admin/admin.py:61
msgid "I need the \"Manage Roles\" permission to do that."
msgstr ""
msgstr "Мені потрібен дозвіл \"Керувати ролями\", щоб це зробити."
#: redbot/cogs/admin/admin.py:63
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
msgstr "Я вже щось оголошую. Якщо ви хочете зробити інше оголошення, будь ласка, спочатку використайте '{prefix}announce cancel`."
#: redbot/cogs/admin/admin.py:73
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
msgstr "Колекція утилітів адміністрації сервера."
#: redbot/cogs/admin/admin.py:159
msgid "{member.display_name} already has the role {role.name}."
msgstr ""
msgstr "{member.display_name} вже має роль {role.name}."
#: redbot/cogs/admin/admin.py:180
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
msgstr "Успішно додав(ла) {role.name} до {member.display_name}"
#: redbot/cogs/admin/admin.py:190
msgid "{member.display_name} does not have the role {role.name}."
msgstr ""
msgstr "{member.display_name} не має ролі {role.name}."
#: redbot/cogs/admin/admin.py:211
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
msgstr "Я успішно прибрав(ла) {role.name} у {member.display_name}"
#: redbot/cogs/admin/admin.py:226
#, docstring
@@ -79,7 +79,11 @@ msgid "\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:244
#, docstring
@@ -88,12 +92,16 @@ msgid "\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:256
#, docstring
msgid "Edit role settings."
msgstr ""
msgstr "Зміна налаштувань ролі."
#: redbot/cogs/admin/admin.py:263
#, docstring
@@ -110,11 +118,11 @@ msgstr ""
#: redbot/cogs/admin/admin.py:275
msgid "{author} ({author.id}) changed the colour of role '{role.name}'"
msgstr ""
msgstr "{author} ({author.id}) змінив колір ролі '{role.name}'"
#: redbot/cogs/admin/admin.py:294 redbot/cogs/admin/admin.py:327
msgid "Done."
msgstr ""
msgstr "Готово."
#: redbot/cogs/admin/admin.py:298
#, docstring
@@ -128,48 +136,48 @@ msgstr ""
#: redbot/cogs/admin/admin.py:308
msgid "{author} ({author.id}) changed the name of role '{old_name}' to '{name}'"
msgstr ""
msgstr "{author} ({author.id}) змінив ім'я ролі '{old_name}' на '{name}'"
#: redbot/cogs/admin/admin.py:332
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
msgstr "Оголосити повідомлення в усіх серверах, де знаходиться бот."
#: redbot/cogs/admin/admin.py:339
msgid "The announcement has begun."
msgstr ""
msgstr "Оголошення почалося."
#: redbot/cogs/admin/admin.py:346
#, docstring
msgid "Cancel a running announce."
msgstr ""
msgstr "Відмінити запущене оголошення."
#: redbot/cogs/admin/admin.py:348
msgid "There is no currently running announcement."
msgstr ""
msgstr "На даний момент немає оголошення."
#: redbot/cogs/admin/admin.py:351
msgid "The current announcement has been cancelled."
msgstr ""
msgstr "Поточне оголошення було скасовано."
#: redbot/cogs/admin/admin.py:357
#, docstring
msgid "Change how announcements are sent in this guild."
msgstr ""
msgstr "Змінити спосіб надсилання оголошень у цю спільноту."
#: redbot/cogs/admin/admin.py:367
#, docstring
msgid "Change the channel where the bot will send announcements."
msgstr ""
msgstr "Змініть канал, в якому бот буде надсилати оголошення."
#: redbot/cogs/admin/admin.py:370
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
msgstr "Канал для оголошень встановлений до {channel.mention}"
#: redbot/cogs/admin/admin.py:375
#, docstring
msgid "Unsets the channel for announcements."
msgstr ""
msgstr "Прибирає канал для оголошень."
#: redbot/cogs/admin/admin.py:400
#, docstring
@@ -178,7 +186,10 @@ msgid "\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"
" ПОМІТКА: Ролі чутливі до реєстру "
#: redbot/cogs/admin/admin.py:413
#, docstring
@@ -203,17 +214,20 @@ msgstr ""
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
msgstr "\n"
" Перераховує усі доступні селф-ролі.\n"
" "
#: redbot/cogs/admin/admin.py:445
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
msgstr "Доступні селф-ролі:\n"
"{selfroles}"
#: redbot/cogs/admin/admin.py:451
#, docstring
msgid "Manage selfroles."
msgstr ""
msgstr "Керувати селф-ролями."
#: redbot/cogs/admin/admin.py:456
#, docstring
@@ -225,19 +239,19 @@ msgstr ""
#: redbot/cogs/admin/admin.py:465
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} як селф-роль, бо ця роль є вищою за вашу найвищу роль."
#: redbot/cogs/admin/admin.py:475
msgid "The role \"{role.name}\" is already a selfrole."
msgstr ""
msgstr "Роль \"{role.name}\" вже є селф-роллю."
#: redbot/cogs/admin/admin.py:481
msgid "Added {count} selfroles."
msgstr ""
msgstr "Додано {count} селф-ролей."
#: redbot/cogs/admin/admin.py:483
msgid "Added 1 selfrole."
msgstr ""
msgstr "Додано 1 селф-роль."
#: redbot/cogs/admin/admin.py:489
#, docstring
@@ -249,40 +263,40 @@ msgstr ""
#: redbot/cogs/admin/admin.py:498
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} зі списку селф-ролей, бо ця роль є вищою за вашу найвищу роль."
#: redbot/cogs/admin/admin.py:508
msgid "Removed {count} selfroles."
msgstr ""
msgstr "Вилучено {count} селф-ролей."
#: redbot/cogs/admin/admin.py:510
msgid "Removed 1 selfrole."
msgstr ""
msgstr "Прибрано 1 селф-роль."
#: redbot/cogs/admin/admin.py:516
#, docstring
msgid "Clear the list of available selfroles for this server."
msgstr ""
msgstr "Очистити список доступних селф-ролей для цього сервера."
#: redbot/cogs/admin/admin.py:520
msgid "There are currently no selfroles."
msgstr ""
msgstr "Наразі немає селф-ролей."
#: redbot/cogs/admin/admin.py:523
msgid "Are you sure you want to clear this server's selfrole list?"
msgstr ""
msgstr "Ви впевнені, що хочете очистити список селф-ролей цього сервера?"
#: redbot/cogs/admin/admin.py:529
msgid "You took too long to respond."
msgstr ""
msgstr "Ви зайняли занадто довго часу, щоб відповісти."
#: redbot/cogs/admin/admin.py:538
msgid "I cannot clear the selfroles because the selfrole '{role.name}' is higher than or equal to your highest role in the Discord hierarchy."
msgstr ""
msgstr "Я не можу прибрати селф-ролі, тому що селф-роль '{role.name}' вища аніж усі ваші ролі."
#: redbot/cogs/admin/admin.py:544
msgid "Selfrole list cleared."
msgstr ""
msgstr "Список з селф-ролями був очищений."
#: redbot/cogs/admin/admin.py:546
msgid "No changes have been made."
@@ -303,21 +317,21 @@ msgstr ""
#: redbot/cogs/admin/announcer.py:68
msgid "I could not announce to the following server: "
msgstr ""
msgstr "Не вдалося зробити оголошення у наступній спільноті: "
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to the following servers: "
msgstr ""
msgstr "Не вдалося зробити оголошення у наступних спільнотах: "
#: redbot/cogs/admin/converters.py:13
msgid "The Admin cog is not loaded."
msgstr ""
msgstr "Адмін-ког не завантажено."
#: redbot/cogs/admin/converters.py:30
msgid "The role \"{role_name}\" is not a valid selfrole."
msgstr ""
msgstr "Роль \"{role_name}\" не є дійсною селф-роллю."
#: redbot/cogs/admin/converters.py:36
msgid "This selfrole has more than one case insensitive match. Please ask a moderator to resolve the ambiguity, or use the role ID to reference the role."
msgstr ""
msgstr "Ця селф-роль має більше ніж один збіг. Будь ласка, попросіть модератора вирішити цю неоднозначність, або використайте ID ролі для уточнення ролі."

View File

@@ -59,7 +59,11 @@ class AliasEntry:
extra = []
while not view.eof:
prev = view.index
word = view.get_quoted_word()
try:
word = view.get_quoted_word()
except discord.ext.commands.errors.UnexpectedQuoteError:
view.skip_ws()
continue
if len(word) < view.index - prev:
word = "".join((view.buffer[prev], word, view.buffer[view.index - 1]))
extra.append(word.strip(" "))

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Arabic\n"
"MIME-Version: 1.0\n"
@@ -179,11 +179,11 @@ msgstr "قائمة الأسماء المستعارة العامة المتاحة
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "يجب أن يتم تحديد الحجج برقم."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "يجب أن تكون الحجج متتابعة. الحجج المفقودة: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"MIME-Version: 1.0\n"
@@ -179,11 +179,11 @@ msgstr ""
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"MIME-Version: 1.0\n"
@@ -187,11 +187,11 @@ msgstr "Seznam dostupných globálních aliasů pro tohoto bota."
msgid "There are no global aliases."
msgstr "Neexistují žádné globální aliasy."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Argumenty musí být zadány s číslem."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumenty musí být sekvenční. Chybějící argumenty: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"MIME-Version: 1.0\n"
@@ -179,11 +179,11 @@ msgstr ""
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
@@ -187,11 +187,11 @@ msgstr "Zeige die verfügbaren globalen Alias von diesem Bot."
msgid "There are no global aliases."
msgstr "Es gibt keine globalen Aliasse."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Die Argumente müssen mit einer Nummer angegeben werden."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumente müssen sequentiell sein. Fehlende Argumente: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
@@ -186,11 +186,11 @@ msgstr "Muestra una lista de los alias globales disponibles en este bot."
msgid "There are no global aliases."
msgstr "No hay alias globales."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Los argumentos deben especificarse con un número."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Los argumentos deben ser secuenciales. Faltan argumentos: "

189
redbot/cogs/alias/locales/et-EE.po generated Normal file
View File

@@ -0,0 +1,189 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Estonian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.4.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Project-ID: 289505\n"
"X-Crowdin-Language: et\n"
"X-Crowdin-File-ID: 8\n"
"Language: et_EE\n"
#: redbot/cogs/alias/alias.py:35
#, docstring
msgid "Create aliases for commands.\n\n"
" Aliases are alternative names/shortcuts for commands. They\n"
" can act as both a lambda (storing arguments for repeated use)\n"
" or as simply a shortcut to saying \"x y z\".\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
#: redbot/cogs/alias/alias.py:190
msgid "Aliases:\n"
msgstr ""
#: redbot/cogs/alias/alias.py:192
msgid "\n\n"
"Page {page}/{total}"
msgstr ""
#: redbot/cogs/alias/alias.py:202
#, docstring
msgid "Manage command aliases."
msgstr ""
#: redbot/cogs/alias/alias.py:207
#, docstring
msgid "Manage global aliases."
msgstr ""
#: redbot/cogs/alias/alias.py:214
#, docstring
msgid "Add an alias for a command."
msgstr ""
#: redbot/cogs/alias/alias.py:219
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:230
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr ""
#: redbot/cogs/alias/alias.py:241
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:253 redbot/cogs/alias/alias.py:312
msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr ""
#: redbot/cogs/alias/alias.py:267
msgid "A new alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:273
#, docstring
msgid "Add a global alias for a command."
msgstr ""
#: redbot/cogs/alias/alias.py:278
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:289
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr ""
#: redbot/cogs/alias/alias.py:300
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:323
msgid "A new global alias with the trigger `{name}` has been created."
msgstr ""
#: redbot/cogs/alias/alias.py:332
#, docstring
msgid "Edit an existing alias in this server."
msgstr ""
#: redbot/cogs/alias/alias.py:337 redbot/cogs/alias/alias.py:372
msgid "The alias with the name {name} does not exist."
msgstr ""
#: redbot/cogs/alias/alias.py:343 redbot/cogs/alias/alias.py:378
msgid "You attempted to edit an alias to a command that doesn't exist."
msgstr ""
#: redbot/cogs/alias/alias.py:352 redbot/cogs/alias/alias.py:385
msgid "The alias with the trigger `{name}` has been edited successfully."
msgstr ""
#: redbot/cogs/alias/alias.py:359 redbot/cogs/alias/alias.py:392
msgid "Alias with the name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:367
#, docstring
msgid "Edit an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:399
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr ""
#: redbot/cogs/alias/alias.py:404
msgid "No such alias exists."
msgstr ""
#: redbot/cogs/alias/alias.py:408
#, docstring
msgid "Show what command the alias executes."
msgstr ""
#: redbot/cogs/alias/alias.py:413
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr ""
#: redbot/cogs/alias/alias.py:418
msgid "There is no alias with the name `{name}`"
msgstr ""
#: redbot/cogs/alias/alias.py:424
#, docstring
msgid "Delete an existing alias on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:426 redbot/cogs/alias/alias.py:458
msgid "There are no aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:431 redbot/cogs/alias/alias.py:446
msgid "Alias with the name `{name}` was successfully deleted."
msgstr ""
#: redbot/cogs/alias/alias.py:434 redbot/cogs/alias/alias.py:449
msgid "Alias with name `{name}` was not found."
msgstr ""
#: redbot/cogs/alias/alias.py:439
#, docstring
msgid "Delete an existing global alias."
msgstr ""
#: redbot/cogs/alias/alias.py:441
msgid "There are no global aliases on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:455
#, docstring
msgid "List the available aliases on this server."
msgstr ""
#: redbot/cogs/alias/alias.py:464
#, docstring
msgid "List the available global aliases on this bot."
msgstr ""
#: redbot/cogs/alias/alias.py:467
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"MIME-Version: 1.0\n"
@@ -180,11 +180,11 @@ msgstr "Listaa saatavilla olevat globaalit aliakset tässä botissa."
msgid "There are no global aliases."
msgstr "Tässä botissa ei ole globaaleja aliaksia."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Argumentit on määriteltävä numerolla."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumenttien on oltava peräkkäisiä. Puuttuvia argumentteja: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
@@ -185,11 +185,11 @@ msgstr "Liste les alias globaux disponibles sur ce bot."
msgid "There are no global aliases."
msgstr "Il n'y a aucun alias global."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Les arguments doivent être spécifiés avec un nombre."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Les arguments doivent être séquentiels. Arguments manquants : "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Hindi\n"
"MIME-Version: 1.0\n"
@@ -179,11 +179,11 @@ msgstr ""
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Croatian\n"
"MIME-Version: 1.0\n"
@@ -186,11 +186,11 @@ msgstr "Navedite dostupne globalne nadimke na ovom botu."
msgid "There are no global aliases."
msgstr "Nema globalnih nadimaka."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Argumenti se moraju navesti brojem."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumenti moraju biti uzastopni. Nedostajući argumenti: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"MIME-Version: 1.0\n"
@@ -180,11 +180,11 @@ msgstr "A boton elérhető globális aliaszok listázása."
msgid "There are no global aliases."
msgstr "Nincsenek globális aliaszok."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"MIME-Version: 1.0\n"
@@ -24,7 +24,13 @@ msgid "Create aliases for commands.\n\n"
" When run, aliases will accept any additional arguments\n"
" and append them to the stored alias.\n"
" "
msgstr ""
msgstr "Buat alias untuk perintah.\n\n"
" Alias adalah nama alternatif/jalan pintas untuk perintah. Mereka\n"
" dapat berfungsi sebagai lambda (menyimpan argumen untuk digunakan berulang kali)\n"
" atau sebagai jalan pintas untuk mengatakan \"x y z\".\n\n"
" Saat dijalankan, alias akan menerima argumen tambahan apa pun\n"
" dan menambahkannya ke alias yang disimpan.\n"
" "
#: redbot/cogs/alias/alias.py:190
msgid "Aliases:\n"
@@ -95,28 +101,28 @@ msgstr "Alias global baru dengan pemicu `{name}` telah dibuat."
#: redbot/cogs/alias/alias.py:332
#, docstring
msgid "Edit an existing alias in this server."
msgstr ""
msgstr "Edit sebuah alias yang ada di server ini."
#: redbot/cogs/alias/alias.py:337 redbot/cogs/alias/alias.py:372
msgid "The alias with the name {name} does not exist."
msgstr ""
msgstr "Alias dengan nama {name} tidak ada."
#: redbot/cogs/alias/alias.py:343 redbot/cogs/alias/alias.py:378
msgid "You attempted to edit an alias to a command that doesn't exist."
msgstr ""
msgstr "Anda mencoba mengedit alias ke perintah yang tidak ada."
#: redbot/cogs/alias/alias.py:352 redbot/cogs/alias/alias.py:385
msgid "The alias with the trigger `{name}` has been edited successfully."
msgstr ""
msgstr "Alias dengan pemicu `{name}` telah berhasil diedit."
#: redbot/cogs/alias/alias.py:359 redbot/cogs/alias/alias.py:392
msgid "Alias with the name `{name}` was not found."
msgstr ""
msgstr "Alias dengan nama `{name}` tidak ditemukan."
#: redbot/cogs/alias/alias.py:367
#, docstring
msgid "Edit an existing global alias."
msgstr ""
msgstr "Edit sebuah alias global yang ada."
#: redbot/cogs/alias/alias.py:399
#, docstring
@@ -180,11 +186,11 @@ msgstr "Buat daftar alias global yang tersedia di bot ini."
msgid "There are no global aliases."
msgstr "Tidak ada alias global."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Argumen harus ditentukan dengan angka."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumen harus berurutan. Argumen yang hilang: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"MIME-Version: 1.0\n"
@@ -180,11 +180,11 @@ msgstr "Elenca gli pseudonimi globali disponibili su questo server."
msgid "There are no global aliases."
msgstr "Non ci sono pseudonimi globali."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Gli argomenti devono essere specificati con un numero."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Gli argomenti devono essere consecutivi. Argomenti mancanti: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"MIME-Version: 1.0\n"
@@ -179,11 +179,11 @@ msgstr ""
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"MIME-Version: 1.0\n"
@@ -185,11 +185,11 @@ msgstr "이 봇에서 사용할 수 있는 글로벌 별칭들을 나열해주
msgid "There are no global aliases."
msgstr "전역적인 별칭이 없어요."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "인수는 숫자로 지정해줘야해요."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "인수는 순차적이어야해요. 미확인된 인수: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Norwegian Bokmal\n"
"MIME-Version: 1.0\n"
@@ -186,11 +186,11 @@ msgstr "Liste over tilgjengelige globale aliaser på denne botten."
msgid "There are no global aliases."
msgstr "Det er ingen globale aliaser på denne boten."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Argumenter må spesifiseres med et nummer."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumenter må være sekvensielle. Manglende argumenter: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"MIME-Version: 1.0\n"
@@ -180,11 +180,11 @@ msgstr "Maak een lijst van de beschikbare globale aliassen op deze bot."
msgid "There are no global aliases."
msgstr "Er zijn geen globale aliassen."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Argumenten moeten worden gespecificeerd met een getal."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumenten moeten sequentieel zijn. Ontbrekende argumenten: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"MIME-Version: 1.0\n"
@@ -187,11 +187,11 @@ msgstr "Wyświetla dostępne globalne aliasy dla tego bota."
msgid "There are no global aliases."
msgstr "Brak globalnych aliasów."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Argumenty należy określić liczbą."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumenty muszą być sekwencyjne. Brakujące argumenty: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"MIME-Version: 1.0\n"
@@ -188,11 +188,11 @@ msgstr "Liste os atalhos globais disponíveis neste bot."
msgid "There are no global aliases."
msgstr "Não há atalhos globais."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Os argumentos devem ser especificados por um número."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Os argumentos devem ser sequenciais. Argumentos faltando: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"MIME-Version: 1.0\n"
@@ -182,11 +182,11 @@ msgstr "Listar os alias globais disponíveis neste bot."
msgid "There are no global aliases."
msgstr "Não existem alias globais."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Os argumentos devem ser especificados com um número."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Os argumentos devem ser sequenciais. Faltam argumentos: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"MIME-Version: 1.0\n"
@@ -186,11 +186,11 @@ msgstr "Список доступных глобальных псевдоним
msgid "There are no global aliases."
msgstr "Нет всеобщих синонимов."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Аргументы должны быть указаны с числом."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Аргументы должны быть последовательными. Отсутствуют аргументы: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Slovak\n"
"MIME-Version: 1.0\n"
@@ -179,11 +179,11 @@ msgstr ""
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,14 +1,14 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Slovenian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.4.2\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\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: sl\n"
@@ -180,11 +180,11 @@ msgstr "Seznam razpoložljivih globalnih vzdevkov na tem strežniku."
msgid "There are no global aliases."
msgstr "Globalnih vzdevkov ni."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Argumente je treba navesti s številko."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Argumenti morajo biti zaporedni. Manjkajoči argumenti: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"MIME-Version: 1.0\n"
@@ -179,11 +179,11 @@ msgstr ""
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"MIME-Version: 1.0\n"
@@ -187,11 +187,11 @@ msgstr "Bot üzerindeki global kullanılabilir kısaltmaları listeleyin."
msgid "There are no global aliases."
msgstr "Herhangi bir global kısaltma mevcut değil."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Değişkenler numara içermelidir."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Değişkenler sıralı olmalıdır. Eksik değişkenler: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Ukrainian\n"
"MIME-Version: 1.0\n"
@@ -179,11 +179,11 @@ msgstr ""
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"MIME-Version: 1.0\n"
@@ -186,11 +186,11 @@ msgstr "Danh sách tổng hợp những lối tắt toàn hệ thống tồn t
msgid "There are no global aliases."
msgstr "Không có lối tắt toàn hệ thống nào."
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "Giá trị phải được ghi rõ ràng bằng một con số."
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "Giá trị phải sắp xếp tuần tự. Bị thiếu cú pháp: "

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"MIME-Version: 1.0\n"
@@ -179,11 +179,11 @@ msgstr ""
msgid "There are no global aliases."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr ""
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2024-01-09 00:35+0000\n"
"POT-Creation-Date: 2025-08-09 20:56+0000\n"
"Last-Translator: \n"
"Language-Team: Chinese Traditional\n"
"MIME-Version: 1.0\n"
@@ -186,11 +186,11 @@ msgstr "列出此機器人可用的全局別名。"
msgid "There are no global aliases."
msgstr "沒有全局別名。"
#: redbot/cogs/alias/alias_entry.py:196
#: redbot/cogs/alias/alias_entry.py:200
msgid "Arguments must be specified with a number."
msgstr "必須用數字指定參數。"
#: redbot/cogs/alias/alias_entry.py:203
#: redbot/cogs/alias/alias_entry.py:207
msgid "Arguments must be sequential. Missing arguments: "
msgstr "參數必須是連續的。 缺少參數: "

81
redbot/cogs/audio/apis/locales/et-EE.po generated Normal file
View File

@@ -0,0 +1,81 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2022-03-16 16:42+0000\n"
"Last-Translator: \n"
"Language-Team: Estonian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: redgettext 3.4.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Crowdin-Project: red-discordbot\n"
"X-Crowdin-Project-ID: 289505\n"
"X-Crowdin-Language: et\n"
"X-Crowdin-File-ID: 698\n"
"Language: et_EE\n"
#: redbot/cogs/audio/apis/interface.py:270
#: redbot/cogs/audio/apis/interface.py:600
msgid "Failing to get tracks, skipping remaining."
msgstr "Ebaõnnestus YouTube'i video hankimine, ülejäänud jäetakse vahele."
#: redbot/cogs/audio/apis/interface.py:303
#: redbot/cogs/audio/apis/spotify.py:175
msgid "The Spotify API key or client secret has not been set properly. \n"
"Use `{prefix}audioset spotifyapi` for instructions."
msgstr "Spotify API võti või kliendi salajane võti ei ole õigesti seadistatud. \n"
"Kasutage `{prefix}audioset spotifyapi` juhiste jaoks."
#: redbot/cogs/audio/apis/interface.py:345
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "See ei tundu olevat kehtiv Spotify esitusloendi/albumi URL või kood."
#: redbot/cogs/audio/apis/interface.py:471
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "See ei tundu olevat toetatud Spotify URL või kood."
#: redbot/cogs/audio/apis/interface.py:561
msgid "The connection was reset while loading the playlist."
msgstr "Ühendus taastati, kui esitusloendit laaditi."
#: redbot/cogs/audio/apis/interface.py:572
msgid "Player timeout, skipping remaining tracks."
msgstr "Mängija aja ületamine, ülejäänud lood jäetakse vahele."
#: redbot/cogs/audio/apis/interface.py:665
msgid " {bad_tracks} tracks cannot be queued."
msgstr "{bad_tracks} lugusid ei saa järjekorda lisada."
#: redbot/cogs/audio/apis/interface.py:673
msgid "Playlist Enqueued"
msgstr "Esitusloend lisatud järjekorda"
#: redbot/cogs/audio/apis/interface.py:674
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Lisatud {num} lugu järjekorda.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:680
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} kuni esitusloendi esituse alguseni: algab järjekorras #{position} kohal"
#: redbot/cogs/audio/apis/interface.py:691
msgid "Nothing found.\n"
"The YouTube API key may be invalid or you may be rate limited on YouTube's search service.\n"
"Check the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr "Midagi ei leitud. \n"
"YouTube API võti võib olla kehtetu või võib YouTube'i otsinguteenuses olla määratud päringute piirang. \n"
"Kontrolli YouTube API võtit uuesti ja järgi juhiseid `{prefix}audioset youtubeapi`."
#: redbot/cogs/audio/apis/youtube.py:62
msgid "Your YouTube Data API token is invalid.\n"
"Check the YouTube API key again and follow the instructions at `{prefix}audioset youtubeapi`."
msgstr "Teie YouTube Data API token on kehtetu. \n"
"Kontrollige YouTube API võtit uuesti ja järgige juhiseid `{prefix}audioset youtubeapi`."
#: redbot/cogs/audio/apis/youtube.py:74
msgid "YouTube API error code: 403\n"
"Your YouTube API key may have reached the account's query limit for today. Please check <https://developers.google.com/youtube/v3/getting-started#quota> for more information."
msgstr "YouTube API tõrgekood: 403 \n"
"Teie YouTube API võti võib olla jõudnud konto päringute limiidi täitumiseni täna. Palun kontrollige <https://developers.google.com/youtube/v3/getting-started#quota> lisainformatsiooni jaoks."

View File

@@ -1150,11 +1150,24 @@ class AudioSetCommands(MixinMeta, metaclass=CompositeMetaClass):
if is_owner:
msg += _("Localtracks path: [{localpath}]\n").format(**global_data)
if (
is_owner
and not global_data["use_external_lavalink"]
and self.managed_node_controller.plugins
):
plugins = self.managed_node_controller.plugins
msg += f"\n---{_('Lavalink Plugin Versions')}---"
plugin_name_max_len = 0
for plugin_name, __ in plugins.items():
plugin_name_max_len = max(plugin_name_max_len, len(plugin_name))
for plugin_name, plugin_version in plugins.items():
key = f"{plugin_name}:".ljust(plugin_name_max_len + 5)
msg += f"\n{key} [{plugin_version}]"
await self.send_embed_msg(ctx, description=box(msg, lang="ini"))
@command_audioset.command(name="logs")
@commands.is_owner()
@commands.guild_only()
@has_managed_server()
async def command_audioset_logs(self, ctx: commands.Context):
"""Sends the managed Lavalink node logs to your DMs."""

View File

@@ -10,10 +10,11 @@ from red_commons.logging import getLogger
from redbot.core import commands
from redbot.core.data_manager import cog_data_path
from redbot.core.i18n import Translator
from redbot.core.utils.chat_formatting import box, inline
from redbot.core.utils.chat_formatting import box, humanize_list, inline
from ..abc import MixinMeta
from ..cog_utils import CompositeMetaClass
from ...managed_node import version_pins
from ...utils import (
MAX_JAVA_RAM,
DEFAULT_LAVALINK_YAML,
@@ -29,6 +30,16 @@ log = getLogger("red.cogs.Audio.cog.Commands.lavalink_setup")
_ = Translator("Audio", Path(__file__))
class LavalinkSetupJavaCommand(commands.Command):
def format_text_for_context(self, ctx: commands.Context, text: str) -> str:
text = super().format_text_for_context(ctx, text)
return text.format(
supported_java_versions=humanize_list(
list(map(str, version_pins.SUPPORTED_JAVA_VERSIONS))
),
)
class LavalinkSetupCommands(MixinMeta, metaclass=CompositeMetaClass):
@commands.group(name="llset")
@commands.is_owner()
@@ -43,7 +54,7 @@ class LavalinkSetupCommands(MixinMeta, metaclass=CompositeMetaClass):
All the commands in here have the potential to break the Audio cog.
"""
@command_llset.command(name="java")
@command_llset.command(name="java", cls=LavalinkSetupJavaCommand)
@has_managed_server()
async def command_llset_java(self, ctx: commands.Context, *, java_path: str = "java"):
"""Change your Java executable path.
@@ -51,7 +62,7 @@ class LavalinkSetupCommands(MixinMeta, metaclass=CompositeMetaClass):
This command shouldn't need to be used most of the time, and is only useful if the host machine has conflicting Java versions.
If changing this make sure that the Java executable you set is supported by Audio.
The current supported versions are Java 17 and 11.
The current supported versions are Java {supported_java_versions}.
Enter nothing or "java" to reset it back to default.
"""
@@ -124,7 +135,7 @@ class LavalinkSetupCommands(MixinMeta, metaclass=CompositeMetaClass):
if meta[1]:
await ctx.send(
_(
"Heap-size must be less than your system RAM, "
"Heap-size must be less than your system RAM. "
"You currently have {ram_in_bytes} of RAM available."
).format(ram_in_bytes=inline(sizeof_fmt(meta[0])))
)
@@ -250,7 +261,7 @@ class LavalinkSetupCommands(MixinMeta, metaclass=CompositeMetaClass):
return await self.send_embed_msg(
ctx,
title=_("Setting Not Changed"),
description=_("A port must be between 0 and 65535 "),
description=_("A port must be between 0 and 65535."),
)
await self.config.ws_port.set(port)
await self.send_embed_msg(
@@ -295,11 +306,14 @@ class LavalinkSetupCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Setting Changed"),
description=_(
"Unmanaged Lavalink node will no longer connect using the secured "
"{secured_protocol} protocol and wil use {unsecured_protocol} instead .\n\n"
"{secured_protocol} protocol and will use {unsecured_protocol} instead.\n\n"
"Run `{p}{cmd}` for it to take effect."
).format(p=ctx.prefix, cmd=self.command_audioset_restart.qualified_name),
unsecured_protocol=inline("ws://"),
secured_protocol=inline("wss://"),
).format(
p=ctx.prefix,
cmd=self.command_audioset_restart.qualified_name,
unsecured_protocol=inline("ws://"),
secured_protocol=inline("wss://"),
),
)
@command_llset.command(name="info", aliases=["settings"])

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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