An inline CLI telegram notifier. Used for sending message from CLI, or whenever another CLI command has finished
This repository has been archived on 2024-12-15. You can view files and clone it, but cannot push or open issues or pull requests.
Find a file
Sagi Dayan 49c36b471f Fixes
- init/help/version does not throw an error if there is no config file
 - node_module usage - now working
2020-03-25 18:40:18 -04:00
lib Fixes 2020-03-25 18:40:18 -04:00
.gitignore Published to npm 2020-03-19 15:57:26 -04:00
.npmignore Changed from js to ts - Added implementation for profiles - Can also be used as a node_module 2020-03-22 20:22:43 -04:00
LICENSE Added MIT license 2020-03-22 20:26:27 -04:00
package-lock.json Changed from js to ts - Added implementation for profiles - Can also be used as a node_module 2020-03-22 20:22:43 -04:00
package.json Fixes 2020-03-25 18:40:18 -04:00
README.md Fixes 2020-03-25 18:40:18 -04:00
tsconfig.json Changed from js to ts - Added implementation for profiles - Can also be used as a node_module 2020-03-22 20:22:43 -04:00
tslint.json Changed from js to ts - Added implementation for profiles - Can also be used as a node_module 2020-03-22 20:22:43 -04:00
yarn.lock Changed from js to ts - Added implementation for profiles - Can also be used as a node_module 2020-03-22 20:22:43 -04:00

telme

CLI inline telegram bot notifications

TL;DR

  1. Get a bot token ( BotFather )
  2. $ npm install -g node-telme
  3. $ telme --init
  4. Need help? $ telme --help

How do i get a bot token?

  • Get a telegram bot token from the BotFather, It takes less than a minute
    • Just talk to BotFather and follow a few simple steps. Once you've created a bot and received your authorization token, copy it for later

Configure telme

Simply run $ telme --init and follow 2 easy steps. You will need the bot token at this stage. This will help you generate a .telmeconfig file in your home directory. You can always run --init again to override values or just edit the file yourself.

Config file structure

The config file .telmeconfig should be located in your home folder and contain a valid JSON.

Example config (~/.telmeconfig):

{
  "version": "0.1.0",
  "profiles": {
    "profile_name": {
      "chat_id": 000000,
      "bot_token": "<bot_token>",
      "task_message_template": "*Task:*\n\n```sh\n%cmd%\n```\nHas finished.\n*Errors*:\n %errors%"
    },
    ...
  }
}

task_message_template allows the following optional placeholders %cmd%, %errors%. These will be replaced with the actual command and errors.

Profiles

You can set multiple profiles, that will target different bots and/or different chats.

You can use the same bot in all profiles if you like, But the target chat can be different

To initialize a new profile:

$ telme --init --profile <profile_name>

Examples:

Simple message
$ telme --m "Message to send"

In the next example a message will be sent every time the user user logs in to a tty.

Added the next lines at the bottom of ~/.profile file

# Telme on login
telme --m "A new Login:\n\`\`\` user: $(whoami) | hostname: $(hostname) | remote ip $(who | cut -d'(' -f2 | cut -d')' -f1)\`\`\` Hope this is you!"
Task message

Task messages are a simple way to receive a message from your bot once a command has been finished. It will also let you know if you had any errors.

$ telme docker build . -t my-image/build/that/takes/for/ever

In this example, once the docker build has finished you will receive a message.

As mentioned before - you can also specify a profile.

$ telme -p movie-club curl https://example.com/large/file/download.mp4

this will send the message to the movie-club profile chat. (By the movie-club bot)

Using as a node_module

Typescript users will have definitions

import Telme from 'node-telme' // OR const Telme = require('node-telme').default

const config = {
  chat_id: 'somechatid',
  bot_token: 'bot-token'
}

Telme.sendMessage(config, 'Hi there!').then(_=>{
  ...
}).catch(console.error);

// %cmd% and %errors% will be replaced buy actual values.
config.task_message_template = 'Task: %cmd% is done!. Errors: %errors%';
const options = {
  command: 'ls',
  args: ['-lah'] // If no args pass in an empty array
};

Telme.runTask(config, options).then(_=>{
  ...
}).catch(console.error);