mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2024-11-25 16:57:33 +00:00
Merging with topkecleon-develop
This commit is contained in:
parent
d64ba40b63
commit
d667ecc262
79
README.html
79
README.html
@ -93,7 +93,8 @@ Written by Drew (@topkecleon) and Kay M (@gnadelwartz).
|
||||
<h2>Prerequisites</h2>
|
||||
<p>Uses <a href="http://github.com/dominictarr/JSON.sh">JSON.sh</a> and the magic of sed.</p>
|
||||
<p>Even bashbot is written in bash, it depends on commands typically available in a Unix/Linux Environment. More concrete on the common commands provided by recent versions of <a href="https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands">coreutils</a>, <a href="https://en.wikipedia.org/wiki/BusyBox#Commands">busybox</a> or <a href="https://landley.net/toybox/help.html">toybox</a>, see <a href="doc/7_develop.md#common-commands">Developer Notes</a></p>
|
||||
<p><em>Note for MacOS and BSD Users:</em> As bashbot heavily uses modern bash and (gnu) grep/sed features, bashbot will not run without installing additional software, see <a href="doc/0_install.md">Install Bashbot</a></p>
|
||||
<p><strong>Note for MacOS and BSD Users:</strong> As bashbot heavily uses modern bash and (gnu) grep/sed features, bashbot will not run without installing additional software, see <a href="doc/0_install.md">Install Bashbot</a></p>
|
||||
<p><strong>Note for embedded systems:</strong> busybox or toybox ONLY is not sufficient, you need a to install a "real" bash, see also <a href="doc/0_install.md">Install Bashbot</a></p>
|
||||
<p>Bashbot <a href="https://github.com/topkecleon/telegram-bot-bash">Documentation</a> and <a href="https://github.com/topkecleon/telegram-bot-bash/releases">Downloads</a> are available on www.github.com</p>
|
||||
<h2>Documentation</h2>
|
||||
<ul>
|
||||
@ -157,9 +158,11 @@ Written by Drew (@topkecleon) and Kay M (@gnadelwartz).
|
||||
<p>To install and run bashbot you need access to a linux/unix command line. If you don't know how to get access to a linux/unix command line you should stop reading here :-(</p>
|
||||
<p>In addition you need a <a href="https://telegram.org">Telegram client</a> and a mobile phone to <a href="https://telegramguide.com/create-a-telegram-account/">register an account</a>. If you don't want to register for Telegram you should stop reading here ;-)</p>
|
||||
<p>After you're registered to Telegram send a message to <a href="https://telegram.me/botfather">@botfather</a>, <a href="doc/1_firstbot.md">create a new Telegram Bot token</a> and write it down. You need the token to install the bot.</p>
|
||||
<p>Now open a terminal and check if bash is installed: <code>which bash && echo "bash installed!"</code>. If you get an error message bash is not installed.</p>
|
||||
<p>Now open a terminal and check if bash is installed:</p>
|
||||
<pre><code>which bash && echo "bash seems available..."
|
||||
</code></pre>
|
||||
<p>Create a new directory, change to it: <code>mkdir tbb; cd tbb</code> and download the latest '*.tar.gz' file from <a href="https://github.com/topkecleon/telegram-bot-bash/releases">https://github.com/topkecleon/telegram-bot-bash/releases</a>. This can be done with the commands:</p>
|
||||
<div class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb1-1" title="1"><span class="fu">wget</span> -q https://github.com/<span class="va">$(</span><span class="fu">wget</span> -q https://github.com/topkecleon/telegram-bot-bash/releases/latest -O - <span class="kw">|</span> <span class="fu">egrep</span> <span class="st">'/.*/.*/.*tar.gz'</span> -o<span class="va">)</span></a></code></pre></div>
|
||||
<div class="sourceCode" id="cb2"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb2-1" title="1"><span class="fu">wget</span> -q https://github.com/<span class="va">$(</span><span class="fu">wget</span> -q https://github.com/topkecleon/telegram-bot-bash/releases/latest -O - <span class="kw">|</span> <span class="fu">egrep</span> <span class="st">'/.*/.*/.*tar.gz'</span> -o<span class="va">)</span></a></code></pre></div>
|
||||
<p>Extract the '*.tar.gz' file and change to bashbot directory: <code>tar -xzf *.tar.gz; cd telegram-bot-bash</code>, install bashbot: <code>./bashbot.sh init</code> and enter your bot token when asked. All other questions can be answered by hitting the <Return> key.</p>
|
||||
<p>That's all, now you can start your bot with <code>./bashbot.sh start</code> and send him messages:</p>
|
||||
<pre><code>/start
|
||||
@ -196,18 +199,18 @@ It features background tasks and interactive chats, and can serve as an interfac
|
||||
<p>A powerful tool to improve your scripts is <code>shellcheck</code>. You can <a href="https://www.shellcheck.net/">use it online</a> or <a href="https://github.com/koalaman/shellcheck#installing">install shellcheck locally</a>. Shellcheck is used extensively in bashbot development to ensure a high code quality, e.g. it's not allowed to push changes without passing all shellcheck tests. In addition bashbot has a <a href="doc/7_develop.md">test suite</a> to check if important functionality is working as expected.</p>
|
||||
<h3>Use printf whenever possible</h3>
|
||||
<p>If you're writing a script and it is taking external input (from the user as arguments or file system...), you shouldn't use echo to display it. <a href="https://unix.stackexchange.com/a/6581">Use printf whenever possible</a></p>
|
||||
<div class="sourceCode" id="cb4"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb4-1" title="1"> <span class="co"># very simple</span></a>
|
||||
<a class="sourceLine" id="cb4-2" title="2"> <span class="bu">echo</span> <span class="st">"text with variables. PWD=</span><span class="va">$PWD</span><span class="st">"</span></a>
|
||||
<a class="sourceLine" id="cb4-3" title="3"> <span class="bu">printf</span> <span class="st">'%s\n'</span> <span class="st">"text with variables. PWD=</span><span class="va">$PWD</span><span class="st">"</span></a>
|
||||
<a class="sourceLine" id="cb4-4" title="4"> <span class="ex">-</span><span class="op">></span> text with variables. PWD=/home/xxx</a>
|
||||
<a class="sourceLine" id="cb4-5" title="5"></a>
|
||||
<a class="sourceLine" id="cb4-6" title="6"> <span class="co"># more advanced</span></a>
|
||||
<a class="sourceLine" id="cb4-7" title="7"> <span class="va">FLOAT=</span><span class="st">"1.2346777892864"</span> <span class="va">INTEGER=</span><span class="st">"12345.123"</span></a>
|
||||
<a class="sourceLine" id="cb4-8" title="8"> <span class="bu">echo</span> <span class="st">"text with variabeles. float=</span><span class="va">$FLOAT</span><span class="st">, integer=</span><span class="va">$INTEGER</span><span class="st">, PWD=</span><span class="va">$PWD</span><span class="st">"</span></a>
|
||||
<a class="sourceLine" id="cb4-9" title="9"> <span class="ex">-</span><span class="op">></span>text with variables. float=1.2346777892864, integer=12345.123, PWD=/home/xxx</a>
|
||||
<a class="sourceLine" id="cb4-10" title="10"></a>
|
||||
<a class="sourceLine" id="cb4-11" title="11"> <span class="bu">printf</span> <span class="st">"text with variables. float=%.2f, integer=%d, PWD=%s\n"</span> <span class="st">""</span> <span class="st">"</span><span class="va">$INTEGER</span><span class="st">"</span> <span class="st">"</span><span class="va">$PWD</span><span class="st">"</span></a>
|
||||
<a class="sourceLine" id="cb4-12" title="12"> <span class="ex">-</span><span class="op">></span>text with variables. float=1.23, integer=12345, PWD=/home/xxx</a></code></pre></div>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb5-1" title="1"> <span class="co"># very simple</span></a>
|
||||
<a class="sourceLine" id="cb5-2" title="2"> <span class="bu">echo</span> <span class="st">"text with variables. PWD=</span><span class="va">$PWD</span><span class="st">"</span></a>
|
||||
<a class="sourceLine" id="cb5-3" title="3"> <span class="bu">printf</span> <span class="st">'%s\n'</span> <span class="st">"text with variables. PWD=</span><span class="va">$PWD</span><span class="st">"</span></a>
|
||||
<a class="sourceLine" id="cb5-4" title="4"> <span class="ex">-</span><span class="op">></span> text with variables. PWD=/home/xxx</a>
|
||||
<a class="sourceLine" id="cb5-5" title="5"></a>
|
||||
<a class="sourceLine" id="cb5-6" title="6"> <span class="co"># more advanced</span></a>
|
||||
<a class="sourceLine" id="cb5-7" title="7"> <span class="va">FLOAT=</span><span class="st">"1.2346777892864"</span> <span class="va">INTEGER=</span><span class="st">"12345.123"</span></a>
|
||||
<a class="sourceLine" id="cb5-8" title="8"> <span class="bu">echo</span> <span class="st">"text with variabeles. float=</span><span class="va">$FLOAT</span><span class="st">, integer=</span><span class="va">$INTEGER</span><span class="st">, PWD=</span><span class="va">$PWD</span><span class="st">"</span></a>
|
||||
<a class="sourceLine" id="cb5-9" title="9"> <span class="ex">-</span><span class="op">></span>text with variables. float=1.2346777892864, integer=12345.123, PWD=/home/xxx</a>
|
||||
<a class="sourceLine" id="cb5-10" title="10"></a>
|
||||
<a class="sourceLine" id="cb5-11" title="11"> <span class="bu">printf</span> <span class="st">"text with variables. float=%.2f, integer=%d, PWD=%s\n"</span> <span class="st">""</span> <span class="st">"</span><span class="va">$INTEGER</span><span class="st">"</span> <span class="st">"</span><span class="va">$PWD</span><span class="st">"</span></a>
|
||||
<a class="sourceLine" id="cb5-12" title="12"> <span class="ex">-</span><span class="op">></span>text with variables. float=1.23, integer=12345, PWD=/home/xxx</a></code></pre></div>
|
||||
<h3>Do not use #!/usr/bin/env bash</h3>
|
||||
<p><strong>We stay with /bin/bash shebang, because it's more save from security perspective.</strong></p>
|
||||
<p>Use of a fixed path to the system provided bash makes it harder for attackers or users to place alternative versions of bash and avoids using a possibly broken, mangled or compromised bash executable.</p>
|
||||
@ -237,38 +240,38 @@ It features background tasks and interactive chats, and can serve as an interfac
|
||||
<h3>Can I send messages from CLI and scripts?</h3>
|
||||
<p>Of course, you can send messages from CLI and scripts, simply install bashbot as <a href="#Your-really-first-bashbot-in-a-nutshell">described here</a>, send the message '/start' to set yourself as botadmin and stop the bot with <code>./bashbot.sh stop</code>.</p>
|
||||
<p>Run the following commands in your bash shell or script while you are in the installation directory:</p>
|
||||
<div class="sourceCode" id="cb5"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb5-1" title="1"><span class="co"># prepare bash / script to send commands</span></a>
|
||||
<a class="sourceLine" id="cb5-2" title="2"><span class="bu">export</span> <span class="va">BASHBOT_HOME=</span><span class="st">"</span><span class="va">$(</span><span class="bu">pwd</span><span class="va">)</span><span class="st">"</span></a>
|
||||
<a class="sourceLine" id="cb5-3" title="3"><span class="bu">source</span> ./bashbot.sh source</a>
|
||||
<a class="sourceLine" id="cb5-4" title="4"></a>
|
||||
<a class="sourceLine" id="cb5-5" title="5"><span class="co"># send me a test message</span></a>
|
||||
<a class="sourceLine" id="cb5-6" title="6"><span class="ex">send_message</span> <span class="st">"</span><span class="va">$(</span><span class="ex">getConfigKey</span> <span class="st">"botadmin"</span><span class="va">)</span><span class="st">"</span> <span class="st">"test"</span></a>
|
||||
<a class="sourceLine" id="cb5-7" title="7"></a>
|
||||
<a class="sourceLine" id="cb5-8" title="8"><span class="co"># send me output of a system command</span></a>
|
||||
<a class="sourceLine" id="cb5-9" title="9"><span class="ex">send_message</span> <span class="st">"</span><span class="va">$(</span><span class="ex">getConfigKey</span> <span class="st">"botadmin"</span><span class="va">)</span><span class="st">"</span> <span class="st">"</span><span class="va">$(</span><span class="fu">df</span> -h<span class="va">)</span><span class="st">"</span></a></code></pre></div>
|
||||
<div class="sourceCode" id="cb6"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb6-1" title="1"><span class="co"># prepare bash / script to send commands</span></a>
|
||||
<a class="sourceLine" id="cb6-2" title="2"><span class="bu">export</span> <span class="va">BASHBOT_HOME=</span><span class="st">"</span><span class="va">$(</span><span class="bu">pwd</span><span class="va">)</span><span class="st">"</span></a>
|
||||
<a class="sourceLine" id="cb6-3" title="3"><span class="bu">source</span> ./bashbot.sh source</a>
|
||||
<a class="sourceLine" id="cb6-4" title="4"></a>
|
||||
<a class="sourceLine" id="cb6-5" title="5"><span class="co"># send me a test message</span></a>
|
||||
<a class="sourceLine" id="cb6-6" title="6"><span class="ex">send_message</span> <span class="st">"</span><span class="va">$(</span><span class="ex">getConfigKey</span> <span class="st">"botadmin"</span><span class="va">)</span><span class="st">"</span> <span class="st">"test"</span></a>
|
||||
<a class="sourceLine" id="cb6-7" title="7"></a>
|
||||
<a class="sourceLine" id="cb6-8" title="8"><span class="co"># send me output of a system command</span></a>
|
||||
<a class="sourceLine" id="cb6-9" title="9"><span class="ex">send_message</span> <span class="st">"</span><span class="va">$(</span><span class="ex">getConfigKey</span> <span class="st">"botadmin"</span><span class="va">)</span><span class="st">"</span> <span class="st">"</span><span class="va">$(</span><span class="fu">df</span> -h<span class="va">)</span><span class="st">"</span></a></code></pre></div>
|
||||
<p>For more information see <a href="doc/8_custom.md">Expert Use</a></p>
|
||||
<h3>Blocked by telegram?</h3>
|
||||
<p>This may happen if to many or wrong requests are sent to api.telegram.org, e.g. using a invalid token or not existing API calls. If the block stay for longer time you can ask telegram service to unblock your IP-Adress.</p>
|
||||
<p>You can check with curl or wget if you are blocked by Telegram:</p>
|
||||
<div class="sourceCode" id="cb6"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb6-1" title="1"><span class="ex">curl</span> -m 10 https://api.telegram.org/bot</a>
|
||||
<a class="sourceLine" id="cb6-2" title="2"><span class="co">#curl: (28) Connection timed out after 10001 milliseconds</span></a>
|
||||
<a class="sourceLine" id="cb6-3" title="3"></a>
|
||||
<a class="sourceLine" id="cb6-4" title="4"><span class="fu">wget</span> -t 1 -T 10 https://api.telegram.org/bot</a>
|
||||
<a class="sourceLine" id="cb6-5" title="5"><span class="co">#Connecting to api.telegram.org (api.telegram.org)|46.38.243.234|:443... failed: Connection timed out.</span></a></code></pre></div>
|
||||
<div class="sourceCode" id="cb7"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb7-1" title="1"><span class="ex">curl</span> -m 10 https://api.telegram.org/bot</a>
|
||||
<a class="sourceLine" id="cb7-2" title="2"><span class="co">#curl: (28) Connection timed out after 10001 milliseconds</span></a>
|
||||
<a class="sourceLine" id="cb7-3" title="3"></a>
|
||||
<a class="sourceLine" id="cb7-4" title="4"><span class="fu">wget</span> -t 1 -T 10 https://api.telegram.org/bot</a>
|
||||
<a class="sourceLine" id="cb7-5" title="5"><span class="co">#Connecting to api.telegram.org (api.telegram.org)|46.38.243.234|:443... failed: Connection timed out.</span></a></code></pre></div>
|
||||
<p>Since Version 0.96 bashbot offers the option to recover from broken connections (aka blocked). Therefore you can provide a function named <code>bashbotBlockRecover()</code> in <code>mycommands.sh</code>. If the function exists it is called every time when a broken connection is detected.</p>
|
||||
<p>Possible actions are: Check if network is working, change IP-Adress or simply wait some time.</p>
|
||||
<p>If everything seems OK return 0 for retry or any non 0 value to give up.</p>
|
||||
<div class="sourceCode" id="cb7"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb7-1" title="1"><span class="co"># called when bashbot sedn command failed because we can not connect to telegram</span></a>
|
||||
<a class="sourceLine" id="cb7-2" title="2"><span class="co"># return 0 to retry, return non 0 to give up</span></a>
|
||||
<a class="sourceLine" id="cb7-3" title="3"><span class="fu">bashbotBlockRecover()</span> <span class="kw">{</span></a>
|
||||
<a class="sourceLine" id="cb7-4" title="4"> <span class="co"># place your commands to unblock here, e.g. change IP-Adess or simply wait</span></a>
|
||||
<a class="sourceLine" id="cb7-5" title="5"> <span class="fu">sleep</span> 60 <span class="kw">&&</span> <span class="bu">return</span> 0 <span class="co"># may be temporary</span></a>
|
||||
<a class="sourceLine" id="cb7-6" title="6"> <span class="bu">return</span> 1 </a>
|
||||
<a class="sourceLine" id="cb7-7" title="7"> <span class="kw">}</span></a>
|
||||
<a class="sourceLine" id="cb7-8" title="8"></a></code></pre></div>
|
||||
<div class="sourceCode" id="cb8"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb8-1" title="1"><span class="co"># called when bashbot sedn command failed because we can not connect to telegram</span></a>
|
||||
<a class="sourceLine" id="cb8-2" title="2"><span class="co"># return 0 to retry, return non 0 to give up</span></a>
|
||||
<a class="sourceLine" id="cb8-3" title="3"><span class="fu">bashbotBlockRecover()</span> <span class="kw">{</span></a>
|
||||
<a class="sourceLine" id="cb8-4" title="4"> <span class="co"># place your commands to unblock here, e.g. change IP-Adess or simply wait</span></a>
|
||||
<a class="sourceLine" id="cb8-5" title="5"> <span class="fu">sleep</span> 60 <span class="kw">&&</span> <span class="bu">return</span> 0 <span class="co"># may be temporary</span></a>
|
||||
<a class="sourceLine" id="cb8-6" title="6"> <span class="bu">return</span> 1 </a>
|
||||
<a class="sourceLine" id="cb8-7" title="7"> <span class="kw">}</span></a>
|
||||
<a class="sourceLine" id="cb8-8" title="8"></a></code></pre></div>
|
||||
<p>@Gnadelwartz</p>
|
||||
<h2>That's it!</h2>
|
||||
<p>If you feel that there's something missing or if you found a bug, feel free to submit a pull request!</p>
|
||||
<h4>$$VERSION$$ v1.0-0-g99217c4</h4>
|
||||
<h4>$$VERSION$$ v1.1-0-gc0eb399</h4>
|
||||
</body>
|
||||
</html>
|
||||
|
12
README.md
12
README.md
@ -16,8 +16,9 @@ Uses [JSON.sh](http://github.com/dominictarr/JSON.sh) and the magic of sed.
|
||||
Even bashbot is written in bash, it depends on commands typically available in a Unix/Linux Environment.
|
||||
More concrete on the common commands provided by recent versions of [coreutils](https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands), [busybox](https://en.wikipedia.org/wiki/BusyBox#Commands) or [toybox](https://landley.net/toybox/help.html), see [Developer Notes](doc/7_develop.md#common-commands)
|
||||
|
||||
*Note for MacOS and BSD Users:* As bashbot heavily uses modern bash and (gnu) grep/sed features, bashbot will not run without installing additional software, see [Install Bashbot](doc/0_install.md)
|
||||
**Note for MacOS and BSD Users:** As bashbot heavily uses modern bash and (gnu) grep/sed features, bashbot will not run without installing additional software, see [Install Bashbot](doc/0_install.md)
|
||||
|
||||
**Note for embedded systems:** busybox or toybox ONLY is not sufficient, you need a to install a "real" bash, see also [Install Bashbot](doc/0_install.md)
|
||||
|
||||
Bashbot [Documentation](https://github.com/topkecleon/telegram-bot-bash) and [Downloads](https://github.com/topkecleon/telegram-bot-bash/releases) are available on www.github.com
|
||||
|
||||
@ -74,8 +75,11 @@ If you don't want to register for Telegram you should stop reading here ;-)
|
||||
After you're registered to Telegram send a message to [@botfather](https://telegram.me/botfather),
|
||||
[create a new Telegram Bot token](doc/1_firstbot.md) and write it down. You need the token to install the bot.
|
||||
|
||||
Now open a terminal and check if bash is installed: ```which bash && echo "bash installed!"```.
|
||||
If you get an error message bash is not installed.
|
||||
Now open a terminal and check if bash is installed:
|
||||
```
|
||||
which bash && echo "bash seems available..."
|
||||
```
|
||||
|
||||
|
||||
Create a new directory, change to it: ```mkdir tbb; cd tbb``` and download the latest '*.tar.gz' file from
|
||||
[https://github.com/topkecleon/telegram-bot-bash/releases](https://github.com/topkecleon/telegram-bot-bash/releases). This can be done with the commands:
|
||||
@ -261,4 +265,4 @@ bashbotBlockRecover() {
|
||||
|
||||
If you feel that there's something missing or if you found a bug, feel free to submit a pull request!
|
||||
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
|
14
README.txt
14
README.txt
@ -25,10 +25,12 @@ More concrete on the common commands provided by recent versions of
|
||||
[toybox](https://landley.net/toybox/help.html), see [Developer
|
||||
Notes](doc/7_develop.md#common-commands)
|
||||
|
||||
*Note for MacOS and BSD Users:* As bashbot heavily uses modern bash and (gnu)
|
||||
**Note for MacOS and BSD Users:** As bashbot heavily uses modern bash and (gnu)
|
||||
grep/sed features, bashbot will not run without installing additional software,
|
||||
see [Install Bashbot](doc/0_install.md)
|
||||
|
||||
**Note for embedded systems:** busybox or toybox ONLY is not sufficient, you
|
||||
need a to install a "real" bash, see also [Install Bashbot](doc/0_install.md)
|
||||
|
||||
Bashbot [Documentation](https://github.com/topkecleon/telegram-bot-bash) and
|
||||
[Downloads](https://github.com/topkecleon/telegram-bot-bash/releases) are
|
||||
@ -93,9 +95,11 @@ After you're registered to Telegram send a message to
|
||||
[create a new Telegram Bot token](doc/1_firstbot.md) and write it down. You
|
||||
need the token to install the bot.
|
||||
|
||||
Now open a terminal and check if bash is installed: ```which bash && echo "bash
|
||||
installed!"```.
|
||||
If you get an error message bash is not installed.
|
||||
Now open a terminal and check if bash is installed:
|
||||
```
|
||||
which bash && echo "bash seems available..."
|
||||
```
|
||||
|
||||
|
||||
Create a new directory, change to it: ```mkdir tbb; cd tbb``` and download the
|
||||
latest '*.tar.gz' file from
|
||||
@ -351,4 +355,4 @@ wait
|
||||
If you feel that there's something missing or if you found a bug, feel free to
|
||||
submit a pull request!
|
||||
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
# description: Start or stop telegram-bash-bot
|
||||
#
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
# shellcheck disable=SC2009
|
||||
# shellcheck disable=SC2181
|
||||
|
||||
|
17
bashbot.sh
17
bashbot.sh
@ -11,7 +11,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.1-dev-1-gd8c10ef
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
#
|
||||
# Exit Codes:
|
||||
# - 0 success (hopefully)
|
||||
@ -21,9 +21,17 @@
|
||||
# - 4 unknown command
|
||||
# - 5 cannot connect to telegram bot
|
||||
# - 6 mandatory module not found
|
||||
# - 7 can't get bottoken
|
||||
# - 6 can't get bottoken
|
||||
# - 10 not bash!
|
||||
# shellcheck disable=SC2140,SC2031,SC2120,SC1091
|
||||
|
||||
# emmbeded system may claim bash but it is not
|
||||
# check for bash like ARRAY handlung
|
||||
if ! (unset a; set -A a a; eval "a=(a b)"; eval '[ -n "${a[1]}" ]'; ) > /dev/null 2>&1; then
|
||||
echo "iError: Current shell does not support ARRAY's, may be busbox ash shell. pls install a real bash!";
|
||||
exit 10
|
||||
fi
|
||||
|
||||
# are we running in a terminal?
|
||||
if [ -t 1 ] && [ -n "$TERM" ]; then
|
||||
CLEAR='clear'
|
||||
@ -34,6 +42,11 @@ if [ -t 1 ] && [ -n "$TERM" ]; then
|
||||
NC='\e[0m'
|
||||
fi
|
||||
|
||||
# we need some bash 4+ features, check for old bash by feature
|
||||
if [ "$(echo -e "\u1111")" == "\u1111" ]; then
|
||||
echo -e "${ORANGE}Warning: Unicode '\uxxxx' seems not supported, install a more current bash.${NC}"
|
||||
fi
|
||||
|
||||
# some important helper functions
|
||||
# returns true if command exist
|
||||
_exists() {
|
||||
|
@ -15,7 +15,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.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
#
|
||||
|
||||
# adjust your language setting here, e.g. when run from other user or cron.
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# this has to run once atfer git clone
|
||||
# and every time we create new hooks
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
|
||||
# magic to ensure that we're always inside the root of our application,
|
||||
# no matter from which directory we'll run script
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
# works together with git pre-push.sh and ADD all changed files since last push
|
||||
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
|
||||
# magic to ensure that we're always inside the root of our application,
|
||||
# no matter from which directory we'll run script
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
|
||||
############
|
||||
# NOTE: you MUST run install-hooks.sh again when updating this file!
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
|
||||
############
|
||||
# NOTE: you MUST run install-hooks.sh again when updating this file!
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# this has to run once atfer git clone
|
||||
# and every time we create new hooks
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
|
||||
# magic to ensure that we're always inside the root of our application,
|
||||
# no matter from which directory we'll run script
|
||||
|
@ -2,7 +2,7 @@
|
||||
# file: make-distribution.sh
|
||||
# creates files and arcchives to dirtribute bashbot
|
||||
#
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
|
||||
# magic to ensure that we're always inside the root of our application,
|
||||
# no matter from which directory we'll run script
|
||||
|
@ -5,7 +5,7 @@
|
||||
# If you your bot is finished you can use make-standalone.sh to create the
|
||||
# the old all-in-one bashbot: bashbot.sh and commands.sh only!
|
||||
#
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
|
||||
# magic to ensure that we're always inside the root of our application,
|
||||
# no matter from which directory we'll run script
|
||||
|
@ -1,4 +1,4 @@
|
||||
# list of additional files to check from shellcheck
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
bashbot.rc
|
||||
mycommands.sh.clean
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
# shellcheck disable=SC2016
|
||||
#
|
||||
# Easy Versioning in git:
|
||||
|
@ -1,40 +1,45 @@
|
||||
#### [Home](../README.md)
|
||||
|
||||
## Check bash installation
|
||||
|
||||
There may systems where bash seems to be installed but it is not, e.g. embedded systems, or where bash is to old.
|
||||
Run the following commands to see if your bash looks ok ...
|
||||
|
||||
```bash
|
||||
# system say bash is there?
|
||||
if which bash; then echo "bash seems available..."; else echo "NO bash"; fi
|
||||
|
||||
# real bash supports ARRAY
|
||||
bash -c 'if eval "a=(1)"; then echo "Shell support arrays..."; else echo "Shell has NO arrays"; fi'
|
||||
|
||||
# check for bash version by feature
|
||||
bash -c 'if [ "$(echo -e "\u1111")" != "\u1111" ]; then echo "Bash version ok ..."; else echo "LBash Version may be to old ..."; fi'
|
||||
```
|
||||
|
||||
## Install bashbot
|
||||
|
||||
1. Go to the directory you want to install bashbot, e.g.
|
||||
* your $HOME directory (install and run with your user-ID)
|
||||
* /usr/local if you want to run as service
|
||||
2. [Download latest release zip from github](https://github.com/topkecleon/telegram-bot-bash/releases) and extract all files.
|
||||
2. [Download latest release zip / tar archive from github](https://github.com/topkecleon/telegram-bot-bash/releases) and extract all files.
|
||||
3. Change into the directory ```telegram-bot-bash```
|
||||
4. Activate the bot example commands ``cp mycommands.sh.dist mycommands.sh```
|
||||
4. Activate the bot example commands ```cp mycommands.sh.dist mycommands.sh```
|
||||
5. Run ```./bashbot.sh init``` to setup the environment and enter your Bots token given by botfather.
|
||||
|
||||
Edit 'mycommands.sh to your needs.
|
||||
Edit ```mycommands.sh``` to your needs.
|
||||
Now your Bot is ready to start ...
|
||||
|
||||
**If you are new to Bot development read [Bots: An introduction for developers](https://core.telegram.org/bots)**
|
||||
|
||||
### Install from github
|
||||
|
||||
As an alternative to download the zip files, you can clone the github repository to get the latest improvements/fixes.
|
||||
### Update bashbot
|
||||
|
||||
1. Go to the directory you want to install bashbot, e.g.
|
||||
* your $HOME directory (install and run with your user-ID)
|
||||
* /usr/local if you want to run as service
|
||||
2. Run ```git clone https://github.com/topkecleon/telegram-bot-bash.git```
|
||||
3. Change into the directory ```telegram-bot-bash```
|
||||
4. Run ``` dev/all-tests.sh``` and if everything finish OK ...
|
||||
5. Run ```sudo ./bashbot.sh init``` to setup the environment and enter your Bots token given by botfather.
|
||||
|
||||
### Update bashbot
|
||||
|
||||
**Note: all files including 'mycommands.sh' may overwritten, make a backup!**
|
||||
**Note: all files including ```mycommands.sh``` may overwritten, make a backup!**
|
||||
|
||||
1. Go to the directory where you had installed bashbot, e.g.
|
||||
* your $HOME directory
|
||||
* /usr/local
|
||||
2. [Download latest release zip from github](https://github.com/topkecleon/telegram-bot-bash/releases)
|
||||
2. [Download latest release zip / tar archive from github](https://github.com/topkecleon/telegram-bot-bash/releases)
|
||||
3. Stop all running instances of bashbot
|
||||
4. Extract all files to your existing bashbot dir
|
||||
5. Run ```sudo ./bashbot.sh init``` to setup your environment after the update
|
||||
@ -43,6 +48,39 @@ If you modified ```commands.sh``` move your changes to ```mycommands.sh```, this
|
||||
|
||||
Now you can restart your bashbot instances.
|
||||
|
||||
### Get zip / tar archive on command line
|
||||
|
||||
```bash
|
||||
wget -q https://github.com/$(wget -q https://github.com/topkecleon/telegram-bot-bash/releases/latest -O - | egrep '/.*/.*/.*tar.gz' -o)
|
||||
```
|
||||
|
||||
|
||||
### Install from github
|
||||
|
||||
The first install can also be done from github, updates should always done from the zip or tar archive to avoid
|
||||
overwriting your config and ```mycommands.sh``` files.
|
||||
|
||||
1. Go to the directory you want to install bashbot, e.g.
|
||||
* your $HOME directory (install and run with your user-ID)
|
||||
* /usr/local if you want to run as service
|
||||
2. Run ```git clone https://github.com/topkecleon/telegram-bot-bash.git```
|
||||
3. Change into the directory ```telegram-bot-bash```
|
||||
4. Run ``` dev/all-tests.sh``` and if everything finish OK ...
|
||||
5. Run ``` rm addons/*``` to deactivate the example add on's
|
||||
5. Run ```sudo ./bashbot.sh init``` to setup the environment and enter your Bots token given by botfather.
|
||||
|
||||
|
||||
### Get the latest development updates from github
|
||||
|
||||
To update an existing installation to the latest development version from github you must create the update archives yourself.
|
||||
|
||||
1. Run ```git clone https://github.com/topkecleon/telegram-bot-bash.git```
|
||||
2. Change into the directory ```telegram-bot-bash```
|
||||
3. Run ``` git checkout develop```
|
||||
4. Run ``` dev/make-distribution.sh```
|
||||
5. If no errors occur you will find archive files in DISTRIBUTION
|
||||
|
||||
|
||||
### Note for BSD and MacOS
|
||||
|
||||
**On MacOS** you must install a more recent version of bash, as the default bash is way to old,
|
||||
@ -101,8 +139,8 @@ if tmux ls | grep -v send | grep -q "$copname"; then inproc; fi
|
||||
must be replaced by ```send_interactive "${CHATD[ID]}" "${MESSAGE}"```
|
||||
|
||||
### Do not edit commands.sh
|
||||
From version 0.60 on your commands must be placed in 'mycommands.sh'. If you update from a version with your commands
|
||||
in 'commands.sh' move all your commands and functions to 'mycommands.sh'.
|
||||
From version 0.60 on your commands must be placed in ```mycommands.sh```. If you update from a version with your commands
|
||||
in 'commands.sh' move all your commands and functions to ```mycommands.sh```.
|
||||
|
||||
From version 0.80 on 'commands.sh' will be overwritten on update!
|
||||
|
||||
@ -131,5 +169,5 @@ The old format is supported for backward compatibility, but may fail for corner
|
||||
|
||||
#### [Next Create Bot](1_firstbot.md)
|
||||
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
|
||||
|
@ -283,5 +283,5 @@ send_action "${CHAT[ID]}" "action"
|
||||
#### [Prev Create Bot](1_firstbot.md)
|
||||
#### [Next Advanced Usage](3_advanced.md)
|
||||
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
|
||||
|
@ -5,7 +5,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.1-dev-1-gd8c10ef
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
|
||||
# will be automatically sourced from bashbot
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
# files: mycommands.sh.clean
|
||||
# copy to mycommands.sh and add all your commands and functions here ...
|
||||
#
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
#
|
||||
|
||||
##########
|
||||
|
@ -8,7 +8,7 @@
|
||||
# #### if you start to develop your own bot, use the clean version of this file:
|
||||
# #### mycommands.clean
|
||||
#
|
||||
#### $$VERSION$$ v1.0-0-g99217c4
|
||||
#### $$VERSION$$ v1.1-0-gc0eb399
|
||||
#
|
||||
|
||||
# uncomment the following lines to overwrite info and help messages
|
||||
|
Loading…
Reference in New Issue
Block a user