Uma biblioteca javascript feita para interagir com a API do Tabnews
npm install tabnews.js
yarn add tabnews.js
import { Client } from "tabnews.js"
const client = new Client()
client.login({
email: "[email protected]",
password: "examplePassword",
//ou então você pode logar direto pelo token, porém o token fica inválido depois de algum tempo.
token: "token"
}).then((user) => {
console.log(`Logado na conta ${user.username} com o token ${user.token}`)
}).catch(console.error)
Alerta: recomendo expandir tudo caso for ler as docs!
O constructor da classe Client aceita 1 parâmetro opcional, que é um objeto de configuração O objeto de configuração se parece com isso:
Nome | Descrição | tipo |
---|---|---|
tabnewsUrl | uma url customizada do tabnews. | string, opcional |
log | se o client deve usar o logger ou não | boolean, opcional |
customAgentUser | um agent user customizado pro client, use o nome do seu projeto aqui! | string, opcional |
debug | se o client deve usar o modo debug ou não(não é recomendado usar) | boolean, opcional |
O metódo login aceita 1 parâmetro obrigatório, que é um objeto de login. O objeto de login se parece com isso:
Nome | Descrição | tipo |
---|---|---|
o email da conta | string, opcional | |
password | a senha da conta | string, opcional |
token | o token da conta | string, opcional |
Caso você use um token, você não precisa usar um email e password, caso você não use um token, você precisa usar o email e o password
esse método retorna uma Promise contendo um ClientUserData, ele também emite o evento ready
Este método destroi a conexão do client com a api. Para você se conectar novamente você tera que usar o método login ele também emite o evento destroyed
Nome | Descrição | tipo |
---|---|---|
connected | se o client está conectado | boolean |
token | o token do client | string |
contents | um gerenciador de contéudos | ContentManager |
status | um gerenciador do status do tabnews | StatusManager |
users | um gerenciador de usuários | UsersManager |
user | um gerenciador do usuário do client | UserManager |
Vale lembrar que as propriedades contents
, status
, users
, user
só estão disponiveis após o login do bot!
Um content manager, como o nome já diz é responsavel por gerenciar os conteudos.
Através dele você vai consegur publicar, deletar, editar, dar upvote/downvote em conteúdos, obter os conteúdos relevantes, etc...
A seguir estão os metodos de um ContentManager
O método get obtém um conteudo com base em 2 parâmetros obrigatórios, sendo eles author
e slug
.
Exemplo: se o author for igual a Gustavo33
e o slug for tabnews-js-uma-biblioteca-javascript-para-interagir-com-a-api-do-tabnews
o contéudo que ele vai obter vai ser:
https://www.tabnews.com.br/Gustavo33/tabnews-js-uma-biblioteca-javascript-para-interagir-com-a-api-do-tabnews
Esse método retorna uma Promise contendo um Content
Este método obtém os contéudos mais novos, mais antigos, e mais relevantes com base no primeiro parâmetro. o segundo parâmetro é a página que ele vai obter os conteúdos(Cada página tem 30 conteúdos) Pârametros:
Nome | Valores | obrigatório |
---|---|---|
strategy | "new" - "old" - "relevant" |
Não, o default é "new" . |
page | Qualquer número | Não, o default é 1 . |
Esse método retorna uma Promise contendo um Array de Contents.
Este método posta um contéudo, ele aceita 1 pârametro obrigatório, que o objeto listado abaixo:
Nome | Descrição | obrigatório | Efeito |
---|---|---|---|
parentId | o id de um conteúdo | não obrigatório | faz o conteúdo ser uma resposta ao conteúdo com id igual ao parentId |
customSlug | um slug customizado | não obrigatório | adiciona um slug customizado |
title | o título do conteúdo | não obrigatório caso seja uma resposta | adiciona um título ao conteúdo |
body | o corpo do conteúdo, você pode usar markdown aqui nesse campo | obrigatório | adiciona texto ao conteúdo |
sourceUrl | a url da fonte | não obrigatório | adiciona uma fonte ao conteúdo |
Esse método retorna uma Promise contendo um Content
Este método edita um conteúdo, ele aceita 3 pârametros obrigatórios, sendo eles:
Nome | Descrição |
---|---|
author | o autor do conteúdo |
slug | o slug do conteúdo |
content | o que vai ser alterado |
o pârametro content é um objeto, as propriedades desse objeto estão listadas abaixo:
Nome | Descrição | obrigatório | Efeito |
---|---|---|---|
title | o título do conteúdo | não obrigatório | adiciona um título ao conteúdo |
body | o corpo do conteúdo, você pode usar markdown aqui nesse campo | não obrigatório | adiciona texto ao conteúdo |
sourceUrl | a url da fonte | não obrigatório | adiciona uma fonte ao conteúdo |
Esse método retorna uma Promise contendo um Content
O método delete deleta um conteudo com base em 2 parâmetros obrigatórios, sendo eles author
e slug
.
Exemplo: se o author for igual a Gustavo33
e o slug for tabnews-js-uma-biblioteca-javascript-para-interagir-com-a-api-do-tabnews
o contéudo que ele vai deletar vai ser:
https://www.tabnews.com.br/Gustavo33/tabnews-js-uma-biblioteca-javascript-para-interagir-com-a-api-do-tabnews
Esse método retorna uma Promise contendo um Content
os Métodos upvote e downvote funcionam com base em 2 parâmetros obrigatórios, sendo eles author
e slug
.
E com base nesses pârametros ele da um upvote/downvote
Esse método retorna uma Promise contendo um objeto parecido com isso:
Nome | Descrição |
---|---|
tabcoins | O numero de tabcoins que o contéudo ficou depois do upvote/downvote |
o método watch começa a assistir um contéudo, retornando um Watcher. Pârametros:
Nome | Descrição | obrigatório |
---|---|---|
author | o autor do conteúdo que ele vai assistir. | sim |
slug | o slug do conteúdo que ele vai assistir. | sim |
observeWhat | em que o watcher deve assistir por mudanças | não, o padrão é ele assistir por todos. |
ms | o tempo que o watcher vai procurar por mudanças(em milisegundos) | não, o padrão é 2 minutos e 5 segundos |
Um UsersManager, como o nome já diz é responsavel por gerenciar os usuários.
Através dele você vai consegur obter um usuário, obter os conteúdos relevantes de um usuário, etc...
A seguir estão os metodos de um UsersManager
O método get obtém um usuário com base em 1 parâmetro obrigatório, sendo ele username
.
Exemplo: se o username for Gustavo33
, o usuário que ele vai obter vai ser:
https://www.tabnews.com.br/Gustavo33
Esse método retorna uma Promise contendo um UserData
Este método obtém os contéudos mais novos, mais antigos, e mais relevantes de um usuário com base no primeiro e segundo parâmetro. o terceiro parâmetro é a página que ele vai obter os conteúdos(Cada página tem 30 conteúdos) Pârametros:
Nome | Valores | obrigatório |
---|---|---|
username | Nome do usuário que você quer obter | Sim |
strategy | "new" - "old" - "relevant" |
Não, o default é "new" . |
page | Qualquer número | Não, o default é 1 . |
Esse método retorna uma Promise contendo um Array de Contents.
o método watch começa a assistir um usuário, retornando um Watcher. Pârametros:
Nome | Descrição | obrigatório |
---|---|---|
username | o username do usuário que ele vai assistir. | sim |
observeWhat | em que o watcher deve assistir por mudanças | não, o padrão é ele assistir por todos. |
ms | o tempo que o watcher vai procurar por mudanças(em milisegundos) | não, o padrão é 2 minutos e 5 segundos |
Um UserManager, é responsavel por gerenciar o usuário do client.
Através dele você vai consegur obter o usuário do client, editar o usuário do client, etc...
A seguir estão os metodos e propriedades de um UserManager
O método get atualiza o usuário do Client. Esse método retorna uma Promise contendo um ClientUserData
Este método edita o usuário do client, ele aceita 1 pârametro que é um objeto, o objeto se parece com isso:
Nome | Descrição |
---|---|
username | o username do usuário |
Esse método retorna uma Promise contendo um ClientUserData
o método watch começa a assistir o usuário do client, retornando um Watcher. Pârametros:
Nome | Descrição | obrigatório |
---|---|---|
observeWhat | em que o watcher deve assistir por mudanças | não, o padrão é ele assistir por todos. |
ms | o tempo que o watcher vai procurar por mudanças(em milisegundos) | não, o padrão é 2 minutos e 5 segundos |
Nome | Descrição | tipo |
---|---|---|
o email do client | string | |
token | o token do client | string |
id | o id do client | string |
username | o username do client | string |
features | as features do client | array |
tabcoins | a quantidade de tabcoins do client | number |
tabcash | a quantidade de tabcash do client | number |
created_at | quando que o client foi criado | Date |
updated_at | ultima vez que o client foi modificado | Date |
Um StatusManager, é responsavel por gerenciar o status do tabnews
Através dele você vai obter o status do tabnews.
o método get obtém o status do tabnews. Esse método retorna uma Promise contendo um Status
Um Watcher, é uma classe que assiste por mudanças um Conteúdo/Usuário.
Todos os Watchers são iguais, a única coisa que muda é o que ele assiste.
Eventos do watcher: watcherUpdate
o método start inicia o watcher, e faz ele começar a assistir o Conteúdo/usuário.
o método destroy destrói o Watcher, ou seja, para de assistir ao Conteúdo/usuário. Você pode iniciar novamente o watcher pelo método start.
Nome | Descrição | tipo |
---|---|---|
id | o id de um usuário | string |
username | o username de um usuário | string |
features | as features de um usuário | array |
tabcoins | a quantidade de tabcoins de um usuário | number |
tabcash | a quantidade de tabcash de um usuário | number |
created_at | quando que o usuário foi criado | Date |
updated_at | ultima vez que o usuário foi modificado | Date |
Nome | Descrição | tipo |
---|---|---|
o email do client | string | |
token | o token do client | string |
id | o id do client | string |
username | o username do client | string |
features | as features do client | array |
tabcoins | a quantidade de tabcoins do client | number |
tabcash | a quantidade de tabcash do client | number |
created_at | quando que o client foi criado | Date |
updated_at | ultima vez que o client foi modificado | Date |
Nome | Descrição | tipo | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
id | o id do conteúdo | string | |||||||||
parent_id | o id do conteúdo root | string | |||||||||
slug | o slug do conteúdo | string | |||||||||
title | o título do conteúdo | string | |||||||||
body | o texto do conteúdo | string | |||||||||
status | o status do conteúdo | string | |||||||||
source_url | a fonte do conteúdo | string | |||||||||
thumbnail | a thumbnail do conteúdo | string | |||||||||
tabcoins | o número de tabcoins do conteúdo | number | |||||||||
created_at | data da criação do conteúdo | Date | |||||||||
published_at | data da postagem do conteúdo | Date | |||||||||
updated_at | data de quando o conteúdo foi editado | Date | |||||||||
deleted_at | data de quando o conteúdo foi deletado | Date | |||||||||
is_children | se o conteúdo é uma resposta | boolean | |||||||||
is_root | se o conteúdo é root | boolean | |||||||||
has_children | se o conteúdo tem respostas | boolean | |||||||||
owner | o criador do contéudo |
|
O método fetchOwner obtém o usuário criador do conteúdo. Retorna uma Promise contendo um UserData
O método fetchParent obtém o conteúdo root do conteúdo atual. Retorna uma Promise contendo um Content
O método fetchChildren obtém as respostas do conteúdo atual. Retorna uma Promise contendo um Array de Content
Este método edita o conteúdo, ele aceita 1 parâmetro obrigatório, sendo ele:
content | o que vai ser alterado |
---|
o pârametro content é um objeto, as propriedades desse objeto estão listadas abaixo:
Nome | Descrição | obrigatório | Efeito |
---|---|---|---|
title | o título do conteúdo | não obrigatório | adiciona um título ao conteúdo |
body | o corpo do conteúdo, você pode usar markdown aqui nesse campo | não obrigatório | adiciona texto ao conteúdo |
sourceUrl | a url da fonte | não obrigatório | adiciona uma fonte ao conteúdo |
Esse método retorna uma Promise contendo um Content
O método delete deleta o conteúdo. Esse método retorna uma Promise contendo um Content
os Métodos upvote e downvote não tem nenhum parâmetro.
Esse método retorna uma Promise contendo um objeto parecido com isso:
Nome | Descrição |
---|---|
tabcoins | O numero de tabcoins que o contéudo ficou depois do upvote/downvote |
Aqui estão os eventos do tabnews.js, você pode escutar eles com:
<client ou watcher>.on("Nome do evento", (data) => {})
O evento ready é disparado quando o client faz login no tabnews, ele traz consigo um ClientUserData
<client>.on("ready", (clientUserData) => { console.log(clientUserData) })
O evento destroyed é disparado quando o client é destruído, ele traz consigo um ClientUserData
<client>.on("destroyed", (clientUserData) => { console.log(clientUserData) })
o evento watcherUpdate é disparado quando um Watcher faz um update, ele traz consigo uma informação variada dependendo de o que você está assistindo.
<watcher>.on("watcherUpdate", (data) => { console.log(data) })
Caso você tenha um problema ou não entenda algo da documentação, não hesite em abrir uma issue ou entrar no discord do TabNews