Merge branch 'V3/develop' into cog_guide_core

# Conflicts:
#	redbot/core/core_commands.py
This commit is contained in:
bobloy
2021-04-06 09:56:01 -04:00
690 changed files with 80569 additions and 67759 deletions

View File

@@ -191,7 +191,7 @@ def _update_event_loop_policy():
_asyncio.set_event_loop_policy(_uvloop.EventLoopPolicy())
__version__ = "3.4.8.dev1"
__version__ = "3.4.10.dev1"
version_info = VersionInfo.from_str(__version__)
# Filter fuzzywuzzy slow sequence matcher warning

View File

@@ -181,7 +181,7 @@ async def _edit_prefix(red, prefix, no_prompt):
async def _edit_owner(red, owner, no_prompt):
if owner:
if not (15 <= len(str(owner)) <= 21):
if not (15 <= len(str(owner)) <= 20):
print(
"The provided owner id doesn't look like a valid Discord user id."
" Instance's owner will remain unchanged."
@@ -199,7 +199,7 @@ async def _edit_owner(red, owner, no_prompt):
print("Please enter a Discord user id for new owner:")
while True:
owner_id = input("> ").strip()
if not (15 <= len(owner_id) <= 21 and owner_id.isdecimal()):
if not (15 <= len(owner_id) <= 20 and owner_id.isdecimal()):
print("That doesn't look like a valid Discord user id.")
continue
owner_id = int(owner_id)
@@ -434,7 +434,7 @@ async def shutdown_handler(red, signal_type=None, exit_code=None):
red._shutdown_mode = exit_code
try:
await red.logout()
await red.close()
finally:
# Then cancels all outstanding tasks other than ourselves
pending = [t for t in asyncio.all_tasks() if t is not asyncio.current_task()]

View File

@@ -17,60 +17,60 @@ msgstr ""
#: redbot/cogs/admin/admin.py:18
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr ""
msgstr "He intentat fer una cosa per la qual Discord m'ha denegat els permisos. La vostra comanda no s'ha pogut completar correctament."
#: redbot/cogs/admin/admin.py:23
msgid "I can not give {role.name} to {member.display_name} because that role is higher than or equal to my highest role in the Discord hierarchy."
msgstr ""
msgstr "No puc donar {role.name} a {member.display_name} perquè el rol està per sobre o igual que el meu rol més alt a la jerarquia de Discord."
#: redbot/cogs/admin/admin.py:29
msgid "I can not remove {role.name} from {member.display_name} because that role is higher than or equal to my highest role in the Discord hierarchy."
msgstr ""
msgstr "No puc treure {role.name} a {member.display_name} perquè el rol està per sobre o igual que el meu rol més alt a la jerarquia de Discord."
#: redbot/cogs/admin/admin.py:35
msgid "I can not edit {role.name} because that role is higher than my or equal to highest role in the Discord hierarchy."
msgstr ""
msgstr "No puc editar {role.name} perquè el rol està per sobre o igual que el meu rol més alt a la jerarquia de Discord."
#: redbot/cogs/admin/admin.py:41
msgid "I can not let you give {role.name} to {member.display_name} because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr ""
msgstr "No puc deixar-te donar {role.name} a {member.display_name} perquè el rol està per sobre o igual que el meu rol més alt a la jerarquia de Discord."
#: redbot/cogs/admin/admin.py:47
msgid "I can not let you remove {role.name} from {member.display_name} because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr ""
msgstr "No puc deixar-te treure {role.name} a {member.display_name} perquè el rol està per sobre o igual que el meu rol més alt a la jerarquia de Discord."
#: redbot/cogs/admin/admin.py:53
msgid "I can not let you edit {role.name} because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr ""
msgstr "No puc deixar-te editar {role.name} perquè el rol està per sobre o igual que el meu rol més alt a la jerarquia de Discord."
#: redbot/cogs/admin/admin.py:59
msgid "I need manage roles permission to do that."
msgstr ""
msgstr "Necessito permís de gestió de rols per fer-ho."
#: redbot/cogs/admin/admin.py:61
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr ""
msgstr "Ja estic anunciant alguna cosa. Si voleu fer un anunci diferent, primer utilitzeu `{prefix}announce cancel`."
#: redbot/cogs/admin/admin.py:71
#, docstring
msgid "A collection of server administration utilities."
msgstr ""
msgstr "Una col·lecció dutilitats dadministració de servidors."
#: redbot/cogs/admin/admin.py:162
msgid "{member.display_name} already has the role {role.name}."
msgstr ""
msgstr "{member.display_name} ja té el rol {role.name}."
#: redbot/cogs/admin/admin.py:182
msgid "I successfully added {role.name} to {member.display_name}"
msgstr ""
msgstr "He afegit amb èxit {role.name} a {member.display_name}"
#: redbot/cogs/admin/admin.py:192
msgid "{member.display_name} does not have the role {role.name}."
msgstr ""
msgstr "{member.display_name} no té el rol {role.name}."
#: redbot/cogs/admin/admin.py:212
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr ""
msgstr "He tret amb èxit {role.name} a {member.display_name}"
#: redbot/cogs/admin/admin.py:223
#, 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"
" Afegir un rol a un usuari.\n\n"
" Fer servir cometes si el rol té espais.\n"
" Si l'usuari es deixa en blanc el valor per defecte és l'autor del comandament.\n"
" "
#: redbot/cogs/admin/admin.py:239
#, 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"
" Treu un rol d'un usuari.\n\n"
" Fer servir cometes si el rol té espais.\n"
" Si l'usuari es deixa en blanc el valor per defecte és l'autor del comandament.\n"
" "
#: redbot/cogs/admin/admin.py:253
#, docstring
msgid "Edit role settings."
msgstr ""
msgstr "Editar la configuració del rol."
#: redbot/cogs/admin/admin.py:260
#, docstring
@@ -106,11 +114,19 @@ msgid "\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
msgstr "\n"
" Editar el color d'un rol.\n\n"
" Fes servir cometes dobles si el rol té espais.\n"
" El color ha d'estar en format hexadecimal.\n"
" [Selector de color en línia](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Exemples:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
#: redbot/cogs/admin/admin.py:289 redbot/cogs/admin/admin.py:322
msgid "Done."
msgstr ""
msgstr "Fet."
#: redbot/cogs/admin/admin.py:293
#, docstring
@@ -120,34 +136,39 @@ msgid "\n"
" Example:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
msgstr "\n"
" Editar el nom d'un rol.\n\n"
" Fes servir cometes dobles si el rol o el nom té espais.\n\n"
" Exemple:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
#: redbot/cogs/admin/admin.py:327
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr ""
msgstr "Anunciar un missatge a tots els servidors en què es troba el bot."
#: redbot/cogs/admin/admin.py:334
msgid "The announcement has begun."
msgstr ""
msgstr "Lanunci ha començat."
#: redbot/cogs/admin/admin.py:341
#, docstring
msgid "Cancel a running announce."
msgstr ""
msgstr "Cancel·lar un anunci en curs."
#: redbot/cogs/admin/admin.py:343
msgid "There is no currently running announcement."
msgstr ""
msgstr "Actualment no hi ha cap anunci en curs."
#: redbot/cogs/admin/admin.py:346
msgid "The current announcement has been cancelled."
msgstr ""
msgstr "L'anunci actual s'ha cancel·lat."
#: redbot/cogs/admin/admin.py:352
#, docstring
msgid "Change how announcements are sent in this guild."
msgstr ""
msgstr "Canvia com senvien els anuncis en aquest servidor."
#: redbot/cogs/admin/admin.py:357
#, docstring
@@ -155,16 +176,19 @@ msgid "\n"
" Change the channel where the bot will send announcements.\n\n"
" If channel is left blank it defaults to the current channel.\n"
" "
msgstr ""
msgstr "\n"
" Canvieu el canal on el bot enviarà anuncis.\n\n"
" Si el canal es deixa en blanc el canal per defecte és el canal actual.\n"
" "
#: redbot/cogs/admin/admin.py:366
msgid "The announcement channel has been set to {channel.mention}"
msgstr ""
msgstr "El canal d'anuncis s'ha establert a {channel.mention}"
#: redbot/cogs/admin/admin.py:371
#, docstring
msgid "Unsets the channel for announcements."
msgstr ""
msgstr "Treu el canal per als anuncis."
#: redbot/cogs/admin/admin.py:396
#, docstring
@@ -173,7 +197,11 @@ msgid "\n"
" Server admins must have configured the role as user settable.\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
msgstr "\n"
" Afegeix o treu un rol a tu mateix.\n\n"
" Els administradors del servidor han d'haver configurat la funció com a configurable per l'usuari.\n"
" NOTA: El rol és sensible a majúscules!\n"
" "
#: redbot/cogs/admin/admin.py:409
#, docstring
@@ -182,7 +210,11 @@ msgid "\n"
" Server admins must have configured the role as user settable.\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
msgstr "\n"
" Afegeix un rol a tu mateix.\n\n"
" Els administradors del servidor han d'haver configurat la funció com a configurable per l'usuari.\n"
" NOTA: El rol és sensible a majúscules!\n"
" "
#: redbot/cogs/admin/admin.py:420
#, docstring
@@ -191,24 +223,31 @@ msgid "\n"
" Server admins must have configured the role as user settable.\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
msgstr "\n"
" Treu un rol de tu mateix.\n\n"
" Els administradors del servidor han d'haver configurat la funció com a configurable per l'usuari.\n"
" NOTA: El rol és sensible a majúscules!\n"
" "
#: redbot/cogs/admin/admin.py:431
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
msgstr "\n"
" Llista tots els selfrols disponibles.\n"
" "
#: redbot/cogs/admin/admin.py:441
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
msgstr "Selfroles disponibles:\n"
"{selfroles}"
#: redbot/cogs/admin/admin.py:447
#, docstring
msgid "Manage selfroles."
msgstr ""
msgstr "Gestiona selfroles."
#: redbot/cogs/admin/admin.py:452
#, docstring
@@ -216,19 +255,22 @@ msgid "\n"
" Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
msgstr "\n"
" Afegeix un rol a la llista de selfroles disponibles.\n\n"
" NOTA: El rol és sensible a majúscules!\n"
" "
#: redbot/cogs/admin/admin.py:459
msgid "I cannot let you add {role.name} as a selfrole because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr ""
msgstr "No puc deixar-te afegir {role.name} com a selfrole perquè el rol està per sobre o igual que el meu rol més alt a la jerarquia de Discord."
#: redbot/cogs/admin/admin.py:467
msgid "Added."
msgstr ""
msgstr "Afegit."
#: redbot/cogs/admin/admin.py:470
msgid "That role is already a selfrole."
msgstr ""
msgstr "Aquest rol ja és un selfrole."
#: redbot/cogs/admin/admin.py:474
#, docstring
@@ -236,42 +278,45 @@ msgid "\n"
" Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
msgstr "\n"
" Treu un rol de la llista de selfroles disponibles.\n\n"
" NOTA: El rol és sensible a majúscules!\n"
" "
#: redbot/cogs/admin/admin.py:481
msgid "I cannot let you remove {role.name} from being a selfrole because that role is higher than or equal to your highest role in the Discord hierarchy."
msgstr ""
msgstr "No puc deixar-te treure {role.name} de ser un selfrole perquè el rol està per sobre o igual que el meu rol més alt a la jerarquia de Discord."
#: redbot/cogs/admin/admin.py:489
msgid "Removed."
msgstr ""
msgstr "Esborrat."
#: redbot/cogs/admin/admin.py:494
#, docstring
msgid "Lock a bot to its current servers only."
msgstr ""
msgstr "Bloqueja el bot només als seus servidors actuals."
#: redbot/cogs/admin/admin.py:499
msgid "The bot is no longer serverlocked."
msgstr ""
msgstr "El bot ja no està bloquejat pel servidor."
#: redbot/cogs/admin/admin.py:501
msgid "The bot is now serverlocked."
msgstr ""
msgstr "El bot està ara bloquejat pel servidor."
#: redbot/cogs/admin/announcer.py:68
msgid "I could not announce to the following server: "
msgstr ""
msgstr "No he pogut anunciar al servidor següent: "
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to the following servers: "
msgstr ""
msgstr "No he pogut anunciar als servidor següents: "
#: redbot/cogs/admin/converters.py:12
msgid "The Admin cog is not loaded."
msgstr ""
msgstr "El cog Admin no s'ha carregat."
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr ""
msgstr "El rol proporcionat no és un selfrole vàlid."

View File

@@ -49,7 +49,7 @@ msgstr "Jai besoin de la permission de gérer les rôles pour faire cela."
#: redbot/cogs/admin/admin.py:61
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr "Je suis déjà en train d'annoncer quelque chose. Si tu souhaites faire une annonce différente, tu dois d'abord utiliser la commande `{prefix}announce cancel`."
msgstr "Je suis déjà en train d'annoncer quelque chose. Si vous souhaitez faire une annonce différente, vous devez d'abord utiliser la commande `{prefix}announce cancel`."
#: redbot/cogs/admin/admin.py:71
#, docstring
@@ -82,7 +82,7 @@ msgid "\n"
msgstr "\n"
" Ajouter un rôle à un utilisateur.\n\n"
" Utilisez des guillemets si le rôle contient des espaces.\n"
" Si l'utilisateur est laissé vide, c'est par défaut l'auteur de la commande.\n"
" Si l'utilisateur est laissé vide, ce sera par défaut l'auteur de la commande.\n"
" "
#: redbot/cogs/admin/admin.py:239
@@ -95,7 +95,7 @@ msgid "\n"
msgstr "\n"
" Retirer un rôle d'un utilisateur.\n\n"
" Utilisez des guillemets doubles si le rôle contient des espaces.\n"
" Si l'utilisateur est laissé vide, c'est par défaut l'auteur de la commande.\n"
" Si l'utilisateur est laissé vide, ce sera par défaut l'auteur de la commande.\n"
" "
#: redbot/cogs/admin/admin.py:253
@@ -120,7 +120,7 @@ msgstr "\n"
" La couleur doit être au format hexadécimal.\n"
" [Sélecteur de couleurs en ligne](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Exemples:\n"
" `[p]editrole color \"The Transistor\" #ff0000`\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
@@ -178,7 +178,7 @@ msgid "\n"
" "
msgstr "\n"
" Change le salon où le bot enverra les annonces.\n\n"
" Si le champ salon est laissé vide, il utilisera, par défaut, le salon actuel.\n"
" Si le champ salon est laissé vide, il utilisera par défaut le salon actuel.\n"
" "
#: redbot/cogs/admin/admin.py:366
@@ -197,7 +197,11 @@ msgid "\n"
" Server admins must have configured the role as user settable.\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
msgstr "\n"
" Ajoutez ou supprimez un auto-rôle de vous-même.\n\n"
" Les administrateurs du serveur doivent avoir configuré le rôle en tant qu'utilisable par les utilisateurs.\n"
" NOTE : Le rôle est sensible aux majuscules et minuscules !\n"
" "
#: redbot/cogs/admin/admin.py:409
#, docstring

View File

@@ -17,39 +17,39 @@ msgstr ""
#: redbot/cogs/admin/admin.py:18
msgid "I attempted to do something that Discord denied me permissions for. Your command failed to successfully complete."
msgstr "Ho cercato di fare qualcosa ma Discord mi ha negato i permessi per farla. Il tuo comando non è stato completato con successo."
msgstr "Ho provato a fare qualcosa ma Discord mi ha negato i permessi per farla. Il tuo comando non è stato completato con successo."
#: redbot/cogs/admin/admin.py:23
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 "Non posso dare {role.name} a {member.display_name} poiché quel ruolo è superiore o uguale al mio ruolo più alto nella gerarchia di Discord."
#: redbot/cogs/admin/admin.py:29
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 "Non posso rimuovere {role.name} da {member.display_name} poiché quel ruolo è superiore o uguale al mio ruolo più alto nella gerarchia di Discord."
#: redbot/cogs/admin/admin.py:35
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 "Non posso modificare {role.name} poiché quel ruolo è superiore o uguale al mio ruolo nella gerarchia di Discord."
#: redbot/cogs/admin/admin.py:41
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 "Non posso permetterti di dare {role.name} a {member.display_name} perché quel ruolo è superiore o uguale al tuo ruolo più alto nella gerarchia di Discord."
#: redbot/cogs/admin/admin.py:47
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 "Non posso permetterti di rimuovere {role.name} da {member.display_name} poiché quel ruolo è superiore o uguale al tuo ruolo più alto nella gerarchia di Discord."
#: redbot/cogs/admin/admin.py:53
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 "Non posso permetterti di modificare {role.name} perché quel ruolo è superiore o uguale al tuo ruolo più alto nella gerarchia di Discord."
#: redbot/cogs/admin/admin.py:59
msgid "I need manage roles permission to do that."
msgstr ""
msgstr "Mi serve il permesso gestire i ruoli per farlo."
#: redbot/cogs/admin/admin.py:61
msgid "I am already announcing something. If you would like to make a different announcement please use `{prefix}announce cancel` first."
msgstr "Sto già annunciando qualcosa. Se desideri fare un annuncio diverso, usa prima `{prefix}announce cancel`."
msgstr "Sto già annunciando qualcosa. Se vorresti fare un annuncio diverso, usa prima `{prefix}announce cancel`."
#: redbot/cogs/admin/admin.py:71
#, docstring
@@ -58,19 +58,19 @@ msgstr "Una collezione di servizi di amministrazione del server."
#: redbot/cogs/admin/admin.py:162
msgid "{member.display_name} already has the role {role.name}."
msgstr ""
msgstr "{member.display_name} ha già il ruolo {role.name}."
#: redbot/cogs/admin/admin.py:182
msgid "I successfully added {role.name} to {member.display_name}"
msgstr "Ho aggiunto con successo {role.name} al gruppo {member.display_name}"
msgstr "Ho aggiunto con successo {role.name} a {member.display_name}"
#: redbot/cogs/admin/admin.py:192
msgid "{member.display_name} does not have the role {role.name}."
msgstr ""
msgstr "{member.display_name} non ha il ruolo {role.name}."
#: redbot/cogs/admin/admin.py:212
msgid "I successfully removed {role.name} from {member.display_name}"
msgstr "Ho rimosso con successo {role.name} dal gruppo {member.display_name}"
msgstr "Ho rimosso con successo {role.name} da {member.display_name}"
#: redbot/cogs/admin/admin.py:223
#, docstring
@@ -79,7 +79,10 @@ 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"
"Aggiungi un ruolo ad un membro.\n\n"
"Usa le virgolette se il ruolo contiene spazi.\n"
"Se l'utente è lasciato vuoto, prenderà per predefinito chi ha utilizzato il comando. "
#: redbot/cogs/admin/admin.py:239
#, docstring
@@ -88,7 +91,10 @@ 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"
"Rimuove un ruolo da un utente.\n\n"
"Usa le virgolette se il ruolo contiene spazi.\n"
"Se l'utente è lasciato vuoto, prenderà per predefinito chi ha utilizzato il comando. "
#: redbot/cogs/admin/admin.py:253
#, docstring
@@ -106,7 +112,14 @@ msgid "\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900`\n"
" "
msgstr ""
msgstr "\n"
"Modifica il colore di un ruolo.\n\n"
"Usa le virgolette se il ruolo contiene spazi.\n"
"Il colore deve essere in formato esadecimale.\n"
"[Online colour picker](http://www.w3schools.com/colors/colors_picker.asp)\n\n"
" Esempi:\n"
" `[p]editrole colour \"The Transistor\" #ff0000`\n"
" `[p]editrole colour Test #ff9900` "
#: redbot/cogs/admin/admin.py:289 redbot/cogs/admin/admin.py:322
msgid "Done."
@@ -120,12 +133,16 @@ msgid "\n"
" Example:\n"
" `[p]editrole name \"The Transistor\" Test`\n"
" "
msgstr ""
msgstr "\n"
"Modifica il nome di un ruolo.\n\n"
"Usa le virgolette se il ruolo o il nome contengono spazi.\n\n"
"Esempio:\n"
" `[p]editrole name \"The Transistor\" Test` "
#: redbot/cogs/admin/admin.py:327
#, docstring
msgid "Announce a message to all servers the bot is in."
msgstr "Invia un annuncio a tutti i server in cui si trova il bot."
msgstr "Annuncia un messaggio a tutti i server in cui si trova il bot."
#: redbot/cogs/admin/admin.py:334
msgid "The announcement has begun."
@@ -138,16 +155,16 @@ msgstr "Cancella un annuncio in corso."
#: redbot/cogs/admin/admin.py:343
msgid "There is no currently running announcement."
msgstr ""
msgstr "Non c'è alcun annuncio in corso."
#: redbot/cogs/admin/admin.py:346
msgid "The current announcement has been cancelled."
msgstr "L'annuncio in corso è stato cancellato."
msgstr "Il corrente annuncio è stato cancellato."
#: redbot/cogs/admin/admin.py:352
#, docstring
msgid "Change how announcements are sent in this guild."
msgstr ""
msgstr "Cambia come gli annunci sono inviati in questo server."
#: redbot/cogs/admin/admin.py:357
#, docstring
@@ -155,16 +172,18 @@ msgid "\n"
" Change the channel where the bot will send announcements.\n\n"
" If channel is left blank it defaults to the current channel.\n"
" "
msgstr ""
msgstr "\n"
"Cambia il canale dove il bot manderà gli annunci.\n\n"
"Se il canale è lasciato vuoto prenderà per predefinito il canale corrente. "
#: redbot/cogs/admin/admin.py:366
msgid "The announcement channel has been set to {channel.mention}"
msgstr "Il canale per gli annunci è stato impostato su {channel.mention}"
msgstr "Il canale di annuncio è stato impostato su {channel.mention}"
#: redbot/cogs/admin/admin.py:371
#, docstring
msgid "Unsets the channel for announcements."
msgstr ""
msgstr "Rimuove il canale per gli annunci."
#: redbot/cogs/admin/admin.py:396
#, docstring
@@ -173,7 +192,10 @@ msgid "\n"
" Server admins must have configured the role as user settable.\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
msgstr "\n"
"Aggiungi o rimuovi un ruolo a te stesso.\n\n"
"Gli amministratori devono avere configurato il ruolo come impostabile dall'utente.\n"
"NOTA: Il ruolo è caso sensitivo! "
#: redbot/cogs/admin/admin.py:409
#, docstring
@@ -182,7 +204,10 @@ msgid "\n"
" Server admins must have configured the role as user settable.\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
msgstr "\n"
"Aggiungi un ruolo a te stesso.\n\n"
"Gli amministratori devono avere configurato il ruolo come impostabile dall'utente.\n"
"NOTA: Il ruolo è caso sensitivo! "
#: redbot/cogs/admin/admin.py:420
#, docstring
@@ -191,24 +216,29 @@ msgid "\n"
" Server admins must have configured the role as user settable.\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
msgstr "\n"
"Rimuovi un ruolo a te stesso.\n\n"
"Gli amministratori devono avere configurato il ruolo come impostabile dall'utente.\n"
"NOTA: Il ruolo è caso sensitivo! "
#: redbot/cogs/admin/admin.py:431
#, docstring
msgid "\n"
" Lists all available selfroles.\n"
" "
msgstr ""
msgstr "\n"
"Elenca tutti i ruoli assegnabili dall'utente. "
#: redbot/cogs/admin/admin.py:441
msgid "Available Selfroles:\n"
"{selfroles}"
msgstr ""
msgstr "Ruoli assegnabili dall'utente:\n"
"{selfroles}"
#: redbot/cogs/admin/admin.py:447
#, docstring
msgid "Manage selfroles."
msgstr ""
msgstr "Gestisci i ruoli assegnabili dall'utente."
#: redbot/cogs/admin/admin.py:452
#, docstring
@@ -216,19 +246,21 @@ msgid "\n"
" Add a role to the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
msgstr "\n"
"Aggiungi un ruolo alla lista dei ruoli assegnabili dall'utente.\n\n"
"NOTA: Il ruolo è caso sensitivo! "
#: redbot/cogs/admin/admin.py:459
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 "Non posso permetterti di aggiungere {role.name} come ruolo assegnabile dall'utente poiché tale ruolo è superiore o uguale al tuo ruolo più alto nella gerarchia di Discord."
#: redbot/cogs/admin/admin.py:467
msgid "Added."
msgstr ""
msgstr "Aggiunto."
#: redbot/cogs/admin/admin.py:470
msgid "That role is already a selfrole."
msgstr ""
msgstr "Quel ruolo è già un ruolo assegnabile dall'utente."
#: redbot/cogs/admin/admin.py:474
#, docstring
@@ -236,15 +268,17 @@ msgid "\n"
" Remove a role from the list of available selfroles.\n\n"
" NOTE: The role is case sensitive!\n"
" "
msgstr ""
msgstr "\n"
"Rimuovi un ruolo dalla lista dei ruoli assegnabili dall'utente.\n\n"
"NOTA: Il ruolo è caso sensitivo! "
#: redbot/cogs/admin/admin.py:481
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 "Non posso permetterti di rimuovere {role.name} dall'essere un selfrole perché quel ruolo è superiore o uguale al tuo ruolo più alto nella gerarchia di Discord."
#: redbot/cogs/admin/admin.py:489
msgid "Removed."
msgstr ""
msgstr "Rimosso."
#: redbot/cogs/admin/admin.py:494
#, docstring
@@ -257,15 +291,15 @@ msgstr "Il bot non è più bloccato ai server."
#: redbot/cogs/admin/admin.py:501
msgid "The bot is now serverlocked."
msgstr "Il bot è bloccato ai server."
msgstr "Il bot è adesso bloccato ai server."
#: redbot/cogs/admin/announcer.py:68
msgid "I could not announce to the following server: "
msgstr ""
msgstr "Non ho potuto annunciare al seguente server: "
#: redbot/cogs/admin/announcer.py:70
msgid "I could not announce to the following servers: "
msgstr ""
msgstr "Non ho potuto annunciare ai seguenti server: "
#: redbot/cogs/admin/converters.py:12
msgid "The Admin cog is not loaded."
@@ -273,5 +307,5 @@ msgstr "Il cog Admin non è caricato."
#: redbot/cogs/admin/converters.py:20
msgid "The provided role is not a valid selfrole."
msgstr "Il ruolo fornito non è un ruolo autoassegnabile valido."
msgstr "Il ruolo fornito non è un ruolo assegnabile dall'utente valido."

View File

@@ -140,7 +140,7 @@ msgstr "\n"
" Bewerk de rolnaam.\n\n"
" Gebruik dubbele aanhalingstekens als de rol of de naam spaties bevat.\n\n"
" Voorbeeld:\n"
" `[p]bewerkrole naam \"The Transistor\" Test`\n"
" `[p]editrole naam \"The Transistor\" Test`\n"
" "
#: redbot/cogs/admin/admin.py:327

View File

@@ -33,7 +33,7 @@ msgstr "Я не могу редактировать роль {role.name}, пот
#: redbot/cogs/admin/admin.py:41
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 "Я не могу вам дать {role.name}, {member.display_name}, поскольку эта роль выше или равна вашей самой высокой роли в иерархии Discord."
msgstr "Я не могу дать {role.name} пользователю {member.display_name}, поскольку эта роль выше или равна вашей самой высокой роли в иерархии Discord."
#: redbot/cogs/admin/admin.py:47
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."

View File

@@ -185,7 +185,7 @@ class Alias(commands.Cog):
# noinspection PyDunderSlots
new_message.content = "{}{} {}".format(
prefix, command, " ".join(args[trackform.max + 1 :])
)
).strip()
await self.bot.process_commands(new_message)
async def paginate_alias_list(

View File

@@ -39,7 +39,8 @@ msgstr "Alias :\n"
#: redbot/cogs/alias/alias.py:205
msgid "\n\n"
"Page {page}/{total}"
msgstr ""
msgstr "\n\n"
"Page {page}/{total}"
#: redbot/cogs/alias/alias.py:215
#, docstring
@@ -58,7 +59,7 @@ msgstr "Ajouter un alias à une commande."
#: redbot/cogs/alias/alias.py:232
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "Tu as tenté de créer un nouvel alias nommé {name}, mais une commande existe déjà avec ce nom sur ce bot."
msgstr "Vous avez tenté de créer un nouvel alias nommé {name}, mais une commande avec ce nom existe déjà sur ce bot."
#: redbot/cogs/alias/alias.py:243
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
@@ -66,7 +67,7 @@ msgstr "Vous avez tenté de créer un nouvel alias avec le nom {name} mais cet a
#: redbot/cogs/alias/alias.py:254
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Tu as tenté de créer un nouvel alias nommé {name}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces."
msgstr "Vous avez tenté de créer un nouvel alias nommé {name}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces."
#: redbot/cogs/alias/alias.py:266 redbot/cogs/alias/alias.py:325
msgid "You attempted to create a new alias for a command that doesn't exist."
@@ -83,7 +84,7 @@ msgstr "Ajouter un alias global à une commande."
#: redbot/cogs/alias/alias.py:291
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais une commande existe déjà avec ce nom sur ce bot."
msgstr "Vous avez tenté de créer un nouvel alias global nommé {name}, mais une commande avec ce nom existe déjà sur ce bot."
#: redbot/cogs/alias/alias.py:302
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
@@ -91,7 +92,7 @@ msgstr "Vous avez tenté de créer un nouvel alias global avec le nom {name} mai
#: redbot/cogs/alias/alias.py:313
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Tu as tenté de créer un nouvel alias global nommé {name}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces."
msgstr "Vous avez tenté de créer un nouvel alias global nommé {name}, mais ce nom d'alias est invalide. Les noms d'alias ne peuvent pas contenir d'espaces."
#: redbot/cogs/alias/alias.py:336
msgid "A new global alias with the trigger `{name}` has been created."

View File

@@ -24,77 +24,80 @@ 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 "Crea degli pseudonimi per i comandi.\n\n"
"Gli pseudonimi sono scorciatoie alternative per i comandi. Possono essere impiegati come lambda (salvare gli argomenti per un uso ripetuto) o semplicemente come una scorciatoia per dire \"x y z\".\n\n"
"Quando eseguiti, gli pseudonimi accetteranno eventuali argomenti e li aggiungeranno agli altri pseudonimi memorizzati. "
#: redbot/cogs/alias/alias.py:203
msgid "Aliases:\n"
msgstr ""
msgstr "Pseudonimi:\n"
#: redbot/cogs/alias/alias.py:205
msgid "\n\n"
"Page {page}/{total}"
msgstr ""
msgstr "\n\n"
"Pagina {page} di {total}"
#: redbot/cogs/alias/alias.py:215
#, docstring
msgid "Manage command aliases."
msgstr "Gestisci gli alias dei comandi."
msgstr "Gestisci gli pseudonimi dei comandi."
#: redbot/cogs/alias/alias.py:220
#, docstring
msgid "Manage global aliases."
msgstr "Gestisci alias globali."
msgstr "Gestisci gli pseudonimi globali."
#: redbot/cogs/alias/alias.py:227
#, docstring
msgid "Add an alias for a command."
msgstr "Aggiungi un alias per un comando."
msgstr "Aggiungi uno pseudonimo per un comando."
#: redbot/cogs/alias/alias.py:232
msgid "You attempted to create a new alias with the name {name} but that name is already a command on this bot."
msgstr "Hai cercato di creare un nuovo alias con il nome {name}, ma questo nome corrisponde già a un comando su questo bot."
msgstr "Hai cercato di creare un nuovo pseudonimo con il nome {name} ma questo nome corrisponde già ad un comando su questo bot."
#: redbot/cogs/alias/alias.py:243
msgid "You attempted to create a new alias with the name {name} but that alias already exists."
msgstr ""
msgstr "Hai provato a creare un nuovo pseudonimo con il nome {name} ma quello pseudonimo esiste già."
#: redbot/cogs/alias/alias.py:254
msgid "You attempted to create a new alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Hai cercato di creare un nuovo alias con il nome {name}, ma questo nome non è un nome alias valido. I nomi alias non possono contenere spazi."
msgstr "Hai cercato di creare un nuovo pseudonimo con il nome {name} ma quel nome non è un valido pseudonimo. Gli pseudonimi non possono contenere spazi."
#: redbot/cogs/alias/alias.py:266 redbot/cogs/alias/alias.py:325
msgid "You attempted to create a new alias for a command that doesn't exist."
msgstr ""
msgstr "Hai provato a creare un nuovo pseudonimo per un comando che non esiste."
#: redbot/cogs/alias/alias.py:280
msgid "A new alias with the trigger `{name}` has been created."
msgstr "È stato creato un nuovo alias con il comando '{name}'."
msgstr "Un nuovo pseudonimo con il comando '{name}' è stato creato."
#: redbot/cogs/alias/alias.py:286
#, docstring
msgid "Add a global alias for a command."
msgstr "Aggiungi un alias globale per un comando."
msgstr "Aggiungi uno pseudonimo globale per un comando."
#: redbot/cogs/alias/alias.py:291
msgid "You attempted to create a new global alias with the name {name} but that name is already a command on this bot."
msgstr "Hai cercato di creare un nuovo alias globale con il nome {name}, ma questo nome corrisponde già a un comando su questo bot."
msgstr "Hai provato a creare un nuovo pseudonimo globale con il nome {name} ma questo nome è già un comando su questo bot."
#: redbot/cogs/alias/alias.py:302
msgid "You attempted to create a new global alias with the name {name} but that alias already exists."
msgstr ""
msgstr "Hai provato a creare un nuovo pseudonimo globale con il nome {name} ma quello pseudonimo esiste già."
#: redbot/cogs/alias/alias.py:313
msgid "You attempted to create a new global alias with the name {name} but that name is an invalid alias name. Alias names may not contain spaces."
msgstr "Hai cercato di creare un nuovo alias globale con il nome {name}, ma questo nome non è un nome alias valido. I nomi alias non possono contenere spazi."
msgstr "Hai cercato di creare un nuovo pseudonimo globale con il nome {name} ma questo nome non è uno pseudonimo valido. Gli pseudonimi non possono contenere spazi."
#: redbot/cogs/alias/alias.py:336
msgid "A new global alias with the trigger `{name}` has been created."
msgstr "È stato creato un nuovo alias globale con il comando '{name}'."
msgstr "Un nuovo pseudonimo globale con il comando '{name}' è stato creato."
#: redbot/cogs/alias/alias.py:343
#, docstring
msgid "Try to execute help for the base command of the alias."
msgstr "Prova a eseguire l'aiuto per il comando di base dell'alias."
msgstr "Prova a eseguire l'aiuto per il comando di base degli pseudonimi."
#: redbot/cogs/alias/alias.py:348
msgid "No such alias exists."
@@ -103,20 +106,20 @@ msgstr "Non esiste nessun alias con questo nome."
#: redbot/cogs/alias/alias.py:352
#, docstring
msgid "Show what command the alias executes."
msgstr "Mostra quale comando viene eseguito dall'alias."
msgstr "Mostra quale comando viene eseguito dallo pseudonimo."
#: redbot/cogs/alias/alias.py:357
msgid "The `{alias_name}` alias will execute the command `{command}`"
msgstr "L'alias `{alias_name}` eseguirà il comando `{command}`"
msgstr "Lo pseudonimo `{alias_name}` eseguirà il comando `{command}`"
#: redbot/cogs/alias/alias.py:362
msgid "There is no alias with the name `{name}`"
msgstr "Non c'è nessun alias con il nome `{name}`"
msgstr "Non c'è alcun pseudonimo con il nome `{name}`"
#: redbot/cogs/alias/alias.py:368
#, docstring
msgid "Delete an existing alias on this server."
msgstr "Elimina un alias esistente su questo server."
msgstr "Elimina uno pseudonimo esistente su questo server."
#: redbot/cogs/alias/alias.py:370 redbot/cogs/alias/alias.py:402
msgid "There are no aliases on this server."
@@ -124,34 +127,34 @@ msgstr "Non ci sono alias su questo server."
#: redbot/cogs/alias/alias.py:375 redbot/cogs/alias/alias.py:390
msgid "Alias with the name `{name}` was successfully deleted."
msgstr "L'alias con il nome `{name}` è stato eliminato con successo."
msgstr "Lo pseudonimo con il nome `{name}` è stato eliminato con successo."
#: redbot/cogs/alias/alias.py:378 redbot/cogs/alias/alias.py:393
msgid "Alias with name `{name}` was not found."
msgstr "L'alias con il nome `{name}` non è stato trovato."
msgstr "Lo pseudonimo con il nome `{name}` non è stato trovato."
#: redbot/cogs/alias/alias.py:383
#, docstring
msgid "Delete an existing global alias."
msgstr "Elimina un alias globale esistente."
msgstr "Elimina uno pseudonimo globale esistente."
#: redbot/cogs/alias/alias.py:385
msgid "There are no global aliases on this bot."
msgstr ""
msgstr "Non ci sono pseudonimi globali su questo bot."
#: redbot/cogs/alias/alias.py:399
#, docstring
msgid "List the available aliases on this server."
msgstr "Elenca gli alias disponibili su questo server."
msgstr "Elenca gli pseudonimi disponibili su questo server."
#: redbot/cogs/alias/alias.py:408
#, docstring
msgid "List the available global aliases on this bot."
msgstr "Elenca gli alias globali disponibili su questo server."
msgstr "Elenca gli pseudonimi globali disponibili su questo server."
#: redbot/cogs/alias/alias.py:411
msgid "There are no global aliases."
msgstr ""
msgstr "Non ci sono pseudonimi globali."
#: redbot/cogs/alias/alias_entry.py:198
msgid "Arguments must be specified with a number."

View File

@@ -211,6 +211,7 @@ class AudioAPIInterface:
time_now = int(datetime.datetime.now(datetime.timezone.utc).timestamp())
youtube_cache = CacheLevel.set_youtube().is_subset(current_cache_level)
youtube_api_error = None
global_api = self.cog.global_api_user.get("can_read")
async for track in AsyncIter(tracks):
if isinstance(track, str):
break
@@ -267,13 +268,15 @@ class AudioAPIInterface:
track_count += 1
if notifier is not None and ((track_count % 2 == 0) or (track_count == total_tracks)):
await notifier.notify_user(current=track_count, total=total_tracks, key="youtube")
if notifier is not None and youtube_api_error:
if notifier is not None and (youtube_api_error and not global_api):
error_embed = discord.Embed(
colour=await ctx.embed_colour(),
title=_("Failing to get tracks, skipping remaining."),
)
await notifier.update_embed(error_embed)
break
elif notifier is not None and (youtube_api_error and global_api):
continue
if CacheLevel.set_spotify().is_subset(current_cache_level):
task = ("insert", ("spotify", database_entries))
self.append_task(ctx, *task)
@@ -447,11 +450,12 @@ class AudioAPIInterface:
List of Youtube URLs.
"""
await self.global_cache_api._get_api_key()
globaldb_toggle = await self.config.global_db_enabled()
globaldb_toggle = self.cog.global_api_user.get("can_read")
global_entry = globaldb_toggle and query_global
track_list: List = []
has_not_allowed = False
youtube_api_error = None
skip_youtube_api = False
try:
current_cache_level = CacheLevel(await self.config.cache_level())
guild_data = await self.config.guild(ctx.guild).all()
@@ -518,7 +522,7 @@ class AudioAPIInterface:
llresponse["loadType"] = "V2_COMPAT"
llresponse = LoadResult(llresponse)
val = llresponse or None
if val is None:
if val is None and not skip_youtube_api:
try:
val = await self.fetch_youtube_query(
ctx, track_info, current_cache_level=current_cache_level
@@ -526,6 +530,7 @@ class AudioAPIInterface:
except YouTubeApiError as err:
val = None
youtube_api_error = err.message
skip_youtube_api = True
if not youtube_api_error:
if youtube_cache and val and llresponse is None:
task = ("update", ("youtube", {"track": track_info}))
@@ -589,7 +594,9 @@ class AudioAPIInterface:
seconds=seconds,
)
if youtube_api_error or consecutive_fails >= (20 if global_entry else 10):
if (youtube_api_error and not global_entry) or consecutive_fails >= (
20 if global_entry else 10
):
error_embed = discord.Embed(
colour=await ctx.embed_colour(),
title=_("Failing to get tracks, skipping remaining."),
@@ -793,7 +800,7 @@ class AudioAPIInterface:
val = None
query = Query.process_input(query, self.cog.local_folder_current_path)
query_string = str(query)
globaldb_toggle = await self.config.global_db_enabled()
globaldb_toggle = self.cog.global_api_user.get("can_read")
valid_global_entry = False
results = None
called_api = False
@@ -925,6 +932,7 @@ class AudioAPIInterface:
autoplaylist = await self.config.guild(player.channel.guild).autoplaylist()
current_cache_level = CacheLevel(await self.config.cache_level())
cache_enabled = CacheLevel.set_lavalink().is_subset(current_cache_level)
notify_channel_id = player.fetch("channel")
playlist = None
tracks = None
if autoplaylist["enabled"]:
@@ -973,7 +981,7 @@ class AudioAPIInterface:
and not query.local_track_path.exists()
):
continue
notify_channel = self.bot.get_channel(player.fetch("channel"))
notify_channel = self.bot.get_channel(notify_channel_id)
if not await self.cog.is_query_allowed(
self.config,
notify_channel,
@@ -997,8 +1005,20 @@ class AudioAPIInterface:
)
player.add(player.channel.guild.me, track)
self.bot.dispatch(
"red_audio_track_auto_play", player.channel.guild, track, player.channel.guild.me
"red_audio_track_auto_play",
player.channel.guild,
track,
player.channel.guild.me,
player,
)
if notify_channel_id:
await self.config.guild_from_id(
guild_id=player.channel.guild.id
).currently_auto_playing_in.set([notify_channel_id, player.channel.id])
else:
await self.config.guild_from_id(
guild_id=player.channel.guild.id
).currently_auto_playing_in.set([])
if not player.current:
await player.play()

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Afrikaans\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: af_ZA\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Arabic\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: ar_SA\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "فشل في الحصول على المسارات ، التخطي المتبقي."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "لا يبدو أن هذا عنوان URL أو رمز Spotify مدعوم."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "تم إعادة تعيين الاتصال أثناء تحميل قائمة التشغيل."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "مهلة اللاعب، تخطي المسارات المتبقية."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "قائمة التشغيل قائمة الانتظار"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "أضاف {num} مسارات إلى قائمة الانتظار.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "أضاف {num} مسارات إلى قائمة الانتظار.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: bg_BG\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Bosnian\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: bs_BA\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Catalan\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: ca_ES\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: cs_CZ\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "Nepodařilo se získat skladby, přeskakuji zbývající."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 klíč nebo klientský tajný klíč nebyl správně nastaven. \n"
"Pro pokyny použijte `{prefix}audioset spotifyapi`."
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Nezdá se, že by to byla platná adresa Spotify playlistu/alba nebo kód."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Pravděpodobně se nejedná o podporovaný Spotify odkaz nebo kód."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "Připojení bylo obnoveno při načítání seznamu skladeb."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "Vypršel časový limit přehrávače, přeskakuji zbývající skladby."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} skladby nemůžou být zařazeny do fronty."
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "Playlist zařazen do fronty"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Přidáno {num} skladeb do fronty.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} do začátku přehrávání playlistu: je na #{position} pozici ve frontě"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: da_DK\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: de_DE\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "Fehler beim laden der Tracks. Verbleibende Tracks werden übersprungen."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 "Der Spotify API Key oder dar Client secret wurden nicht richtig eingestellt.\n"
" Benutze `{prefix}audioset spotifyapi` für eine Anleitung."
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Dies scheint keine gültige Spotify-Playlist/Album-URL oder Spotify-Code zu sein."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Dies scheint keine unterstützte Spotify-URL oder Spotify-Code zu sein."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "Die Verbindung wurde zurückgesetzt beim Laden der Playlist."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "Audioplayer-Timeout. Verbleibende Titel werden übersprungen."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} Tracks können nicht zur Warteschlange hinzugefügt werden."
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "Playlist eingereiht"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Es wurden {num} Tracks zu der Playlist hinzugefügt.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} bis zum Start der Playlist: beginnt bei #{position} in der Warteschlange"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: el_GR\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: es_ES\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "Falta al obtener pistas, omitiendo el resto."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 "La clave API de Spotify o el cliente secreto no se han configurado correctamente. \n"
"Usa `{prefix}audioset spotifyapi` para obtener instrucciones."
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Esta no parece ser una URL o código válido de la lista/álbum de Spotify."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Esta no parece ser una URL o código compatible con Spotify."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "La conexión se reinició mientras se cargaba la lista de reproducción."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "Tiempo de espera del reproductor, omitiendo pistas restantes."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} pistas no pueden ser puestas en cola."
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "Lista de reproducción en cola"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Añadido {num} pistas a la cola.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} hasta el inicio de la reproducción de la lista: comienza en #{position} en cola"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: fi_FI\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "Kappaleiden hakeminen ei onnistu, ohitetaan jäljellä olevat."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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-avainta tai client secret -arvoa ei ole asetettu oikein. \n"
"Käytä`{prefix}audioset spotifyapi` saadaksesi ohjeita."
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Tuo ei näytä olevan kelvollinen soittolistan/albumin Spotify-osoite tai -koodi."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Tuo ei näytä olevan kelvollinen Spotify-osoite tai -koodi."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "Yhteys nollattiin soittolistaa ladatessa."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "Toistimen aikakatkaisu, ohitetaan jäljellä olevat kappaleet."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} kappaletta ei voida lisätä jonoon."
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "Soittolista lisätty jonoon"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Lisättiin {num} kappaletta jonoon.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} aikaa soittolistan toiston aloittamiseen: alkaa sijalla #{position} jonossa"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: fr_FR\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "Impossible d'obtenir les pistes, pistes ignorées."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 "La clé API de Spotify ou le secret client n'ont pas étés correctement définis. \n"
"Utilisez `{prefix}audioset spotifyapi` pour connaître la marche à suivre."
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Cela ne semble pas être une URL ou un album/playlist Spotify valide."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Cela ne semble pas être une URL ou un code Spotify pris en charge."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "La connexion a été réinitialisée lors du chargement de la playlist."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "Arrêt du lecteur, pistes restantes ignorées."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} pistes ne peuvent pas être mises en attente."
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "Playlist en file dattente"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Ajout de {num} pistes à la file d'attente.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} avant le début de la lecture de la playlist : commence à #{position} dans la liste"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: he_IL\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Hindi\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: hi_IN\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: hu_HU\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: id_ID\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "Gagal mendapatkan trek, melewatkan sisa."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 "Kunci Spotify API atau rahasia klien belum disetel dengan benar.\n"
"Gunakan `{prefix} audioset spotifyapi` untuk mendapatkan petunjuk."
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Tampaknya ini bukan URL atau kode playlist/album Spotify yang valid."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Tampaknya ini bukan URL atau kode Spotify yang didukung."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "Sambungan disetel ulang saat memuat daftar putar."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "Waktu tunggu pemain, melewatkan trek yang tersisa."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} lagu tidak dapat diantrekan."
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "Antrean Daftar Putar"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Menambahkan {num} trek ke antrian. {maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} hingga dimulainya pemutaran playlist: dimulai dari #{position} dalam antrian"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"MIME-Version: 1.0\n"
@@ -15,62 +15,67 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: it_IT\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
msgstr "Impossibile ottenere le tracce, salto le rimanenti."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
msgstr "La chiave API o il client secret di Spotify non sono stati impostati correttamente. \n"
"Usa `{prefix}audioset spotifyapi` per le istruzioni."
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
msgstr "Questo non sembra essere un URL playlist/album o un codice Spotify valido."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
msgstr "Questo non sembra essere un URL o un codice Spotify supportato."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
msgstr "La connessione è stata reimpostata durante il caricamento della playlist."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
msgstr "Timeout del lettore, salto le tracce rimanenti."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
msgstr " {bad_tracks} tracce non possono essere accodate."
#: redbot/cogs/audio/apis/interface.py:676
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
msgid "Playlist Enqueued"
msgstr "Playlist in coda"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Aggiunte {num} tracce alla coda.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} fino all'inizio della riproduzione della playlist: inizia da #{position} in coda"
#: redbot/cogs/audio/apis/interface.py:694
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 ""
msgstr "Trovato nulla.\n"
"La chiave API di YouTube potrebbe non essere valida o potresti essere limitato dal servizio di ricerca di YouTube.\n"
"Controlla di nuovo la chiave API di YouTube e segui le istruzioni su `{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 ""
msgstr "Il tuo token API di YouTube non è valido.\n"
"Controlla nuovamente la chiave API di YouTube e segui le istruzioni su `{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 ""
msgstr "Codice di errore API di YouTube: 403\n"
"La tua chiave API di YouTube potrebbe aver raggiunto il limite di query dell'account per oggi. Controlla <https://developers.google.com/youtube/v3/getting-started#quota> per ulteriori informazioni."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: ja_JP\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: ko_KR\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "트랙을 추가하지 못해 나머지는 건너 뜁니다."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 "You deleted the translation \"Spotify API 키 또는 client secret이 올바르게 설정되지 않았습니다. \n"
"`{prefix}audioset spotifyapi`를 사용하여 명령어들을 확인하세요.\""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "유효한 Spotify 재생 목록, 앨범 URL 또는 코드가 아닌것 같습니다."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "지원되는 Spotify URL 또는 코드가 아닌 것 같습니다."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "재생 목록을 로드하는 동안 연결이 재설정되었습니다."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "플래이어 시간이 초과되었습니다. 남은 트랙들을 건너 뜁니다."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} 을 대기열에 추가할 수 없습니다."
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "대기중인 재생 목록"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "대기열에 {num} 개의 트랙이 추가되었습니다. {maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "재생 목록 재생이 시작될 때까지 {time} 남았습니다.: 대기열의 #{position} 에 시작합니다."
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Norwegian Bokmal\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: nb_NO\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "Klarer ikke å få spor, hopper over."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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-nøkkelen eller klienten hemmelig har ikke blitt satt ordentlig. \n"
"Bruk `{prefix}audioset spotifyapi` for instruksjoner."
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Dette ser ikke ut til å være en gyldig Spotify-spilleliste/album-URL eller kode."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Dette ser ikke ut til å være en støttet URL eller kode fra Spotify."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "Tilkoblingen ble tilbakestilt under lasting av spillelisten."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "Spillerens tidsavbrudd hopper over gjenstående spor."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} spor kan ikke legges i kø."
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "Spilleliste lagt i kø"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "La til {num} spor i avspillingskøen.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} til start av spilleliste avspilling: starter på #{position} i kø"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: nl_NL\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "Fout bij het krijgen van tracks, resterend overslaan."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 "De Spotitify API-sleutel of clientgeheim is niet correct ingesteld. \n"
"Gebruik `{prefix}audioset spotifyapi` voor instructies."
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Dit lijkt geen geldige Spotify afspeellijst/album URL of code te zijn."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Dit lijkt geen ondersteunde Spotify URL of code te zijn."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "De verbinding is gereset tijdens het laden van de afspeellijst."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "Speler time-out, resterende nummers worden overgeslagen."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} nummers kunnen niet in de wachtrij worden geplaatst."
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "Afspeellijst toegevoegd"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Er zijn {num} nummers toegevoegd aan de wachtrij.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} tot het begin van het afspelen van de afspeellijst: begint bij #{position} in de wachtrij"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: pl_PL\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "Nie udało się uzyskać utworów, pomijam pozostałe."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 "Klucz Spotify API lub sekret klienta nie zostały poprawnie ustawione. \n"
"Użyj `{prefix}audioset spotifyapi` dla dalszych instrukcji."
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Wygląda na to, że nie jest to poprawny adres URL listy odtwarzania/albumu Spotify."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Wygląda na to, że nie jest to obsługiwany adres URL lub kod Spotify."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "Połączenie zostało zresetowane podczas ładowania listy odtwarzania."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "Limit czasu odtwarzacza, pomijam pozostałe utwory."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} utworów nie może zostać zakolejkowane."
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "Lista odtwarzania zakolejkowana"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "Dodano {num} utworów do kolejki.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} do rozpoczęcia odtwarzania listy odtwarzania: zaczyna się od #{position} w kolejce"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: pt_BR\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "Falha ao obter as faixas; saltando as faixas restantes."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Isto não parece ser uma URL ou código do Spotify válido."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "A conexão foi redefinida durante o carregamento da lista de reprodução."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "Tempo limite do reprodutor atingido; saltando as faixas restantes."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "Lista de reprodução enfileirada"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "{num} faixas enfileiradas.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} até o início da reprodução da lista: começa na posição #{position} da fila"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: pt_PT\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Romanian\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: ro_RO\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: ru_RU\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "Не удалось получить треки, пропускаю оставшиеся треки."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 "API ключ Spotify или секрет клиента были установлены неправильно. \n"
"Для получения инструкций используйте `{prefix}audioset spotifyapi`."
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Это не похоже на действительный адрес или код Spotify."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Возможно, этот формат файла не поддерживается."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "Соединение было сброшено при загрузке плейлиста."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "Тайм-аут проигрывателя, пропуск оставшихся треков."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} невозможно добавить в очередь."
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "Плейлист добавлен в очередь"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "{num} треков добавлено в очередь.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} до начала воспроизведения плейлиста: начинается с #{position} в очереди"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Slovak\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: sk_SK\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Serbian (Latin)\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: sr_CS\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Serbian (Cyrillic)\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: sr_SP\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: sv_SE\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: tr_TR\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "Parça alınamıyor, atlanıyor."
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 anahtarı veya istemci sırrı düzgün ayarlanmamış. \n"
"Yönergeler için `{prefix}audioset spotifyapi` komutunu çalıştırın."
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "Bu geçerli bir Spotify çalma listesi / albüm URL'si veya Kodu gibi görünmüyor."
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "Bu geçerli bir Spotify URL'si ya da kodu gibi gözükmüyor."
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "Playlist yüklenirken bağlantı yenilendi."
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "Oynatıcı zaman aşımına uğradı, kalan parçalar atlanıyor."
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} parçalar sıraya alınamaz."
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "Playlist sıraya alındı"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "{num} adet şarkı sıraya eklendi.{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "Playlistin başlamasına {time} süre var: #{position} sırasında başlar"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Ukrainian\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: uk_UA\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: vi_VN\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: zh_CN\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Chinese Traditional, Hong Kong\n"
"MIME-Version: 1.0\n"
@@ -15,50 +15,50 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: zh_HK\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 ""
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr ""
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr ""
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Chinese Traditional\n"
"MIME-Version: 1.0\n"
@@ -15,51 +15,51 @@ msgstr ""
"X-Crowdin-File-ID: 698\n"
"Language: zh_TW\n"
#: redbot/cogs/audio/apis/interface.py:273
#: redbot/cogs/audio/apis/interface.py:595
#: redbot/cogs/audio/apis/interface.py:274
#: redbot/cogs/audio/apis/interface.py:602
msgid "Failing to get tracks, skipping remaining."
msgstr "無法取得歌曲,跳過剩餘的歌曲。"
#: redbot/cogs/audio/apis/interface.py:304
#: redbot/cogs/audio/apis/interface.py:307
#: 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 key 或 client secret 未正確設定。\n"
"請使用`{prefix} audioset spotifyapi`取得指示。"
#: redbot/cogs/audio/apis/interface.py:346
#: redbot/cogs/audio/apis/interface.py:349
msgid "This doesn't seem to be a valid Spotify playlist/album URL or code."
msgstr "這似乎不是有效的 Spotify 播放清單/專輯 URL 或代碼。"
#: redbot/cogs/audio/apis/interface.py:471
#: redbot/cogs/audio/apis/interface.py:475
msgid "This doesn't seem to be a supported Spotify URL or code."
msgstr "這似乎不是支援的 Spotify URL 或代碼。"
#: redbot/cogs/audio/apis/interface.py:558
#: redbot/cogs/audio/apis/interface.py:563
msgid "The connection was reset while loading the playlist."
msgstr "載入播放清單時重設了連線。"
#: redbot/cogs/audio/apis/interface.py:569
#: redbot/cogs/audio/apis/interface.py:574
msgid "Player timeout, skipping remaining tracks."
msgstr "播放器逾時,跳過剩餘歌曲。"
#: redbot/cogs/audio/apis/interface.py:661
#: redbot/cogs/audio/apis/interface.py:668
msgid " {bad_tracks} tracks cannot be queued."
msgstr " {bad_tracks} 首歌曲無法排入佇列。"
#: redbot/cogs/audio/apis/interface.py:669
#: redbot/cogs/audio/apis/interface.py:676
msgid "Playlist Enqueued"
msgstr "播放清單已加入佇列"
#: redbot/cogs/audio/apis/interface.py:670
#: redbot/cogs/audio/apis/interface.py:677
msgid "Added {num} tracks to the queue.{maxlength_msg}"
msgstr "已將 {num} 首歌曲加入佇列。{maxlength_msg}"
#: redbot/cogs/audio/apis/interface.py:676
#: redbot/cogs/audio/apis/interface.py:683
msgid "{time} until start of playlist playback: starts at #{position} in queue"
msgstr "{time} 後開始播放: 從佇列的第 #{position} 首開始"
#: redbot/cogs/audio/apis/interface.py:687
#: redbot/cogs/audio/apis/interface.py:694
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`."

View File

@@ -235,7 +235,7 @@ class PlaylistCompat23:
Trying to access the User scope without an user id.
"""
guild = data.get("guild") or kwargs.get("guild")
author: int = data.get("author") or 0
author: int = data.get("author") or kwargs.get("author") or 0
playlist_id = data.get("id") or playlist_number
name = data.get("name", "Unnamed")
playlist_url = data.get("playlist_url", None)

View File

@@ -58,7 +58,7 @@ Guild must be a valid version of one of the following:
_ = T_
MENTION_RE: Final[Pattern] = re.compile(r"^<?(?:(?:@[!&]?)?|#)(\d{15,21})>?$")
MENTION_RE: Final[Pattern] = re.compile(r"^<?(?:(?:@[!&]?)?|#)(\d{15,20})>?$")
def _match_id(arg: str) -> Optional[int]:

View File

@@ -2,7 +2,7 @@ import asyncio
import datetime
import json
from collections import Counter
from collections import Counter, defaultdict
from pathlib import Path
from typing import Mapping
@@ -77,6 +77,9 @@ class Audio(
self.session = aiohttp.ClientSession(json_serialize=json.dumps)
self.cog_ready_event = asyncio.Event()
self._ws_resume = defaultdict(asyncio.Event)
self._ws_op_codes = defaultdict(asyncio.LifoQueue)
self.cog_init_task = None
self.global_api_user = {
"fetched": False,
@@ -85,10 +88,12 @@ class Audio(
"can_delete": False,
}
self._ll_guild_updates = set()
self._diconnected_shard = set()
self._last_ll_update = datetime.datetime.now(datetime.timezone.utc)
default_global = dict(
schema_version=1,
bundled_playlist_version=0,
owner_notification=0,
cache_level=0,
cache_age=365,
@@ -107,8 +112,14 @@ class Audio(
default_guild = dict(
auto_play=False,
currently_auto_playing_in=None,
auto_deafen=True,
autoplaylist={"enabled": False, "id": None, "name": None, "scope": None},
autoplaylist=dict(
enabled=True,
id=42069,
name="Aikaterna's curated tracks",
scope=PlaylistScope.GLOBAL.value,
),
persist_queue=True,
disconnect=False,
dj_enabled=False,

View File

@@ -4,7 +4,7 @@ import asyncio
import datetime
from abc import ABC, abstractmethod
from collections import Counter
from collections import Counter, defaultdict
from pathlib import Path
from typing import Set, TYPE_CHECKING, Any, List, Mapping, MutableMapping, Optional, Tuple, Union
@@ -41,7 +41,7 @@ class MixinMeta(ABC):
db_conn: Optional[APSWConnectionWrapper]
session: aiohttp.ClientSession
skip_votes: MutableMapping[discord.Guild, List[discord.Member]]
skip_votes: MutableMapping[int, Set[int]]
play_lock: MutableMapping[int, bool]
_daily_playlist_cache: MutableMapping[int, bool]
_daily_global_playlist_cache: MutableMapping[int, bool]
@@ -62,12 +62,14 @@ class MixinMeta(ABC):
player_automated_timer_task: Optional[asyncio.Task]
cog_init_task: Optional[asyncio.Task]
cog_ready_event: asyncio.Event
_ws_resume: defaultdict[Any, asyncio.Event]
_ws_op_codes: defaultdict[int, asyncio.LifoQueue]
_default_lavalink_settings: Mapping
permission_cache = discord.Permissions
_last_ll_update: datetime.datetime
_ll_guild_updates: Set[int]
_diconnected_shard: Set[int]
@abstractmethod
async def command_llsetup(self, ctx: commands.Context):
@@ -306,6 +308,14 @@ class MixinMeta(ABC):
async def _playlist_check(self, ctx: commands.Context) -> bool:
raise NotImplementedError()
@abstractmethod
async def _build_bundled_playlist(self, forced: bool = None) -> None:
raise NotImplementedError()
@abstractmethod
def decode_track(self, track: str, decode_errors: str = "") -> MutableMapping:
raise NotImplementedError()
@abstractmethod
async def can_manage_playlist(
self, scope: str, playlist: "Playlist", ctx: commands.Context, user, guild

View File

@@ -1,12 +1,15 @@
from abc import ABC
from typing import Final
from base64 import b64decode
from io import BytesIO
import struct
from redbot import VersionInfo
from redbot.core import commands
from ..converters import get_lazy_converter, get_playlist_converter
__version__ = VersionInfo.from_json({"major": 2, "minor": 3, "micro": 0, "releaselevel": "final"})
__version__ = VersionInfo.from_json({"major": 2, "minor": 4, "micro": 0, "releaselevel": "final"})
__author__ = ["aikaterna", "Draper"]
@@ -57,3 +60,90 @@ class CompositeMetaClass(type(commands.Cog), type(ABC)):
"""
pass
# Both DataReader and DataWriter are taken from https://github.com/Devoxin/Lavalink.py/blob/master/lavalink/datarw.py
# These are licenced under MIT, Thanks Devoxin for putting these together!
# The license can be found in https://github.com/Devoxin/Lavalink.py/blob/master/LICENSE
class DataReader:
def __init__(self, ts):
self._buf = BytesIO(b64decode(ts))
def _read(self, n):
return self._buf.read(n)
def read_byte(self):
return self._read(1)
def read_boolean(self):
(result,) = struct.unpack("B", self.read_byte())
return result != 0
def read_unsigned_short(self):
(result,) = struct.unpack(">H", self._read(2))
return result
def read_int(self):
(result,) = struct.unpack(">i", self._read(4))
return result
def read_long(self):
(result,) = struct.unpack(">Q", self._read(8))
return result
def read_utf(self):
text_length = self.read_unsigned_short()
return self._read(text_length)
class DataWriter:
def __init__(self):
self._buf = BytesIO()
def _write(self, data):
self._buf.write(data)
def write_byte(self, byte):
self._buf.write(byte)
def write_boolean(self, b):
enc = struct.pack("B", 1 if b else 0)
self.write_byte(enc)
def write_unsigned_short(self, s):
enc = struct.pack(">H", s)
self._write(enc)
def write_int(self, i):
enc = struct.pack(">i", i)
self._write(enc)
def write_long(self, l):
enc = struct.pack(">Q", l)
self._write(enc)
def write_utf(self, s):
utf = s.encode("utf8")
byte_len = len(utf)
if byte_len > 65535:
raise OverflowError("UTF string may not exceed 65535 bytes!")
self.write_unsigned_short(byte_len)
self._write(utf)
def finish(self):
with BytesIO() as track_buf:
byte_len = self._buf.getbuffer().nbytes
flags = byte_len | (1 << 30)
enc_flags = struct.pack(">i", flags)
track_buf.write(enc_flags)
self._buf.seek(0)
track_buf.write(self._buf.read())
self._buf.close()
track_buf.seek(0)
return track_buf.read()

View File

@@ -558,7 +558,13 @@ class AudioSetCommands(MixinMeta, metaclass=CompositeMetaClass):
@command_audioset_autoplay.command(name="reset")
async def command_audioset_autoplay_reset(self, ctx: commands.Context):
"""Resets auto-play to the default playlist."""
playlist_data = dict(enabled=False, id=None, name=None, scope=None)
playlist_data = dict(
enabled=True,
id=42069,
name="Aikaterna's curated tracks",
scope=PlaylistScope.GLOBAL.value,
)
await self.config.guild(ctx.guild).autoplaylist.set(playlist_data)
return await self.send_embed_msg(
ctx,

View File

@@ -68,10 +68,14 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
eq = player.fetch("eq")
player.queue = []
player.store("playing_song", None)
player.store("autoplay_notified", False)
if eq:
await self.config.custom("EQUALIZER", ctx.guild.id).eq_bands.set(eq.bands)
await player.stop()
await player.disconnect()
await self.config.guild_from_id(guild_id=ctx.guild.id).currently_auto_playing_in.set(
[]
)
self._ll_guild_updates.discard(ctx.guild.id)
await self.api_interface.persistent_queue_api.drop(ctx.guild.id)
@@ -91,6 +95,8 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
}
expected = tuple(emoji.values())
player = lavalink.get_player(ctx.guild.id)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
if player.current:
arrow = await self.draw_time(ctx)
pos = self.format_time(player.position)
@@ -212,7 +218,8 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Manage Tracks"),
description=_("You need the DJ role to pause or resume tracks."),
)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
if not player.current:
return await self.send_embed_msg(ctx, title=_("Nothing playing."))
description = await self.get_track_description(
@@ -266,7 +273,8 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
"to enqueue the previous song tracks."
),
)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
if player.fetch("prev_song") is None:
return await self.send_embed_msg(
ctx, title=_("Unable To Play Tracks"), description=_("No previous track.")
@@ -332,7 +340,8 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Seek Tracks"),
description=_("You need the DJ role or be the track requester to use seek."),
)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
if player.current:
if player.current.is_stream:
return await self.send_embed_msg(
@@ -405,6 +414,8 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Toggle Shuffle"),
description=_("You must be in the voice channel to toggle shuffle."),
)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
shuffle = await self.config.guild(ctx.guild).shuffle()
await self.config.guild(ctx.guild).shuffle.set(not shuffle)
@@ -448,6 +459,8 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Toggle Shuffle"),
description=_("You must be in the voice channel to toggle shuffle."),
)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
bumped = await self.config.guild(ctx.guild).shuffle_bumped()
await self.config.guild(ctx.guild).shuffle_bumped.set(not bumped)
@@ -504,7 +517,8 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Skip Tracks"),
description=_("You can only skip the current track."),
)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
if vote_enabled:
if not can_skip:
if skip_to_track is not None:
@@ -515,14 +529,14 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
"Can't skip to a specific track in vote mode without the DJ role."
),
)
if ctx.author.id in self.skip_votes[ctx.message.guild]:
self.skip_votes[ctx.message.guild].remove(ctx.author.id)
if ctx.author.id in self.skip_votes[ctx.guild.id]:
self.skip_votes[ctx.guild.id].discard(ctx.author.id)
reply = _("I removed your vote to skip.")
else:
self.skip_votes[ctx.message.guild].append(ctx.author.id)
self.skip_votes[ctx.guild.id].add(ctx.author.id)
reply = _("You voted to skip.")
num_votes = len(self.skip_votes[ctx.message.guild])
num_votes = len(self.skip_votes[ctx.guild.id])
vote_mods = []
for member in player.channel.members:
can_skip = await self._can_instaskip(ctx, member)
@@ -532,7 +546,7 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
vote = int(100 * num_votes / num_members)
percent = await self.config.guild(ctx.guild).vote_percent()
if vote >= percent:
self.skip_votes[ctx.message.guild] = []
self.skip_votes[ctx.guild.id] = set()
await self.send_embed_msg(ctx, title=_("Vote threshold met."))
return await self._skip_action(ctx)
else:
@@ -583,6 +597,8 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Stop Player"),
description=_("You need the DJ role to stop the music."),
)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
if (
player.is_playing
or (not player.is_playing and player.paused)
@@ -597,7 +613,11 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
player.store("prev_requester", None)
player.store("prev_song", None)
player.store("requester", None)
player.store("autoplay_notified", False)
await player.stop()
await self.config.guild_from_id(guild_id=ctx.guild.id).currently_auto_playing_in.set(
[]
)
await self.send_embed_msg(ctx, title=_("Stopping..."))
await self.api_interface.persistent_queue_api.drop(ctx.guild.id)
@@ -642,17 +662,28 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
description=_("I don't have permission to connect to your channel."),
)
if not self._player_check(ctx):
await lavalink.connect(ctx.author.voice.channel)
await lavalink.connect(
ctx.author.voice.channel,
deafen=await self.config.guild_from_id(ctx.guild.id).auto_deafen(),
)
player = lavalink.get_player(ctx.guild.id)
player.store("connect", datetime.datetime.utcnow())
await self.self_deafen(player)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
else:
player = lavalink.get_player(ctx.guild.id)
if ctx.author.voice.channel == player.channel:
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
if (
ctx.author.voice.channel == player.channel
and ctx.guild.me in ctx.author.voice.channel.members
):
ctx.command.reset_cooldown(ctx)
return
await player.move_to(ctx.author.voice.channel)
await self.self_deafen(player)
await player.move_to(
ctx.author.voice.channel,
deafen=await self.config.guild_from_id(ctx.guild.id).auto_deafen(),
)
except AttributeError:
ctx.command.reset_cooldown(ctx)
return await self.send_embed_msg(
@@ -693,23 +724,33 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Change Volume"),
description=_("You must be in the voice channel to change the volume."),
)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
if dj_enabled and not can_skip and not await self._has_dj_role(ctx, ctx.author):
return await self.send_embed_msg(
ctx,
title=_("Unable To Change Volume"),
description=_("You need the DJ role to change the volume."),
)
if vol < 0:
vol = 0
if vol > 150:
vol = 150
await self.config.guild(ctx.guild).volume.set(vol)
if self._player_check(ctx):
await lavalink.get_player(ctx.guild.id).set_volume(vol)
player = lavalink.get_player(ctx.guild.id)
await player.set_volume(vol)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
else:
await self.config.guild(ctx.guild).volume.set(vol)
if self._player_check(ctx):
await lavalink.get_player(ctx.guild.id).set_volume(vol)
player = lavalink.get_player(ctx.guild.id)
await player.set_volume(vol)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
embed = discord.Embed(title=_("Volume:"), description=str(vol) + "%")
if not self._player_check(ctx):
embed.set_footer(text=_("Nothing playing."))
@@ -741,6 +782,8 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Toggle Repeat"),
description=_("You must be in the voice channel to toggle repeat."),
)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
autoplay = await self.config.guild(ctx.guild).auto_play()
repeat = await self.config.guild(ctx.guild).repeat()
@@ -784,6 +827,8 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Modify Queue"),
description=_("You must be in the voice channel to manage the queue."),
)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
if isinstance(index_or_url, int):
if index_or_url > len(player.queue) or index_or_url < 1:
return await self.send_embed_msg(
@@ -864,7 +909,8 @@ class PlayerControllerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Bump Track"),
description=_("Song number must be greater than 1 and within the queue limit."),
)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
bump_index = index - 1
bump_song = player.queue[bump_index]
bump_song.extras["bumped"] = True

View File

@@ -173,7 +173,8 @@ class EqualizerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Load Preset"),
description=_("You need the DJ role to load equalizer presets."),
)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
await self.config.custom("EQUALIZER", ctx.guild.id).eq_bands.set(eq_values)
await self._eq_check(ctx, player)
eq = player.fetch("eq", Equalizer())
@@ -202,6 +203,8 @@ class EqualizerCommands(MixinMeta, metaclass=CompositeMetaClass):
description=_("You need the DJ role to reset the equalizer."),
)
player = lavalink.get_player(ctx.guild.id)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
eq = player.fetch("eq", Equalizer())
for band in range(eq.band_count):
@@ -284,6 +287,8 @@ class EqualizerCommands(MixinMeta, metaclass=CompositeMetaClass):
return await eq_exists_msg.edit(embed=embed2)
player = lavalink.get_player(ctx.guild.id)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
eq = player.fetch("eq", Equalizer())
to_append = {eq_preset: {"author": ctx.author.id, "bands": eq.bands}}
new_eq_presets = {**eq_presets, **to_append}
@@ -325,6 +330,8 @@ class EqualizerCommands(MixinMeta, metaclass=CompositeMetaClass):
)
player = lavalink.get_player(ctx.guild.id)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
band_names = [
"25",
"40",

View File

@@ -223,7 +223,7 @@ class LavalinkSetupCommands(MixinMeta, metaclass=CompositeMetaClass):
msg = "----" + _("Connection Settings") + "---- \n"
msg += _("Host: [{host}]\n").format(host=host)
msg += _("WS Port: [{port}]\n").format(port=ws_port)
if ws_port != rest_port:
if ws_port != rest_port and rest_port != 2333:
msg += _("Rest Port: [{port}]\n").format(port=rest_port)
msg += _("Password: [{password}]\n").format(password=password)
try:

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

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

@@ -78,10 +78,14 @@ class PlayerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Play Tracks"),
description=_("I don't have permission to connect to your channel."),
)
await lavalink.connect(ctx.author.voice.channel)
await lavalink.connect(
ctx.author.voice.channel,
deafen=await self.config.guild_from_id(ctx.guild.id).auto_deafen(),
)
player = lavalink.get_player(ctx.guild.id)
player.store("connect", datetime.datetime.utcnow())
await self.self_deafen(player)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
except AttributeError:
return await self.send_embed_msg(
ctx,
@@ -185,10 +189,14 @@ class PlayerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Play Tracks"),
description=_("I don't have permission to connect to your channel."),
)
await lavalink.connect(ctx.author.voice.channel)
await lavalink.connect(
ctx.author.voice.channel,
deafen=await self.config.guild_from_id(ctx.guild.id).auto_deafen(),
)
player = lavalink.get_player(ctx.guild.id)
player.store("connect", datetime.datetime.utcnow())
await self.self_deafen(player)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
except AttributeError:
return await self.send_embed_msg(
ctx,
@@ -450,10 +458,14 @@ class PlayerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Play Tracks"),
description=_("I don't have permission to connect to your channel."),
)
await lavalink.connect(ctx.author.voice.channel)
await lavalink.connect(
ctx.author.voice.channel,
deafen=await self.config.guild_from_id(ctx.guild.id).auto_deafen(),
)
player = lavalink.get_player(ctx.guild.id)
player.store("connect", datetime.datetime.utcnow())
await self.self_deafen(player)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
except AttributeError:
return await self.send_embed_msg(
ctx,
@@ -566,10 +578,14 @@ class PlayerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Play Tracks"),
description=_("I don't have permission to connect to your channel."),
)
await lavalink.connect(ctx.author.voice.channel)
await lavalink.connect(
ctx.author.voice.channel,
deafen=await self.config.guild_from_id(ctx.guild.id).auto_deafen(),
)
player = lavalink.get_player(ctx.guild.id)
player.store("connect", datetime.datetime.utcnow())
await self.self_deafen(player)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
except AttributeError:
return await self.send_embed_msg(
ctx,
@@ -626,10 +642,8 @@ class PlayerCommands(MixinMeta, metaclass=CompositeMetaClass):
if not guild_data["auto_play"]:
await ctx.invoke(self.command_audioset_autoplay_toggle)
if not guild_data["notify"] and (
(player.current and not player.current.extras.get("autoplay")) or not player.current
):
await self.send_embed_msg(ctx, title=_("Auto play started."))
if not guild_data["notify"] and not player.fetch("autoplay_notified", False):
pass
elif player.current:
await self.send_embed_msg(ctx, title=_("Adding a track to queue."))
@@ -692,10 +706,14 @@ class PlayerCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Search For Tracks"),
description=_("I don't have permission to connect to your channel."),
)
await lavalink.connect(ctx.author.voice.channel)
await lavalink.connect(
ctx.author.voice.channel,
deafen=await self.config.guild_from_id(ctx.guild.id).auto_deafen(),
)
player = lavalink.get_player(ctx.guild.id)
player.store("connect", datetime.datetime.utcnow())
await self.self_deafen(player)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
except AttributeError:
return await self.send_embed_msg(
ctx,

View File

@@ -1678,7 +1678,7 @@ class PlaylistCommands(MixinMeta, metaclass=CompositeMetaClass):
try:
if not await self.can_manage_playlist(scope, playlist, ctx, author, guild):
return
if playlist.url:
if playlist.url or playlist.id == 42069:
player = lavalink.get_player(ctx.guild.id)
added, removed, playlist = await self._maybe_update_playlist(
ctx, player, playlist

View File

@@ -338,10 +338,14 @@ class QueueCommands(MixinMeta, metaclass=CompositeMetaClass):
title=_("Unable To Shuffle Queue"),
description=_("I don't have permission to connect to your channel."),
)
await lavalink.connect(ctx.author.voice.channel)
await lavalink.connect(
ctx.author.voice.channel,
deafen=await self.config.guild_from_id(ctx.guild.id).auto_deafen(),
)
player = lavalink.get_player(ctx.guild.id)
player.store("connect", datetime.datetime.utcnow())
await self.self_deafen(player)
player.store("channel", ctx.channel.id)
player.store("guild", ctx.guild.id)
except AttributeError:
ctx.command.reset_cooldown(ctx)
return await self.send_embed_msg(

View File

@@ -32,8 +32,10 @@ class AudioEvents(MixinMeta, metaclass=CompositeMetaClass):
if await self.bot.cog_disabled_in_guild(self, guild):
player = lavalink.get_player(guild.id)
player.store("autoplay_notified", False)
await player.stop()
await player.disconnect()
await self.config.guild_from_id(guild_id=guild.id).currently_auto_playing_in.set([])
return
track_identifier = track.track_identifier
@@ -157,7 +159,9 @@ class AudioEvents(MixinMeta, metaclass=CompositeMetaClass):
await self.api_interface.persistent_queue_api.delete_scheduled()
@commands.Cog.listener()
async def on_red_audio_track_enqueue(self, guild: discord.Guild, track, requester):
async def on_red_audio_track_enqueue(
self, guild: discord.Guild, track: lavalink.Track, requester: discord.Member
):
if not (track and guild):
return
persist_cache = self._persist_queue_cache.setdefault(
@@ -181,3 +185,28 @@ class AudioEvents(MixinMeta, metaclass=CompositeMetaClass):
await self.api_interface.persistent_queue_api.drop(guild.id)
await asyncio.sleep(5)
await self.api_interface.persistent_queue_api.delete_scheduled()
@commands.Cog.listener()
async def on_red_audio_track_auto_play(
self,
guild: discord.Guild,
track: lavalink.Track,
requester: discord.Member,
player: lavalink.Player,
):
notify_channel = self.bot.get_channel(player.fetch("channel"))
tries = 0
while not player._is_playing:
await asyncio.sleep(0.1)
if tries > 1000:
return
if notify_channel and not player.fetch("autoplay_notified", False):
if (
len(player.manager.players) < 10
or not player._last_resume
and player._last_resume + datetime.timedelta(seconds=60)
> datetime.datetime.now(tz=datetime.timezone.utc)
):
await self.send_embed_msg(notify_channel, title=_("Auto Play started."))
player.store("autoplay_notified", True)

View File

@@ -244,7 +244,7 @@ class DpyEvents(MixinMeta, metaclass=CompositeMetaClass):
lavalink.unregister_event_listener(self.lavalink_event_handler)
lavalink.unregister_update_listener(self.lavalink_update_handler)
self.bot.loop.create_task(lavalink.close())
self.bot.loop.create_task(lavalink.close(self.bot))
if self.player_manager is not None:
self.bot.loop.create_task(self.player_manager.shutdown())
@@ -259,12 +259,31 @@ class DpyEvents(MixinMeta, metaclass=CompositeMetaClass):
await self.cog_ready_event.wait()
if after.channel != before.channel:
try:
self.skip_votes[before.channel.guild].remove(member.id)
self.skip_votes[before.channel.guild.id].discard(member.id)
except (ValueError, KeyError, AttributeError):
pass
# if (
# member == member.guild.me
# and before.channel
# and after.channel
# and after.channel.id != before.channel.id
# ):
# try:
# player = lavalink.get_player(member.guild.id)
# if player.is_playing:
# await player.resume(player.current, start=player.position, replace=False)
# log.debug("Bot changed channel - Resume playback")
# except:
# log.debug("Bot changed channel - Unable to resume playback")
channel = self.rgetattr(member, "voice.channel", None)
bot_voice_state = self.rgetattr(member, "guild.me.voice.self_deaf", None)
if channel and bot_voice_state is False:
if (
channel
and bot_voice_state is False
and await self.config.guild(member.guild).auto_deafen()
):
try:
player = lavalink.get_player(channel.guild.id)
except (KeyError, AttributeError):
@@ -272,3 +291,15 @@ class DpyEvents(MixinMeta, metaclass=CompositeMetaClass):
else:
if player.channel.id == channel.id:
await self.self_deafen(player)
@commands.Cog.listener()
async def on_shard_disconnect(self, shard_id):
self._diconnected_shard.add(shard_id)
@commands.Cog.listener()
async def on_shard_ready(self, shard_id):
self._diconnected_shard.discard(shard_id)
@commands.Cog.listener()
async def on_shard_resumed(self, shard_id):
self._diconnected_shard.discard(shard_id)

View File

@@ -3,9 +3,12 @@ import contextlib
import datetime
import logging
from pathlib import Path
from typing import Dict
import discord
import lavalink
from discord.backoff import ExponentialBackoff
from discord.gateway import DiscordWebSocket
from redbot.core.i18n import Translator, set_contextual_locales_from_guild
from ...errors import DatabaseError, TrackEnqueueError
@@ -13,6 +16,9 @@ from ..abc import MixinMeta
from ..cog_utils import CompositeMetaClass
log = logging.getLogger("red.cogs.Audio.cog.Events.lavalink")
ws_audio_log = logging.getLogger("red.Audio.WS.Audio")
ws_audio_log.setLevel(logging.WARNING)
_ = Translator("Audio", Path(__file__))
@@ -28,27 +34,62 @@ class LavalinkEvents(MixinMeta, metaclass=CompositeMetaClass):
) -> None:
current_track = player.current
current_channel = player.channel
if not current_channel:
return
guild = self.rgetattr(current_channel, "guild", None)
if not (current_channel and guild):
player.store("autoplay_notified", False)
await player.stop()
await player.disconnect()
return
if await self.bot.cog_disabled_in_guild(self, guild):
await player.stop()
await player.disconnect()
if guild:
await self.config.guild_from_id(guild_id=guild.id).currently_auto_playing_in.set(
[]
)
return
guild_id = self.rgetattr(guild, "id", None)
if not guild:
return
guild_data = await self.config.guild(guild).all()
disconnect = guild_data["disconnect"]
if event_type == lavalink.LavalinkEvents.FORCED_DISCONNECT:
self.bot.dispatch("red_audio_audio_disconnect", guild)
await self.config.guild_from_id(guild_id=guild_id).currently_auto_playing_in.set([])
self._ll_guild_updates.discard(guild.id)
return
if event_type == lavalink.LavalinkEvents.WEBSOCKET_CLOSED:
deafen = guild_data["auto_deafen"]
event_channel_id = extra.get("channelID")
_error_code = extra.get("code")
if _error_code in [1000] or not guild:
if _error_code == 1000:
await player.resume(player.current, start=player.position, replace=False)
return
await self._ws_op_codes[guild_id].put((event_channel_id, _error_code))
try:
if guild_id not in self._ws_resume:
self._ws_resume[guild_id].set()
await self._websocket_closed_handler(
guild=guild, player=player, extra=extra, deafen=deafen, disconnect=disconnect
)
except Exception:
log.exception(
f"Error in WEBSOCKET_CLOSED handling for guild: {player.channel.guild.id}"
)
return
await set_contextual_locales_from_guild(self.bot, guild)
current_requester = self.rgetattr(current_track, "requester", None)
current_stream = self.rgetattr(current_track, "is_stream", None)
current_length = self.rgetattr(current_track, "length", None)
current_thumbnail = self.rgetattr(current_track, "thumbnail", None)
current_extras = self.rgetattr(current_track, "extras", {})
current_id = self.rgetattr(current_track, "_info", {}).get("identifier")
guild_data = await self.config.guild(guild).all()
repeat = guild_data["repeat"]
notify = guild_data["notify"]
disconnect = guild_data["disconnect"]
autoplay = guild_data["auto_play"]
description = await self.get_track_description(
current_track, self.local_folder_current_path
@@ -59,7 +100,7 @@ class LavalinkEvents(MixinMeta, metaclass=CompositeMetaClass):
await self.maybe_reset_error_counter(player)
if event_type == lavalink.LavalinkEvents.TRACK_START:
self.skip_votes[guild] = []
self.skip_votes[guild_id] = set()
playing_song = player.fetch("playing_song")
requester = player.fetch("requester")
player.store("prev_song", playing_song)
@@ -71,25 +112,35 @@ class LavalinkEvents(MixinMeta, metaclass=CompositeMetaClass):
await self.api_interface.persistent_queue_api.played(
guild_id=guild_id, track_id=current_track.track_identifier
)
notify_channel = player.fetch("channel")
if notify_channel and autoplay:
await self.config.guild_from_id(guild_id=guild_id).currently_auto_playing_in.set(
[notify_channel, player.channel.id]
)
else:
await self.config.guild_from_id(guild_id=guild_id).currently_auto_playing_in.set(
[]
)
if event_type == lavalink.LavalinkEvents.TRACK_END:
prev_requester = player.fetch("prev_requester")
self.bot.dispatch("red_audio_track_end", guild, prev_song, prev_requester)
player.store("resume_attempts", 0)
if event_type == lavalink.LavalinkEvents.QUEUE_END:
prev_requester = player.fetch("prev_requester")
self.bot.dispatch("red_audio_queue_end", guild, prev_song, prev_requester)
if guild_id:
await self.api_interface.persistent_queue_api.drop(guild_id)
if (
if player.is_auto_playing or (
autoplay
and not player.queue
and player.fetch("playing_song") is not None
and self.playlist_api is not None
and self.api_interface is not None
):
notify_channel = player.fetch("channel")
try:
await self.api_interface.autoplay(player, self.playlist_api)
except DatabaseError:
notify_channel = player.fetch("channel")
notify_channel = self.bot.get_channel(notify_channel)
if notify_channel:
await self.send_embed_msg(
@@ -97,7 +148,6 @@ class LavalinkEvents(MixinMeta, metaclass=CompositeMetaClass):
)
return
except TrackEnqueueError:
notify_channel = player.fetch("channel")
notify_channel = self.bot.get_channel(notify_channel)
if notify_channel:
await self.send_embed_msg(
@@ -116,18 +166,7 @@ class LavalinkEvents(MixinMeta, metaclass=CompositeMetaClass):
if player.fetch("notify_message") is not None:
with contextlib.suppress(discord.HTTPException):
await player.fetch("notify_message").delete()
if (
autoplay
and current_extras.get("autoplay")
and (
prev_song is None
or (hasattr(prev_song, "extras") and not prev_song.extras.get("autoplay"))
)
):
await self.send_embed_msg(notify_channel, title=_("Auto Play started."))
if not description:
if not (description and notify_channel):
return
if current_stream:
dur = "LIVE"
@@ -166,6 +205,9 @@ class LavalinkEvents(MixinMeta, metaclass=CompositeMetaClass):
await self.send_embed_msg(notify_channel, title=_("Queue ended."))
if disconnect:
self.bot.dispatch("red_audio_audio_disconnect", guild)
await self.config.guild_from_id(
guild_id=guild_id
).currently_auto_playing_in.set([])
await player.disconnect()
self._ll_guild_updates.discard(guild.id)
if status:
@@ -197,10 +239,14 @@ class LavalinkEvents(MixinMeta, metaclass=CompositeMetaClass):
eq = player.fetch("eq")
player.queue = []
player.store("playing_song", None)
player.store("autoplay_notified", False)
if eq:
await self.config.custom("EQUALIZER", guild_id).eq_bands.set(eq.bands)
await player.stop()
await player.disconnect()
await self.config.guild_from_id(guild_id=guild_id).currently_auto_playing_in.set(
[]
)
self._ll_guild_updates.discard(guild_id)
self.bot.dispatch("red_audio_audio_disconnect", guild)
if message_channel:
@@ -240,3 +286,209 @@ class LavalinkEvents(MixinMeta, metaclass=CompositeMetaClass):
)
await message_channel.send(embed=embed)
await player.skip()
async def _websocket_closed_handler(
self,
guild: discord.Guild,
player: lavalink.Player,
extra: Dict,
deafen: bool,
disconnect: bool,
) -> None:
guild_id = guild.id
event_channel_id = extra.get("channelID")
try:
if not self._ws_resume[guild_id].is_set():
await self._ws_resume[guild_id].wait()
else:
self._ws_resume[guild_id].clear()
node = player.node
voice_ws: DiscordWebSocket = node.get_voice_ws(guild_id)
code = extra.get("code")
by_remote = extra.get("byRemote", "")
reason = extra.get("reason", "No Specified Reason").strip()
channel_id = player.channel.id
try:
event_channel_id, to_handle_code = await self._ws_op_codes[guild_id].get()
except asyncio.QueueEmpty:
log.debug("Empty queue - Resuming Processor - Early exit")
return
if code != to_handle_code:
code = to_handle_code
if player.channel.id != event_channel_id:
code = 4014
if event_channel_id != channel_id:
ws_audio_log.info(
f"Received an op code for a channel that is no longer valid; {event_channel_id} "
f"in guild: {guild_id} - Active channel {channel_id} | "
f"Reason: Error code {code} & {reason}."
)
self._ws_op_codes[guild_id]._init(self._ws_op_codes[guild_id]._maxsize)
return
if player.channel:
current_perms = player.channel.permissions_for(player.channel.guild.me)
has_perm = current_perms.speak and current_perms.connect
else:
has_perm = False
if code in (1000,) and has_perm and player.current and player.is_playing:
player.store("resumes", player.fetch("resumes", 0) + 1)
await player.resume(player.current, start=player.position, replace=True)
ws_audio_log.info(
f"Player resumed in channel {channel_id} in guild: {guild_id} | "
f"Reason: Error code {code} & {reason}."
)
self._ws_op_codes[guild_id]._init(self._ws_op_codes[guild_id]._maxsize)
return
if voice_ws.socket._closing or voice_ws.socket.closed or not voice_ws.open:
if player._con_delay:
delay = player._con_delay.delay()
else:
player._con_delay = ExponentialBackoff(base=1)
delay = player._con_delay.delay()
ws_audio_log.warning(
"YOU CAN IGNORE THIS UNLESS IT'S CONSISTENTLY REPEATING FOR THE SAME GUILD - "
f"Voice websocket closed for guild {guild_id} -> "
f"Socket Closed {voice_ws.socket._closing or voice_ws.socket.closed}. "
f"Code: {code} -- Remote: {by_remote} -- {reason}"
)
ws_audio_log.debug(
f"Reconnecting to channel {channel_id} in guild: {guild_id} | {delay:.2f}s"
)
await asyncio.sleep(delay)
while voice_ws.socket._closing or voice_ws.socket.closed or not voice_ws.open:
voice_ws = node.get_voice_ws(guild_id)
await asyncio.sleep(0.1)
if has_perm and player.current and player.is_playing:
player.store("resumes", player.fetch("resumes", 0) + 1)
await player.connect(deafen=deafen)
await player.resume(player.current, start=player.position, replace=True)
ws_audio_log.info(
"Voice websocket reconnected "
f"to channel {channel_id} in guild: {guild_id} | "
f"Reason: Error code {code} & Currently playing."
)
elif has_perm and player.paused and player.current:
player.store("resumes", player.fetch("resumes", 0) + 1)
await player.connect(deafen=deafen)
await player.resume(
player.current, start=player.position, replace=True, pause=True
)
ws_audio_log.info(
"Voice websocket reconnected "
f"to channel {channel_id} in guild: {guild_id} | "
f"Reason: Error code {code} & Currently Paused."
)
elif has_perm and (not disconnect) and (not player.is_playing):
player.store("resumes", player.fetch("resumes", 0) + 1)
await player.connect(deafen=deafen)
ws_audio_log.info(
"Voice websocket reconnected "
f"to channel {channel_id} in guild: {guild_id} | "
f"Reason: Error code {code} & Not playing, but auto disconnect disabled."
)
self._ll_guild_updates.discard(guild_id)
elif not has_perm:
self.bot.dispatch("red_audio_audio_disconnect", guild)
ws_audio_log.info(
"Voice websocket disconnected "
f"from channel {channel_id} in guild: {guild_id} | "
f"Reason: Error code {code} & Missing permissions."
)
self._ll_guild_updates.discard(guild_id)
player.store("autoplay_notified", False)
await player.stop()
await player.disconnect()
await self.config.guild_from_id(
guild_id=guild_id
).currently_auto_playing_in.set([])
else:
self.bot.dispatch("red_audio_audio_disconnect", guild)
ws_audio_log.info(
"Voice websocket disconnected "
f"from channel {channel_id} in guild: {guild_id} | "
f"Reason: Error code {code} & Unknown."
)
self._ll_guild_updates.discard(guild_id)
player.store("autoplay_notified", False)
await player.stop()
await player.disconnect()
await self.config.guild_from_id(
guild_id=guild_id
).currently_auto_playing_in.set([])
elif code in (42069,) and has_perm and player.current and player.is_playing:
player.store("resumes", player.fetch("resumes", 0) + 1)
await player.connect(deafen=deafen)
await player.resume(player.current, start=player.position, replace=True)
ws_audio_log.info(
f"Player resumed in channel {channel_id} in guild: {guild_id} | "
f"Reason: Error code {code} & {reason}."
)
elif code in (4015, 4009, 4006, 4000, 1006):
if player._con_delay:
delay = player._con_delay.delay()
else:
player._con_delay = ExponentialBackoff(base=1)
delay = player._con_delay.delay()
ws_audio_log.debug(
f"Reconnecting to channel {channel_id} in guild: {guild_id} | {delay:.2f}s"
)
await asyncio.sleep(delay)
if has_perm and player.current and player.is_playing:
await player.connect(deafen=deafen)
await player.resume(player.current, start=player.position, replace=True)
ws_audio_log.info(
"Voice websocket reconnected "
f"to channel {channel_id} in guild: {guild_id} | "
f"Reason: Error code {code} & Player is active."
)
elif has_perm and player.paused and player.current:
player.store("resumes", player.fetch("resumes", 0) + 1)
await player.connect(deafen=deafen)
await player.resume(
player.current, start=player.position, replace=True, pause=True
)
ws_audio_log.info(
"Voice websocket reconnected "
f"to channel {channel_id} in guild: {guild_id} | "
f"Reason: Error code {code} & Player is paused."
)
elif has_perm and (not disconnect) and (not player.is_playing):
player.store("resumes", player.fetch("resumes", 0) + 1)
await player.connect(deafen=deafen)
ws_audio_log.info(
"Voice websocket reconnected "
f"to channel {channel_id} in guild: {guild_id} | "
f"Reason: Error code {code} & Not playing."
)
self._ll_guild_updates.discard(guild_id)
elif not has_perm:
self.bot.dispatch("red_audio_audio_disconnect", guild)
ws_audio_log.info(
"Voice websocket disconnected "
f"from channel {channel_id} in guild: {guild_id} | "
f"Reason: Error code {code} & Missing permissions."
)
self._ll_guild_updates.discard(guild_id)
player.store("autoplay_notified", False)
await player.stop()
await player.disconnect()
await self.config.guild_from_id(
guild_id=guild_id
).currently_auto_playing_in.set([])
else:
if not player.paused and player.current:
player.store("resumes", player.fetch("resumes", 0) + 1)
await player.resume(player.current, start=player.position, replace=False)
ws_audio_log.info(
"WS EVENT - IGNORED (Healthy Socket) | "
f"Voice websocket closed event for guild {guild_id} -> "
f"Code: {code} -- Remote: {by_remote} -- {reason}"
)
except Exception:
log.exception("Error in task")
finally:
self._ws_op_codes[guild_id]._init(self._ws_op_codes[guild_id]._maxsize)
self._ws_resume[guild_id].set()

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Afrikaans\n"
"MIME-Version: 1.0\n"
@@ -15,6 +15,10 @@ msgstr ""
"X-Crowdin-File-ID: 670\n"
"Language: af_ZA\n"
#: redbot/cogs/audio/core/events/cog.py:211
msgid "Auto Play started."
msgstr ""
#: redbot/cogs/audio/core/events/dpy.py:40
msgid "You have attempted to run Audio's Lavalink server on an unsupported architecture. Only settings related commands will be available."
msgstr ""
@@ -70,12 +74,12 @@ msgid "The bot is not connected to a voice channel."
msgstr ""
#: redbot/cogs/audio/core/events/dpy.py:193
#: redbot/cogs/audio/core/events/lavalink.py:105
#: redbot/cogs/audio/core/events/lavalink.py:155
msgid "Unable to Get Track"
msgstr ""
#: redbot/cogs/audio/core/events/dpy.py:194
#: redbot/cogs/audio/core/events/lavalink.py:106
#: redbot/cogs/audio/core/events/lavalink.py:156
msgid "I'm unable to get a track from Lavalink at the moment, try again in a few minutes."
msgstr ""
@@ -87,44 +91,40 @@ msgstr ""
msgid "This error has been reported to the bot owner."
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:96
#: redbot/cogs/audio/core/events/lavalink.py:147
msgid "Couldn't get a valid track."
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:128
msgid "Auto Play started."
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:143
#: redbot/cogs/audio/core/events/lavalink.py:182
msgid "Now Playing"
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:145
#: redbot/cogs/audio/core/events/lavalink.py:184
msgid "Track length: {length} | Requested by: {user}"
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:166
#: redbot/cogs/audio/core/events/lavalink.py:205
msgid "Queue ended."
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:211
#: redbot/cogs/audio/core/events/lavalink.py:257
msgid "Multiple Errors Detected"
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:212
#: redbot/cogs/audio/core/events/lavalink.py:258
msgid "Closing the audio player due to multiple errors being detected. If this persists, please inform the bot owner as the Audio cog may be temporally unavailable."
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:226
#: redbot/cogs/audio/core/events/lavalink.py:272
msgid "Track Stuck"
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:227
#: redbot/cogs/audio/core/events/lavalink.py:273
msgid "Playback of the song has stopped due to an unexcepted error.\n"
"{error}"
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:233
#: redbot/cogs/audio/core/events/lavalink.py:279
msgid "Track Error"
msgstr ""

View File

@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: red-discordbot\n"
"POT-Creation-Date: 2021-02-11 12:29+0000\n"
"POT-Creation-Date: 2021-04-05 19:02+0000\n"
"Last-Translator: \n"
"Language-Team: Arabic\n"
"MIME-Version: 1.0\n"
@@ -15,6 +15,10 @@ msgstr ""
"X-Crowdin-File-ID: 670\n"
"Language: ar_SA\n"
#: redbot/cogs/audio/core/events/cog.py:211
msgid "Auto Play started."
msgstr ""
#: redbot/cogs/audio/core/events/dpy.py:40
msgid "You have attempted to run Audio's Lavalink server on an unsupported architecture. Only settings related commands will be available."
msgstr "لقد حاولت تشغيل خادم Lavalink للصوت على هندسة معمارية غير مدعومة. لن تتوفر سوى الأوامر ذات الصلة بالاعدادات."
@@ -70,12 +74,12 @@ msgid "The bot is not connected to a voice channel."
msgstr ""
#: redbot/cogs/audio/core/events/dpy.py:193
#: redbot/cogs/audio/core/events/lavalink.py:105
#: redbot/cogs/audio/core/events/lavalink.py:155
msgid "Unable to Get Track"
msgstr ""
#: redbot/cogs/audio/core/events/dpy.py:194
#: redbot/cogs/audio/core/events/lavalink.py:106
#: redbot/cogs/audio/core/events/lavalink.py:156
msgid "I'm unable to get a track from Lavalink at the moment, try again in a few minutes."
msgstr ""
@@ -87,44 +91,40 @@ msgstr ""
msgid "This error has been reported to the bot owner."
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:96
#: redbot/cogs/audio/core/events/lavalink.py:147
msgid "Couldn't get a valid track."
msgstr "تعذر الحصول على مسار صالح."
#: redbot/cogs/audio/core/events/lavalink.py:128
msgid "Auto Play started."
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:143
#: redbot/cogs/audio/core/events/lavalink.py:182
msgid "Now Playing"
msgstr "تشغيل الآن"
#: redbot/cogs/audio/core/events/lavalink.py:145
#: redbot/cogs/audio/core/events/lavalink.py:184
msgid "Track length: {length} | Requested by: {user}"
msgstr "طول المسار: {length} <unk> طلب من: {user}"
#: redbot/cogs/audio/core/events/lavalink.py:166
#: redbot/cogs/audio/core/events/lavalink.py:205
msgid "Queue ended."
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:211
#: redbot/cogs/audio/core/events/lavalink.py:257
msgid "Multiple Errors Detected"
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:212
#: redbot/cogs/audio/core/events/lavalink.py:258
msgid "Closing the audio player due to multiple errors being detected. If this persists, please inform the bot owner as the Audio cog may be temporally unavailable."
msgstr "إغلاق مشغل الصوت بسبب العديد من الأخطاء التي يتم الكشف عنها. إذا استمر هذا، يرجى إبلاغ مالك البوت بأن رمز الصوت قد يكون غير متوفر مؤقتاً."
#: redbot/cogs/audio/core/events/lavalink.py:226
#: redbot/cogs/audio/core/events/lavalink.py:272
msgid "Track Stuck"
msgstr "تعثر المسارات"
#: redbot/cogs/audio/core/events/lavalink.py:227
#: redbot/cogs/audio/core/events/lavalink.py:273
msgid "Playback of the song has stopped due to an unexcepted error.\n"
"{error}"
msgstr ""
#: redbot/cogs/audio/core/events/lavalink.py:233
#: redbot/cogs/audio/core/events/lavalink.py:279
msgid "Track Error"
msgstr "خطأ في المسار"

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