GithubHelp home page GithubHelp logo

gibot's Introduction

Gibot

bitHound Overall Score bitHound Dependencies bitHound Code

Gibot é o seu assistente pessoal para todas as horas, conecte ele em todos os seus dispositivos e deixe ele fazer a sua vida mais fácil!


1. Começando

Instalação Inicial:

  1. Execute node -v. Se não tiver versão 6 ou superior, vá para nodejs.org e instale a ultima versão estável.
  2. Execute npm -v. Se não tiver versão 5 ou superior, execute npm install -g npm
  3. Execute git clone 'SHH_LINK' para clonar o repo para o seu local.
  4. Execute cd Gibot ('G' caixa alta mesmo, valeu gibimba)
  5. Execute npm install

Assim que realizar um clone desse projeto no seu ambiente antes de começar qualquer processo você deve primeiramente criar na raíz do seu projeto um arquivo chamado .env contendo todas as variáveis do sistema que são utilizados nesse projeto. As variáveis são:

PORT='Porta que será utilizada no projeto (caso essa variável não seja inserida, o servidor adotará 3101)'
TELEGRAM_TOKEN='Token do seu bot do telegram (Produção)'
TELEGRAM_DEV_TOKEN='Token do seu bot do telegram em desenvolvimento(?)'
TELEGRAM_OWNER_ID='ID do dono do robô para ser utilizado em serviços restritos'
TRELLO_KEY='Chave de desenvolvedor do Trello'
TRELLO_TOKEN='Token do seu usuário (ou de quem você deseja acessar as informações) do Trello'
NODE_ENV='Qual o ambiente em que a aplicação está rodando no momento (opcional)'

(Acesse a página de introdução ao desenvolvimento de bots do Telegram caso precise de mais informações.)

obs: Caso deseje não ajustar essas variáveis, você pode alterá-las dentro das aplicações para o valor correspondente (não recomendado).

Após isso, seu bot estará pronto para ser utilizado! (Execute npm run dev para abrir o servidor rodando o bot local)

2. Trello

O primeiro pacote de APIs que o Gibot disponibiliza é o Trello. Para utilizar as funcionalidades do Trello pelo Gibot no Telegram use sempre o prefixo /t ou /trello seguido do comando.

No momento o Gibot consegue realizar as funções de listar e inserir.

2.1. Listar

Essa funcionalidade fornece uma lista com todas as cards presentes em uma lista específica do Trello.

A opção de listar é disponibilizada no Gibot de 2 maneiras.

A primeira é pelo o seu bot cadastrado no Telegram enviando uma mensagem pra ele no formato

/t list/"Nome da board"/"Nome da list"

Esse comando lista todas as cards contidas na lista desejada, cada card separada com duas quebras de linha.

Exemplo: Exemplo Listagem Telegram

A outra forma é uma chamada direta na API

GET /trello/"nome da board"/"nome da lista"/list

A resposta será dada em um JSON contendo apenas um array msg que contém todas as cards na lista solicitada. Em caso de falha a descrição da falha é contida dentro de msg.

Exemplo:

GET /trello/gibimbot/backlog/list
{
  "msg": [
    "Abastecer com todas as conversas de um chat",
    "Multiplos usuarios",
    "Observar conversa do chat e abastecer",
    "Spotify",
    "Economia",
    "Bitcoin",
    "https://www.haykranen.nl/2014/12/02/howto-backup-your-telegram-chats/ ou https://github.com/psamim/telegram-cli-backup",
    "https://trace.risingstack.com"
  ]
}

2.2. Inserir

Essa funcionalidade permite que o usuário insira uma nova card dentro de uma lista específica.

A opção de inserir é disponibilizada no Gibot de 2 maneiras.

A primeira é pelo o seu bot cadastrado no Telegram enviando uma mensagem pra ele no formato

/t insert/"Nome da board"/"Nome da list"/"Nome da card"

Esse comando insere uma nova card dentro da lista passada.

Exemplo: Exemplo Inserção Telegram

A outra forma é uma chamada direta na API

POST /trello/"nome da board"/"nome da lista"/insert

Contendo no corpo do POST

