Skip to content

Release 3.0

Compare
Choose a tag to compare
@odnols odnols released this 06 Mar 01:19
· 661 commits to main since this release

Hora de falar de coisa boa 💯

Não é a nova Tekpix, mas sim, É A NOVA VERSÃO DO ALONSAL!

Muitas coisas mudaram por aqui desde a 1.10 que foi lançada em agosto de 2022, e pior (ou melhor!), pulamos completamente a versão 2.0 😂

(A 2.X existiu durante esse tempo, porém não será publicada devido a quantidade de alterações (foram tantas que vale por 2 versões!))

Traduções para todos os lados 🇮🇹 🇪🇸 🇷🇺

Nessa versão foram adicionados os suportes para vários idiomas, sendo eles:
  • Italiano
  • Espanhol
  • Russo

Por enquanto temos 7 idiomas suportados no Alonsal! E estamos super abertos a receber mais idiomas ou melhorias ( ou ambos!!! ) em nossa nova ramificação, dedicada apenas a isso! O Alondioma!!!

-> Alondioma

O Alondioma é um novo repositório, dedicado apenas a um propósito, reunir traduções de todos os idiomas suportados pelo Alonsal! Nele temos todos os arquivos, com todas as linhas, com todas as traduções de todos os comandos e de todas as ocasiões que podem ocorrer durante o funcionamento do bot mais enceirado:tm: do github

Para um funcionamento dinâmico o bot agora saberá quando houver uma atualização no Alondioma, dessa forma ele sincronizará com as traduções "mais recentes" ao ser ligado, de forma automática, ou de forma manual através de um comando especial.


Customizações 🥇

São várias! E ainda acompanham um novo setor, o das finanças!

Esses comandos podem ser utilizados para fixar badges em seu perfil ( do bot ), mudar cor de embeds
e fazer várias operações como enviar Bufunfas ( a moeda do Alonsal ) para seus amigos!

Usuários podem ganhar badges especiais e fixa-las em seus perfis com o comando /badge fixar

Badges fixadas aparecem em diversos locais, como no /rank e /user info!
No total temos bem mais de 7 badges, cada uma com um propósito diferente 💅🏻


Vamos falar de comandos!

Todos os comandos foram migrados para os comandos em barra ( /slash ) e agora possuímos diversos sub comandos para um único nome!

Por exemplo, o comando /setup, possui dois sub comandos, o "fantasma" e o "notificações", ambos estão codificados dentro do mesmo arquivo, porém funcionam de forma diferentes.

Comandos adicionados / re-implementados

😂 Comandos divertidos

  • /cantada ( cantadas do Vai dar Namoro )
  • /cazalbe risada
  • /emoji ( re-implementado | Exibe o emoji customizado expandido )
  • /faustop rand e /faustop menu
  • /gatos ( Fotos e gifs de gatinhos 🐱 )
  • /jailson frase
  • /apelido
  • /rasputia rand e /rasputia menu
  • /texto reverse ( renomeado ); /texto upper; /texto sans ( renomeado ) e /texto emoji

⚙️ Comandos de configs/ manutenção do bot

  • /link steam; /link lastfm; /link pula e /link locale
  • /setup fantasma; /setup notificacoes
  • /help
  • /avalie ( avaliar o Alonsal! )
  • /telemetria ( lista os dados que coletamos )

👾 Comandos de jogos e relacionados

  • /forca ( jogo da forca )
  • /dado ( re-implementado )
  • /gta ( exibe informações sobre o GTA Online atualmente )
  • /nazar ( exibe onde a Madame Nazar do Red Dead Redemption 2 se encontra no dia )
  • /pula ( o game do pula prédios! )

🎨 Comandos de miscelânia

  • /badge e /badges
  • /bank; /daily e /dei-lhe
  • /color static e /color custom
  • /lastfm ( Seu perfil no LastFM! )
  • /rank ( re-implementado )

💂🏻 Comandos moderativos

  • /add emoji e /add figurinha ( re-implementado )
  • /clear ( re-implementado | Apaga as mensagens do chat )
  • /remove emoji ( re-implementado )

💡 Comandos utilitários

  • /calculadora ( re-implementado )
  • /rastreio ( rastreia pacotes enviados pelos correios )

Tratamento de dados

