Moved everything to /src

This commit is contained in:
Luquinhas 2024-12-08 19:55:35 -03:00
parent dec0390280
commit 1072b641c8
29 changed files with 10 additions and 2 deletions

94
src/locales/english.json Normal file
View file

@ -0,0 +1,94 @@
{
"lynxWelcome": "*Hello! I am Lynx!*\nI was made with love by Lucas Gabriel (@lukig1)!\n\n*Before using, you need to read the privacy policy (/privacy) to understand where your data goes when using this bot.*\n\nAlso, you can use /help to see the bot commands!\n\n*Special thanks to @givfnz2 for his many contributions to the bot!*",
"lynxHelp": "*Hey, I'm Lynx, a simple bot made entirely from scratch in Telegraf and Node.js by Lucas Gabriel (lucmsilva).*\n\nClick on the buttons below to see which commands you can use!\n",
"lynxPrivacy": "Check out [this link](https://blog.eleu.me/posts/lynx-privacy-policy) to read the bot's privacy policy.",
"unKnown": "Unknown",
"varYes": "Yes",
"varNo": "No",
"varNone": "None",
"invalidOption": "Whoops! Invalid option!",
"kickingMyself": "*Since you don't need me, I'll leave.*",
"kickingMyselfErr": "Error leaving the chat.",
"noPermission": "You don't have permission to run this command.",
"botAdminOnly": "This command is exclusive to the bot's general administrators. I can't disclose who they are, nor what this command does.",
"privateOnly": "This command should only be used in private chats, not in groups.",
"groupOnly": "This command should only be used in groups, not in private chats.",
"botNameChanged": "*Bot name changed to* `{botName}`.",
"botNameErr": "*Error changing bot name:*\n`{tgErr}`",
"botDescChanged": "*Bot description changed to* `{botDesc}`.",
"botDescErr": "*Error changing bot description:*\n`{tgErr}`",
"invalidId": "Please enter a valid user ID.",
"banSuccess": "User with ID `{userId}` has been banned.",
"banErr": "Could not ban the user. Check if the ID is correct and if the bot has admin permissions.\n\n`{tgErr}`",
"unBanSuccess": "User with ID `{userId}` has been unbanned.",
"unBanErr": "Could not unban the user. Check if the ID is correct and if the bot has admin permissions.\n\n`{tgErr}`",
"isGay": "Yes, you are *gay*!",
"isNtGay": "Ah, you are not gay!",
"isFurry": "Yes, you are *furry*!",
"isNtFurry": "Ah, you are not a furry!",
"randomNum": "*Generated number (0-10):* `{number}`.",
"userInfo": "*User info*\n\n*Name:* `{userName}`\n*Username:* `{userHandle}`\n*User ID:* `{userId}`\n*Language:* `{userLang}`\n*Premium user:* `{userPremium}`",
"chatInfo": "*Chat info*\n\n*Name:* `{chatName}`\n*Chat ID:* `{chatId}`\n*Handle:* `{chatHandle}`\n*Type:* `{chatType}`\n*Members:* `{chatMembersCount}`\n*Is a forum:* `{isForum}`",
"funEmojiResult": "*You rolled {emoji} and got* `{value}`*!*\nYou don't know what that means? Me neither!",
"gifErr": "*Something went wrong while sending the GIF. Please try again later.*\n\n{err}",
"lastFmNoUser": "*Please provide a Last.fm username.*\nExample: `/setuser <username>`",
"lastFmNoSet": "*You haven't set your Last.fm username yet.*\nUse the command /setuser to set.\n\nExample: `/setuser <username>`",
"lastFmNoRecent": "*No recent tracks found for Last.fm user* `{lastfmUser}`*.*",
"lastFmListeningNow": "Listening now",
"lastFmUserSet": "*Your Last.fm username has been set to:* `{lastUser}`.",
"lastFmLastPlayed": "Last played",
"lastFmStatusFor": "*Last.fm status for user* {lastfmUser}*:*\n\n*{nowPlaying}*: {trackName} by {artistName} \n\n*Number of plays*: {plays}",
"lastFmErr": "*Error retrieving data for Last.fm user* {lastfmUser}.\n\n`{err}`",
"currentCommit": "*Current commit:* `{commitHash}`",
"errorRetrievingCommit": "*Error retrieving commit:* {error}",
"provideLocation": "*Please provide a location.*",
"invalidLocation": "*Invalid location. Try again.*",
"weatherStatus": "*Weather in {addressFirst}:*\n\n*Status:* `{getStatusEmoji(iconCode)} {wxPhraseLong}`\n*Temperature:* `{temperature} °{temperatureUnit}`\n*Feels like:* `{temperatureFeelsLike} °{temperatureUnit2}`\n*Humidity:* `{relativeHumidity}%`\n*Wind speed:* `{windSpeed} {speedUnit}`",
"weatherErr": "*An error occurred while retrieving the weather. Please try again later.*\n\n`{error}`",
"mainCommands": "Main commands",
"mainCommandsDesc": "*Main commands*\n\n- /help: Show bot's help\n- /start: Start the bot\n- /privacy: Read the bot's Privacy Policy",
"usefulCommands": "Useful commands",
"usefulCommandsDesc": "*Useful commands*\n\n- /chatinfo: Send information about the group\n- /userinfo: Send information about yourself\n- /d | /device `<model>`: Search for a device on GSMArena and show its specs.\n- /weather | /clima `<city>`: See weather status for a specific location.\n- /modarchive | /tma `<module id>`: Download a module from The Mod Archive.\n- /wiki `<wiki page>` (WIP): Displays content from a Wikipedia page, converting some things to a more familiar format on Telegram.\n- /http `<HTTP code>`: Send details about a specific HTTP code. Example: `/http 404`",
"funnyCommands": "Funny commands",
"funnyCommandsDesc": "*Funny commands*\n\n- /gay: Check if you are gay\n- /furry: Check if you are a furry\n- /random: Pick a random number between 0-10",
"interactiveEmojis": "Interactive emojis",
"interactiveEmojisDesc": "*Interactive emojis*\n\n- /dice: Roll a dice\n- /idice: Infinitely roll a colored dice\n- /slot: Try to combine the figures!\n- /ball: Try to kick the ball into the goal!\n- /bowling: Try to hit the pins!\n- /dart: Try to hit the target!",
"ytDlp": "yt-dlp (YouTube)",
"ytDlpDesc": "*yt-dlp (YouTube)*\n\n- /yt | /ytdl `<video link>`: Download an YouTube video\n\nThis command also works with other video platforms! See [this link](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md) for more information and which services are supported.\n\n*Note: Telegram is currently limiting bot uploads to 50MB, which means that if the video you want to download is larger than 50MB, the quality will be reduced to try to upload it anyway. We're trying our best to work around or fix this problem.*",
"lastFm": "Last.fm",
"lastFmDesc": "*Last.fm*\n\n- /lt | /lmu | /last | /lfm: Shows the last song from your Last.fm profile + the number of plays.\n- /setuser `<user>`: Sets the user for the command above.",
"animalCommands": "Animals",
"animalCommandsDesc": "*Animals*\n\n- /soggy `<1 | 2 | 3 | 4 | orig | thumb | sticker | alt>`: Sends the [Soggy cat meme](https://knowyourmeme.com/memes/soggy-cat)\n - /cat `<tags>`: Sends a random picture of a cat. You can specify some tags, separating each by a comma. Example: `/cat orange, cute`\n- /dog: Sends a random picture of a dog.\n- /httpcat `<http code>`: Send cat memes from http.cat with your specified HTTP code. Example: `/httpcat 404`",
"myLittlePony": "My Little Pony",
"myLittlePonyDesc": "*My Little Pony*\n\n- /mlp: Displays this help message.\n- /mlpchar `<character name>`: Shows specific information about a My Little Pony character. Example: `/mlpchar twilight`\n- /mlpep: Shows specific information about a My Little Pony episode. Example: `/mlpep 136`",
"goBack": "Back",
"maInvalidModule": "Please provide a valid module ID from The Mod Archive.\nExample: `/modarchive 81574`",
"maDownloadError": "Error downloading the file. Check the module ID and try again.",
"ytDownloading": "*Downloading video...*",
"ytFileErr": "*It seems that the yt-dlp executable does not exist on our server...\n\nIn that case, the problem is on our end! Please wait until we have noticed and solved the problem.*",
"ytCheckingSize": "*Checking if the video exceeds the 50MB limit...*",
"ytUploading": "*Uploading video...*",
"ytUploadDesc": "*[{userName}](tg://user?id={userId}), there is your downloaded video.*",
"ytDownloadErr": "*Error during YT video download:*\n\n`{err}`",
"ytUploadLimit": "*This video exceeds the 50 MB upload limit imposed by Telegram on our bot. Please try another video. We're doing our best to increase this limit.*",
"ytUploadLimit2": "*This video had its quality reduced because it exceeded the 50MB limit for uploads imposed by Telegram.*",
"fileError": "Error uploading file",
"botUpdated": "Bot updated with success.\n\n```{result}```",
"errorUpdatingBot": "Error updating bot\n\n{error}",
"catImgErr": "Sorry, but I couldn't get the cat photo you wanted.",
"catGifErr": "Sorry, but I couldn't get the cat GIF you wanted.",
"quoteResult": "Here is a random quote for you:",
"quoteErr": "Sorry, but something went wrong while displaying the quote.",
"dogImgErr": "Sorry, but I couldn't get the dog photo you wanted.",
"httpCodeInvalid": "Please enter a valid HTTP code.",
"httpCodeErr": "An error occurred while fetching the HTTP code.",
"httpCodeNotFound": "HTTP code not found.",
"httpCodeResult": "*HTTP Code*: {code}\n*Name*: `{message}`\n*Description*: {description}",
"ponyApiCharRes": "*MLP Character Information for* \"`{input}`\"*:*\n\n*Name:* `{name}`\n\n*Alias*: `{alias}`\n\n*Fandom URL:* [{url}]({url})\n\n*Sex:* `{sex}`\n\n*Residence:* `{residence}`\n\n*Occupation:* `{occupation}`\n\n*Kind:* `{kind}`",
"ponyApiEpRes": "*MLP Episode Information for* \"`{input}`\"*:*\n\n*Name:* `{name}`\n*Fandom URL:* [{url}]({url})\n*Season:* `{season}`\n*Episode:* `{episode}`\n*Overall Ep.:* `{overall}`\n*Release date:* `{airdate}`\n*Story by:* `{storyby}`\n*Written by:* `{writtenby}`\n*Storyboard:* `{storyboard}`",
"ponyApiNoCharName": "Please provide the character's name.",
"ponyApiNoCharFound": "No character found.",
"ponyApiNoEpisodeNum": "Please provide the episode's number.",
"ponyApiNoEpisodeFound": "No episode found.",
"ponyApiErr": "An error occurred while fetching data from the API."
}

