saulodias / Zeca

Zeca is a Discord bot for the Portuguese Learning and Discussion server.
GNU General Public License v3.0
1 stars 0 forks source link

Antonym and synonym query implementation #5

Open vccortez opened 6 years ago

vccortez commented 6 years ago

Referente ao objetivo:

Implement antonyms and synonyms queries for the module dicinformal (Dicionário Informal).

Podemos discutir melhor aqui como será a cara desse comando. Algumas possibilidades:

# Implementação atual, '-s' ou '-a'
>di termo # definição normal
>di termo -s  # opção para sinônimos
>di termo -a  # opção para antônimos
>di termo -s -a # atualmente ativaria apenas a primeira opção (sinônimo),
                # mas mudando o 'if' para um 'while' iria permitir retornar os dois

# Implementação com subcomandos (group)
>di termo # definição normal, caso nenhum subcomando for usado
>di def termo # (possibilidade) usar um subcomando explícito para retornar a definição, alias 'd'
>di sin termo # subcomando para sinônimo, alias 's'
>di ant termo # subcomando para antônimo, alias 'a'
>di sa termo # subcomando sinônimo e antônimo, alias 'as' 
>di sad termo # definição + sinônimo + antônimo, alias com os diferentes anagramas de 'sad'

Se permitirmos que mais de um resultado seja retornado em alguns comandos (e.g. definição + sinônimo), então seria útil implementar as requisições como tasks que serão executadas em paralelo com a biblioteca aiohttp, como sugerido pela issue #1 .

saulodias commented 6 years ago
>di termo -s -a # atualmente isso retorna *resultado não encontrado*, 
                # pois o parser só remove o primeiro subcomando 
                # que ele detecta nos parâmetros passados. 

Criar aliases para qualquer subcomando, dada a atual implementação com dicionário é bem direto.

Com sua sugestão teríamos que modificar isso e reescrever o módulo usando o aiohttp de fato. A minha sugestão é que evitemos a criação de aliases em demasia, para não poluir a interface do usuário.

Dito isso, acho que -a, -s e -a -s simultaneamente são bem diretos e mantém o comando simples. Eu sugiro a adição de uma opção -d, para o caso de buscas que querem incluir definição e mais alguma coisa. Sugiro manter o comando default como está por questões de simplicidade e retrocompatibilidade.

Também acho que é valida a inclusão do embed de formatação do Discord dentro da classe do dicionário, como um método da própria classe, para despoluir o comando e condensar funcionalidade. Isso pode ser discutido também.

vccortez commented 6 years ago

Acho que seria possível também usar o caractere - nos subcomandos, mas preciso testar.