Com a evolução dos sistemas é natural que haja uma parte dedicada apenas para a manipulação dos dados.
Dessa forma, era questão de tempo até que algumas funções do bot fossem alteradas completamente... Para a segurança e transparência de nossa parte para os usuários e servidores do Discord, disponibilizamos vários comandos que auxiliam e te informam sobre os dados que coletamos e o que podemos fazer com eles ao usar o bot, dados estes, que são anônimos obviamente.

Funções como o /data e a /telemetria podem ser usadas a qualquer momento para esses propósitos.

Também foram implementadas outras funções que inibem e modificam o funcionamento do bot, por exemplo, as seguintes:

  • /setup fantasma
  • /setup notificacoes

A primeira, torna todos os comandos visíveis apenas para quem usou o comando, com este modo ativo, apenas você verá os retornos de todos os comandos que usar, vale ressaltar que mensagens de erro e outras mensagens especificas continuam sendo exibidas apenas para você em alguns comandos.

O segundo comando desativa as notificações que você pode receber em mensagens diretas do bot, ao fazerem transferências de Bufunfas, ou você conseguir Badges ( e outros eventos que são informados por DM ), você não receberá esses notificações!

-> Controle dos seus dados

No futuro, pretendemos adicionar comandos para inibir funções como o registro de XP e monitoramento do bot, fornecendo opções para o usuário solicitar o download de seus dados salvos e habilitando a opção de exclusão dos dados.

-> Usuários ignorados

Atualmente o bot é capaz de ignorar certos usuários, essa punição é aplicada diretamente pelos _manutenidores_ do bot, usuários listados como "banidos" no momento são apenas ignorados pelo bot, mas no futuro pode ser que seus dados também sejam descartados assim que banidos. ( a se considerar )

Melhorias de uso

Agora diversos comandos possuem vários aliases e atalhos!

Com a atualização em nosso formato de salvar os dados, muitas coisas ficaram bem mais práticas por aqui e impulsionaram o desenvolvimento de vários recursos interessantes, também vale ressaltar a proteção e a persistência garantida dos dados, em versões anteriores era comum ocorrer perda de informações devido a arquivos corrompidos, uma vez que utilizávamos arquivos JSON para salvar tudo!

Agora é possível definir locais padrões, e nomes de perfil ( para seu perfil da Steam e LastFM ), para usar os seguintes comandos
/tempo, /steam e /lastfm sem ter que digitar o que você pretende toda vez!

O mesmo também vale para o jogo do Pula Prédios, com um token especial ( work in progress:tm: )


Mudanças nos códigos enceirados

Várias linhas foram quebradas e construídas novamente, no meio de toda essa baderna, eliminamos todos os pontos e vírgulas ( por que a linguagem permite 😋) e muitas funções foram reformuladas, incluindo o ligamento do bot e os modos `develop` utilizados para dar vida a toda essa ( ceira ) excelência da programação ( enceirada )!

Agora temos 3 arquivos principais, um responsável por levantar o cliente do discord, um especifico para listar todos os comandos e fazer a atualização deles, caso necessário e o outro ( o principal ) que faz todos se comunicarem, este recebe todas as interações do discord geradas por você e decide o que fazer!

Os arquivos são esses respectivamente:

  • client.js
  • config.js
  • bot.js

Também aproveitamos para eliminar diversas funções repetidas e minimizar o máximo possível as chamadas de funções e como tratamos o código, com as mudanças realizadas no Alondioma, agora referenciamos traduções da seguinte forma:

client.tls.phrase(user, "mode.emojis.figurinha_criada")

Todas as interações agora recebem os seguintes parâmetros ao serem executadas:

async execute(client, user, interaction) {
    interaction.reply("Funfou?")
    
    // também funciona no modelo customizado abaixo
    client.tls.reply(interaction, user, "inicio.inicio.funfou")
}

Com a atualização do modelo de dados do usuário, agora é possível enviar tudo de uma única vez ( incluindo o idioma do usuário ), na chamada da função, dessa forma, o bot já sabe qual idioma será exibido sem precisar importar um bloco de JSON em toda interação nova em todos os comandos que estão disponíveis! ( diminuindo em +8.000 linhas de códigos! )

-> Interactions e replyes

Com a expansão dos códigos e a quantidade gigantesca de textos, novas funções são criadas para diminuir esse problema, aproveitando do tradutor, agora é possível usar as funções dele para responder diretamente, seja enviando uma interação ou coletando uma frase. Como descrito abaixo:
// Solicita uma frase para o tradutor
client.tls.phrase(user, "inicio.teste.hello_world")

// Responde a interação do usuário com a tradução já esperada para aquela linha
client.tls.reply(interaction, user, "inicio.teste.hello_world")

