Compare commits

...

11 Commits

Author SHA1 Message Date
github-actions[bot]
b42bab4de9 Version bump to 3.5.25.dev1 (#6691)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-06 02:43:22 +01:00
github-actions[bot]
e868872214 Version bump to 3.5.24 (#6689)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-06 02:21:33 +01:00
github-actions[bot]
bee0ddbffc Automated Crowdin downstream (#6690)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-06 02:21:14 +01:00
Jakub Kuczys
2de3d03cc9 Red 3.5.24 - Changelog (#6686) 2026-03-06 02:15:52 +01:00
Jakub Kuczys
056f2de557 Bump Lavalink version to 3.7.13+red.5 (#6688) 2026-03-06 02:14:27 +01:00
Jakub Kuczys
34cbd15ba9 Stop waiting for update check on bot startup (#6687) 2026-03-06 01:51:22 +01:00
EternalllZM
9a458fdd83 [Docs] Misc fixes (#6685) 2026-03-05 23:36:42 +01:00
Jakub Kuczys
0e78051c5d Bump Lavalink version to 3.7.13+red.3 (#6683) 2026-03-05 20:52:23 +01:00
Jakub Kuczys
53766173d0 Update supported Java versions (#6681) 2026-03-05 20:52:15 +01:00
Jakub Kuczys
36a5f752a2 Add --no-debug flag for resetting the verbosity level (#6680) 2026-03-05 01:04:56 +01:00
github-actions[bot]
b2007a718d Version bump to 3.5.24.dev1 (#6679)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-05 00:37:09 +01:00
47 changed files with 19240 additions and 18586 deletions

View File

@@ -1,5 +1,48 @@
.. Red changelogs
Redbot 3.5.24 (2026-03-06)
==========================
| Thanks to all these amazing people who contributed to this release:
| :ghuser:`aikaterna`, :ghuser:`EternalllZM`, :ghuser:`Flame442`, :ghuser:`Jackenmen`, :ghuser:`Kowlin`
Read before updating
--------------------
#. `The 3.5.23 changelog's <redbot-3-5-23-2026-03-04>` **"Read before updating"** section has been updated with further information about Red's Audio cog no longer supporting Java 11. If you use the Audio cog, please read that section again. Note that Red 3.5.24 supports Java 21 in addition to Java 17 as well.
#. 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.24 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.13%2Bred.3>`__.
Note that Lavalink now requires Java 17 or newer.
End-user changelog
------------------
Changes
*******
- **Core** - The bot will no longer wait for the update check to finish before finishing the bot startup (:issue:`6687`)
- **Core - Command-line Interfaces** - Added new ``--no-debug/--no-verbose`` flag allowing to reset the verbosity level set by the ``-v/--verbose/--debug`` flags used earlier in the argument list (:issue:`6680`)
- **Cogs - Audio** - The cog can now be used with Java 21 (:issue:`6681`)
Fixes
*****
- |cool| **Cogs - Audio** - Fixed issues with the cog not working on Linux aarch64 systems with a 16k page size kernel (as seen on Raspberry Pi OS ran on Raspberry Pi 5) (:issue:`6683`, :issue:`6688`)
- **Cogs - Audio** - The cog will now correctly error about Java 11 being unsupported instead of trying to redownload Lavalink.jar repeatedly a few times (:issue:`6681`)
Documentation changes
---------------------
- Updated the Audio cog documentation, command help, and errors to reflect that Java 11 is no longer supported
- Updated `the 3.5.23 changelog <redbot-3-5-23-2026-03-04>` to include information about Java 11 no longer being supported
----
.. _redbot-3-5-23-2026-03-04:
Redbot 3.5.23 (2026-03-04)
==========================
@@ -9,6 +52,14 @@ Redbot 3.5.23 (2026-03-04)
Read before updating
--------------------
#. Red's Audio cog now requires Java 17 to be present on the system. Java 11 is no longer supported.
All of the install guides for the systems that we currently support already provided instructions to install Java 17,
so if you installed Red somewhat recently, you should already be set.
If you see an error about using the wrong Java version, you can install the right Java version
by following the **"Installing the pre-requirements"** section of our install guide for your operating system.
#. We are planning to remove support for Red on systems using the **armv7l** architecture in **Red 3.6.0**.
The support for other architectures (**x86-64** and **aarch64**) will remain unchanged per our existing `end-user-guarantees`.
@@ -17,6 +68,9 @@ 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.23 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.13%2Bred.2>`__.
Note that Lavalink now requires Java 17 or newer.
- 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.
@@ -47,6 +101,7 @@ Removals
********
- **Core - OS Support** - macOS 13 (Ventura), Fedora 41, and Raspberry Pi OS (Legacy) 11 are no longer supported as they have already reached their end of life (:issue:`6669`)
- **Cogs - Audio** - The cog no longer supports Java 11 (:issue:`6665`)
Fixes
*****

View File

@@ -4,7 +4,7 @@
Backing Up and Restoring Red
============================
Red can be backed up and restored to any device as long as it is supported operating system. See page: :ref:`end-user-guarantees`.
Red can be backed up and restored to any device as long as it is a supported operating system. See page: :ref:`end-user-guarantees`.
Backup steps are to be done in order and carefully to avoid any issues.

View File

@@ -116,18 +116,18 @@ How can I use this playlist link with playlist commands in audio?**
:ref:`setting up Audio for multiple bots<multibots>`. Otherwise, another process is using the
port, so you need to figure out what is using port 2333 and terminate/disconnect it yourself.
**Q: My terminal is saying that I "must install Java 17 or 11 for Lavalink to run". How can I fix this?**
**Q: My terminal is saying that I "must install Java 21 or 17 for Lavalink to run". How can I fix this?**
You are getting this error because you have a different version of Java installed, or you don't have
Java installed at all. As the error states, Java 17 or 11 is required, and can be installed from
`here <https://adoptium.net/temurin/releases/?version=17>`__.
Java installed at all. As the error states, Java 21 or 17 is required, and can be installed from
`here <https://adoptium.net/temurin/releases/?version=21>`__.
If you have Java 17 or 11 installed, and are still getting this error, you will have to manually tell Audio where your Java install is located.
Use ``[p]llset java <path_to_java_17_or_11_executable>``, to make Audio launch Lavalink with a
If you have Java 21 or 17 installed, and are still getting this error, you will have to manually tell Audio where your Java install is located.
Use ``[p]llset java <path_to_java_21_or_17_executable>``, to make Audio launch Lavalink with a
specific Java binary. To do this, you will need to locate your ``java.exe``/``java`` file
in your **Java 17 or 11 install**.
in your **Java 21 or 17 install**.
Alternatively, update your PATH settings so that Java 17 or 11 is the one used by ``java``. However,
Alternatively, update your PATH settings so that Java 21 or 17 is the one used by ``java``. However,
you should confirm that nothing other than Red is running on the machine that requires Java.
.. _queue_commands:
@@ -550,7 +550,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
Otherwise, Lavalink works well with most versions of Java 17 and higher. Azul
Zulu builds are suggested, see `here <https://github.com/lavalink-devs/Lavalink/#requirements>`__ for more information.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -3651,7 +3651,7 @@ 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 21 or 17.
**Arguments**

View File

@@ -86,7 +86,7 @@ Average Providers
| `OVH <https://us.ovhcloud.com/vps/>`_ is a company focused on providing hosting
and cloud services with locations in Europe, North America and Asia Pacific.
| `Time4VPS <https://www.time4vps.eu/>`_ is a Lithuanian VPS provider mainly focused
| `Time4VPS <https://www.time4vps.com/>`_ is a Lithuanian VPS provider mainly focused
on lower cost.
| `GalaxyGate <https://galaxygate.net/>`_ is a VPS and dedicated server provider
@@ -113,7 +113,7 @@ Average Providers
| `LowEndBox <http://lowendbox.com/>`_ is a website where hosting providers are
discussed and curated, often with lower costs and less known providers.
| `AlphaVps <https://alphavps.com>`_ is a Bulgaria VPS and dedicated server provider
| `AlphaVps <https://alphavps.com>`_ is a Bulgarian VPS and dedicated server provider
with locations in Los Angeles, New York, England, Germany and Bulgaria.
--------------------

View File

@@ -59,11 +59,11 @@ Alma Linux 8 x86-64, aarch64 2029-05-31 (`securi
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 Stream 9 x86-64, aarch64 2027-05-31 (`expected EOL <https://centos.org/stream9/#timeline>`__)
CentOS Stream 9 x86-64, aarch64 2027-05-31 (`Expected EOL <https://centos.org/stream9/#timeline>`__)
Debian 12 Bookworm x86-64, aarch64, armv7l 2026-06-10 (`End of life <https://wiki.debian.org/DebianReleases#Production_Releases>`__)
Fedora Linux 42 x86-64, aarch64 2026-05-13 (`End of Life <https://fedorapeople.org/groups/schedule/f-42/f-42-key-tasks.html>`__)
Fedora Linux 43 x86-64, aarch64 2026-12-09 (`End of Life <https://fedorapeople.org/groups/schedule/f-43/f-43-key-tasks.html>`__)
openSUSE Leap 15.6 x86-64, aarch64 2025-12-31 (`end of maintenance life cycle <https://en.opensuse.org/Lifetime#openSUSE_Leap>`__)
openSUSE Leap 15.6 x86-64, aarch64 2025-12-31 (`end of maintenance lifecycle <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>`__)
@@ -73,8 +73,8 @@ RHEL 8.10 x86-64, aarch64 2029-05-31 (`End of
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.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>`__)
Rocky Linux 8 x86-64, aarch64 2029-05-31 (`End of Life <https://wiki.rockylinux.org/rocky/version/>`__)
Rocky Linux 9 x86-64, aarch64 2032-05-31 (`End of Life <https://wiki.rockylinux.org/rocky/version/>`__)
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>`__)
================================ ======================= ============================================================

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.23"
_VERSION = "3.5.25.dev1"
__version__, version_info = VersionInfo._get_version()

View File

@@ -53,7 +53,7 @@ msgstr "Não foi possível tocar a música"
#: redbot/cogs/audio/core/utilities/player.py:442
#: redbot/cogs/audio/core/utilities/player.py:524
msgid "Queue size limit reached."
msgstr ""
msgstr "Limite da fila atingindo."
#: redbot/cogs/audio/core/utilities/formatting.py:154
#: redbot/cogs/audio/core/utilities/player.py:599
@@ -63,41 +63,41 @@ msgstr "Faixa Enfileirada"
#: redbot/cogs/audio/core/utilities/formatting.py:168
#: redbot/cogs/audio/core/utilities/player.py:548
msgid "This track is not allowed in this server."
msgstr ""
msgstr "Esta faixa não é permitida neste servidor."
#: redbot/cogs/audio/core/utilities/formatting.py:185
#: redbot/cogs/audio/core/utilities/player.py:570
msgid "Track exceeds maximum length."
msgstr ""
msgstr "Faixa excede comprimento máximo."
#: redbot/cogs/audio/core/utilities/formatting.py:200
#: redbot/cogs/audio/core/utilities/player.py:602
msgid "{time} until track playback: #{position} in queue"
msgstr ""
msgstr "{time} até a reprodução da faixa: #{position} na fila"
#: redbot/cogs/audio/core/utilities/formatting.py:260
msgid "Tracks Found:"
msgstr ""
msgstr "Faixas Encontradas:"
#: redbot/cogs/audio/core/utilities/formatting.py:261
msgid "search results"
msgstr ""
msgstr "resultados da pesquisa"
#: redbot/cogs/audio/core/utilities/formatting.py:263
msgid "Folders Found:"
msgstr ""
msgstr "Pastas Encontradas:"
#: redbot/cogs/audio/core/utilities/formatting.py:264
msgid "local folders"
msgstr ""
msgstr "pastas locais"
#: redbot/cogs/audio/core/utilities/formatting.py:266
msgid "Files Found:"
msgstr ""
msgstr "Arquivos Encontrados:"
#: redbot/cogs/audio/core/utilities/formatting.py:267
msgid "local tracks"
msgstr ""
msgstr "faixas locais"
#: redbot/cogs/audio/core/utilities/formatting.py:379
#: redbot/cogs/audio/core/utilities/playlists.py:240
@@ -122,15 +122,15 @@ msgstr "Ambiente inválido"
#: redbot/cogs/audio/core/utilities/local_tracks.py:109
msgid "No localtracks folder."
msgstr ""
msgstr "Sem pasta localtracks."
#: redbot/cogs/audio/core/utilities/miscellaneous.py:50
msgid "Not enough {currency}"
msgstr ""
msgstr "Sem {currency} suficiente"
#: redbot/cogs/audio/core/utilities/miscellaneous.py:51
msgid "{required_credits} {currency} required, but you have {bal}."
msgstr ""
msgstr "{required_credits} {currency} necessário, mas você possui {bal}."
#: redbot/cogs/audio/core/utilities/player.py:78
msgid "music in {} servers"
@@ -140,54 +140,56 @@ msgstr "música em {} servidores"
#: redbot/cogs/audio/core/utilities/player.py:139
#: redbot/cogs/audio/core/utilities/player.py:144
msgid "There's nothing in the queue."
msgstr ""
msgstr "Não há nada na fila."
#: redbot/cogs/audio/core/utilities/player.py:141
msgid "Currently livestreaming {track}"
msgstr ""
msgstr "Transmitindo agora {track}"
#: redbot/cogs/audio/core/utilities/player.py:146
msgid "{time} left on {track}"
msgstr ""
msgstr "{time} restante de {track}"
#: redbot/cogs/audio/core/utilities/player.py:154
#: redbot/cogs/audio/core/utilities/player.py:189
msgid "Track Skipped"
msgstr ""
msgstr "Faixa Pulada"
#: redbot/cogs/audio/core/utilities/player.py:167
msgid "Track number must be equal to or greater than 1."
msgstr ""
msgstr "O número da faixa deve ser igual ou maior que 1."
#: redbot/cogs/audio/core/utilities/player.py:173
msgid "There are only {queuelen} songs currently queued."
msgstr ""
msgstr "Há apenas músicas {queuelen} na fila."
#: redbot/cogs/audio/core/utilities/player.py:179
msgid "{skip_to_track} Tracks Skipped"
msgstr ""
msgstr "{skip_to_track} Faixas Puladas"
#: redbot/cogs/audio/core/utilities/player.py:235
msgid "The owner needs to set the Spotify client ID and Spotify client secret, before Spotify URLs or codes can be used. \n"
"See `{prefix}audioset spotifyapi` for instructions."
msgstr ""
msgstr "O proprietário precisa definir o ID do cliente do Spotify e o Spotify Client Secret, antes que possam ser usadas URLs ou códigos do Spotify. \n"
"Veja `{prefix}audioset spotifyapi` para instruções."
#: redbot/cogs/audio/core/utilities/player.py:245
msgid "The owner needs to set the YouTube API key before Spotify URLs or codes can be used.\n"
"See `{prefix}audioset youtubeapi` for instructions."
msgstr ""
msgstr "O proprietário precisa definir a chave da API do YouTube antes que URLs ou códigos do Spotify possam ser usados.\n"
"Veja `{prefix}audioset youtubeapi` para instruções."
#: redbot/cogs/audio/core/utilities/player.py:254
#: redbot/cogs/audio/core/utilities/player.py:363
#: redbot/cogs/audio/core/utilities/playlists.py:594
msgid "Unable To Get Tracks"
msgstr ""
msgstr "Não foi possível obter as faixas"
#: redbot/cogs/audio/core/utilities/player.py:255
#: redbot/cogs/audio/core/utilities/player.py:364
#: redbot/cogs/audio/core/utilities/playlists.py:595
msgid "Wait until the playlist has finished loading."
msgstr ""
msgstr "Aguarde até que a playlist termine de carregar."
#: redbot/cogs/audio/core/utilities/player.py:266
#: redbot/cogs/audio/core/utilities/player.py:308
@@ -203,7 +205,7 @@ msgstr "Nada encontrado."
#: redbot/cogs/audio/core/utilities/playlists.py:607
#: redbot/cogs/audio/core/utilities/playlists.py:640
msgid "Track is not playable."
msgstr ""
msgstr "Faixa não é reproduzível."
#: redbot/cogs/audio/core/utilities/player.py:270
#: redbot/cogs/audio/core/utilities/player.py:311
@@ -211,7 +213,7 @@ msgstr ""
#: redbot/cogs/audio/core/utilities/playlists.py:608
#: redbot/cogs/audio/core/utilities/playlists.py:641
msgid "**{suffix}** is not a fully supported format and some tracks may not play."
msgstr ""
msgstr "**{suffix}** não é um formato totalmente suportado e algumas faixas podem não reproduzir."
#: redbot/cogs/audio/core/utilities/player.py:300
#: redbot/cogs/audio/core/utilities/player.py:393
@@ -235,7 +237,7 @@ msgstr "A chave de API do Spotify ou segredo do cliente não foram definidos cor
#: redbot/cogs/audio/core/utilities/player.py:351
msgid "Unable To Find Tracks"
msgstr ""
msgstr "Não foi possível encontrar as faixas"
#: redbot/cogs/audio/core/utilities/player.py:352
msgid "This doesn't seem to be a supported Spotify URL or code."
@@ -243,26 +245,27 @@ msgstr "Isto não parece ser uma URL ou código do Spotify válido."
#: redbot/cogs/audio/core/utilities/player.py:378
msgid "{query} is not an allowed query."
msgstr ""
msgstr "{query} não é uma solicitação permitida."
#: redbot/cogs/audio/core/utilities/player.py:394
#: redbot/cogs/audio/core/utilities/playlists.py:627
#: redbot/cogs/audio/core/utilities/playlists.py:656
msgid "I'm unable to get a track from Lavalink node at the moment, try again in a few minutes."
msgstr ""
msgstr "Não foi possível obter uma faixa do Lavalink Node no momento, tente novamente em alguns minutos."
#: redbot/cogs/audio/core/utilities/player.py:416
msgid "Local tracks will not work if the `Lavalink.jar` cannot see the track.\n"
"This may be due to permissions or because Lavalink.jar is being run in a different machine than the local tracks."
msgstr ""
msgstr "As faixas locais não funcionarão se o `Lavalink.jar` não conseguir ver a faixa.\n"
"Isto pode ser devido a permissões ou porque o Lavalink.jar está sendo executado em uma máquina diferente das faixas locais."
#: redbot/cogs/audio/core/utilities/player.py:486
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
msgstr " {bad_tracks} faixas não puderam ser adicionadas."
#: redbot/cogs/audio/core/utilities/player.py:492
msgid "No Title"
msgstr ""
msgstr "Sem Título"
#: redbot/cogs/audio/core/utilities/player.py:494
msgid "Playlist Enqueued"
@@ -270,7 +273,7 @@ msgstr "Lista de reprodução enfileirada"
#: redbot/cogs/audio/core/utilities/player.py:494
msgid "Album Enqueued"
msgstr ""
msgstr "Álbum Adicionado"
#: redbot/cogs/audio/core/utilities/player.py:502
msgid "Added {num} tracks to the queue.{maxlength_msg}"
@@ -286,25 +289,25 @@ msgstr "Nada foi encontrado"
#: redbot/cogs/audio/core/utilities/player.py:623
msgid "Please wait, finding tracks..."
msgstr ""
msgstr "Por favor, aguarde, encontrando faixas..."
#: redbot/cogs/audio/core/utilities/player.py:629
msgid "Getting track {num}/{total}..."
msgstr ""
msgstr "Obtendo faixa {num}/{total}..."
#: redbot/cogs/audio/core/utilities/player.py:630
msgid "Matching track {num}/{total}..."
msgstr ""
msgstr "Correspondendo faixa {num}/{total}..."
#: redbot/cogs/audio/core/utilities/player.py:631
#: redbot/cogs/audio/core/utilities/playlists.py:341
#: redbot/cogs/audio/core/utilities/playlists.py:414
msgid "Loading track {num}/{total}..."
msgstr ""
msgstr "Carregando faixa {num}/{total}..."
#: redbot/cogs/audio/core/utilities/player.py:632
msgid "Approximate time remaining: {seconds}"
msgstr ""
msgstr "Tempo restante aproximado: {seconds}"
#: redbot/cogs/audio/core/utilities/player.py:658
msgid "I'm unable to get a track from Lavalink at the moment, try again in a few minutes."
@@ -316,27 +319,27 @@ msgstr "A conexão foi redefinida durante o carregamento da lista de reproduçã
#: redbot/cogs/audio/core/utilities/playlists.py:83
msgid "You do not have the permissions to manage {name} (`{id}`) [**{scope}**]."
msgstr ""
msgstr "Você não tem as permissões para gerenciar {name} (`{id}`) [**{scope}**]."
#: redbot/cogs/audio/core/utilities/playlists.py:101
msgid "You do not have the permissions to manage that playlist in {guild}."
msgstr ""
msgstr "Você não tem permissão para gerenciar essa playlist no {guild}."
#: redbot/cogs/audio/core/utilities/playlists.py:108
msgid "You do not have the permissions to manage playlist owned by {user}."
msgstr ""
msgstr "Você não tem permissão para gerenciar a playlist de {user}."
#: redbot/cogs/audio/core/utilities/playlists.py:112
msgid "You do not have the permissions to manage playlists in {scope} scope."
msgstr ""
msgstr "Você não tem as permissões para gerenciar playlists no escopo {scope}."
#: redbot/cogs/audio/core/utilities/playlists.py:116
msgid "No access to playlist."
msgstr ""
msgstr "Sem acesso à playlist."
#: redbot/cogs/audio/core/utilities/playlists.py:224
msgid "{match_count} playlists match {original_input}: Please try to be more specific, or use the playlist ID."
msgstr ""
msgstr "{match_count} playlists correspondem {original_input}: Por favor, tente ser mais específico, ou use o ID da playlist."
#: redbot/cogs/audio/core/utilities/playlists.py:241
msgid "{number}. <{playlist.name}>\n"
@@ -344,24 +347,28 @@ msgid "{number}. <{playlist.name}>\n"
" - ID: < {playlist.id} >\n"
" - Tracks: < {tracks} >\n"
" - Author: < {author} >\n\n"
msgstr ""
msgstr "{number}. <{playlist.name}>\n"
" - Escopo: < {scope} >\n"
" - ID: < {playlist.id} >\n"
" - Faixas: < {tracks} >\n"
" - Autor: < {author} >\n\n"
#: redbot/cogs/audio/core/utilities/playlists.py:258
msgid "{playlists} playlists found, which one would you like?"
msgstr ""
msgstr "{playlists} playlists encontradas, de qual você gostaria?"
#: redbot/cogs/audio/core/utilities/playlists.py:277
#: redbot/cogs/audio/core/utilities/playlists.py:283
msgid "Too many matches found and you did not select which one you wanted."
msgstr ""
msgstr "Muitas opções foram encontradas e você não selecionou qual você queria."
#: redbot/cogs/audio/core/utilities/playlists.py:308
msgid "Playlists you can access in this server:"
msgstr ""
msgstr "Playlists que você pode acessar neste servidor:"
#: redbot/cogs/audio/core/utilities/playlists.py:314
msgid "Playlists for {scope}:"
msgstr ""
msgstr "Playlists para {scope}:"
#: redbot/cogs/audio/core/utilities/playlists.py:318
msgid "Page {page_num}/{total_pages} | {num} playlists."
@@ -370,46 +377,46 @@ msgstr ""
#: redbot/cogs/audio/core/utilities/playlists.py:334
#: redbot/cogs/audio/core/utilities/playlists.py:412
msgid "Please wait, adding tracks..."
msgstr ""
msgstr "Por favor, aguarde, adicionando faixas..."
#: redbot/cogs/audio/core/utilities/playlists.py:361
#: redbot/cogs/audio/core/utilities/playlists.py:464
msgid "Empty playlist {name} (`{id}`) [**{scope}**] created."
msgstr ""
msgstr "Playlist vazia {name} (`{id}`) [**{scope}**] criada."
#: redbot/cogs/audio/core/utilities/playlists.py:366
#: redbot/cogs/audio/core/utilities/playlists.py:469
msgid "Added {num} tracks from the {playlist_name} playlist. {num_bad} track(s) could not be loaded."
msgstr ""
msgstr "Adicionadas {num} músicas da lista {playlist_name} . Não foi possível carregar a(s) faixa(s) {num_bad}."
#: redbot/cogs/audio/core/utilities/playlists.py:371
#: redbot/cogs/audio/core/utilities/playlists.py:474
msgid "Added {num} tracks from the {playlist_name} playlist."
msgstr ""
msgstr "Adicionadas {num} músicas da lista {playlist_name}."
#: redbot/cogs/audio/core/utilities/playlists.py:375
#: redbot/cogs/audio/core/utilities/playlists.py:478
msgid "Playlist Saved"
msgstr ""
msgstr "Playlist salva"
#: redbot/cogs/audio/core/utilities/playlists.py:540
#: redbot/cogs/audio/core/utilities/playlists.py:553
#: redbot/cogs/audio/core/utilities/playlists.py:560
#: redbot/cogs/audio/core/utilities/playlists.py:571
msgid "Unable To Get Playlists"
msgstr ""
msgstr "Não foi possível obter as playlists"
#: redbot/cogs/audio/core/utilities/playlists.py:541
msgid "I don't have permission to connect and speak in your channel."
msgstr ""
msgstr "Não tenho permissão para conectar e falar em seu canal."
#: redbot/cogs/audio/core/utilities/playlists.py:572
msgid "You must be in the voice channel to use the playlist command."
msgstr ""
msgstr "Você deve estar no canal de voz para usar esse comando."
#: redbot/cogs/audio/core/utilities/playlists.py:680
msgid "the Global"
msgstr ""
msgstr "o Global"
#: redbot/cogs/audio/core/utilities/playlists.py:680
msgid "Global"
@@ -417,7 +424,7 @@ msgstr "Global"
#: redbot/cogs/audio/core/utilities/playlists.py:682
msgid "the Server"
msgstr ""
msgstr "o Servidor"
#: redbot/cogs/audio/core/utilities/playlists.py:682
msgid "Server"
@@ -425,7 +432,7 @@ msgstr "Servidor"
#: redbot/cogs/audio/core/utilities/playlists.py:684
msgid "the User"
msgstr ""
msgstr "o Usuário"
#: redbot/cogs/audio/core/utilities/playlists.py:684
msgid "User"
@@ -433,20 +440,20 @@ msgstr "Usuário"
#: redbot/cogs/audio/core/utilities/queue.py:40
msgid "__Too many songs in the queue, only showing the first 500__.\n\n"
msgstr ""
msgstr "__Muitas músicas na fila, mostrando apenas os primeiros 500__.\n\n"
#: redbot/cogs/audio/core/utilities/queue.py:57
msgid "**Currently livestreaming:**\n"
msgstr ""
msgstr "**Transmitindo agora:**\n"
#: redbot/cogs/audio/core/utilities/queue.py:59
#: redbot/cogs/audio/core/utilities/queue.py:64
msgid "Requested by: **{user}**"
msgstr ""
msgstr "Solicitado por: **{user}**"
#: redbot/cogs/audio/core/utilities/queue.py:62
msgid "Playing: "
msgstr ""
msgstr "Reproduzindo: "
#: redbot/cogs/audio/core/utilities/queue.py:76
msgid "requested by **{user}**\n"
@@ -454,11 +461,11 @@ msgstr ""
#: redbot/cogs/audio/core/utilities/queue.py:80
msgid "Queue for __{guild_name}__"
msgstr ""
msgstr "Fila para __{guild_name}__"
#: redbot/cogs/audio/core/utilities/queue.py:88
msgid "Page {page_num}/{total_pages} | {num_tracks} tracks, {num_remaining} remaining\n"
msgstr ""
msgstr "Página {page_num}/{total_pages} {num_tracks} faixas, {num_remaining} restantes\n"
#: redbot/cogs/audio/core/utilities/queue.py:97
msgid "Auto-Play"
@@ -474,7 +481,7 @@ msgstr "Repetir"
#: redbot/cogs/audio/core/utilities/queue.py:161
msgid "Matching Tracks:"
msgstr ""
msgstr "Faixas correspondentes:"
#: redbot/cogs/audio/core/utilities/queue.py:164
msgid "Page {page_num}/{total_pages} | {num_tracks} tracks"

View File

@@ -11,9 +11,9 @@ __all__ = (
)
JAR_VERSION: Final[LavalinkVersion] = LavalinkVersion(3, 7, 13, red=2)
JAR_VERSION: Final[LavalinkVersion] = LavalinkVersion(3, 7, 13, red=5)
YT_PLUGIN_VERSION: Final[str] = "1.18.0"
# keep this sorted from oldest to latest
SUPPORTED_JAVA_VERSIONS: Final[Tuple[int, ...]] = (11, 17)
SUPPORTED_JAVA_VERSIONS: Final[Tuple[int, ...]] = (17, 21)
LATEST_SUPPORTED_JAVA_VERSION: Final = SUPPORTED_JAVA_VERSIONS[-1]
OLDER_SUPPORTED_JAVA_VERSIONS: Final[Tuple[int, ...]] = SUPPORTED_JAVA_VERSIONS[:-1]

View File

@@ -23,16 +23,16 @@ msgstr ""
#: redbot/cogs/downloader/checks.py:38
msgid "Your response has timed out, please try again."
msgstr ""
msgstr "Sua resposta expirou. Por favor, tente novamente."
#: redbot/cogs/downloader/converters.py:14
#: redbot/cogs/downloader/repo_manager.py:176
msgid "No Downloader cog found."
msgstr ""
msgstr "Nenhum cog Downloader foi encontrado."
#: redbot/cogs/downloader/converters.py:19
msgid "Cog `{cog_name}` is not installed."
msgstr ""
msgstr "O Cog `{cog_name}` não está instalado."
#: redbot/cogs/downloader/downloader.py:31
msgid "\n"
@@ -67,24 +67,24 @@ msgstr ""
#: redbot/cogs/downloader/downloader.py:508
msgid "Libraries installed."
msgstr ""
msgstr "Bibliotecas instaladas."
#: redbot/cogs/downloader/downloader.py:508
msgid "Library installed."
msgstr ""
msgstr "Biblioteca instalada."
#: redbot/cogs/downloader/downloader.py:511
msgid "Some libraries failed to install. Please check your logs for a complete list."
msgstr ""
msgstr "Não foi possível instalar algumas bibliotecas. Verifique os seus logs para ter uma lista completa."
#: redbot/cogs/downloader/downloader.py:516
msgid "The library failed to install. Please check your logs for a complete list."
msgstr ""
msgstr "A biblioteca não foi instalada. Por favor, verifique os seus logs para ter uma lista completa."
#: redbot/cogs/downloader/downloader.py:524
#, docstring
msgid "Base command for repository management."
msgstr ""
msgstr "Comando base para gerenciamento do repositório."
#: redbot/cogs/downloader/downloader.py:531
#, docstring

View File

@@ -18,87 +18,87 @@ msgstr ""
#: redbot/cogs/general/general.py:49
#, docstring
msgid "General commands."
msgstr ""
msgstr "Comandos gerais."
#: redbot/cogs/general/general.py:54
msgid "As I see it, yes"
msgstr ""
msgstr "Como eu vejo, sim"
#: redbot/cogs/general/general.py:55
msgid "It is certain"
msgstr ""
msgstr "Com certeza"
#: redbot/cogs/general/general.py:56
msgid "It is decidedly so"
msgstr ""
msgstr "É decididamente assim"
#: redbot/cogs/general/general.py:57
msgid "Most likely"
msgstr ""
msgstr "Muito provável"
#: redbot/cogs/general/general.py:58
msgid "Outlook good"
msgstr ""
msgstr "Perspectiva boa"
#: redbot/cogs/general/general.py:59
msgid "Signs point to yes"
msgstr ""
msgstr "Os sinais indicam que sim"
#: redbot/cogs/general/general.py:60
msgid "Without a doubt"
msgstr ""
msgstr "Sem dúvida"
#: redbot/cogs/general/general.py:61
msgid "Yes"
msgstr ""
msgstr "Sim"
#: redbot/cogs/general/general.py:62
msgid "Yes definitely"
msgstr ""
msgstr "Sim definitivamente"
#: redbot/cogs/general/general.py:63
msgid "You may rely on it"
msgstr ""
msgstr "Você pode contar com isso"
#: redbot/cogs/general/general.py:64
msgid "Reply hazy, try again"
msgstr ""
msgstr "Resposta confusa, tente novamente"
#: redbot/cogs/general/general.py:65
msgid "Ask again later"
msgstr ""
msgstr "Pergunte novamente mais tarde"
#: redbot/cogs/general/general.py:66
msgid "Better not tell you now"
msgstr ""
msgstr "Melhor não te contar agora"
#: redbot/cogs/general/general.py:67
msgid "Cannot predict now"
msgstr ""
msgstr "Não consigo prever agora"
#: redbot/cogs/general/general.py:68
msgid "Concentrate and ask again"
msgstr ""
msgstr "Concentre-se e pergunte de novo"
#: redbot/cogs/general/general.py:69
msgid "Don't count on it"
msgstr ""
msgstr "Não conte com isso"
#: redbot/cogs/general/general.py:70
msgid "My reply is no"
msgstr ""
msgstr "Minha resposta é não"
#: redbot/cogs/general/general.py:71
msgid "My sources say no"
msgstr ""
msgstr "Minhas fontes dizem que não"
#: redbot/cogs/general/general.py:72
msgid "Outlook not so good"
msgstr ""
msgstr "A previsão não é muito boa"
#: redbot/cogs/general/general.py:73
msgid "Very doubtful"
msgstr ""
msgstr "Muito duvidoso"
#: redbot/cogs/general/general.py:88
#, docstring
@@ -107,11 +107,15 @@ msgid "Choose between multiple options.\n\n"
" Options are separated by spaces.\n\n"
" To denote options which include whitespace, you should enclose the options in double quotes.\n"
" "
msgstr ""
msgstr "Escolha entre múltiplas opções.\n\n"
" Deve haver pelo menos 2 opções para escolher.\n"
" As opções são separadas por espaços.\n\n"
" Para denotar opções que incluem espaços em branco, você deve colocar as opções entre aspas duplas.\n"
" "
#: redbot/cogs/general/general.py:97
msgid "Not enough options to pick from."
msgstr ""
msgstr "Opções insuficientes para escolher."
#: redbot/cogs/general/general.py:103
#, docstring
@@ -119,39 +123,45 @@ msgid "Roll a random number.\n\n"
" The result will be between 1 and `<number>`.\n\n"
" `<number>` defaults to 100.\n"
" "
msgstr ""
msgstr "Role um número aleatório.\n\n"
" O resultado será entre 1 e `<number>`.\n\n"
" `<number>` o padrão é 100.\n"
" "
#: redbot/cogs/general/general.py:118
msgid "{author.mention} Maybe higher than 1? ;P"
msgstr ""
msgstr "{author.mention} Talvez maior que 1? ;P"
#: redbot/cogs/general/general.py:121
msgid "{author.mention} Max allowed number is {maxamount}."
msgstr ""
msgstr "{author.mention} O número máximo permitido é {maxamount}."
#: redbot/cogs/general/general.py:128
#, docstring
msgid "Flip a coin... or a user.\n\n"
" Defaults to a coin.\n"
" "
msgstr ""
msgstr "Jogue uma moeda... ou um usuário.\n\n"
" O padrão é uma moeda.\n"
" "
#: redbot/cogs/general/general.py:136
msgid "Nice try. You think this is funny?\n"
" How about *this* instead:\n\n"
msgstr ""
msgstr "Boa tentativa. Você pensa que isso é engraçado?\n"
" Que tal *isso* em vez disso:\n\n"
#: redbot/cogs/general/general.py:147
msgid "*flips a coin and... "
msgstr ""
msgstr "*vira uma moeda e... "
#: redbot/cogs/general/general.py:147
msgid "HEADS!*"
msgstr ""
msgstr "CARA!*"
#: redbot/cogs/general/general.py:147
msgid "TAILS!*"
msgstr ""
msgstr "COROA!*"
#: redbot/cogs/general/general.py:151
#, docstring

View File

@@ -572,7 +572,7 @@ msgstr ""
#: redbot/cogs/mod/settings.py:85 redbot/cogs/mod/settings.py:93
#: redbot/cogs/mod/settings.py:96 redbot/cogs/mod/settings.py:108
msgid "Yes"
msgstr ""
msgstr "Sim"
#: redbot/cogs/mod/settings.py:31 redbot/cogs/mod/settings.py:57
#: redbot/cogs/mod/settings.py:62 redbot/cogs/mod/settings.py:67

View File

@@ -532,7 +532,7 @@ msgstr ""
#: redbot/cogs/mutes/mutes.py:1794
msgid "this server"
msgstr ""
msgstr "este servidor"
#: redbot/cogs/mutes/voicemutes.py:42
msgid "That user is not in a voice channel."

View File

@@ -171,7 +171,7 @@ msgstr ""
#: redbot/cogs/trivia/trivia.py:44
msgid "Yes"
msgstr ""
msgstr "Sim"
#: redbot/cogs/trivia/trivia.py:46
msgid "No"

View File

@@ -244,6 +244,14 @@ def parse_cli_flags(args):
dest="logging_level",
help="Increase the verbosity of the logs, each usage of this flag increases the verbosity level by 1.",
)
parser.add_argument(
"--no-verbose",
"--no-debug",
action="store_const",
const=0,
dest="logging_level",
help="Set the verbosity level to 0.",
)
parser.add_argument("--dev", action="store_true", help="Enables developer mode")
parser.add_argument(
"--mentionable",

View File

@@ -176,14 +176,15 @@ def init_events(bot, cli_flags):
if bot.intents.members: # Lets avoid 0 Unique Users
table_counts.add_row("Unique Users", str(users))
outdated_red_message = ""
rich_outdated_message = ""
pypi_version, py_version_req = await fetch_latest_red_version_info()
outdated = pypi_version and pypi_version > red_version_info
if outdated:
outdated_red_message, rich_outdated_message = get_outdated_red_messages(
pypi_version, py_version_req
)
fetch_version_task = asyncio.create_task(fetch_latest_red_version_info())
log.info("Fetching information about latest Red version...")
try:
await asyncio.wait_for(asyncio.shield(fetch_version_task), timeout=5)
except asyncio.TimeoutError:
log.info("Version information will continue to be fetched in the background...")
except Exception:
# these will be logged later
pass
rich_console = rich.get_console()
rich_console.print(INTRO, style="red", markup=False, highlight=False)
@@ -209,12 +210,23 @@ def init_events(bot, cli_flags):
rich_console.print(
f"Looking for a quick guide on setting up Red? Checkout {Text('https://start.discord.red', style='link https://start.discord.red}')}"
)
if rich_outdated_message:
rich_console.print(rich_outdated_message)
bot._red_ready.set()
if outdated_red_message:
await send_to_owners_with_prefix_replaced(bot, outdated_red_message)
try:
pypi_version, py_version_req = await fetch_version_task
except (aiohttp.ClientError, asyncio.TimeoutError) as exc:
log.error("Failed to fetch latest version information from PyPI.", exc_info=exc)
except (KeyError, ValueError) as exc:
log.error("Failed to parse version metadata received from PyPI.", exc_info=exc)
else:
outdated = pypi_version and pypi_version > red_version_info
if outdated:
outdated_red_message, rich_outdated_message = get_outdated_red_messages(
pypi_version, py_version_req
)
rich_console.print(rich_outdated_message)
await send_to_owners_with_prefix_replaced(bot, outdated_red_message)
@bot.event
async def on_command_completion(ctx: commands.Context):

View File

@@ -424,7 +424,11 @@ class Core(commands.commands._RuleDropper, commands.Cog, CoreLogic):
owner = app_info.owner
custom_info = await self.bot._config.custom_info()
pypi_version, py_version_req = await fetch_latest_red_version_info()
try:
pypi_version, __ = await fetch_latest_red_version_info()
except (aiohttp.ClientError, TimeoutError) as exc:
log.error("Failed to fetch latest version information from PyPI.", exc_info=exc)
pypi_version = None
outdated = pypi_version and pypi_version > red_version_info
if embed_links:

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

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

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

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

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

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

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

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

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

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

View File

@@ -326,18 +326,29 @@ def expected_version(current: str, expected: str) -> bool:
return Requirement(f"x{expected}").specifier.contains(current, prereleases=True)
async def fetch_latest_red_version_info() -> Tuple[Optional[VersionInfo], Optional[str]]:
try:
async with aiohttp.ClientSession() as session:
async with session.get("https://pypi.org/pypi/Red-DiscordBot/json") as r:
data = await r.json()
except (aiohttp.ClientError, asyncio.TimeoutError):
return None, None
else:
release = VersionInfo.from_str(data["info"]["version"])
required_python = data["info"]["requires_python"]
async def fetch_latest_red_version_info() -> Tuple[VersionInfo, Optional[str]]:
"""
Fetch information about latest Red release on PyPI.
return release, required_python
Raises
------
aiohttp.ClientError
An error occurred during request to PyPI.
TimeoutError
The request to PyPI timed out.
ValueError
An invalid version string was returned in PyPI metadata.
KeyError
The PyPI metadata is missing some of the required information.
"""
async with aiohttp.ClientSession() as session:
async with session.get("https://pypi.org/pypi/Red-DiscordBot/json") as r:
data = await r.json()
release = VersionInfo.from_str(data["info"]["version"])
required_python = data["info"]["requires_python"]
return release, required_python
def deprecated_removed(