update dirs/readme

This commit is contained in:
franjsco 2020-05-12 23:40:49 +02:00
parent edff30e6c7
commit e0328d2677
11 changed files with 424 additions and 311 deletions

View File

@ -1,33 +1,59 @@
# trackmyd-bot
<h1 align="center">Welcome to trackmyd-bot 🗺️</h1>
<p>
<a href="https://github.com/franjsco/trackmyd-bot/graphs/commit-activity" target="_blank">
<img alt="Maintenance" src="https://img.shields.io/badge/Maintained%3F-yes-green.svg" />
</a>
<a href="https://github.com/franjsco/trackmyd-bot/blob/master/LICENSE" target="_blank">
<img alt="License: GPL--3.0--or--later" src="https://img.shields.io/github/license/franjsco/trackmyd-bot" />
</a>
<a href="https://twitter.com/franjsco" target="_blank">
<img alt="Twitter: franjsco" src="https://img.shields.io/twitter/follow/franjsco.svg?style=social" />
</a>
</p>
A telegram bot to track your devices.
<img src="screenshot.png" height="400">
This bot is written in Node.js
## Architecture
**trackmyd-bot** uses the [**trackmyd-api**](https://github.com/franjsco/trackmyd-api) project APIs to get device locations.
To configure the server, refer to the [**trackmyd-api**](https://github.com/franjsco/trackmyd-api) repository.
> A telegram bot to track your devices.
In order to use trackmyd-bot, in addiction to the configuration of the trackmyd-api, its also necessary to configure [**GPSLogger**](https://github.com/mendhak/gpslogger), an open-source application that allows sending location through HTTP calls.
![trackmyd screenshot](screenshot.png)
<img src="architecture.png" height="150">
## Install
Steps:
1. Install **Node.js** and **npm**.
2. Clone this repository.
3. Install dependencies with `npm install`.
4. Create a new bot with **@BotFather** on Telegram.
5. Enter the **token** generated by BotFather in (app.token) into `config.json`.
6. Enter your **Telegram ID** in (app.authorizedUsers) into `config.json`.
7. Configure Basic Authentication in (app.api.headers) into `config.json`.
8. Configure API endpoint(*).
### Architecture
(*) **trackmyd-bot** uses the [**trackmyd-api**](https://github.com/franjsco/trackmyd-api) project APIs to get device locations.
To configure the server API, refer to the [**trackmyd-api**](https://github.com/franjsco/trackmyd-api) repository.
In order to use trackmyd-bot, in addiction to the configuration of the trackmyd-api, its also necessary to configure [**GPSLogger**](https://github.com/mendhak/gpslogger).
<img align="center" src="architecture.jpg" height="200px">
## Usage
Start server:
```sh
npm run start
```
### Steps
Before requesting the position to the bot you need to add a new device and configure it.
1. **Add a new device.**
1. **Add a new device (on Bot).**
Send the `/add` command to the bot. You will be prompted to add the device name.
2. **Configure GPSLogger on Android.**
2. **Configure GPSLogger (on Android).**
Once confirmed the device name, the bot will return 3 messages:
@ -39,27 +65,26 @@ Before requesting the position to the bot you need to add a new device and confi
Then press "Start Logging" on GPSLogger.
3. **Request the position at the bot**
3. **Request the position (on Bot)**
Send the `/position` command to the bot and select the device. If the device (with GPSLogger) has sent the information to the API, 2 messages will be returned (one with the location on the map, and one with additional information).
## Author
## Installation
👤 **franjsco (Francesco Esposito)**
### Step by step
* Website: https://franjsco.github.io/
* Twitter: [@franjsco](https://twitter.com/franjsco)
* Github: [@franjsco](https://github.com/franjsco)
1. Install **NodeJS** and **NPM**.
2. Clone this repository.
3. Install dependencies with `npm install`.
4. Create a new bot with **BotFather** on Telegram
5. Enter the **token** generated by BotFather in (app.token) into `config.json`.
6. Enter your **Telegram ID** in (app.authorizedUsers) into `config.json`.
7. Configure Basic Authentication in (app.api.headers) into `config.json`.
8. Start with `npm start`.
## Show your support
### License
Give a ⭐️ if this project helped you!
GPLv3
## 📝 License
---
Made with ❤️ by Francesco Esposito ([@franjsco](https://github.com/franjsco))
Copyright © 2020 [franjsco (Francesco Esposito)](https://github.com/franjsco).<br />
This project is [GPL--3.0--or--later](https://github.com/franjsco/trackmyd-bot/blob/master/LICENSE) licensed.
***
_This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_

BIN
architecture.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

618
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,19 +1,20 @@
{
"name": "trackmyd-bot",
"version": "1.0.0",
"description": "trackmyd telegram bot",
"description": "A telegram bot to track your devices.",
"main": "server.js",
"dependencies": {
"bunyan": "^1.8.12",
"node-fetch": "^2.3.0",
"telebot": "^1.2.6"
"node-fetch": "^2.6.0",
"telebot": "^1.3.0"
},
"devDependencies": {
"eslint": "^5.14.1",
"eslint-config-airbnb-base": "^13.1.0",
"eslint-plugin-import": "^2.16.0"
"eslint": "^5.16.0",
"eslint-config-airbnb-base": "^13.2.0",
"eslint-plugin-import": "^2.20.2"
},
"scripts": {
"start": "node src/server.js",
"lint": "eslint",
"test": "echo \"Error: no test specified\" && exit 1"
},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 739 KiB

After

Width:  |  Height:  |  Size: 472 KiB

View File

@ -1,5 +1,5 @@
const fetch = require('node-fetch');
const { api } = require('./config');
const { api } = require('../config.json');
const logger = require('./logger');
const devicesPath = `${api.baseURL}${api.paths.devices}`;

View File

@ -1,4 +1,4 @@
const config = require('./config');
const config = require('../config.json');
function auth(userId) {
return config.app.authorizedUsers.includes(userId);

View File

@ -1,6 +1,6 @@
/* eslint-disable no-console */
const bunyan = require('bunyan');
const config = require('./config.json');
const config = require('../config.json');
const log = bunyan.createLogger({
name: config.app.name,

View File

@ -1,6 +1,6 @@
/* eslint-disable consistent-return */
const Telebot = require('telebot');
const config = require('./config');
const config = require('../config');
const utils = require('./utils');
const auth = require('./auth');
const api = require('./api');
@ -17,6 +17,8 @@ const bot = new Telebot({
bot.on('/start', (msg) => {
if (!auth(msg.from.id)) {
// eslint-disable-next-line no-console
console.log(`USER ID: ${msg.from.id}`);
return bot.sendMessage(msg.from.id, templates.unauthorizedUser(), { parseMode: 'Markdown' });
}
bot.sendMessage(msg.from.id, templates.welcome(), { parseMode: 'Markdown' });
@ -118,6 +120,7 @@ bot.on('ask.removeDevice', (msg) => {
});
});
bot.start();
process.on('SIGINT', () => {

View File

@ -1,5 +1,5 @@
/* eslint-disable no-underscore-dangle */
const config = require('./config');
const config = require('../config');
const utils = require('./utils');