diff --git a/ptbr.hjson b/ptbr.hjson
new file mode 100644
index 0000000..3f656f7
--- /dev/null
+++ b/ptbr.hjson
@@ -0,0 +1,970 @@
+{
+ /* ---------------------------------------------------------------------
+ Emoji Key - Guide to what they mean
+ --------------------------------------------------------------------- */
+ /*
+
+ ℹ️ - Indicates an example of how this string could look with real values
+ ⚠️ - Indicates IMPORTANT TRANSLATIONS. These should be correctly translated first!
+
+ */
+
+
+ /* ---------------------------------------------------------------------
+ Generic - Used for multiple things
+ --------------------------------------------------------------------- */
+ "generic.callbacks": {
+ "userBannedBy": "Este usuário foi banido por %s"
+ # ℹ️ NOTE: Signatures are used for intelligent text switching. MUST be a uniquely identifiable portion of the full text,
+ # and NOT contain any formatting or assume the value of any dynamic values.
+ "userBannedBySignature": " foi banido por "
+ "userBannedAnswerText": "Usuário banido"
+ # ℹ️ NOTE: Signatures are used for intelligent text switching. MUST be a uniquely identifiable portion of the full text,
+ # and NOT contain any formatting or assume the value of any dynamic values.
+ "userUnbannedBy": "Este usuário foi desbanido por %s"
+ "userUnbannedBySignature": " foi desbanido por "
+ "userUnbannedAnswerText": "Usuário Desbanido"
+
+ # ℹ️ Example: /JoinVerify enabled by Andy
+ "featureEnabledBy": "%s habilitado por %s"
+ "featureEnabledAnswerText": "%s habilitado"
+ "featureAlreadyEnabled": "%s já está habilitado"
+ "featureAlreadyEnabledAnswerText": "%s Já habilitado"
+ "featureDisabledBy": "%s desabilitado por %s"
+ "featureDisabledAnswerText": "%s desabilitado"
+ "featureAlreadyDisabled": "%s já está desabilitado"
+ "featureAlreadyDisabledAnswerText": "%s Já desabilitado"
+
+ "joinLimitRestrictionsReset": "Este usuário teve suas restrições de /JoinLimit redefinidas por %s"
+ "joinLimitRestrictionsResetAnswerText": "Restrictions Reset!"
+
+ "joinLockExceptionAdded": "Este usuário recebeu uma exceção de junção única por %s\n\nNa próxima vez que o usuário entrar, não irei removê-lo."
+ "joinLockExceptionAddedAnswerText": "Exceção Adicionada"
+
+ "chatNameRemoved": "Nome do Chat Removido por %s"
+ "chatNameRemovedAnswerText": "Nome do Chat Removido"
+ "chatNameNotSet": "Nome do Chat não foi definido, então não há mada."
+ "chatNameNotSetAnswerText": "Nome do Chat não foi definido"
+
+ "cantUseFeatureOnAdminsAnswerText": "Não pode %s administradores"
+
+ "CalsiBotNoLongerAdmin": "CalsiBot não é mais um administrador ou não tem as permissões necessárias, então este teclado expirou."
+ "CalsiBotNoLongerAdminAnswerText": "CalsiBot não é mais um administrador ou não tem as permissões necessárias, então este teclado expirou."
+
+ "keyboardHasExpired": "Este teclado expirou."
+ "keyboardExpiredAnswerText": "Teclado Expirado"
+ "keyboardUpdatedPressConfirmAnswerText": "Teclado Atualizado, pressione 'Confirmar' para aplicar"
+ }
+
+ "generic.buttons": {
+ "whatIsThis": "❓ O Quê é Isto?"
+ "whatIsThisShort": "❓ O Quê?"
+ "imSorry": "😭 Me Desculpe!"
+
+ "joinChannel": "👋 Entrar no Canal"
+ "addToGroup": "🔱 Adicionar A Grupo"
+ "tapToVerify": "🤖 Clique para Verificar 🤖"
+
+ "banUser": "Banir Usuário"
+ "banBot": "Banir Bot"
+ "allowUser": "Permitir Usuário"
+ "trustUser": "Confiar em Usuário"
+ "trustBot": "Confiar em Bot"
+ "unbanUser": "Desbanir Usuário"
+
+ "settings": "⚙️ Configurações"
+
+ "resetRestrictions": "🤝 Redefinir Restrições"
+ "yes": "✅ Sim"
+ "no": "❌ Não"
+ "enable": "✅ Habilitar"
+ "disable": "❌ Desabilitar"
+ "disableLimit": "❌ Desabilitar Limite"
+ "disableTimeLimit": "❌ Desabilitar Limite de Tempo"
+
+ "permabanUser": "❌ Banir permanentemente usuário"
+ "unPermabanUser": "🤝 Desbanir permanentemente usuário"
+
+ "remove": "❌ Remover"
+ "removeAllWarns": "❌ Remover todos os avisos"
+ "history": "📚 Histórico"
+ "setMax": "🔢 Definir Máximo"
+ "back": "⬅️ Voltar"
+
+ "messages": "Mensagens"
+ "media": "Media"
+ "stickersAndGIFs": "Stickers & GIFs"
+ "linkPreviews": "Link Previews"
+ "confirm": "📝 Confirmar"
+ "cancel": "❌ Cancelar"
+
+ "seeExample": "👀 Ver Exemplo"
+ "seeGroupInfo": "Ver Informações do Grupo"
+
+ "marryAccept": "🥰 Aceitar"
+ "marryReject": "😒 Rejeitar"
+
+ "continueFishing": "🎣 Continuar Pescando"
+ "continueBuilding": "⚒ Continuar Construindo"
+
+ "chooseAction": "🎭 Escolher Ação"
+ "ignore": "🙈 Ignorar"
+
+ "changeLanguage": "🌐 Mudar Idioma"
+
+ "createPack": "📸 Criar Pacote"
+ "removePack": "💀 Remover Pacote"
+ "viewPack": "🌆 Ver Pacote"
+ }
+
+ # ℹ️ Note: For languages which don't use English numbers, these should be changed
+ # to match the 'numbersPlain' localized numbers.
+ "generic.numbers": {
+ "zero": "0️⃣"
+ "one": "1️⃣"
+ "two": "2️⃣"
+ "three": "3️⃣"
+ "four": "4️⃣"
+ "five": "5️⃣"
+ "six": "6️⃣"
+ "seven": "7️⃣"
+ "eight": "8️⃣"
+ "nine": "9️⃣"
+ "ten": "🔟"
+ }
+
+ # ℹ️ Note: These should be plain text localized numbers.
+ "generic.numbersPlain": {
+ "zero": "0"
+ "one": "1"
+ "two": "2"
+ "three": "3"
+ "four": "4"
+ "five": "5"
+ "six": "6"
+ "seven": "7"
+ "eight": "8"
+ "nine": "9"
+ "ten": "10"
+ }
+
+ "generic.timePlural": {
+ "zero": "horas"
+ "one": "hora"
+ "other": "horas"
+ }
+
+ "generic.weekPlural": {
+ "zero": "semanas"
+ "one": "semana"
+ "other": "semanas"
+ }
+
+ "generic.dayPlural": {
+ "zero": "dias"
+ "one": "dia"
+ "other": "dias"
+ }
+
+ "generic.hourPlural": {
+ "zero": "horas"
+ "one": "hora"
+ "other": "horas"
+ }
+
+ "generic.minutePlural": {
+ "zero": "minutos"
+ "one": "minuto"
+ "other": "minutos"
+ }
+
+ "generic.secondPlural": {
+ "zero": "segundos"
+ "one": "segundo"
+ "other": "segundos"
+ }
+
+ "generic.onlyInSupergroups": "Desculpe, este comando só pode ser usado em Supergrupos"
+ "generic.somethingWentWrongTryAgainLater": "Algo deu errado, tente novamente mais tarde..."
+ "generic.rateLimit": "😡 Agora, ignorando novas mensagens de %s por enviar mais de 3 mensagens de comando em menos de 1 segundo. Por favor, pare.\n\nExpira em alguns minutos"
+ "generic.willNotSeeAgainForAWhile": "Você não verá esta mensagem novamente por um tempo."
+
+ # ℹ️ Example: Reply to the person you want to /slap
+ "generic.replyToThePersonYouWantTo": "Responda para a pessoa que você quer %s"
+ "generic.needToReply": "Você precisa responder a alguém."
+
+ "generic.needToBeAdmin": "❌ Permissão negada. Você precisa:\n\n1️⃣ Ser um administrador\n2️⃣ Ter permissão para %s"
+ "generic.needToBeAdminAnswerText": "❌ Permissão negada. Você precisa:\n\n1️⃣ Ser um administrador\n2️⃣ Ter permissão para %s"
+ "generic.CalsiBotNeedsToBeAdmin": "❌ Para que isso funcione, %s tem que:\n\n1️⃣ Ser um administrador\n2️⃣ Ter permissão para %s"
+ "generic.CalsiBotNotUsedAnymore": "Desculpe, CalsiBot não é mais usado no grupo ou não tem permissões suficientes."
+ "generic.CalsiBotNotUsedAnymoreAnswerText": "Desculpe, CalsiBot não é mais usado no grupo ou não tem permissões suficientes."
+
+ "generic.permissionTypes": {
+ "changeGroupInfo": "mudar informações do grupo"
+ "banUsers": "banir usuários"
+ "deleteMessages": "excluir mensagens"
+ "inviteUsers": "convidar usuários"
+ "pinMessages": "fixar mensagens"
+ "doEverything": "faz tudo, inclusive adicionar novos administradores"
+ }
+
+ "generic.loaded": "Carregado"
+ "generic.loadingEllipsis": "Carregando..."
+ "generic.disabled": "Desabilitado"
+ "generic.enabled": "Habilitado"
+ "generic.cancelled": "Cancelado"
+ "generic.currently": "Atualmente"
+ "generic.gaming": "Jogando"
+ "generic.nobody": "Ninguém"
+ "generic.none": "Nenhum"
+ "generic.note": "Nota"
+ "generic.reasonColon": "Razão:"
+ "generic.deleteQuestion": "Deletar?"
+ "generic.banQuestion": "Banir?"
+ "generic.and": " e "
+
+ # ℹ️ Example: Exception was added by an admin.
+ "generic.anAdmin": "um admin"
+
+ # ℹ️ Example: Fishing is always allowed in private :)
+ "generic.featureAlwaysAllowedInPrivate": "%s é sempre permitido em privado :)"
+
+ # ℹ️ Example: Wall Building has now been enabled in this group.
+ "generic.featureEnabled": "%s agora foi habilitado neste grupo."
+ "generic.featureAlreadyEnabled": "%s já está habilitado neste grupo."
+ "generic.featureDisabled": "%s agora está desabilitado neste grupo."
+ "generic.featureAlreadyDisabled": "%s já está desabilitado neste grupo."
+
+ "generic.featureDisabledByDefault": "Por padrão, %s é desabilitado em chats de grupo.\n\nUm administrador pode %s."
+ # ℹ️ Example: By default, fishing is disabled in group chats.\n\nAn admin can /EnableGames, or you can fish in private, by tapping the button below:
+"generic.featureDisabledByDefaultWithPrivate": "Por padrão, %s é desabilitado em chats de grupo.\n\nUm administrador pode %s, Ou você ṕde %s em privado, pressionando o botão abaixo:"
+
+ # ℹ️ Example: You can use /DisableBrick to change that.
+ "generic.toggleFeatureHint": "Você pode usar %s para mudar isso."
+
+ # ℹ️ Example: You can't Warn admins
+ "generic.cantUseFeatureOnAdmins": "Você não pode %s administradoress... Infelizmente."
+ "generic.cantUseFeatureOnAdminsWithReason": "Você não pode %s administradores porque %s"
+ # ℹ️ Example: because they can't be warned in the first place.
+ "generic.theyCantBeInTheFirstPlace": "porque eles não podem estar %s em primeiro lugar."
+
+ "generic.tapNextToContinue": "\n\nPressione /next para Continuar..."
+ "generic.tapNextToRetry": "\n\nPressione /next para Tentar Novamente..."
+ "generic.tapCancelToQuit": "\n\nPressione /cancel para Sair %s"
+
+
+ /* ---------------------------------------------------------------------
+ Comfy - Used for /hug, /cuddle, etc.
+ --------------------------------------------------------------------- */
+ "comfy.hug": {
+ "self": "%s estende um braço e abraça a si mesmo. %s se sente bem menos sozinho agora."
+ "main": "%s te deu um abraço! :)"
+ "CalsiBot": "Eu não posso ser abraçado :/"
+ }
+
+ "comfy.cuddle": {
+ "self": "%s deita de bruços na cama e tenta abraçar suas laterais. %s se sente bem menos triste agora."
+ "main": "%s abraça %s com força"
+ "CalsiBot": "suspiro ☁️😌☁️"
+ }
+
+ "comfy.snuggle": {
+ "self": "%s encolhe os joelhos e tenta se aconchegar. %s se sente significantemente mais amado agora."
+ "main": "%s aconchega %s com satisfação"
+ "CalsiBot": "🥺 *barulhos de bot relaxado*"
+ }
+
+ "comfy.poke": {
+ "self": "%s cutucou seus peitos. Isso os faz lembrar que eles provavelmente deveriam perder um pouco de peso."
+ "main": "*%s cutucou %s* o_o"
+ "CalsiBot": ">_<"
+ }
+
+ "comfy.pat": {
+ "self": "%s desajeitadamente estende uma das mãos para dar um tapinha na própria cabeça. 🙃"
+ "main": "*%s dá tapinas na cabeça de %s* :V"
+ "CalsiBot": "rawr xDddd"
+ }
+
+ "comfy.ruffle": {
+ "self": "%s bagunça o próprio cabelo... Caramba. 😐"
+ "main": "*%s bagunça o cabelo de %s* :&"
+ "CalsiBot": "Você deveria bagunçar o cabelo da minha cabeça... não... aí. 😳"
+ }
+
+ "comfy.highfive": {
+ "self": "%s tenta se cumprimentar batendo nas próprias mãos. %s erra e se afunda ainda mais na depressão."
+ "main": "%s cumprimentou você por isso!"
+ "CalsiBot": ":D"
+ }
+
+
+ /* ---------------------------------------------------------------------
+ Death - Used for /kys, /kms & /kos
+ --------------------------------------------------------------------- */
+ "death.CalsiBot": "Eu não posso ser morto ;)"
+
+ # ℹ️ Example: Josie stabbed Kevin before they starved to death
+ "death.kos": "%s esfaqueado %s antes deles %s"
+
+
+ /* ---------------------------------------------------------------------
+ Ban - Used for /ban, /kick, etc.
+ --------------------------------------------------------------------- */
+ "ban.kick.main": "%s foi kickado."
+ "ban.kickme.main": "%s removido."
+ "ban.ban.main": "%s foi banido."
+ "ban.deport.main": "%s foi deportado."
+ "ban.realdeport.main": "%s foi deportado, permanentemente."
+
+
+ /* ---------------------------------------------------------------------
+ Fish - Used for /fish, /MyFish, etc.
+ --------------------------------------------------------------------- */
+ "fish.fish": "Peixe"
+ "fish.fishing": "Pescando"
+ "fish.noFish": "Parece que %s nunca pegou um peixe antes!\n\nDê uma chance: /Fish"
+ "fish.noTrophyFish": "Atualmente você não tem nenhum Troféu de Peixe 😢 - mas não se preocupe!\n\nUse /Fish para pegar seu primeiro peixe!\n\n/MyFish ||| /Fish"
+
+ "fish.verdicts": {
+ "failure": "Assim como na vida real, sua isca falhou."
+ "blowfish": "Você pegou um baiacu: 🐡"
+ "normal": "Nada mal!\nVocê pegou um Peixe Normal: 🐟"
+ "tropical": "Legal!\nVocê pegou um Peixe Tropical: 🐠"
+ "squid": "Muito bom!\nVocê pegou uma Lula: 🦑"
+ "crab": "Incrível!\nVocê pegou um Caranguejo: 🦀"
+ "dolphin": "WHOA!\nVocê pegou um Golfinho: 🐬"
+ "shark": "PUTA MERDA!!\nVocê pegou um Tubarão: 🦈"
+ "crocodile": "ARGHHH!!!\nVocê pegou um Crocodilo: 🐊"
+ "whale": "O OCEANO PARECE ESTAR AFUNDANDO...\n\nCom toda a sua força, você puxa a vara de pesca!\nVocê pegou uma baleia: 🐳"
+ }
+
+ "fish.viewYourFish": "\n\nVer seus peixes: /MyFish"
+ "fish.newTrophyFish": "\n\n🎉 Você acaba de ganhar um novo\n/TrophyFish!"
+
+ "fish.myFish":
+ '''
+ 🎣 %s – Peixe:
+
+ 🐡 - Baiacu: %s
+ 🐟 - Peixe Normal: %s
+ 🐠 - Peixe Tropical: %s
+ 🦀 - Caranguejo: %s
+ 🦑 - Lula: %s
+ 🐬 - Golfinho: %s
+ 🦈 - Tubarão: %s
+ 🐊 - Crocodilos: %s
+ 🐳 - Baleias: %s
+
+ 🐠🦑🐊 - Todos Os Peixes: %s
+
+ /TrophyFish ||| /Fish
+ '''
+
+ "trophy.types": {
+ "firstfish": "\n%s<%s> - Primeiro Peixe!%s>"
+ "1000fish": "\n%s<%s> - Mil Peixes%s>"
+ "5000fish": "\n%s<%s> - Cinco Mil Peixes%s>"
+ "10000fish": "\n%s<%s> - Dez Mil Peixes%s>"
+ "2018newyear": "\n%s<%s> - Ano Novo 2018%s>"
+ "2018vday": "\n%s<%s> - Dia dos Namorados 2018%s>"
+ "2018xmas": "\n%s<%s> - Natal 2018%s>"
+ "2019newyear": "\n%s<%s> - Ano Novo 2019%s>"
+ "2020xmas": "\n%s<%s> - Natal 2020%s>"
+ }
+
+
+ /* ---------------------------------------------------------------------
+ JoinEvents - Used for Join Flow
+ --------------------------------------------------------------------- */
+ "joinevents.error.CalsiBotNotEnoughPermissions": "Uma mensagem de boas-vindas, JoinLock, JoinVerify ou JoinLimit está ativada no momento, mas não tenho permissões de administrador suficientes no momento...\n\nPor favor, garanta que eu possa alterar informações do grupo, e banir usuários."
+ "joinevents.userPermabanned": "%s foi removido permanentemente deste grupo por um administrador.\n\nEu os removi."
+ "joinevents.joinlockAddedByAdmin": "Join Lock está habilitado mas %s foi adicionado por %s, então eles não foram kickados."
+ "joinevents.joinlockMemberBanned": "%s foi banido porque o Join Lock está habilitado."
+
+ /* ---------------------------------------------------------------------
+ JoinConfig - Used for Join Flow
+ --------------------------------------------------------------------- */
+ "joinconfig.welcome.help": "/SetWelcome permite que você defina uma mensagem de boas vindas para seu chat\n\nSua mensagem deve ser como o exemplo abaixo:"
+ "joinconfig.welcome.error.somethingWrong": "Desculpe, mas tem alguma coisa errada com a mensagem que você postou.\n\nPor favor, verifique a sua formatação, e garanta que você não incluiu nenhum caractere estranho."
+ "joinconfig.welcome.success": "Ótimo, sua mensagem de boas vindas foi definida. Verifique acima como ela vai ficar!\n\nVocê pode usar /DeleteWelcome para removê-la."
+ "joinconfig.welcome.removed": "A mensagem de boas vindas foi removida.\n\nVocê pode usar /SetWelcome, seguido pela mensagem que você quiser, para definir uma nova."
+ "joinconfig.welcome.alreadyRemoved": "Atualmente não tem uma mensagem de boas vindas definida para remover.\n\nVocê pode usar /SetWelcome, seguido pela mensagem que você quiser, para definir uma nova."
+
+ "joinconfig.joinlimit.help": "/JoinLimit permite que você defina as restrições padrão para qualquer membro que se una ao seu chat\n\nSua mensagem deve ser parecida com o exemplo abaixo:"
+ "joinconfig.joinlimit.success": "Seu /JoinLimit foi definido!\n\nNovos membros vão automaticamente serem restritos %s, até que um administrador remova a restrição deles."
+ "joinconfig.joinlimit.successTimed": "Seu /JoinLimit foi definido!\n\nNovos membros vão automaticamente serem restritos %s, pelo limite de tempo que você especificou."
+
+ "joinconfig.title.help": "/%s permite que você defina o título do chat com uma mensagem.\n\nSua mensagem deve parecer com isso:\n/%s Novo Título do chat\n\nDica: Tem um nome de chat que você sempre usa em títulos? Verifique /cn"
+ "joinconfig.title.replyToTextHint": "Se você está respondendo a outra mensagem para definir o título do chat, ele deve ser apenas texto.\n\nDica: Tem um nome de chat que você sempre usa em títulos? Verifique /cn"
+
+ "joinconfig.chatname.help": "/%s permite que você altere o nome do chat. Esse nome vai sempre aparecer na frente de qualquer título do chat definido usando /t ou /title.\n\nSua mensagem deve ser algo como:\n/%s MeuNomeDeChat"
+ "joinconfig.chatname.replyToTextHint": "Se você está respondendo a outra mensagem para definir o nome do chat, ela deve ser apenas texto."
+ "joinconfig.chatname.success": "Seu Nome do Chat foi definido como:\n%s\n\nEle vai aparecer no início de todos os títulos de chat definidos usando /t ou /title."
+
+
+ /* ---------------------------------------------------------------------
+ JoinVerify - Used for /JoinVerify
+ --------------------------------------------------------------------- */
+ # ⚠️ IMPORTANT
+ "joinverify.callbacks": {
+ "correctAnswerText": "Correto! %s mais para ir..."
+ "incorrectAnswerText": "Errado. 3 mais para ir..."
+ "success": "Sucesso!\n\nBom trabalho, humano, você pode agora falar em: %s"
+ "successAnswerText": "Sucesso! Você pode falar em %s agora..."
+ "manuallyTrusted": "%s foi manualmente verificado %s."
+ "manuallyTrustedAnswerText": "Usuário Verificado"
+ "expired": "Esta Requisição de Verificação Expirou.\n\nVocê pode ter sido manualmente banido ou verificado pelos administradores do grupo. Ou essa pode ser uma requisição muito antiga."
+ "expiredAnswerText": "Requisição de Verificação Expirou"
+
+ "settingsUnavailable": "A Verificação de Entrada não está habilitada agora, habilite-a primeiro para mudar as configurações:"
+ "setTimeLimit": "Escolha um Limite de Tempo para a Validação de Entrada\n\nEm quantos minutos usuários não verificados devem ser aprovados, antes de serem banidos?"
+ "setTimeLimitAnswerText": "Selecione um Valor"
+ "timeLimitChanged": "O Limite de Tempo para a Verificação de Entrada foi alterado de %s para %s por %s"
+ # ℹ️ NOTE: Signatures are used for intelligent text switching. MUST be a uniquely identifiable portion of the full text,
+ # and NOT contain any formatting or assume the value of any dynamic values.
+ "timeLimitChangedSignature": "Limite de Tempo para Verificação de Entrada alterado de "
+ "timeLimitChangedAnswerText": "Novas Configurações Salvas"
+ }
+
+ # ⚠️ IMPORTANT
+ "joinverify.generateCaptcha.tapMatchingEmojiBelow": "Toque no emoji correspondente abaixo:"
+ "joinverify.imageText": {
+ "successTop": "Confirmado"
+ "successBottom": "Humano"
+ "errorTop": "Algo deu errado"
+ "errorBottom": "Errado"
+ }
+
+ # ⚠️ IMPORTANT
+ "joinverify.joinevents.joinVerifyAddedByAdmin": "Join Verify está habilitado, mas %s foi adicionado por %s, então eles não precisam se verificar."
+ "joinverify.joinevents.userVerify": "Hey %s bem-vindo ao %s.\n\nPara conversar, toque no \"Verify\" botão e depois \"Start\":"
+ "joinverify.joinevents.userVerifyTimed": "Hey %s bem-vindo ao%s.\n\nPara conversar, pressione o botão de \"Verificar\" e então \"Iniciar\". De outra forma, você será banido em %s minutos:"
+ "joinverify.joinevents.botVerify": "%s é um bot.\n\nUm administrador pode pressionar \"Trust\" abaixo para permitir o envio de mensagens:"
+ "joinverify.joinevents.botVerifyTimed": "%s é um bot.\n\nUm administrador pode pressionar \"Trust\" abaixo para permitir o envio de mensagens, caso contrário, será banido em %s minutos."
+ "joinverify.joinevents.userVerified": "%s tem que se verificaram como humanos."
+
+ # ⚠️ IMPORTANT
+ "joinverify.preverify.callbacks": {
+ "success": "Clique no Link de Convite temporário abaixo para se unir ao grupo:\n%s\n\nse você foi banido desse grupo, você não será capaz de entrar novamente"
+ "successAnswerText": "Sucesso! Use o Link de Convite para Entrar!"
+ "memberCount": "Este grupo tem atualmente %s membros"
+ }
+
+ "joinverify.preverify.error.preVerifyInvalid": "O Link de convite do PreVerify é inválido ou o grupo desativou o JoinVerify."
+ "joinverify.preverify.error.joinLockEnabled": "Este grupo atualmente tem JoinLock habilitado, por favor tente novamente mais tarde."
+ "joinverify.preverify.error.alreadyVerified": "Você já foi verificado anteriormente como humano.\n\n%s"
+ "joinverify.preverify.error.notAvailable": "Join Verify não está habilitado agora, deve ser habilitado antes que você possa usar PreVerify:"
+
+ "joinverify.preverify.steps": {
+ "one": "✴️ 1. Encaminhar a mensagem acima (respondida) para um canal público onde %s é um administrador.\n2. Toque ou clique com o botão direito na mensagem encaminhada e Copy Link\n3. Envie o link público copiado para este chat.\n\nO link deve ser parecido com este:\nhttps://t.me/CalsiBotDev/99999"
+ "oneError.noVerificationString": "❌ Não foi possível encontrar a string de verificação necessária na postagem. Certifique-se de que a postagem vinculada seja a mensagem de verificação de propriedade que você encaminhou."
+ "oneError.urlFormat": "❌ O link que você enviou não parece correto. Deve ser assim:\nhttps://t.me/CalsiBotDev/99999"
+ "oneError.targetIsNotChannel": "❌ O link que você forneceu é para um grupo público.\n\nPreVerify é projetado para uso apenas com canais públicos."
+ "oneError.cantSendPost": "❌ Não foi possível enviar a mensagem, certifique-se %s é um administrador com permissões suficientes em %s.%s"
+ "oneSuccess": "✅ Okay, postado com sucesso!\n\nVer https://t.me/%s/%s para o post!\n\nPara proteger totalmente o seu grupo, você deve revogar todos os links de convite anteriores. Você pode fazer isso por:\n1. Revogando seu convite pessoal Link\n2. Rebaixar e promover novamente todos os seus administradores (exceto CalsiBot). Isso revogará todos os links de convite que eles compartilharam."
+ }
+
+ "joinverify.preverify.imageText": {
+ "title": "Para entrar no grupo:"
+ "stepOne": "Tocar Verify, depois Start"
+ "stepTwo": "Passe o teste"
+ "stepThree": "Junte-se ao grupo!"
+ }
+
+ "joinverify.preverify.main": "%s%s é protegida pela PreVerify."
+ "joinverify.preverify.verificationMessage": "Esta mensagem é para verificar a propriedade deste canal para o recurso PreVerify do CalsiBot.\n\n%s"
+ "joinverify.preverify.setUpCancelled": "Configuração de PreVerify cancelada."
+
+
+ /* ---------------------------------------------------------------------
+ JoinLimit - Used for /JoinLimit
+ --------------------------------------------------------------------- */
+ "joinlimit.joinevents.userLimited": "%s foi restrito %s porque /JoinLimit está habilitado."
+ "joinlimit.joinevents.userLimitedTimed": "%s foi restrito %s até %s (UTC) porque /JoinLimit está habilitado."
+ "joinlimit.joinevents.signature": " foi restrito "
+
+
+ /* ---------------------------------------------------------------------
+ Marry - Used for /Marry, /Divorce, etc.
+ --------------------------------------------------------------------- */
+ "marry.marriage": "Casamento"
+ "marry.callbacks": {
+ "waitForDecisionAnswerText": "😶 Você tem que esperar por %s para escolher uma opão..."
+ "userNotInvolvedAnswerText": "🙄 Pare de interferir nos relacionamentos de outras pessoas, %s."
+
+ "proposalAccepted": "💝 %s e %s casaram entre si! 🎉\n(aconteceu %s %s tão rápido)\n\n%s\n\nVeja seu /MarryStats"
+ "proposalAcceptedAnswerText": "💝 Parabéns! 🎉"
+ "proposalRejected": "🤕 %s foi rejeitado por %s\n(aconteceu %s %s tão rápido)\n\n%s\n\nVeja seu /MarryStats"
+ "proposalRejectedAnswerText": "🤕 Ai."
+ }
+
+ "marry.result.childPlural": {
+ "zero": "filhos"
+ "one": "filho"
+ "other": "filhos"
+ }
+ "marry.result.housePlural": {
+ "zero": "casas"
+ "one": "casa"
+ "other": "casas"
+ }
+
+ "marry.result.bothGainedHappiness": "🙂 Ambos ganharam %s felicidade cada um."
+ "marry.result.oneLostHappiness": "🙂 %s perdeu %s felicidade."
+
+ "marry.result.bothGainedChildren": "🥺 Ambos ganharam %s %s cada um."
+ "marry.result.oneTookChildrenFrom": "🥺 %s levou %s %s de %s."
+ "marry.result.noChildrenGained": "🚫 Não tiveram crianças dessa vez."
+
+ "marry.result.bothGainedHouses": "🏠 Ambos ganharam %s %s cada um."
+ "marry.result.oneTookHousesFrom": "🏠 %s levou %s %s de %s."
+ "marry.result.noHousesGained": "🚫 Não tiveram casas dessa vez."
+
+ "marry.result.bothGainedNetWorth": "💰 Ambos ganharam $%s cada um."
+ "marry.result.oneTookNetWorthFrom": "💰 %s levou $%s de %s."
+ "marry.result.noNetWorthGained": "🚫 Nenhum patrimônio líquido ganho desta vez."
+
+ "marry.help": "💍 Responda a alguém que você gosta muito com /marry para tornar oficial."
+
+ "marry.error.cooldown": "Você deve esperar 1 minuto entre cada vez que você checar o status.\n\n%s"
+
+ "marry.self": "Você não pode se casar consigo mesmo, mesmo que ninguém mais te queira..."
+ "marry.main": "💘 %s Te propôs casamento!"
+ "marry.CalsiBot": "Me desculpe, mas eu já estou casado com meu trabalho... 🥺"
+
+ "marry.divorce.help": "💔 Não está mais sentido amor? /divorce pode ser usado para se separar da pessoa com quem você estava anteriormente casado."
+
+ "marry.divorce.error.notMarried": "😐 Você não está atualmente casado com %s, então você não pode se divorciar..."
+
+ "marry.divorce.self": "Você quis dizer:\n/kms"
+ "marry.divorce.main": "🖤 %s se divorciou de %s\n(aconteceu %s %s tão rápido)\n\nCasado por: %s\n\n%s\n\nVeja seu /MarryStats"
+ "marry.divorce.CalsiBot": "Vamos ver o que meus advogadis dizem sobre isso... 🤧"
+
+ "marry.marrystats.error.noData": "🥺 %s nunca foi casado."
+ "marry.marrystats.error.noMutualData": "😶 %s nunca se casou com %s."
+
+ "marry.marrystats.CalsiBot": "Ao contrário de você, CalsiBot é puro e não tem histórico de casamento."
+
+ "marry.marrystats.own.information": "💖 %s – Status de Casamento – 1️⃣:\n\n🙂 - Felicidade: %s\n🥺 - Crianças: %s\n🏠 - Casas: %s\n💰 - Patrimônio Líquido: $%s"
+ "marry.marrystats.own.marriages": "💖 %s – Status de Casamento – 2️⃣:\n\n❤️ Casamentos:\nSolicitações aceitas na maioria por %s\nRequests rejected most by %s\nCasado: %s | Rejeitado: %s"
+ "marry.marrystats.own.divorces": "💖 %s – Status de Casamento – 3️⃣:\n\n🖤 Divórcios:\nDivorciado de %s em maioria\nTotal: %s"
+
+
+ /* ---------------------------------------------------------------------
+ Permaban - Used for /Permaban, /UnPermaban
+ --------------------------------------------------------------------- */
+ "permaban.permaban": "Permaban"
+
+ "permaban.callbacks": {
+ "userPermabanned": "Este usuário foi banido permanentemente por %s"
+ "userPermabannedAnswerText": "Usuário banido permanentemente"
+ "userAlreadyPermabanned": "Este usuário já está banido permanentemente."
+ "userAlreadyPermabannedAnswerText": "Usuário Já Banido Permanentemente"
+
+ "userUnPermabanned": "Este usuário foi desbanido permanentemente por %s"
+ "userUnPermabannedAnswerText": "Usuário desbanido permanentemente"
+ "userAlreadyNotPermabanned": "Este usuário já não está permanentemente banido."
+ "userAlreadyNotPermabannedAnswerText": "Usuário já não está banido permanentemente"
+ }
+
+ "permaban.replyHint": "Responda ao usuário que você deseja permaban"
+
+
+ /* ---------------------------------------------------------------------
+ Restrict - Used for /restrict, /unrestrict, /unban
+ --------------------------------------------------------------------- */
+ "restrict.restricted": "restrito"
+
+ "restrict.callbacks": {
+ "restrictionsReset": "As restrições foram redefinidas por %s"
+ "restrictionsUpdated": "Restrições atualizadas por %s"
+ "restrictCancelled": "/restrict cancelada por %s"
+ }
+
+ "restrict.info": {
+ "messages": "Controla se o usuário pode enviar qualquer mensagem."
+ "media": "Controla se o usuário pode enviar áudio, documentos, fotos, vídeos, notas de vídeo e notas de voz."
+ "stickergifs": "Controla se o usuário pode enviar animações, jogos, adesivos e usar bots inline."
+ "linkpreviews": "Controla se o usuário pode adicionar visualizações de link às suas mensagens."
+ }
+
+ "restrict.types": {
+ "messages": "de enviar qualquer mensagem aqui"
+ "media": "de enviar qualquer mensagem de mídia aqui"
+ "stickergifs": "de enviar adesivos ou GIFs aqui"
+ "linkpreviews": "de adicionar qualquer visualização de link às suas mensagens"
+ }
+
+ "restrict.success": "%s agora foi restrito %s por %s"
+ "restrict.successTimed": "%s agora foi restrito %s até %s (UTC) por %s"
+ "restrict.replyHint": "Responder ao usuário cujas restrições você deseja editar"
+
+ "restrict.main": "Use os botões de alternância abaixo para escolher o que %s pode enviar aqui:"
+ "restrict.mainTimed": "Use os botões de alternância abaixo para escolher o que %s pode enviar aqui:\n\nAs restrições irão expirar automaticamente em:\n%s %s"
+
+
+ /* ---------------------------------------------------------------------
+ Warn - Used for /warn, /Warns, /MyWarns
+ --------------------------------------------------------------------- */
+ "warn.warned": "avisado"
+ "warn.checkWarnsOf": "verifique os avisos de"
+
+ "warn.callbacks": {
+ "warnRemovedBy": "O aviso foi removido por %s"
+ "warnRemovedAnswerText": "Aviso Removido!"
+ "noWarns": "Este usuário não possui avisos atualmente"
+ "noWarnsToRemoveAnswerText": "Sem Avisos para Remover"
+ "noWarnsToShowAnswerText": "Sem Avisos para Mostrar"
+ "previousWarns": "Avisosdesse usuário"
+ "previousWarnsAnswerText": "Avisos Anteriores Carregados"
+ "confirmRemoveAllWarns": "Tem certeza que quer remover todos os avisos desse usuário?"
+ "confirmRemoveAllWarnsAnswerText": "Tem Certeza?"
+ "allWarnsRemovedBy": "All of this user's previous warns have been removed by %s"
+ "allWarnsRemovedAnswerText": "Avisos Anteriores Removidos"
+ "chooseMaxWarnsValue": "At which number of warns should a user be banned?"
+ "chooseMaxWarnsValueAnswerText": "Select a Value"
+ "maxWarnsValueChangedBy": "Max Warn changed from %s to %s by %s"
+ "maxWarnsValueChangedAnswerText": "New Max Warn Set"
+ }
+
+ "warn.noReasonGiven": "Sem razão dada"
+
+ "warn.replyHint": "Reply to the user who you want to warn, e.g:\n\n/warn, or\n/warn <reason here>"
+
+ "warn.success": "%s foi advertido por %s.%s\n\n%s de %s advertências"
+ "warn.userBanned": "%s was banned. Reached %s out of %s warns"
+ "warn.myWarns": "Advertências por %s:"
+ "warn.noWarns": "Sem advertências, muito esperto."
+
+
+ /* ---------------------------------------------------------------------
+ Start - Used for /start
+ --------------------------------------------------------------------- */
+ # ⚠️ IMPORTANT
+ "start.error.JoinVerifyWrongUser": "That button wasn't meant to be pressed by you.\n\nBut hey, now that you're here:"
+ "start.error.JoinVerifyExpired": "Sorry, your Join Verify Request has expired.\n\nPlease re-join the group and try again."
+ "start.main":
+ '''
+ Hey %s, eu sou %s!
+
+ ✴️ I keep your group safe from evil and also have tons of other cool features like translations.
+
+ Ferramentas mais utilizadas de Administração de Grupos:
+ /JoinVerify
+ /restrict, /warn, /JoinLock, and /JoinLimit
+
+ Veja outros comandos:
+ /ListCommands
+ '''
+
+
+ /* ---------------------------------------------------------------------
+ Misc - A mix of other commands
+ --------------------------------------------------------------------- */
+ "misc.boi.self": "Imagine unironically trying to /boi yourself..."
+ "misc.boi.main": "You have been visited by the mighty hand of roasts. Go to your corner and think about the bullshit you've said."
+ "misc.boi.CalsiBot": "boiii, do you even know what you just tried to do!? 😡😤"
+
+ "misc.denko.main":
+ '''
+ (´・ω・`)
+ '''
+
+ "misc.huh.main": "huh"
+
+ "misc.judge.main.truth": "%s está falando a verdade."
+ "misc.judge.main.lying": "%s está mentindo!"
+ "misc.judge.CalsiBot": "Eu estou além do julgamento."
+
+ "misc.coin.main.heads": "%s jogou uma moeda!\n\nDeu cara!"
+ "misc.coin.main.tails": "%s jogou uma moeda!\n\nDeu coroa!"
+
+ "misc.covfefe.tooLong": "❌ Muito longo. ☕😐"
+ "misc.covfefe.replyHint": "Responda à mensagem que você quer covfefe!"
+
+ "misc.spurdo.tooLong": "❌ too lonk :dd 🥺"
+ "misc.spurdo.replyHint": "reply to de meszage you wand to spurdo-fy :DD"
+
+ "misc.listcommands.main":
+ '''
+ Quase todos os comandos do CalsiBot:
+
+ Comfy Commands:
+ /hug, /cuddle, /snuggle, /ruffle
+ /pat, /poke, /highfive
+
+ Games:
+ /fish, /marry, /divorce
+
+ Game Commands:
+ /slap, /wish, /judge, /coin (/flip)
+ /roll, /dox
+ /kms, /kys, /kos
+
+ Group Admin Commands:
+ /kick, /kickme, /ban, /permaban
+ /mute (/restrict), /unrestrict (/unban), /warn
+ /pin, /unpin, /title, /chatname, /pfp
+ /SetWelcome, /RemoveWelcome
+ /JoinLimit, /JoinLock
+ /JoinVerify, /PreVerify
+
+ Text Modification Commands:
+ /covfefe, /spurdo, /emojify
+
+ Outros:
+ /boi, /denko, /huh
+ /name, /me, /edgy
+ "sed" (text switching/replacement)
+
+ Useful Functions:
+ /stickers, @admin, /language
+ /translate (/tr), /when, /count
+ '''
+
+ # ℹ️ Example: It's
+ # Alex Wayne"
+ "misc.name.main": "It's:\n%s"
+
+ "misc.me.main":
+ '''
+ Info Card for %s:
+
+ Username: %s
+ User ID: %s
+ Chat ID: %s
+ '''
+
+ "misc.wish.help":
+ '''
+ You can use /wish as a general Wishing Well of sorts
+
+ For example:
+ /wish I could date you 😍, or
+ /wish that sushi was 🍣 in /emojify, or
+ /wish I had someone to /cuddle at night...
+ '''
+
+ "misc.wish.main": "Your wish has been cast. ✨\n\nchance of success: %s%"
+
+ "misc.adminmode.help": "Admin Mode allows you to disable all CalsiBot commands that are not related to Group Administration"
+ "misc.adminmode.sorry": "Sorry, Admin Mode is Enabled so you can't use this command here...\n\n%s"
+
+ "misc.sedreplace.main": "Você quis dizer:"
+
+ "misc.pfp.help": "Reply to a compressed image (not sent as a file) which you want to set as the group profile picture"
+
+ "misc.slap.CalsiBot": "You can't slap me, that's just not how this works..."
+
+ "misc.when.forwardMain": "📅 Originally posted on %s at %s (UTC)\n\n⏳ That's %s ago."
+ "misc.when.otherMain": "⏳ This message was sent %s ago."
+ "misc.when.otherEdit": "\n\n✏️ Last edited %s ago."
+ "misc.when.help": "Reply to any message to see how long it's been since it was posted - down to the second.\n\nFor forwarded messages, I'll tell you when the original message was first posted."
+
+ "misc.count.main": "Since being made, this supergroup has had %s messages in total, including yours"
+
+ "misc.pin.help": "/pin allows you to easily set, or change the chat's pin without stupid menus\n\nStill unsure how to use it? Tap the button below to see an example:"
+ "misc.pin.main": "Reply to a compressed image (not sent as a file) which you want to set as the group profile picture"
+
+ # ℹ️ Example: Couldn't find any\n- non-animated sticker 😕\n\nTry again with a different message.
+ "misc.fileIDSearch.error.noUsableFileFound": "Couldn't find any:\n%s. 😕\n\nTry again with a different message."
+
+ # ℹ️ Example: Come over here, get on your knees, and translate this 😏
+ "misc.knees.main": "Come over here, get on your knees, and %s this %s"
+
+
+ /* ---------------------------------------------------------------------
+ Language - Used for /language
+ --------------------------------------------------------------------- */
+ # ℹ️ NOTE: This should be the native name of the language.
+ "language.name": "Português"
+ "language.main": "Seu idioma está atualmente definido como:\n%s"
+ "language.credit": "This translation is made possible by the hard work of the following people:\n"
+ # ℹ️ NOTE: The contributors string should NOT be changed by anyone other than me, or those who are already listed
+ # as contributors.
+ #
+ # By default, let's use id-mentions here instead of usernames for privacy reasons, but if you'd prefer to
+ # be credited by username or something else, feel free to change your tag here - or ask me to do it.
+ #
+ # This list of names should be in order of contribution size and frequency, taking into account age of last
+ # contribution.
+ "language.credit.activeContributors": "Calsï"
+
+ "language.callbacks": {
+ "chooseYourLanguage": "Escolha seu idioma:"
+ "changedBy": "Idioma alterado do %s para o %s por %s"
+ "changedByAnswerText": "Idioma alterado"
+ "languageAlreadySetAnswerText": "%s já está definido como o idioma do grupo"
+ }
+
+
+ /* ---------------------------------------------------------------------
+ Emojify - Used for /emojify
+ --------------------------------------------------------------------- */
+ "emojify.error.tooLong": "❌ Muito longo. 🍆😐"
+ "emojify.error.replyToHuman": "Nah 🚫 fam 😂\n\nReply 💬 to a human 👤"
+ "emojify.replyHint": "🙈 Reply 💬 to the 👏 text 📲 you 👈 want 👏 to emojify!"
+
+
+ /* ---------------------------------------------------------------------
+ Translate - Used for /tr, /translate
+ --------------------------------------------------------------------- */
+ "translate.error.notALanguage": "Desculpe, '%s' não é um idioma, ou não possui suporte"
+ "translate.replyHint": "Reply to the text you want to translate!"
+
+
+ /* ---------------------------------------------------------------------
+ Roll - Used for /roll
+ --------------------------------------------------------------------- */
+ "roll.singlesArray": [
+ "Singles :("
+ ":( single, like you."
+ "._."
+ "REEEEEEEEE"
+ "rip u"
+ "(((they))) did this"
+ "feelsbadman.gaypg"
+ ]
+
+ # ℹ️ Example: You Got Septuples!
+ "roll.main": "You Got %s"
+
+
+ /* ---------------------------------------------------------------------
+ Dox - Used for /dox
+ --------------------------------------------------------------------- */
+ "dox.result":
+ '''
+ Dox de %s:
+
+
Gênero: %s + Data de nascimento: %s + Endereço: %s, %s + Emprego: %s + + IP Atual: %s + SSN: %s + Número de Telefone: %s+ ''' + + "dox.gendersArray": [ + "garoto" + "garota" + "e-boy" + "e-girl" + "puta" + "vadia" + "fuckboy" + "idk 😳" + ] + + + /* --------------------------------------------------------------------- + AtAdmin - Used for @admin, @admins + --------------------------------------------------------------------- */ + # ℹ️ NOTE: The last %s may look useless here, but it will hold the 'mentions' to the group's admins + "atAdmin.main": "%s invocou administradores para olharem para esta mensagem.%s" + + "atAdmin.callbacks": { + "chooseAction": "Selecione as ações que deseja realizar com os botões de alternância abaixo:" + "chooseActionAnswerText": "Selecione Uma Ação" + "ignoreAnswerText": "Relatório Ignorado" + "actionTakenAnswerText": "As ações que você selecionou foram tomadas" + } + + "atAdmin.info": { + "delete": "A mensagem reportada deve ser removida? Note que bots são incapazes de remover mensagens mais velhas que 48h..." + "ban": "O usuário reportado deve ser banido?" + } + + + /* --------------------------------------------------------------------- + Stickers - Used for all /sticker commands + --------------------------------------------------------------------- */ + "stickers.defaultPackTitle": "%s's Favorites" + "stickers.acceptableFileTypes": "- compressed photo,\n- uncompressed photo (<15 MB),\n- non-animated sticker" + "stickers.main": "Create, Manage and Add to Sticker Packs with the following commands:\n\n/newpack — make a new pack\n/listpacks — list your packs and their IDs\n/removepack — unlink a pack from CalsiBot\n\n/addsticker — add image or sticker to a pack\n/deletesticker — delete sticker from a pack\n\nExpert usage:\n\n/addsticker 3 — add image or sticker to pack with ID
3\n/addsticker 🥳🙂😉 — create sticker and suggest it when using any of these three emoji\n/addsticker 3 🥳🙂😉 — create sticker and add to pack 3, suggest it when using any of these three emoji"
+ "stickers.beingAdded": "⏳ Your sticker is being added, please wait..."
+ "stickers.beingAddedQueued": "⏳ Your sticker will be added in %s, please wait..."
+ "stickers.beingAddedSuccess": "🥳 Your sticker has been added!\n\nif you don't see it, remove and re-add the Sticker Pack:"
+ "stickers.beingDeleted": "This sticker has been removed.\n\nit may take up to 2 minutes to disappear:"
+ "stickers.letsCreateAPackInPrivate": "Sticker Packs must be created in private, let's go:"
+ "stickers.removeOnlyInPrivate": "Sticker Packs can only be removed in private, let's go:"
+ "stickers.seeAllCommandsHint": "Send /stickers to see all commands and info."
+ "stickers.whichPackShouldBeAddedTo": "Which pack should the sticker be added to?\n\n%s"
+
+ "stickers.callbacks": {
+ "confirmStickerPackCreate": "Your Sticker Pack will have the following title:\n\n%s\n\n⚠️ You will not be able to change this later.\n\nPress Cancel to choose a different title."
+ "cancelStickerPackCreate": "Okay, choose a different title and try again. For example:\n\n/newpack %s"
+ "stickerPackCreateSuccess": "Your Sticker Pack has been created!\n\nYou can now reply to images and stickers with /addsticker to add them to your pack\n\n%s"
+ "confirmStickerPackRemove": "⚠️ Your Sticker Pack will be disconnected from CalsiBot.\n\nYou won't be able to update this pack with CalsiBot ever again.\n\nAre you sure you want to remove this pack?"
+ "cancelStickerPackRemove": "Okay, pack was not removed."
+ "stickerPackRemoveSuccess": "Your Sticker Pack has been removed from CalsiBot.\n\nTo fully delete it, talk to @Stickers"
+ "cancelAddEmojiToMessage": "Okay, you can specify a different emoji yourself. For example:\n\n%s"
+ }
+
+ "stickers.listPacks": "Your Packs:\n\n%s\n\n%s"
+ "stickers.listPacksFill": "%s — %s"
+ "stickers.validStickerPacksAre": "Valid Sticker Pack IDs are:\n%s"
+
+ "stickers.error": {
+ "noTitleGiven": "You must specify a title. For example:\n\n/%s %s"
+ "noPackGiven": "You must specify a pack. For example:\n/%s %s\n\n%s"
+ "noEmojiGiven": "Please choose an emoji below\n\nPress Cancel to specify your own:\n%s"
+ "noStickerPacks": "You don't have any Sticker Packs.\n\n%s"
+ "specifiedPackDoesNotExist": "Could not find Sticker Pack %s\n\n%s"
+ "packLimitReached": "You have reached the limit of %s Sticker Packs.\n\nIf you want to make a new pack, you must use /removepack to remove one first."
+ "addStickerReplyHint": "Reply to an image or sticker which you want to add to a sticker pack."
+ "deleteStickerReplyHint": "Reply to a sticker from one of your packs which you want to delete."
+ }
+
+
+ /* ---------------------------------------------------------------------
+ Herd - Used for /herd, /hkick, /hban, /hunban
+ --------------------------------------------------------------------- */
+ "herd.join.main": "Your Herd Join Request has been generated. It will only last for a short time.\n\nSend this message to a Herd admin who must accept you by sending the command below in the Herd HQ chat:\n/herd join %s"
+ "herd.join.success": "Your Herd request has been accepted! This group is now a member of this Herd:\n%s\n\n⚖️ A public record of this Herd's data can be found on GitHub here.\n\nActions Herd admins take will overrule your admin's decisions.\n\nYou can /herd leave at any time.%s"
+ "herd.join.hq.success": "%s has now been added to this Herd.\n\nThere are now %s Herd members."
+ "herd.join.error": {
+ "alreadyInHerd": "This group is already a member of this Herd:\n%s\n\nYou must /herd leave to join a new Herd."
+ "invalidHerd": "The Herd you provided does not exist, or you didn't provide a Herd. Your command should look like this:\n/herd join herd-id-here"
+ "invalidToken": "The token you provided has expired, or you didn't provide a token.\n\nThis group owns a Herd, so it can use /herd join token-here to accept other groups into the Herd.\n\nOther groups who want to join your Herd can send:\n/herd join %s to generate their token."
+ "memberLimit": "This Herd:\n%s\n\nHas reached the maximum number of allowed members (25). Other members must leave before you can join."
+ }
+
+ "herd.leave.success": "This group is no longer a member of this Herd:\n%s\n\nYou can /herd join herd-id-here a different Herd at any time."
+
+ "herd.create.main": "⚠️ Read all of the following text:\n\n- It is highly recommended that you make a new group to serve as the base for your Herd!\n- This allows you to manage Herd admins completely independently of any existing group structures you have.\n\nIf you are already sending this command in a new group, then send the following command to create your Herd:\n/herd create %s"
+ "herd.create.success": "Success! This group now owns and is a member of this Herd:\n%s%s"
+ "herd.create.successGuidance": "\n\nA public record of this Herd's data will be uploaded to GitHub here.\n\nPeople in this group who can ban users, will be able to use /hban and /hunban in this group and any other that is a member of this Herd.\n\nYou must respect the people who join your Herd by appointing good admins, and not abusing trust."
+ "herd.create.error": {
+ "alreadyInHerd": "This group is already a member of this Herd:\n%s\n\nYou must /herd leave to establish a new Herd that this group owns."
+ }
+
+ "herd.orphan.main": "⚠️ Orphaning a Herd is serious! Here are some recent statistics for your Herd:\n\nHerd Members: %s\nTotal Bans: %s\n\nSend the following command to confirm:\n/herd orphan %s\n\nIf you'd still like to go forward with orphaning this Herd:\n%s"
+ "herd.orphan.success": "This group has orphaned this Herd:\n%s"
+
+ "herd.main": "Herds allow you to link together groups you own or groups with similar rules and share kicks, bans, and unbans between all of them, seamlessly.\n\n/herd join herd-id-here - join a Herd\n/herd leave - leave your current Herd\n/herd create - create a new Herd\n/herd orphan - abandon a Herd you created"
+ "herd.error": {
+ "cooldown": "A previous Herd action is still being processed for this user, please try again in a while."
+ "notInHerd": "This group is not in a Herd, so this command can't be used."
+ "isHerdOwner": "This group owns and is a member of this Herd:\n%s\n\nIf you'd like to make a new Herd and abandon this one, you can use:\n/herd orphan."
+ "isNotHerdOwner": "This group is not the owner of this Herd:\n%s."
+ "hqChatNotAccessible": "⚠️ Something is wrong. Please ensure that %s is both a member and admin of the Herd HQ chat.\n\nIf this error keeps occuring, the Herd has probably been adandoned and it is recommended that you:\n/herd leave"
+ }
+
+ "herd.ban": {
+ "ban.main": "%s will be banned across all groups in the Herd below, where they are not an admin:\n%s\n\nUse /hunban to undo"
+ "ban.hq.main": "%s has banned %s\n\nReason:\n%s"
+ "unban.main": "%s will be unbanned across all groups in Herd:\n%s\n\nUse /hban to undo"
+ "unban.hq.main": "%s has unbanned %s\n\nReason:\n%s"
+ }
+ "herd.ban.error": {
+ "alreadyBanned": "This user is already banned in Herd:\n%s"
+ "alreadyNotBanned": "This user is already not banned in Herd:\n%s"
+ "userIsHerdAdmin": "You can't do anything to %s in this Herd because they're a member of its Herd HQ chat."
+ "reasonMandatory": "You must provide a reason for Herd actions, for example:\n/%s reason here"
+ "needToBeAdminAttachment": "\n\nIn Herd:\n%s"
+ }
+}