// client.tls.reply aceita parâmetros além dos 3 principais, sendo ephemeral, e um código de emoji
client.tls.reply(interaction, user, "inicio.teste.hello_world", true, 0)

// 0 -> Código do emoji 🛑, este é anexado no inicio da frase
// O resultado de saída será uma mensagem efêmera como abaixo:

// 🛑 | Alguma tradução que deveria estar aqui

No total são 6 códigos de emojis, sendo os seguintes:

  • 0 -> 🛑
  • 1 -> 🔍
  • 2 -> ⚠️
  • 3 -> 💂
  • 4 -> 💢
  • 5 -> 🐣

Esses códigos são usados de forma dinâmica dentre as diversas funções do bot, para representar erros de localização, ou falta de dados ( 🔍 ), erros por falta de permissões ( 💂 ), entre outros.

Mais detalhes sobre códigos e as funções de tradução podem ser encontradas no seguinte caminho:
adm/formatadores/translate.js

-> Usuários ignorados

O bot agora pode ignorar usuários pelo ID dos mesmos, ao ser listado como "banido" todas as interações que um usuário fizer serão tratadas como se não tivessem sido feitas, a seguinte linha expressa essa interação:
client.discord.on("interactionCreate", async interaction => {
        // coletando os dados do usuário do banco de dados
	const user = await client.getUser(interaction.user.id)

	// ignorando usuários
	if (user.conf?.banned || false) return
	.
	.
	.

A Apisal

A Apisal também sofreu diversas atualizações para suprir as necessidades alonsianas do Alonsal!

Agora comandos como o /mine são tratados totalmente por ela, enviando apenas um JSON com os dados do item que você pesquisar.

No futuro é planejado que o mesmo ocorra com comandos que fazem raspagem de dados da internet, como o /steam e o /lastfm, todas organizadas e sob a responsabilidade da API externa.

Abaixo temos um exemplo de como os dados do comando /mine são enviados pela APISAL

{
"name": "Bloco de grama",
"internal_name": "grass_block",
"icon": "https://raw.githubusercontent.com/odnols/inventario-mine/main/IMG/Itens/new/Construcao/grass_block.png",
"stats": {
  "version": "1.0",
  "collectable": true,
  "renewable": true,
  "stackable": 64,
  "craftable": true,
  "type": "construcao",
  "hide": false
},
"wiki": "Um bloco de grama é um bloco natural gerado abundantemente na camada da Superfície. O bloco de grama pode ser obtido usando ferramentas encantadas com Toque Suave. De outro modo, será deixada terra. Blocos de grama são gerados naturalmente na maioria dos biomas na Superfície e como partes das..."
}

Conclusões

Várias partes do Alonsal foram alteradas e sofreram mudanças gigantescas que tornam o código anterior ( horrível ) ultrapassado em vários níveis! 🙏🏻🙏🏻🙏🏻

Mudanças essas são possíveis graças a colaboração de grandes colegas e a disponibilização de várias bibliotecas de forma pública, como a GTAWeather por seus dados para o comando /gta por exemplo.

Aqui vão nossos agradecimentos pelas pessoas por trás de funções usadas pelo Alonsal até o momento:

  • lllggghhhaaa Pelas ajudas com os códigos e melhorias em várias partes, incluindo o banco de dados externo e funções de prefixo customizáveis, idiomas e a criação da WCH usada amplamente em versões anteriores do Alonsal.
  • BielMaxBR pelo pontapé inicial e alinhamento do Alonsal, removendo arquivos sem propósito e ajudando a desenvolver/melhorar funções de minigames e outras.
  • AuroPick pela API dedicada a jogos gratuitos semanais da Epic Games, usada amplamente toda santa quinta feira. 🙏🏻
  • oGabrielArruda pela API dedicada a piadas e charadas usada no comando /cazalbe piada.
  • adam10603 pela API dedicada ao clima do GTA online, para uso no comando /gta.
  • LukyVj pela API dedicada a exibir a localização da Madame Nazar no /nazar.
  • vtex pelo pacote dedicado a traduzir códigos de países de 2 caracteres para 3 caracteres, usado amplamente no comando /tempo.
  • michaelwittig pelo pacote dedicado a traduzir o nome dos países com base no código dos mesmos, para os idiomas nativos, usado amplamente no comando /tempo.
  • IntriguingTiles pelo pacote dedicado as conversações do cleverbot, usada pelo Alonsal para simular uma IA.