name: Nome da card a ser inserida. STRING
description: Descrição da card a ser inserida. OPCIONAL STRING

A resposta será dada em um JSON contendo apenas um array msg que contém a mensagem de sucesso em caso de inserção realizada ou uma mensagem de falha caso a inserção não ocorra.

Exemplo:

POST /trello/gibimbot/backlog/list

{
  "name": "Exemplo Github",
	"description": ""
}
{
  "msg": "Exemplo Github card created."
}

3. Gmail

Outro pacote de APIs que o Gibot disponibiliza é o Google Calendar. Para utilizar as funcionalidades do Calendar pelo Gibot no Telegram use sempre o prefixo /g ou /gmail seguido do comando.

No momento o Gibot consegue realizar a função de listar.

3.1. Listar

Essa funcionalidade lista todos os eventos que você possui em seu calendário em um período de tempo específico.

Listando os eventos pelo Telegram

Para listar os eventos do seu calendário pelo Telegram o Gibot aceita 3 tipos de input.

A primeira opção recebe apenas o comando e retorna todos os eventos do dia atual.

/g list

A segunda opção recebe uma quantidade de dias e verifica todos os eventos nos próximos n dias.

/g list;"dias"

Por fim a última opção recebe uma data início e uma data fim, verificando todos os eventos presentes entre estas datas.

/g list;"data início";"data fim"

Ambos os inputs retornam a resposta no mesmo modelo.

Exemplo: Exemplo Listagem Google Calendar

Listando os eventos pela API

Para listar os eventos do seu calendário por uma chamada direta a API precisamos realizar uma chamada da seguinte maneira:

GET /gmail/list?days="dias"&initialDate="dia início"&finalDate="dia fim"

Sendo que as 3 opções da query são opcionais. Caso nenhum valor seja passado a API retornará os eventos no dia de hoje. Caso tanto os dias quanto as datas de início e fim sejam passadas a API priorizará as datas e trará os eventos dentro deste período.

Exemplo:

GET /gmail/list?days=90

Resposta

{
  "msg": [
    {
      "summary": "ENC: Credimob em 5 anos",
      "start": "2017-01-31T14:00:00-02:00",
      "end": "2017-01-31T16:30:00-02:00"
    },
    {
      "summary": "ENC: CrédImob no mundo",
      "start": "2017-02-01T10:00:00-02:00",
      "end": "2017-02-01T11:00:00-02:00"
    },
    {
      "summary": "ENC: Kaizen - Atendimento de Ocorrências Sistema OD",
      "start": "2017-02-02T09:00:00-02:00",
      "end": "2017-02-03T18:00:00-02:00"
    },
    {
      "summary": "ENC: Aquele forte e grande abraço. FLWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
      "start": "2017-02-03T17:30:00-02:00",
      "end": "2017-02-03T18:00:00-02:00"
    },
    {
      "summary": "CI Digital - Plano de Validação Implantação",
      "start": "2017-02-06T14:30:00-02:00",
      "end": "2017-02-06T15:30:00-02:00"
    }
  ]
}

4. IoT

O Gibot também ajuda você a controlar a sua casa! As seguintes funcionalidades possuem alguma integração com aparelhos locais que você pode colocar na sua própria casa. Para utilizar as funcionalidades do IoT pelo Gibot no Telegram use sempre o prefixo /i ou /iot seguido do comando.

No momento o Gibot consegue realizar a função de foto.

4.1. Foto

Essa funcionalidade retorna uma foto de um local específico do seu IoT. No caso será usado um raspberry pi com uma câmera que será responsável por tirar a foto e enviar para o nosso bot.

Tirando uma foto pelo telegram

Para tirar uma nova foto é muito simples, basta enviar para o bot.

/i photo

Imediatamente o bot enviará uma foto do seu IoT. No caso deste teste o IoT irá tirar uma nova foto no exato momento que o pedido chegar.

Exemplo: Exemplo Foto Telegram

Tirando uma foto pela API

O módulo de fotos está desprendido do Gibot. Você pode desenvolver a sua própria API de foto dentro do Gibot e fazer com que ela acesse a câmera que deseja manusear. Entretanto, por hora, essa API ficará em uma outra aplicação pois possui um escopo diferente da proposta do Gibot.

