An inline CLI telegram notifier. Used for sending message from CLI, or whenever another CLI command has finished
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Go to file
Sagi Dayan 12fd1dd899
version 0.1.3
3 years ago
lib Removed the uneeded "told ya" prints. 3 years ago
.gitignore Published to npm 3 years ago
.npmignore Changed from js to ts - Added implementation for profiles - Can also be used as a node_module 3 years ago
LICENSE Added MIT license 3 years ago
README.md minor changes to readme 3 years ago
package-lock.json Changed from js to ts - Added implementation for profiles - Can also be used as a node_module 3 years ago
package.json version 0.1.3 3 years ago
tsconfig.json Changed from js to ts - Added implementation for profiles - Can also be used as a node_module 3 years ago
tslint.json Changed from js to ts - Added implementation for profiles - Can also be used as a node_module 3 years ago
yarn.lock Changed from js to ts - Added implementation for profiles - Can also be used as a node_module 3 years ago

README.md

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:\`\`\` 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);