View file

@ -0,0 +1,94 @@
{
"lynxWelcome": "*Olá! Eu sou o Lynx!*\nFui feito com carinho por Lucas Gabriel (@lukig1)!\n\n*Antes de usar, você precisa ler a política de privacidade (/privacy) para entender onde seus dados vão ao usar este bot.*\n\nAlém disso, você pode usar /help para ver os comandos do bot!\n\n*Agradecimento especial ao @givfnz2 pelas suas várias contribuições ao bot!*",
"lynxHelp": "*Oi, eu sou o Lynx, um bot simples feito do zero em Telegraf e Node.js por Lucas Gabriel (lucmsilva).*\n\nClique nos botões abaixo para ver quais comandos você pode usar!\n",
"lynxPrivacy": "Acesse [este link](https://blog.eleu.me/posts/lynx-privacy-policy) para ler a política de privacidade do bot.",
"unKnown": "Desconhecido",
"varYes": "Sim",
"varNo": "Não",
"varNone": "Nenhum",
"invalidOption": "Ops! Opção inválida!",
"kickingMyself": "*Já que você não precisa de mim, vou sair daqui.*",
"kickingMyselfErr": "Erro ao sair do chat.",
"noPermission": "Você não tem permissão para executar este comando.",
"botAdminOnly": "Este comando é exclusivo para os administradores gerais do bot. Eu não posso revelar quem eles são, nem o que este comando faz.",
"privateOnly": "Este comando deve ser usado apenas em chats privados, não em grupos.",
"groupOnly": "Este comando deve ser usado apenas em grupos, não em chats privados.",
"botNameChanged": "*Nome do bot alterado para* `{botName}`.",
"botNameErr": "*Erro ao alterar o nome do bot:*\n`{tgErr}`",
"botDescChanged": "*Descrição do bot alterada para* `{botDesc}`.",
"botDescErr": "*Erro ao alterar a descrição do bot:*\n`{tgErr}`",
"invalidId": "Por favor, insira um ID de usuário válido.",
"banSuccess": "Usuário com ID `{userId}` foi banido.",
"banErr": "Não foi possível banir o usuário. Verifique se o ID está correto e se o bot tem permissões de administrador.\n\n`{tgErr}`",
"unBanSuccess": "Usuário com ID `{userId}` foi desbanido.",
"unBanErr": "Não foi possível desbanir o usuário. Verifique se o ID está correto e se o bot tem permissões de administrador.\n\n`{tgErr}`",
"isGay": "Sim, você é *gay*!",
"isNtGay": "Ah, você não é gay!",
"isFurry": "Sim, você é *furry*!",
"isNtFurry": "Ah, você não é furry!",
"randomNum": "*Número gerado (0-10):* `{number}`.",
"userInfo": "*Informações do usuário*\n\n*Nome:* `{userName}`\n*Usuário:* `{userHandle}`\n*ID:* `{userId}`\n*Idioma:* `{userLang}`\n*Usuário Premium:* `{userPremium}`",
"chatInfo": "*Informações do chat*\n\n*Nome:* `{chatName}`\n*ID do chat:* `{chatId}`\n*Identificador:* `{chatHandle}`\n*Tipo:* `{chatType}`\n*Membros:* `{chatMembersCount}`\n*É um fórum:* `{isForum}`",
"funEmojiResult": "*Você lançou {emoji} e obteve *`{value}`*!*\nVocê não sabe o que isso significa? Nem eu!",
"gifErr": "*Algo deu errado ao enviar o GIF. Tente novamente mais tarde.*\n\n{err}",
"lastFmNoUser": "*Por favor, forneça um nome de usuário do Last.fm.*\nExemplo: `/setuser <username>`",
"lastFmNoSet": "*Você ainda não definiu seu nome de usuário do Last.fm.*\nUse o comando /setuser para definir.\n\nExemplo: `/setuser <username>`",
"lastFmNoRecent": "*Nenhuma faixa recente encontrada para o usuário do Last.fm* `{lastfmUser}`*.*",
"lastFmListeningNow": "Ouvindo agora",
"lastFmUserSet": "*Seu nome de usuário do Last.fm foi definido como:* `{lastUser}`.",
"lastFmLastPlayed": "Última reprodução",
"lastFmStatusFor": "*Status do Last.fm para o usuário* {lastfmUser}*:*\n\n*{nowPlaying}*: {trackName} por {artistName}\n\n*Número de reproduções*: {plays}",
"lastFmErr": "*Erro ao recuperar dados para o usuário do Last.fm* {lastfmUser}.\n\n`{err}`",
"currentCommit": "*Commit atual:* `{commitHash}`",
"errorRetrievingCommit": "*Erro ao obter o commit:*\n\n`{error}`",
"provideLocation": "*Por favor, forneça uma localização.*",
"invalidLocation": "*Localização inválida. Tente novamente.*",
"weatherStatus": "*Clima em {addressFirst}:*\n\n*Estado:* `{getStatusEmoji(iconCode)} {wxPhraseLong}`\n*Temperatura:* `{temperature} °{temperatureUnit}`\n*Sensação térmica:* `{temperatureFeelsLike} °{temperatureUnit2}`\n*Umidade:* `{relativeHumidity}%`\n*Velocidade do vento:* `{windSpeed} {speedUnit}`",
"weatherErr": "*Ocorreu um erro ao obter o clima. Tente novamente mais tarde.*\n\n`{error}`",
"mainCommands": "Comandos principais",
"mainCommandsDesc": "*Comandos principais*\n\n- /help: Exibe a ajuda do bot\n- /start: Inicia o bot\n- /privacy: Leia a política de privacidade do bot",
"usefulCommands": "Comandos úteis",
"usefulCommandsDesc": "*Comandos úteis*\n\n- /chatinfo: Envia informações sobre o grupo\n- /userinfo: Envia informações sobre você\n- /d | /device `<modelo>`: Pesquisa um dispositivo no GSMArena e mostra suas especificações.\n- /weather | /clima `<cidade>`: Veja o status do clima para uma localização específica\n- /modarchive | /tma `<id do módulo>`: Baixa um módulo do The Mod Archive.\n- /wiki `<página da wiki>` (WIP): Exibe conteúdo de uma página da Wikipedia, convertendo algumas coisas para um formato mais familiar no Telegram.\n- /http `<código HTTP>`: Envia detalhes sobre um código HTTP específico. Exemplo: `/http 404`",
"funnyCommands": "Comandos engraçados",
"funnyCommandsDesc": "*Comandos engraçados*\n\n- /gay: Verifique se você é gay\n- /furry: Verifique se você é furry\n- /random: Escolhe um número aleatório entre 0-10",
"interactiveEmojis": "Emojis interativos",
"interactiveEmojisDesc": "*Emojis interativos*\n\n- /dice: Jogue um dado\n- /idice: Role infinitamente um dado colorido\n- /slot: Tente combinar as figuras!\n- /ball: Tente chutar a bola no gol!\n- /bowling: Tente derrubar os pinos!\n- /dart: Tente acertar o alvo!",
"ytDlp": "yt-dlp (YouTube)",
"ytDlpDesc": "*yt-dlp (YouTube)*\n\n- /yt | /ytdl `<link do vídeo>`: Baixa um vídeo do YouTube.\n\nEsse comando também funciona com outras plataformas de vídeo! Consulte [este link](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md) para obter mais informações e saber quais serviços são compatíveis.\n\n*Nota: O Telegram está atualmente limitando os uploads de bots a 50MB, o que significa que se o vídeo que você deseja baixar for maior que 50MB, a qualidade será reduzida para tentar carregá-lo de qualquer maneira. Estamos fazendo o possível para contornar ou corrigir esse problema.*",
"lastFm": "Last.fm",
"lastFmDesc": "*Last.fm*\n\n- /lt | /lmu | /last | /lfm: Mostra a última música do seu perfil no Last.fm + o número de reproduções.\n- /setuser `<usuário>`: Define o usuário para o comando acima.",
"animalCommands": "Animais",
"animalCommandsDesc": "*Animais*\n\n- /soggy `<1 | 2 | 3 | 4 | orig | thumb | sticker | alt>`: Envia o [meme do gato encharcado](https://knowyourmeme.com/memes/soggy-cat)\n- /cat `<tags>` - Envia uma foto aleatória de um gato. Você pode especificar algumas tags em inglês, separando cada uma por uma vírgula. Exemplo: `/cat orange, cute`\n- /dog - Envia uma imagem aleatória de um cachorro.\n- /httpcat `<código http>`: Envia memes de gato do http.cat com o código HTTP especificado. Exemplo: `/httpcat 404`",
"myLittlePony": "My Little Pony",
"myLittlePonyDesc": "*My Little Pony*\n\n- /mlp: Exibe esta mensagem de ajuda.\n- /mlpchar `<nome do personagem>`: Mostra informações específicas sobre um personagem de My Little Pony em inglês. Exemplo: `/mlpchar twilight`\n- /mlpep: Mostra informações específicas sobre um episódio de My Little Pony em inglês. Exemplo: `/mlpep 136`",
"goBack": "Voltar",
"maInvalidModule": "Por favor, forneça um ID de módulo válido do The Mod Archive.\nExemplo: `/modarchive 81574`",
"maDownloadError": "Erro ao baixar o arquivo. Verifique o ID do módulo e tente novamente.",
"ytDownloading": "*Baixando vídeo...*",
"ytCheckingSize": "Verificando se o vídeo excede o limite de 50 MB...",
"ytFileErr": "*Parece que o executável do yt-dlp não existe no nosso servidor...\n\nNesse caso, o problema está no nosso lado! Aguarde até que tenhamos notado e resolvido o problema.*",
"ytUploading": "*Enviando video...*",
"ytUploadDesc": "*[{userName}](tg://user?id={userId}), aqui está o seu vídeo baixado.*",
"ytDownloadErr": "*Erro durante o download do vídeo do YT:*\n\n`{err}`",
"ytUploadLimit": "*Este vídeo excede o limite de carregamento de 50 MB imposto pelo Telegram ao nosso bot. Por favor, tente outro vídeo. Estamos fazendo o possível para aumentar esse limite.*",
"ytUploadLimit2": "*Esse vídeo teve a qualidade reduzida por estar excedendo o limite de 50MB para uploads imposto pelo Telegram.*",
"fileError": "Erro ao enviar o arquivo",
"botUpdated": "Bot atualizado com sucesso.\n\n```{result}```",
"errorUpdatingBot": "Erro ao atualizar o bot\n\n{error}",
"catImgErr": "Desculpe, mas não consegui obter a foto do gato que você queria.",
"catGifErr": "Desculpe, mas não consegui obter o GIF do gato que você queria.",
"quoteResult": "Aqui está uma citação aleatória pra você (em inglês):",
"quoteErr": "Desculpe, mas algo deu errado ao exibir a citação.",
"dogImgErr": "Desculpe, mas não consegui obter a foto do cacbhorro que você queria.",
"httpCodeInvalid": "Por favor, insira um código HTTP válido.",
"httpCodeErr": "Ocorreu um erro ao buscar o código HTTP.",
"httpCodeNotFound": "Código HTTP não encontrado.",
"httpCodeResult": "*Código HTTP*: `{code}`\n*Nome*: `{message}`\n*Descrição*: `{description}`",
"ponyApiCharRes": "*Informações do Personagem de MLP para* `{input}`*:*\n\n*Nome:* `{name}`\n\n*Apelido:* `{alias}`\n\n*URL do Fandom:* [{url}]({url})\n\n*Sexo:* `{sex}`\n\n*Residência:* `{residence}`\n\n*Ocupação:* `{occupation}`\n\n*Tipo:* `{kind}`",
"ponyApiEpRes": "*Informações do Episódio de MLP para* `{input}`*:*\n\n*Nome:* `{name}`\n*URL do Fandom:* [{url}]({url})\n*Temporada:* `{season}`\n*Episódio:* `{episode}`\n*Episódio Geral:* `{overall}`\n*Data de Lançamento:* `{airdate}`\n*História por:* `{storyby}`\n*Escrito por:* `{writtenby}`\n*Storyboard:* `{storyboard}`",
"ponyApiNoCharName": "Por favor, forneça o nome do personagem.",
"ponyApiNoCharFound": "Nenhum personagem encontrado.",
"ponyApiNoEpisodeNum": "Por favor, forneça o número do episódio.",
"ponyApiNoEpisodeFound": "Nenhum episódio encontrado.",
"ponyApiErr": "Ocorreu um erro ao buscar dados da API."
}