5. Reddit

O Gibot disponibiliza uma maneira simples de criar o seu próprio feed de notícias pelo reddit. (Em desenvolvimento)

gibot's People

Contributors

guiconti avatar miaket avatar siqs avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

miaket

gibot's Issues

Oversized Repo

I'd like to change the node folder to make it smaller

Error: ETELEGRAM: 400 Bad Request: message text is empty

View details in Rollbar: https://rollbar.com/guiconti/Gibot/items/13/


Error: ETELEGRAM: 429 Too Many Requests: retry after 40
  File "/home/ec2-user/github/Gibot/node_modules/node-telegram-bot-api/src/telegram.js", line 213, in request.then.resp
            throw new errors.TelegramError(`${data.error_code} ${data.description}`, resp);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/util.js", line 16, in tryCatcher
            return target.apply(this, arguments);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/promise.js", line 512, in Promise._settlePromiseFromHandler
            x = tryCatch(handler).call(receiver, value);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/promise.js", line 569, in Promise._settlePromise
                this._settlePromiseFromHandler(handler, receiver, value, promise);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/promise.js", line 614, in Promise._settlePromise0
        this._settlePromise(promise, handler, receiver, value);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/promise.js", line 693, in Promise._settlePromises
                this._settlePromise0(this._fulfillmentHandler0, value, bitField);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/async.js", line 133, in Async._drainQueue
                fn._settlePromises();
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/async.js", line 143, in Async._drainQueues
        this._drainQueue(this._normalQueue);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/async.js", line 17, in Immediate.Async.drainQueues
            self._drainQueues();
  File "timers.js", line 672, in runCallback
  File "timers.js", line 645, in tryOnImmediate
  File "timers.js", line 617, in processImmediate [as _immediateCallback]

Typo no Readme

Vou arrumar um caso de vírgula por aposto em:

O módulo de fotos está desprendido do Gibot. Você pode desenvolver a sua própria API de foto dentro do Gibot e fazer com que ela acesse a câmera que deseja manusear, entretanto, por hora, essa API ficará em uma outra aplicação pois possui um escopo diferente da proposta do Gibot.

Error: EPARSE: Error parsing Telegram response: <html> <head><title>502 Bad Gateway</title></head> <body bgcolor="white"> <center><h1>502 Bad Gateway</h1></center> <hr><center>nginx/1.10.0</center> </body> </html>

View details in Rollbar: https://rollbar.com/guiconti/Gibot/items/12/


Error: EPARSE: Error parsing Telegram response: <html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx/1.10.0</center>
</body>
</html>

  File "/home/ec2-user/github/Gibot/node_modules/node-telegram-bot-api/src/telegram.js", line 206, in request.then.resp
              throw new errors.ParseError(`Error parsing Telegram response: ${resp.body}`, resp);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/util.js", line 16, in tryCatcher
            return target.apply(this, arguments);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/promise.js", line 512, in Promise._settlePromiseFromHandler
            x = tryCatch(handler).call(receiver, value);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/promise.js", line 569, in Promise._settlePromise
                this._settlePromiseFromHandler(handler, receiver, value, promise);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/promise.js", line 614, in Promise._settlePromise0
        this._settlePromise(promise, handler, receiver, value);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/promise.js", line 693, in Promise._settlePromises
                this._settlePromise0(this._fulfillmentHandler0, value, bitField);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/async.js", line 133, in Async._drainQueue
                fn._settlePromises();
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/async.js", line 143, in Async._drainQueues
        this._drainQueue(this._normalQueue);
  File "/home/ec2-user/github/Gibot/node_modules/bluebird/js/release/async.js", line 17, in Immediate.Async.drainQueues
            self._drainQueues();
  File "timers.js", line 672, in runCallback
  File "timers.js", line 645, in tryOnImmediate
  File "timers.js", line 617, in processImmediate [as _immediateCallback]

Allow parameters on top pick

We will be able to send some parameters to the top pick feature. We need to be able to recognize it on telegram to send it to API.

The options are:

  • Time
  • Platform
  • Game mode
  • Role
  • Skill tier

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.