mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2024-11-22 07:25:10 +00:00
examples: improvements and printf conversion
This commit is contained in:
parent
a93dc564f1
commit
81e4fa6c81
@ -6,10 +6,143 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>Bashobot Documentation - examples/README.html</title>
|
||||
<style>
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
span.underline{text-decoration: underline;}
|
||||
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
||||
html {
|
||||
line-height: 1.5;
|
||||
font-family: Georgia, serif;
|
||||
font-size: 20px;
|
||||
color: #1a1a1a;
|
||||
background-color: #fdfdfd;
|
||||
}
|
||||
body {
|
||||
margin: 0 auto;
|
||||
max-width: 36em;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
hyphens: auto;
|
||||
word-wrap: break-word;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-kerning: normal;
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
body {
|
||||
font-size: 0.9em;
|
||||
padding: 1em;
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
body {
|
||||
background-color: transparent;
|
||||
color: black;
|
||||
font-size: 12pt;
|
||||
}
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
h2, h3, h4 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
a {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
a:visited {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 1.4em;
|
||||
}
|
||||
h5, h6 {
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
}
|
||||
h6 {
|
||||
font-weight: normal;
|
||||
}
|
||||
ol, ul {
|
||||
padding-left: 1.7em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
li > ol, li > ul {
|
||||
margin-top: 0;
|
||||
}
|
||||
blockquote {
|
||||
margin: 1em 0 1em 1.7em;
|
||||
padding-left: 1em;
|
||||
border-left: 2px solid #e6e6e6;
|
||||
color: #606060;
|
||||
}
|
||||
code {
|
||||
font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace;
|
||||
font-size: 85%;
|
||||
margin: 0;
|
||||
}
|
||||
pre {
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
.sourceCode {
|
||||
background-color: transparent;
|
||||
overflow: visible;
|
||||
}
|
||||
hr {
|
||||
background-color: #1a1a1a;
|
||||
border: none;
|
||||
height: 1px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
table {
|
||||
margin: 1em 0;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
display: block;
|
||||
font-variant-numeric: lining-nums tabular-nums;
|
||||
}
|
||||
table caption {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
tbody {
|
||||
margin-top: 0.5em;
|
||||
border-top: 1px solid #1a1a1a;
|
||||
border-bottom: 1px solid #1a1a1a;
|
||||
}
|
||||
th {
|
||||
border-top: 1px solid #1a1a1a;
|
||||
padding: 0.25em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
td {
|
||||
padding: 0.125em 0.5em 0.25em 0.5em;
|
||||
}
|
||||
header {
|
||||
margin-bottom: 4em;
|
||||
text-align: center;
|
||||
}
|
||||
#TOC li {
|
||||
list-style: none;
|
||||
}
|
||||
#TOC a:not(:hover) {
|
||||
text-decoration: none;
|
||||
}
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
span.underline{text-decoration: underline;}
|
||||
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
ul.task-list{list-style: none;}
|
||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
||||
</style>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||
@ -35,8 +168,7 @@
|
||||
run_diskusage.sh - shows disk usage every 100 seconds
|
||||
run_filename.sh - shown the name of new files in a named dir
|
||||
run_filecontent.sh - shown the content of new files in a named dir
|
||||
run_notify.sh - same as notify.sh
|
||||
</code></pre>
|
||||
run_notify.sh - same as notify.sh</code></pre>
|
||||
<p><strong>Note:</strong> Output of system commands often contains newlines, each newline results in a telegram message, the function 'send_telegram' in mycommands.sh avoids this by converting each newline to ' mynewlinestartshere ' before output the string.</p>
|
||||
<h3>System Status</h3>
|
||||
<p><strong>send-system-status</strong> contains an example for commands showing status of different subsystems. This example is adapted from https://github.com/RG72/telegram-bot-bash to current bashbot commands, but not fully tested. This will show how easy you can convert existing bots.</p>
|
||||
@ -52,10 +184,9 @@
|
||||
/lvsd *Datailed lvm status*
|
||||
/df *disk space*
|
||||
/ifconfig *ifconfig output*
|
||||
/smart *sda* _smart status for sda drive_
|
||||
</code></pre>
|
||||
<h3>External scripts</h3>
|
||||
<p><strong>external-use</strong> will contain some examples on how to send messages from external scripts to Telegram chats or users.</p>
|
||||
<h4>$$VERSION$$ v0.98-pre2-0-ga597303</h4>
|
||||
/smart *sda* _smart status for sda drive_</code></pre>
|
||||
<h3>jsonDB and Keyboards</h3>
|
||||
<p><strong>jsonDB-keybords</strong> contains a stripped down real world example from my bot showing the usage of jsonDB to store and retrieve values plus use of keyboards in private chats. It's an extended version of mycommands.sh.dist. Messages and help are in german.</p>
|
||||
<h4>$$VERSION$$ v1.20-0-g2ab00a2</h4>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -56,6 +56,6 @@ convert existing bots.
|
||||
**jsonDB-keybords** contains a stripped down real world example from my bot showing the usage of jsonDB to store and retrieve values
|
||||
plus use of keyboards in private chats. It's an extended version of mycommands.sh.dist. Messages and help are in german.
|
||||
|
||||
#### $$VERSION$$ v1.20-0-g2ab00a2
|
||||
#### $$VERSION$$ v1.21-pre-14-ga93dc56
|
||||
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
# This file is public domain in the USA and all free countries.
|
||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||
# shellcheck disable=SC1117
|
||||
#### $$VERSION$$ v1.20-0-g2ab00a2
|
||||
#### $$VERSION$$ v1.21-pre-14-ga93dc56
|
||||
|
||||
# adjust your language setting here
|
||||
# https://github.com/topkecleon/telegram-bot-bash#setting-up-your-environment
|
||||
|
@ -2,7 +2,7 @@
|
||||
# file. multibot.sh
|
||||
# description: run multiple telegram bots from one installation
|
||||
#
|
||||
#### $$VERSION$$ v1.20-0-g2ab00a2
|
||||
#### $$VERSION$$ v1.21-pre-14-ga93dc56
|
||||
|
||||
if [ "${2}" = "" ] || [ "${2}" = "-h" ]; then
|
||||
echo "Usage: $0 botname command"
|
||||
|
@ -7,7 +7,7 @@
|
||||
# This file is public domain in the USA and all free countries.
|
||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||
#
|
||||
#### $$VERSION$$ v1.20-0-g2ab00a2
|
||||
#### $$VERSION$$ v1.21-pre-14-ga93dc56
|
||||
|
||||
|
||||
SHELL=/bin/sh
|
||||
|
@ -1,11 +1,18 @@
|
||||
#!/bin/bash
|
||||
# file: calc.sh
|
||||
# example for an interactive chat, run with startproc calc.sh
|
||||
########################################################################
|
||||
#
|
||||
# File: calc.sh
|
||||
#
|
||||
# Description: example for an background job, see mycommands.sh.dist
|
||||
#
|
||||
# Usage: runback calc example/calc.sh - or run in terminal
|
||||
# killback calc - to stop background job
|
||||
#
|
||||
# This file is public domain in the USA and all free countries.
|
||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||
#
|
||||
#### $$VERSION$$ v1.20-0-g2ab00a2
|
||||
#### $$VERSION$$ v1.21-pre-14-ga93dc56
|
||||
########################################################################
|
||||
|
||||
######
|
||||
# parameters
|
||||
@ -23,22 +30,21 @@ export 'LANGUAGE=C.UTF-8'
|
||||
unset IFS
|
||||
# set -f # if you are paranoid use set -f to disable globbing
|
||||
|
||||
echo 'Starting Calculator ...'
|
||||
echo 'Enter first number.'
|
||||
printf 'Starting Calculator ...\n'
|
||||
printf 'Enter first number.\n'
|
||||
read -r A <"${INPUT}"
|
||||
echo 'Enter second number.'
|
||||
printf 'Enter second number.\n'
|
||||
read -r B <"${INPUT}"
|
||||
echo 'Select Operation: mykeyboardstartshere [ "Addition" , "Subtraction" , "Multiplication" , "Division" , "Cancel" ]'
|
||||
printf 'Select Operation: mykeyboardstartshere [ "Addition" , "Subtraction" , "Multiplication" , "Division" , "Cancel" ]\n'
|
||||
read -r opt <"${INPUT}"
|
||||
echo -n 'Result: '
|
||||
case $opt in
|
||||
'add'* | 'Add'* ) res="$(( A + B ))" ;;
|
||||
'sub'* | 'Sub'* ) res="$(( A - B ))" ;;
|
||||
'mul'* | 'Mul'* ) res="$(( A * B ))" ;;
|
||||
'div'* | 'Div'* ) res="$(( A / B ))" ;;
|
||||
'can'* | 'Can'* ) res="abort!" ;;
|
||||
* ) echo "unknown operator!";;
|
||||
printf 'Result: '
|
||||
case ${opt,,} in
|
||||
'a'*) res="$(( A + B ))" ;;
|
||||
's'*) res="$(( A - B ))" ;;
|
||||
'm'*) res="$(( A * B ))" ;;
|
||||
'd'*) res="$(( A / B ))" ;;
|
||||
'c'*) res="abort!" ;;
|
||||
* ) printf "unknown operator!\n";;
|
||||
esac
|
||||
echo "$res"
|
||||
echo "Bye .."
|
||||
printf "%s\nBye ...\n" "${res}"
|
||||
|
||||
|
@ -1,17 +1,26 @@
|
||||
#!/bin/bash
|
||||
# file: notify.sh
|
||||
# example for an background job, run with startback notify.sh
|
||||
########################################################################
|
||||
#
|
||||
# File: notify.sh
|
||||
#
|
||||
# Description: example for an background job, see mycommands.sh.dist
|
||||
#
|
||||
# Usage: runback notify example/notify.sh [seconds] - or run in terminal
|
||||
# killback notify - to stop background job
|
||||
#
|
||||
# Options: seconds - time to sleep between output, default 10
|
||||
#
|
||||
# This file is public domain in the USA and all free countries.
|
||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||
#### $$VERSION$$ v1.20-0-g2ab00a2
|
||||
#
|
||||
#### $$VERSION$$ v1.21-pre-14-ga93dc56
|
||||
########################################################################
|
||||
|
||||
######
|
||||
# parameters
|
||||
# $1 $2 args as given to starct_proc chat script arg1 arg2
|
||||
# $3 path to named pipe/log
|
||||
|
||||
|
||||
# adjust your language setting here
|
||||
# https://github.com/topkecleon/telegram-bot-bash#setting-up-your-environment
|
||||
export 'LC_ALL=C.UTF-8'
|
||||
@ -24,18 +33,20 @@ unset IFS
|
||||
# discard STDIN for background jobs!
|
||||
cat >/dev/null &
|
||||
|
||||
# check if $1 is a number
|
||||
re='^[0-9]+$'
|
||||
if [[ $1 =~ $re ]] ; then
|
||||
# $1 = time between time notifications
|
||||
# check if $1 is a valid number
|
||||
if [[ "$1" =~ ^[0-9]+$ ]] ; then
|
||||
SLEEP="$1"
|
||||
else
|
||||
SLEEP=10 # time between time notifications
|
||||
SLEEP=10
|
||||
fi
|
||||
|
||||
# output current time every $1 seconds
|
||||
date "+* It's %k:%M:%S o' clock ..."
|
||||
while sleep $SLEEP
|
||||
printf "Output time every %s seconds ...\n" "${SLEEP}"
|
||||
|
||||
while true
|
||||
do
|
||||
date "+* It's %k:%M:%S o' clock ..."
|
||||
date "+* It's %k:%M:%S o'clock ..."
|
||||
sleep $SLEEP
|
||||
done
|
||||
|
||||
|
@ -1,11 +1,17 @@
|
||||
#!/bin/bash
|
||||
# file: question.sh
|
||||
# example for an interactive chat, run with startproc question.sh
|
||||
########################################################################
|
||||
#
|
||||
# File: question.sh
|
||||
#
|
||||
# Usage: runproc example/question.sh - or run in terminal
|
||||
#
|
||||
# Description: example for an interactive chat, see mycommands.sh.dist
|
||||
#
|
||||
# This file is public domain in the USA and all free countries.
|
||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||
#
|
||||
#### $$VERSION$$ v1.20-0-g2ab00a2
|
||||
#### $$VERSION$$ v1.21-pre-14-ga93dc56
|
||||
########################################################################
|
||||
|
||||
######
|
||||
# parameters
|
||||
@ -14,7 +20,6 @@
|
||||
|
||||
INPUT="${3:-/dev/stdin}"
|
||||
|
||||
|
||||
# adjust your language setting here
|
||||
# https://github.com/topkecleon/telegram-bot-bash#setting-up-your-environment
|
||||
export 'LC_ALL=C.UTF-8'
|
||||
@ -24,18 +29,25 @@ export 'LANGUAGE=C.UTF-8'
|
||||
unset IFS
|
||||
# set -f # if you are paranoid use set -f to disable globbing
|
||||
|
||||
echo "Hi, hello there.
|
||||
Would you like some tea (y/n)?"
|
||||
# simple yes/no question, defaults to no
|
||||
printf "Hi, hello there\nWould you like some tea (y/n)?\n"
|
||||
read -r answer <"${INPUT}"
|
||||
[[ $answer =~ ^([yY][eE][sS]|[yY])$ ]] && echo "OK then, here you go: http://www.rivertea.com/blog/wp-content/uploads/2013/12/Green-Tea.jpg" || echo "OK then."
|
||||
if [[ ${answer,,} == "y"* ]]; then
|
||||
printf "OK then, here you go: http://www.rivertea.com/blog/wp-content/uploads/2013/12/Green-Tea.jpg\n"
|
||||
else
|
||||
printf "OK then, no tea ...\n"
|
||||
fi
|
||||
|
||||
# question with Keyboard, repeating until correct answer given
|
||||
until [ "$SUCCESS" = "y" ] ;do
|
||||
echo 'Do you like Music? mykeyboardstartshere "Yass!" , "No"'
|
||||
printf 'Do you like Music? mykeyboardstartshere "Yass!" , "No"\n'
|
||||
read -r answer <"${INPUT}"
|
||||
case $answer in
|
||||
'Yass!') echo "Goody! mykeyboardendshere";SUCCESS=y;;
|
||||
'No') echo "Well that's weird. mykeyboardendshere";SUCCESS=y;;
|
||||
'') echo "empty answer! Try again";;
|
||||
case ${answer,,} in
|
||||
'') printf "empty answer! Try again\n";;
|
||||
'yass'*) printf "Goody! mykeyboardendshere\n";SUCCESS=y;;
|
||||
'no'*) printf "Well that's weird. mykeyboardendshere\n";SUCCESS=y;;
|
||||
*) SUCCESS=n;;
|
||||
esac
|
||||
done
|
||||
printf "OK, Done!\n"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user