94
src/locales/spanish.json Normal file
View file

@ -0,0 +1,94 @@
{
"lynxWelcome": "*¡Hola! Soy Lynx!*\n¡Fui creado con cariño por Lucas Gabriel (@lukig1)! \n\n*Antes de usar, necesitas leer la política de privacidad (/privacy) para entender a dónde van tus datos al usar este bot.*\n\nAdemás, puedes usar /help para ver los comandos del bot!\n\n*¡Agradecimiento especial a @givfnz2 por sus diversas contribuciones al bot!*",
"lynxHelp": "*Hola, soy Lynx, un bot simple hecho desde cero en Telegraf y Node.js por Lucas Gabriel (lucmsilva).* \n\n¡Haz clic en los botones de abajo para ver qué comandos puedes usar!",
"lynxPrivacy": "Accede [a este enlace](https://blog.eleu.me/posts/lynx-privacy-policy) para leer la política de privacidad del bot.",
"unKnown": "Desconocido",
"varYes": "Sí",
"varNo": "No",
"varNone": "Ninguno",
"invalidOption": "¡Ups! ¡Opción inválida!",
"kickingMyself": "*Como no me necesitas, me iré de aquí.*",
"kickingMyselfErr": "Error al salir del chat.",
"noPermission": "No tienes permiso para ejecutar este comando.",
"botAdminOnly": "Este comando es exclusivo para los administradores generales del bot. No puedo revelar quiénes son ni lo que hace este comando.",
"privateOnly": "Este comando solo debe usarse en chats privados, no en grupos.",
"groupOnly": "Este comando solo debe usarse en grupos, no en chats privados.",
"botNameChanged": "*Nombre del bot cambiado a* `{botName}`.",
"botNameErr": "*Error al cambiar el nombre del bot:*\n`{tgErr}`",
"botDescChanged": "*Descripción del bot cambiada a* `{botDesc}`.",
"botDescErr": "*Error al cambiar la descripción del bot:*\n`{tgErr}`",
"invalidId": "Por favor, introduce un ID de usuario válido.",
"banSuccess": "Usuario con ID `{userId}` ha sido baneado.",
"banErr": "No se pudo banear al usuario. Verifica que el ID sea correcto y que el bot tenga permisos de administrador.\n\n`{tgErr}`",
"unBanSuccess": "Usuario con ID `{userId}` ha sido desbaneado.",
"unBanErr": "No se pudo desbanear al usuario. Verifica que el ID sea correcto y que el bot tenga permisos de administrador.\n\n`{tgErr}`",
"isGay": "¡Sí, eres *gay*!",
"isNtGay": "Ah, ¡no eres gay!",
"isFurry": "¡Sí, eres *furry*!",
"isNtFurry": "Ah, ¡no eres furry!",
"randomNum": "*Número generado (0-10):* `{number}`.",
"userInfo": "*Información del usuario*\n\n*Nombre:* `{userName}`\n*Usuario:* `{userHandle}`\n*ID:* `{userId}`\n*Idioma:* `{userLang}`\n*Usuario Premium:* `{userPremium}`",
"chatInfo": "*Información del chat*\n\n*Nombre:* `{chatName}`\n*ID del chat:* `{chatId}`\n*Identificador:* `{chatHandle}`\n*Tipo:* `{chatType}`\n*Membros:* `{chatMembersCount}`\n*Es un foro:* `{isForum}`",
"funEmojiResult": "*Lanzaste {emoji} y obtuviste *`{value}`*!*\n¿No sabes lo que significa? ¡Yo tampoco!",
"gifErr": "*Algo salió mal al enviar el GIF. Inténtalo de nuevo más tarde.*\n\n{err}",
"lastFmNoUser": "*Por favor, proporciona un nombre de usuario de Last.fm.*\nEjemplo: `/setuser <username>`",
"lastFmNoSet": "*Aún no has definido tu nombre de usuario de Last.fm.*\nUsa el comando /setuser para definirlo.\n\nEjemplo: `/setuser <username>`",
"lastFmNoRecent": "*No se encontró ninguna pista reciente para el usuario de Last.fm* `{lastfmUser}`*.*",
"lastFmListeningNow": "Escuchando ahora",
"lastFmUserSet": "*Tu nombre de usuario de Last.fm ha sido establecido como:* `{lastUser}`.",
"lastFmLastPlayed": "Última reproducción",
"lastFmStatusFor": "*Estado de Last.fm para el usuario* {lastfmUser}*:*\n\n*{nowPlaying}*: {trackName} de {artistName}\n\n*Número de reproducciones*: {plays}",
"lastFmErr": "*Error al recuperar datos para el usuario de Last.fm* {lastfmUser}.\n\n`{err}`",
"currentCommit": "*Commit actual:* `{commitHash}`",
"errorRetrievingCommit": "*Error al obtener el commit:*\n\n`{error}`",
"provideLocation": "*Por favor, proporciona una ubicación.*",
"invalidLocation": "*Ubicación inválida. Inténtalo de nuevo.*",
"weatherStatus": "*Clima en {addressFirst}:*\n\n*Estado:* `{getStatusEmoji(iconCode)} {wxPhraseLong}`\n*Temperatura:* `{temperature} °{temperatureUnit}`\n*Sensación térmica:* `{temperatureFeelsLike} °{temperatureUnit2}`\n*Humedad:* `{relativeHumidity}%`\n*Velocidad del viento:* `{windSpeed} {speedUnit}`",
"weatherErr": "*Ocurrió un error al obtener el clima. Inténtalo de nuevo más tarde.*\n\n`{error}`",
"mainCommands": "Comandos principales",
"mainCommandsDesc": "*Comandos principales*\n\n- /help: Muestra la ayuda del bot\n- /start: Inicia el bot\n- /privacy: Lee la política de privacidad del bot",
"usefulCommands": "Comandos útiles",
"usefulCommandsDesc": "*Comandos útiles*\n\n- /chatinfo: Envía información sobre el grupo\n- /userinfo: Envía información sobre ti\n- /d | /device `<modelo>`: Busca un dispositivo en GSMArena y muestra sus especificaciones.\n- /weather | /clima `<ciudad>`: Ve el estado del clima para una ubicación específica\n- /modarchive | /tma `<id del módulo>`: Descarga un módulo del The Mod Archive.\n- /wiki `<página de la wiki>` (WIP): Muestra contenido de una página de Wikipedia, convirtiendo algunas cosas a un formato más familiar en Telegram.\n- /http `<código HTTP>`: Envía detalles sobre un código HTTP específico. Ejemplo: `/http 404`",
"funnyCommands": "Comandos graciosos",
"funnyCommandsDesc": "*Comandos graciosos*\n\n- /gay: Verifica si eres gay\n- /furry: Verifica si eres furry\n- /random: Elige un número aleatorio entre 0-10",
"interactiveEmojis": "Emojis interactivos",
"interactiveEmojisDesc": "*Emojis interactivos*\n\n- /dice: Tira un dado\n- /idice: Lanza infinitamente un dado de colores\n- /slot: ¡Intenta combinar las figuras!\n- /ball: ¡Intenta chutar la bola al gol!\n- /bowling: ¡Intenta derribar los bolos!\n- /dart: ¡Intenta acertar en el blanco!",
"ytDlp": "yt-dlp (YouTube)",
"ytDlpDesc": "*yt-dlp (YouTube)*\n\n- /yt | /ytdl `<enlace del video>`: Descarga un video de YouTube.\n\n¡Este comando también funciona con otras plataformas de video! Consulta [este enlace](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md) para obtener más información y saber qué servicios son compatibles.\n\n*Nota: Telegram actualmente limita las cargas de bots a 50 MB, lo que significa que si el video que deseas descargar es mayor de 50 MB, la calidad se reducirá para intentar cargarlo de todos modos. Estamos haciendo todo lo posible para sortear o corregir este problema.*",
"lastFm": "Last.fm",
"lastFmDesc": "*Last.fm*\n\n- /lt | /lmu | /last | /lfm: Muestra la última canción de tu perfil en Last.fm + el número de reproducciones.\n- /setuser `<usuario>`: Define el usuario para el comando anterior.",
"animalCommands": "Animales",
"animalCommandsDesc": "*Animales*\n\n- /soggy `<1 | 2 | 3 | 4 | orig | thumb | sticker | alt>`: Envía el [meme del gato empapado](https://knowyourmeme.com/memes/soggy-cat)\n- /cat `<tags>` - Envía una foto aleatoria de un gato. Puedes especificar algunas tags en inglés, separando cada una por una coma. Ejemplo: `/cat orange, cute`\n- /dog - Envía una foto aleatoria de un perro.\n- /httpcat `<código http>`: Envía memes de gato de http.cat con tu código HTTP especificado. Ejemplo: `/httpcat 404`",
"myLittlePony": "My Little Pony",
"myLittlePonyDesc": "*My Little Pony*\n\n- /mlp: Muestra este mensaje de ayuda.\n- /mlpchar `<nombre del personaje>`: Muestra información específica sobre un personaje de My Little Pony en inglés. Ejemplo: `/mlpchar twilight`\n- /mlpep: Muestra información específica sobre un episodio de My Little Pony en inglés. Ejemplo: `/mlpep 136`",
"goBack": "Volver",
"maInvalidModule": "Por favor, proporciona un ID de módulo válido del The Mod Archive.\nEjemplo: `/modarchive 81574`",
"maDownloadError": "Error al descargar el archivo. Verifica el ID del módulo e inténtalo de nuevo.",
"ytDownloading": "*Descargando video...*",
"ytCheckingSize": "Verificando si el video excede el límite de 50 MB...",
"ytFileErr": "*Parece que el ejecutable de yt-dlp no existe en nuestro servidor...\n\nEn este caso, el problema está de nuestro lado. ¡Espera hasta que lo hayamos notado y resuelto!",
"ytUploading": "*Subiendo video...*",
"ytUploadDesc": "*[{userName}](tg://user?id={userId}), aquí está tu video descargado.*",
"ytDownloadErr": "*Error durante la descarga del video de YT:*\n\n`{err}`",
"ytUploadLimit": "*Este video excede el límite de carga de 50 MB impuesto por Telegram a nuestro bot. Por favor, intenta con otro video. Estamos haciendo lo posible para aumentar este límite.*",
"ytUploadLimit2": "*Este video tuvo la calidad reducida por exceder el límite de 50 MB para cargas impuesto por Telegram.*",
"fileError": "Error al enviar el archivo",
"botUpdated": "Bot actualizado con éxito.\n\n```{result}```",
"errorUpdatingBot": "Error al actualizar el bot\n\n{error}",
"catImgErr": "Lo siento, pero no pude obtener la foto del gato que querías.",
"catGifErr": "Lo siento, pero no pude obtener el GIF del gato que querías.",
"quoteResult": "Aquí tienes una cita aleatoria para ti (en inglés):",
"quoteErr": "Lo siento, pero algo salió mal al mostrar la cita.",
"dogImgErr": "Lo siento, pero no pude obtener la foto del perro que querías.",
"httpCodeInvalid": "Por favor, ingrese un código HTTP válido.",
"httpCodeErr": "Ocurrió un error al buscar el código HTTP.",
"httpCodeNotFound": "Código HTTP no encontrado.",
"httpCodeResult": "*Código HTTP*: {code}\n*Nombre*: `{message}`\n*Descripción*: {description}",
"ponyApiCharRes": "*Información del Personaje MLP para* `{input}`*:*\n\n*Nombre:* `{name}`\n\n*Alias:* `{alias}`\n\n*URL del Fandom:* [{url}]({url})\n\n*Sexo:* `{sex}`\n\n*Residencia:* `{residence}`\n\n*Ocupación:* `{occupation}`\n\n*Tipo:* `{kind}`",
"ponyApiEpRes": "*Información del Episodio MLP para* `{input}`*:*\n\n*Nombre:* `{name}`\n*URL del Fandom:* [{url}]({url})\n*Temporada:* `{season}`\n*Episodio:* `{episode}`\n*Episodio General:* `{overall}`\n*Fecha de Lanzamiento:* `{airdate}`\n*Historia por:* `{storyby}`\n*Escrito por:* `{writtenby}`\n*Storyboard:* `{storyboard}`",
"ponyApiNoCharName": "Por favor, proporciona el nombre del personaje.",
"ponyApiNoCharFound": "Ningún personaje encontrado.",
"ponyApiNoEpisodeNum": "Por favor, proporciona el número del episodio.",
"ponyApiNoEpisodeFound": "Ningún episodio encontrado.",
"ponyApiErr": "Ocurrió un error al obtener datos de la API."
}