mirror of
https://github.com/octoleo/telegram-bot-bash.git
synced 2024-06-04 19:30:52 +00:00
commit
a23370645f
206
README.html
206
README.html
|
@ -6,136 +6,6 @@
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||||
<title>Bashbot README</title>
|
<title>Bashbot README</title>
|
||||||
<style>
|
<style>
|
||||||
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;}
|
code{white-space: pre-wrap;}
|
||||||
span.smallcaps{font-variant: small-caps;}
|
span.smallcaps{font-variant: small-caps;}
|
||||||
span.underline{text-decoration: underline;}
|
span.underline{text-decoration: underline;}
|
||||||
|
@ -145,7 +15,6 @@
|
||||||
pre > code.sourceCode { white-space: pre; position: relative; }
|
pre > code.sourceCode { white-space: pre; position: relative; }
|
||||||
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
|
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
|
||||||
pre > code.sourceCode > span:empty { height: 1.2em; }
|
pre > code.sourceCode > span:empty { height: 1.2em; }
|
||||||
.sourceCode { overflow: visible; }
|
|
||||||
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
||||||
div.sourceCode { margin: 1em 0; }
|
div.sourceCode { margin: 1em 0; }
|
||||||
pre.sourceCode { margin: 0; }
|
pre.sourceCode { margin: 0; }
|
||||||
|
@ -205,7 +74,6 @@
|
||||||
code span.va { color: #19177c; } /* Variable */
|
code span.va { color: #19177c; } /* Variable */
|
||||||
code span.vs { color: #4070a0; } /* VerbatimString */
|
code span.vs { color: #4070a0; } /* VerbatimString */
|
||||||
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
||||||
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
|
||||||
</style>
|
</style>
|
||||||
<!--[if lt IE 9]>
|
<!--[if lt IE 9]>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||||
|
@ -292,28 +160,28 @@ Written by Drew (@topkecleon) and Kay M (@gnadelwartz).
|
||||||
<p>To install and run bashbot you need access to a Linux/Unix command line with bash, a <a href="https://telegram.org">Telegram client</a> and a mobile phone <a href="https://telegramguide.com/create-a-telegram-account/">with a Telegram account</a>.</p>
|
<p>To install and run bashbot you need access to a Linux/Unix command line with bash, a <a href="https://telegram.org">Telegram client</a> and a mobile phone <a href="https://telegramguide.com/create-a-telegram-account/">with a Telegram account</a>.</p>
|
||||||
<p>First you need to <a href="doc/1_firstbot.md">create a new Telegram Bot token</a> for your bot and write it down.</p>
|
<p>First you need to <a href="doc/1_firstbot.md">create a new Telegram Bot token</a> for your bot and write it down.</p>
|
||||||
<p>Now open a Linux/Unix terminal with bash, create a new directory, change to it and install telegram-bot-bash:</p>
|
<p>Now open a Linux/Unix terminal with bash, create a new directory, change to it and install telegram-bot-bash:</p>
|
||||||
<div class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="co"># create bot dir</span></span>
|
<div class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1"></a><span class="co"># create bot dir</span></span>
|
||||||
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="fu">mkdir</span> mybot</span>
|
<span id="cb1-2"><a href="#cb1-2"></a><span class="fu">mkdir</span> mybot</span>
|
||||||
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> mybot</span>
|
<span id="cb1-3"><a href="#cb1-3"></a><span class="bu">cd</span> mybot</span>
|
||||||
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb1-4"><a href="#cb1-4"></a></span>
|
||||||
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="co"># download latest release with wget or from https://github.com/topkecleon/telegram-bot-bash/releases/latest</span></span>
|
<span id="cb1-5"><a href="#cb1-5"></a><span class="co"># download latest release with wget or from https://github.com/topkecleon/telegram-bot-bash/releases/latest</span></span>
|
||||||
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a><span class="fu">wget</span> <span class="st">"https://github.com/</span><span class="va">$(</span><span class="fu">wget</span> <span class="at">-q</span> <span class="st">"https://github.com/topkecleon/telegram-bot-bash/releases/latest"</span> <span class="at">-O</span> <span class="at">-</span> <span class="kw">|</span> <span class="fu">egrep</span> <span class="st">'/.*/download/.*/.*tar.gz'</span> <span class="at">-o</span><span class="va">)</span><span class="st">"</span></span>
|
<span id="cb1-6"><a href="#cb1-6"></a><span class="fu">wget</span> <span class="st">"https://github.com/</span><span class="va">$(</span><span class="fu">wget</span> -q <span class="st">"https://github.com/topkecleon/telegram-bot-bash/releases/latest"</span> -O - <span class="kw">|</span> <span class="fu">egrep</span> <span class="st">'/.*/download/.*/.*tar.gz'</span> -o<span class="va">)</span><span class="st">"</span></span>
|
||||||
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb1-7"><a href="#cb1-7"></a></span>
|
||||||
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a><span class="co"># Extract the tar archive and go into bot dir</span></span>
|
<span id="cb1-8"><a href="#cb1-8"></a><span class="co"># Extract the tar archive and go into bot dir</span></span>
|
||||||
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="fu">tar</span> <span class="at">-xzf</span> <span class="pp">*</span>.tar.gz</span>
|
<span id="cb1-9"><a href="#cb1-9"></a><span class="fu">tar</span> -xzf *.tar.gz</span>
|
||||||
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> telegram-bot-bash</span>
|
<span id="cb1-10"><a href="#cb1-10"></a><span class="bu">cd</span> telegram-bot-bash</span>
|
||||||
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb1-11"><a href="#cb1-11"></a></span>
|
||||||
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a><span class="co"># initialize your bot</span></span>
|
<span id="cb1-12"><a href="#cb1-12"></a><span class="co"># initialize your bot</span></span>
|
||||||
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a><span class="co"># Enter your bot token when asked, all other questions can be answered by hitting the \<Return\> key.</span></span>
|
<span id="cb1-13"><a href="#cb1-13"></a><span class="co"># Enter your bot token when asked, all other questions can be answered by hitting the \<Return\> key.</span></span>
|
||||||
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a><span class="ex">./bashbot.sh</span> init</span>
|
<span id="cb1-14"><a href="#cb1-14"></a><span class="ex">./bashbot.sh</span> init</span>
|
||||||
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb1-15"><a href="#cb1-15"></a></span>
|
||||||
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a><span class="co"># Now start your bot</span></span>
|
<span id="cb1-16"><a href="#cb1-16"></a><span class="co"># Now start your bot</span></span>
|
||||||
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a><span class="ex">./bashbot.sh</span> start</span>
|
<span id="cb1-17"><a href="#cb1-17"></a><span class="ex">./bashbot.sh</span> start</span>
|
||||||
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb1-18"><a href="#cb1-18"></a></span>
|
||||||
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true" tabindex="-1"></a><span class="ex">Bottoken</span> is valid ...</span>
|
<span id="cb1-19"><a href="#cb1-19"></a><span class="ex">Bottoken</span> is valid ...</span>
|
||||||
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true" tabindex="-1"></a><span class="ex">Bot</span> Name: yourbotname_bot</span>
|
<span id="cb1-20"><a href="#cb1-20"></a><span class="ex">Bot</span> Name: yourbotname_bot</span>
|
||||||
<span id="cb1-21"><a href="#cb1-21" aria-hidden="true" tabindex="-1"></a><span class="ex">Session</span> Name: yourbotname_bot-startbot</span>
|
<span id="cb1-21"><a href="#cb1-21"></a><span class="ex">Session</span> Name: yourbotname_bot-startbot</span>
|
||||||
<span id="cb1-22"><a href="#cb1-22" aria-hidden="true" tabindex="-1"></a><span class="ex">Bot</span> started successfully.</span></code></pre></div>
|
<span id="cb1-22"><a href="#cb1-22"></a><span class="ex">Bot</span> started successfully.</span></code></pre></div>
|
||||||
<p>Now open the Telegram App on your mobile phone and start a chat with your bot (<em>your bot's username is shown after 'Bot Name:'</em>):</p>
|
<p>Now open the Telegram App on your mobile phone and start a chat with your bot (<em>your bot's username is shown after 'Bot Name:'</em>):</p>
|
||||||
<pre><code>/start
|
<pre><code>/start
|
||||||
|
|
||||||
|
@ -326,7 +194,8 @@ Available commands:
|
||||||
/info
|
/info
|
||||||
|
|
||||||
This is bashbot, the Telegram bot written entirely in bash.
|
This is bashbot, the Telegram bot written entirely in bash.
|
||||||
It features background tasks and interactive chats, and can serve as an interface for CLI programs.</code></pre>
|
It features background tasks and interactive chats, and can serve as an interface for CLI programs.
|
||||||
|
</code></pre>
|
||||||
<p>For more Information on how to install, customize and use your new bot, read the <a href="#Documentation">Documentation</a>.</p>
|
<p>For more Information on how to install, customize and use your new bot, read the <a href="#Documentation">Documentation</a>.</p>
|
||||||
<h3>Log files</h3>
|
<h3>Log files</h3>
|
||||||
<p>Bashbot actions are logged to <code>BASHBOT.log</code>. Telegram send/receive errors are logged to <code>ERROR.log</code>. Start bashbot in debug mode to see all messages sent to / received from Telegram, as well as bash command error messages.</p>
|
<p>Bashbot actions are logged to <code>BASHBOT.log</code>. Telegram send/receive errors are logged to <code>ERROR.log</code>. Start bashbot in debug mode to see all messages sent to / received from Telegram, as well as bash command error messages.</p>
|
||||||
|
@ -336,7 +205,8 @@ It features background tasks and interactive chats, and can serve as an interfac
|
||||||
| |__ ERROR.log # connection errors from / to Telegram API
|
| |__ ERROR.log # connection errors from / to Telegram API
|
||||||
| |
|
| |
|
||||||
| |__ DEBUG.log # stdout/stderr of you bot (debug mode enabled)
|
| |__ DEBUG.log # stdout/stderr of you bot (debug mode enabled)
|
||||||
| |__ MESSAGE.log # full text of all message send/received (debug mode enabled)</code></pre>
|
| |__ MESSAGE.log # full text of all message send/received (debug mode enabled)
|
||||||
|
</code></pre>
|
||||||
<hr />
|
<hr />
|
||||||
<h2>Security Considerations</h2>
|
<h2>Security Considerations</h2>
|
||||||
<p>Running a Telegram Bot means it is connected to the public and you never know what's send to your Bot.</p>
|
<p>Running a Telegram Bot means it is connected to the public and you never know what's send to your Bot.</p>
|
||||||
|
@ -372,27 +242,27 @@ It features background tasks and interactive chats, and can serve as an interfac
|
||||||
<h3>Can I send messages from CLI and scripts?</h3>
|
<h3>Can I send messages from CLI and scripts?</h3>
|
||||||
<p>Of course you can send messages from command line 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 then stop the bot with <code>./bashbot.sh stop</code>.</p>
|
<p>Of course you can send messages from command line 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 then stop the bot with <code>./bashbot.sh stop</code>.</p>
|
||||||
<p>Bashbot provides some ready to use scripts for sending messages from command line in <code>bin/</code> dir, e.g. <code>send_message.sh</code>.</p>
|
<p>Bashbot provides some ready to use scripts for sending messages from command line in <code>bin/</code> dir, e.g. <code>send_message.sh</code>.</p>
|
||||||
<div class="sourceCode" id="cb4"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="ex">bin/send_message.sh</span> BOTADMIN <span class="st">"This is my first message send from CLI"</span></span>
|
<div class="sourceCode" id="cb4"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1"></a><span class="ex">bin/send_message.sh</span> BOTADMIN <span class="st">"This is my first message send from CLI"</span></span>
|
||||||
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb4-2"><a href="#cb4-2"></a></span>
|
||||||
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a><span class="ex">bin/send_message.sh</span> <span class="at">--help</span></span></code></pre></div>
|
<span id="cb4-3"><a href="#cb4-3"></a><span class="ex">bin/send_message.sh</span> --help</span></code></pre></div>
|
||||||
<p>You can also source bashbot for use in your scripts, for more information see <a href="doc/4_expert.md">Expert Use</a>.</p>
|
<p>You can also source bashbot for use in your scripts, for more information see <a href="doc/4_expert.md">Expert Use</a>.</p>
|
||||||
<h3>Blocked by telegram?</h3>
|
<h3>Blocked by telegram?</h3>
|
||||||
<p>This may happen if too many or wrong requests are sent to api.telegram.org, e.g. using a invalid token or invalid API calls. If the block stay for longer time you can ask telegram service to unblock your IP-Address.</p>
|
<p>This may happen if too many or wrong requests are sent to api.telegram.org, e.g. using a invalid token or invalid API calls. If the block stay for longer time you can ask telegram service to unblock your IP-Address.</p>
|
||||||
<p>You can check with curl or wget if you are blocked by Telegram:</p>
|
<p>You can check with curl or wget if you are blocked by Telegram:</p>
|
||||||
<div class="sourceCode" id="cb5"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="ex">curl</span> <span class="at">-m</span> 10 https://api.telegram.org/bot</span>
|
<div class="sourceCode" id="cb5"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1"></a><span class="ex">curl</span> -m 10 https://api.telegram.org/bot</span>
|
||||||
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="co">#curl: (28) Connection timed out after 10001 milliseconds</span></span>
|
<span id="cb5-2"><a href="#cb5-2"></a><span class="co">#curl: (28) Connection timed out after 10001 milliseconds</span></span>
|
||||||
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb5-3"><a href="#cb5-3"></a></span>
|
||||||
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="fu">wget</span> <span class="at">-t</span> 1 <span class="at">-T</span> 10 https://api.telegram.org/bot</span>
|
<span id="cb5-4"><a href="#cb5-4"></a><span class="fu">wget</span> -t 1 -T 10 https://api.telegram.org/bot</span>
|
||||||
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a><span class="co">#Connecting to api.telegram.org (api.telegram.org)|46.38.243.234|:443... failed: Connection timed out.</span></span>
|
<span id="cb5-5"><a href="#cb5-5"></a><span class="co">#Connecting to api.telegram.org (api.telegram.org)|46.38.243.234|:443... failed: Connection timed out.</span></span>
|
||||||
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a></span>
|
<span id="cb5-6"><a href="#cb5-6"></a></span>
|
||||||
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true" tabindex="-1"></a><span class="ex">nc</span> <span class="at">-w</span> 2 api.telegram.org 443 <span class="kw">||</span> <span class="bu">echo</span> <span class="st">"your IP seems blocked by telegram"</span></span>
|
<span id="cb5-7"><a href="#cb5-7"></a><span class="ex">nc</span> -w 2 api.telegram.org 443 <span class="kw">||</span> <span class="bu">echo</span> <span class="st">"your IP seems blocked by telegram"</span></span>
|
||||||
<span id="cb5-8"><a href="#cb5-8" aria-hidden="true" tabindex="-1"></a><span class="co">#your IP seems blocked by telegram</span></span></code></pre></div>
|
<span id="cb5-8"><a href="#cb5-8"></a><span class="co">#your IP seems blocked by telegram</span></span></code></pre></div>
|
||||||
<p>Bashbot offers the option to recover from broken connections (blocked). Therefore you can provide a function named <code>bashbotBlockRecover()</code> in <code>mycommands.sh</code>, the function is called every time when a broken connection is detected.</p>
|
<p>Bashbot offers the option to recover from broken connections (blocked). Therefore you can provide a function named <code>bashbotBlockRecover()</code> in <code>mycommands.sh</code>, the function is called every time when a broken connection is detected.</p>
|
||||||
<p>Possible actions are: Check if network is working, change IP-Address or simply wait some time. See <code>mycommnds.sh.dist</code> for an example.</p>
|
<p>Possible actions are: Check if network is working, change IP-Address or simply wait some time. See <code>mycommnds.sh.dist</code> for an example.</p>
|
||||||
<hr />
|
<hr />
|
||||||
<p>@Gnadelwartz</p>
|
<p>@Gnadelwartz</p>
|
||||||
<h2>That's it all guys!</h2>
|
<h2>That's it all guys!</h2>
|
||||||
<p>If you feel that there's something missing or if you found a bug, feel free to submit a pull request!</p>
|
<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.5-0-g8adca9b</h4>
|
<h4>$$VERSION$$ v1.51-0-g6e66a28</h4>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -242,4 +242,4 @@ See `mycommnds.sh.dist` for an example.
|
||||||
|
|
||||||
If you feel that there's something missing or if you found a bug, feel free to submit a pull request!
|
If you feel that there's something missing or if you found a bug, feel free to submit a pull request!
|
||||||
|
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
|
@ -319,5 +319,5 @@ That's it all guys!
|
||||||
If you feel that there's something missing or if you found a bug, feel free to submit a
|
If you feel that there's something missing or if you found a bug, feel free to submit a
|
||||||
pull request!
|
pull request!
|
||||||
|
|
||||||
$$VERSION$$ v1.5-0-g8adca9b
|
$$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
# this addon counts how many files, e.g. stickers, are sent to
|
# this addon counts how many files, e.g. stickers, are sent to
|
||||||
# a chat and takes actions if threshold is reached
|
# a chat and takes actions if threshold is reached
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
# used events:
|
# used events:
|
||||||
#
|
#
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
# Addons can register to bashbot events at startup
|
# Addons can register to bashbot events at startup
|
||||||
# by providing their name and a callback per event
|
# by providing their name and a callback per event
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#
|
#
|
||||||
# If an event occurs each registered event function is called.
|
# If an event occurs each registered event function is called.
|
||||||
#
|
#
|
||||||
|
|
68
bashbot.rc
68
bashbot.rc
|
@ -5,7 +5,7 @@
|
||||||
#
|
#
|
||||||
# tested on: ubuntu, opensuse, debian
|
# tested on: ubuntu, opensuse, debian
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
# shellcheck disable=SC2009
|
# shellcheck disable=SC2009
|
||||||
# shellcheck disable=SC2181
|
# shellcheck disable=SC2181
|
||||||
# shellcheck disable=SC2250
|
# shellcheck disable=SC2250
|
||||||
|
@ -37,61 +37,91 @@ runas="nobody"
|
||||||
# edit the values of the following lines to fit your config:
|
# edit the values of the following lines to fit your config:
|
||||||
# your bot name as given to botfather, e.g. mysomething_bot
|
# your bot name as given to botfather, e.g. mysomething_bot
|
||||||
name=""
|
name=""
|
||||||
|
[ -z "${name}" ] && name="unknown"
|
||||||
|
|
||||||
# your bot installation dir
|
# your bot installation dir
|
||||||
bashbotdir="/usr/local/telegram-bot-bash"
|
bashbotdir="/usr/local/telegram-bot-bash"
|
||||||
databotdir="${bashbotdir}/data-bot-bash"
|
databotdir="${bashbotdir}/data-bot-bash"
|
||||||
|
FIFO="${databotdir}/webhook-fifo-${name}"
|
||||||
|
|
||||||
# programs to run
|
# programs to run
|
||||||
bashbot="cd ${bashbotdir}; ${bashbotdir}/bashbot.sh"
|
bashbot="cd ${bashbotdir}; ${bashbotdir}/bashbot.sh"
|
||||||
webhook="cd ${bashbotdir}; nohup ${bashbotdir}/bin/process_batch.sh --startbot --watch ${databotdir}/webhook-fifo-${name}"
|
webhook="cd ${bashbotdir}; nohup ${bashbotdir}/bin/process_batch.sh --startbot --watch ${FIFO}"
|
||||||
# set additionl parameter, e.g. debug
|
# set additionl parameter, e.g. debug
|
||||||
mode=""
|
mode=""
|
||||||
|
|
||||||
|
# select logfile for webhook start stop and script errors
|
||||||
|
hooklog="DEBUG"
|
||||||
|
hooklog="WEBHOOK"
|
||||||
|
|
||||||
# END Configuration
|
# END Configuration
|
||||||
#######################
|
#######################
|
||||||
|
|
||||||
[ "${name}" = "" ] && name="${runas}"
|
|
||||||
|
# check for bot status
|
||||||
|
ps -f -u "${runas}" | grep "${name}" | grep -qF "bashbot.sh startbot"
|
||||||
|
if [ "$?" = "0" ]; then
|
||||||
|
# printf "bashbot (%s) is running in poll mode\n" "${name}"
|
||||||
|
stat="poll"
|
||||||
|
else
|
||||||
|
ps -f -u "${runas}" | grep "${name}" | grep -qF "process_batch.sh --startbot"
|
||||||
|
if [ "$?" = "0" ]; then
|
||||||
|
#printf "bashbot (%s) is running in webhook mode\n" "${name}"
|
||||||
|
stat="hook"
|
||||||
|
elif [ "${name}" != "unknown" ]; then
|
||||||
|
#printf "bashbot (%s) is stopped\n" "${name}"
|
||||||
|
stat="stop"
|
||||||
|
else
|
||||||
|
stat="unknown"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
'start')
|
'start')
|
||||||
|
[ "${stat}" != "stop" ] && printf "Warning, bot is running in mode: %s\n" "${stat}"
|
||||||
$runcmd "$bashbot start $mode" # >/dev/null 2>&1 </dev/null
|
$runcmd "$bashbot start $mode" # >/dev/null 2>&1 </dev/null
|
||||||
RETVAL=$?
|
RETVAL=$?
|
||||||
;;
|
;;
|
||||||
'starthook')
|
'starthook')
|
||||||
|
[ -p "${FIFO}" ] || printf "Warning, webhook pipe not found: %s\n" "${FIFO##*/}"
|
||||||
|
[ "${stat}" != "stop" ] && printf "Warning, bot is running in mode: %s\n" "${stat}"
|
||||||
printf "Starting bashbot in webhook mode ... "
|
printf "Starting bashbot in webhook mode ... "
|
||||||
$runcmd "$webhook $mode </dev/null &>>${bashbotdir}/logs/WEBHOOK.log &" # >/dev/null 2>&1 </dev/null
|
$runcmd "$webhook $mode </dev/null &>>${bashbotdir}/logs/${hooklog}.log &" # >/dev/null 2>&1 </dev/null
|
||||||
sleep 1
|
sleep 1
|
||||||
$0 status
|
$0 status
|
||||||
RETVAL=$?
|
RETVAL=$?
|
||||||
;;
|
;;
|
||||||
'stop')
|
'stop')
|
||||||
|
[ "${stat}" != "poll" ] && printf "Warning, bot is not in poll mode: %s\n" "${stat}"
|
||||||
$runcmd "$bashbot stop $mode"
|
$runcmd "$bashbot stop $mode"
|
||||||
RETVAL=$?
|
RETVAL=$?
|
||||||
;;
|
;;
|
||||||
'stophook')
|
'stophook')
|
||||||
|
[ "${stat}" != "hook" ] && printf "Warning, bot is not in webhook mode: %s\n" "${stat}"
|
||||||
printf "Stopping bashbot webhook mode ... "
|
printf "Stopping bashbot webhook mode ... "
|
||||||
KILLID="$(ps -f -u "${runas}" | grep "process_batch.sh --startbot" | sed -E 's/[^0-9]+([0-9]+).*/\1/')"
|
KILLID="$(ps -f -u "${runas}" | grep "process_batch.sh --startbot" | sed -E 's/[^0-9]+([0-9]+).*/\1/' | tr -s "\r\n" " ")"
|
||||||
if [ -n "${KILLID}" ]; then
|
if [ -n "${KILLID}" ]; then
|
||||||
$runcmd "kill $(printf "%s" "${KILLID}" | tr -s "\r\n" " " )"
|
$runcmd "kill ${KILLID}; wait ${KILLID} 2>/dev/null"
|
||||||
sleep 1
|
sleep 1
|
||||||
$0 status
|
|
||||||
fi
|
fi
|
||||||
RETVAL=$?
|
RETVAL=$?
|
||||||
|
$0 status
|
||||||
;;
|
;;
|
||||||
'status')
|
'status')
|
||||||
ps -f -u "${runas}" | grep "${name}" | grep -qF "bashbot.sh startbot"
|
case "${stat}" in
|
||||||
if [ "$?" = "0" ]; then
|
"poll"*) printf "bashbot (%s) is running in poll mode\n" "${name}"
|
||||||
printf "bashbot (%s) is running in poll mode\n" "${name}"
|
|
||||||
RETVAL=0
|
|
||||||
else
|
|
||||||
ps -f -u "${runas}" | grep "${name}" | grep -qF "process_batch.sh --startbot"
|
|
||||||
if [ "$?" = "0" ]; then
|
|
||||||
printf "bashbot (%s) is running in webhook mode\n" "${name}"
|
|
||||||
RETVAL=0
|
RETVAL=0
|
||||||
else
|
;;
|
||||||
printf "bashbot (%s) is stopped\n" "${name}"
|
"hook"*) printf "bashbot (%s) is running in webhook mode\n" "${name}"
|
||||||
|
RETVAL=0
|
||||||
|
;;
|
||||||
|
"stop"*) printf "bashbot (%s) is not running\n" "${name}"
|
||||||
RETVAL=1
|
RETVAL=1
|
||||||
fi
|
;;
|
||||||
fi
|
*) printf "bashbot (%s) status is %s\n" "${name}" "${stat}"
|
||||||
|
RETVAL=2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
;;
|
;;
|
||||||
'restart'|'reload')
|
'restart'|'reload')
|
||||||
$0 stop; $0 start
|
$0 stop; $0 start
|
||||||
|
|
35
bashbot.sh
35
bashbot.sh
|
@ -30,7 +30,7 @@ BOTCOMMANDS="-h help init start stop status suspendback resumeback killb
|
||||||
# 8 - curl/wget missing
|
# 8 - curl/wget missing
|
||||||
# 10 - not bash!
|
# 10 - not bash!
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
##################################################################
|
##################################################################
|
||||||
|
|
||||||
# are we running in a terminal?
|
# are we running in a terminal?
|
||||||
|
@ -181,6 +181,7 @@ MODULEDIR="${SCRIPTDIR}/modules"
|
||||||
exit_source() { exit "$1"; }
|
exit_source() { exit "$1"; }
|
||||||
if [[ "${SCRIPT}" != "${REALME}" || "$1" == "source" ]]; then
|
if [[ "${SCRIPT}" != "${REALME}" || "$1" == "source" ]]; then
|
||||||
SOURCE="yes"
|
SOURCE="yes"
|
||||||
|
SCRIPT="${REALME}"
|
||||||
[ -z "$1" ] && exit_source() { printf "Exit from source ...\n"; return "$1"; }
|
[ -z "$1" ] && exit_source() { printf "Exit from source ...\n"; return "$1"; }
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -675,25 +676,25 @@ sendJsonResult(){
|
||||||
# timeout, failed connection or blocked
|
# timeout, failed connection or blocked
|
||||||
if [ "${BOTSENT[ERROR]}" == "999" ];then
|
if [ "${BOTSENT[ERROR]}" == "999" ];then
|
||||||
# check if default curl and args are OK
|
# check if default curl and args are OK
|
||||||
if ! curl -sL -k -m 2 "${URL}" >/dev/null 2>&1 ; then
|
if ! curl -sL -k -m 2 "${URL}" >/dev/null 2>&1 ; then
|
||||||
printf "%(%c)T: BASHBOT IP Address seems blocked!\n" -1
|
printf "%(%c)T: BASHBOT IP Address seems blocked!\n" -1
|
||||||
# user provided function to recover or notify block
|
# user provided function to recover or notify block
|
||||||
if _exec_if_function bashbotBlockRecover; then
|
if _exec_if_function bashbotBlockRecover; then
|
||||||
BASHBOT_RETRY="2"
|
BASHBOT_RETRY="2"
|
||||||
printf "bashbotBlockRecover returned true, retry %s ...\n" "$2"
|
printf "bashbotBlockRecover returned true, retry %s ...\n" "$2"
|
||||||
sendJsonRetry "$2" "${BASHBOT_RETRY}" "${@:3}"
|
|
||||||
unset BASHBOT_RETRY
|
|
||||||
fi
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
# are not blocked, default curl and args are working
|
|
||||||
if [ -n "${BASHBOT_CURL_ARGS}" ] || [ "${BASHBOT_CURL}" != "curl" ]; then
|
|
||||||
printf "Problem with \"%s %s\"? retry %s with default config ...\n"\
|
|
||||||
"${BASHBOT_CURL}" "${BASHBOT_CURL_ARGS}" "$2"
|
|
||||||
BASHBOT_RETRY="2"; BASHBOT_CURL="curl"; BASHBOT_CURL_ARGS=""
|
|
||||||
sendJsonRetry "$2" "${BASHBOT_RETRY}" "${@:3}"
|
sendJsonRetry "$2" "${BASHBOT_RETRY}" "${@:3}"
|
||||||
unset BASHBOT_RETRY
|
unset BASHBOT_RETRY
|
||||||
fi
|
fi
|
||||||
|
# seems not blocked, try if blockrecover and default curl args working
|
||||||
|
elif [ -n "${BASHBOT_CURL_ARGS}" ] || [ "${BASHBOT_CURL}" != "curl" ]; then
|
||||||
|
printf "Problem with \"%s %s\"? retry %s with default config ...\n"\
|
||||||
|
"${BASHBOT_CURL}" "${BASHBOT_CURL_ARGS}" "$2"
|
||||||
|
BASHBOT_RETRY="2"; BASHBOT_CURL="curl"; BASHBOT_CURL_ARGS=""
|
||||||
|
_exec_if_function bashbotBlockRecover
|
||||||
|
sendJsonRetry "$2" "${BASHBOT_RETRY}" "${@:3}"
|
||||||
|
unset BASHBOT_RETRY
|
||||||
|
fi
|
||||||
|
[ -n "${BOTSENT[ERROR]}" ] && processError "$3" "${BOTSENT[ERROR]}" "$4" "" "${BOTSENT[DESCRIPTION]}" "$5" "$6"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
} >>"${ERRORLOG}"
|
} >>"${ERRORLOG}"
|
||||||
|
|
|
@ -21,7 +21,7 @@ USAGE='any_command.sh [-h|--help] [--force|--reference] bot_command args ...'
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 30.01.2021 10:24
|
# CREATED: 30.01.2021 10:24
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 18.12.2020 12:27
|
# CREATED: 18.12.2020 12:27
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
############
|
############
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 27.01.2021 13:42
|
# CREATED: 27.01.2021 13:42
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
# shellcheck disable=SC2059
|
# shellcheck disable=SC2059
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ USAGE='bashbot_stats.sh [-h|--help] [debug]'
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 23.12.2020 20:34
|
# CREATED: 23.12.2020 20:34
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
# set bashbot environment
|
# set bashbot environment
|
||||||
|
|
|
@ -20,7 +20,7 @@ USAGE='delete_message.sh [-h|--help] "CHAT[ID]" "MESSAGE[ID]" [debug]'
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 03.01.2021 15:37
|
# CREATED: 03.01.2021 15:37
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -26,7 +26,7 @@ USAGE='send_message.sh [-h|--help] "CHAT[ID]" "MESSAGE[ID]" "text|url" ...'
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 21.01.2021 08:10
|
# CREATED: 21.01.2021 08:10
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -23,7 +23,7 @@ USAGE='send_edit_message.sh [-h|--help] [format|caption] "CHAT[ID]" "MESSAGE[ID]
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 23.12.2020 16:52
|
# CREATED: 23.12.2020 16:52
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -20,7 +20,7 @@ USAGE='kickban_user.sh [-h|--help] [-u|--unban] "CHAT[ID]" "USER[ID]" [debug]'
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 25.01.2021 20:34
|
# CREATED: 25.01.2021 20:34
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#
|
#
|
||||||
# FILE: bin/process_batch.sh
|
# FILE: bin/process_batch.sh
|
||||||
#
|
#
|
||||||
USAGE='process_update.sh [-h|--help] [-s|--startbot] [-w|--watch] [-n|--lines n] [file] [debug]'
|
USAGE='process_batch.sh [-h|--help] [-s|--startbot] [-w|--watch] [-n|--lines n] [file] [debug]'
|
||||||
#
|
#
|
||||||
# DESCRIPTION: processes last 10 telegram updates in file, one update per line
|
# DESCRIPTION: processes last 10 telegram updates in file, one update per line
|
||||||
#
|
#
|
||||||
|
@ -21,13 +21,14 @@ USAGE='process_update.sh [-h|--help] [-s|--startbot] [-w|--watch] [-n|--lines n]
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 27.02.2021 13:14
|
# CREATED: 27.02.2021 13:14
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
# parse args
|
# parse args
|
||||||
COMMAND="process_multi_updates"
|
COMMAND="process_multi_updates"
|
||||||
lines="-n 10"
|
lines="-n 10"
|
||||||
|
mode="batch"
|
||||||
|
|
||||||
opt=0
|
opt=0
|
||||||
while [[ "${opt}" -lt 5 && "$1" == "-"* ]]
|
while [[ "${opt}" -lt 5 && "$1" == "-"* ]]
|
||||||
|
@ -40,6 +41,7 @@ do
|
||||||
;;
|
;;
|
||||||
"-w"|"--watch")
|
"-w"|"--watch")
|
||||||
follow="-f"
|
follow="-f"
|
||||||
|
mode="webhook"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
"-n"|"--lines")
|
"-n"|"--lines")
|
||||||
|
@ -61,8 +63,8 @@ file="${WEBHOOK}"
|
||||||
if [ -n "${startbot}" ]; then
|
if [ -n "${startbot}" ]; then
|
||||||
# warn when starting bot without pipe
|
# warn when starting bot without pipe
|
||||||
[ -p "${file}" ] || printf "%(%c)T: %b\n" -1 "${ORANGE}Warning${NC}: File is not a pipe:${GREY} ${file##*/}${NC}"
|
[ -p "${file}" ] || printf "%(%c)T: %b\n" -1 "${ORANGE}Warning${NC}: File is not a pipe:${GREY} ${file##*/}${NC}"
|
||||||
start_bot "$2" "webhook"
|
start_bot "$2" "${mode}"
|
||||||
printf "%(%c)T: %b\n" -1 "${GREEN}Bot start actions done, start reading updates ....${NC}"
|
printf "%(%c)T: %b\n" -1 "${GREEN}Bot startup actions done, start ${mode} updates ...${NC}"
|
||||||
fi
|
fi
|
||||||
# check file exist
|
# check file exist
|
||||||
if [[ ! -r "${file}" || -d "${file}" ]]; then
|
if [[ ! -r "${file}" || -d "${file}" ]]; then
|
||||||
|
@ -74,14 +76,14 @@ fi
|
||||||
# ready, do stuff here -----
|
# ready, do stuff here -----
|
||||||
|
|
||||||
# kill all sub processes on exit
|
# kill all sub processes on exit
|
||||||
trap 'kill $(jobs -p) 2>/dev/null; send_normal_message "'"${BOTADMIN}"'" "Bot '"${BOTNAME}"' webhook stopped ..."; printf "%(%c)T: %s\n" -1 "Bot in batch mode stopped!"' EXIT HUP QUIT
|
trap 'printf "%(%c)T: %s\n" -1 "Bot in '"${mode}"' mode stopped"; kill $(jobs -p) 2>/dev/null; wait $(jobs -p) 2>/dev/null; send_normal_message "'"${BOTADMIN}"'" "Bot '"${BOTNAME} ${mode}"' stopped ..."' EXIT HUP QUIT
|
||||||
|
|
||||||
# wait after (first) update to avoid processing to many in parallel
|
# wait after (first) update to avoid processing to many in parallel
|
||||||
UPDWAIT="0.5"
|
UPDWAIT="0.5"
|
||||||
# use tail to read appended updates
|
# use tail to read appended updates
|
||||||
# shellcheck disable=SC2086,SC2248
|
# shellcheck disable=SC2086,SC2248
|
||||||
tail ${follow} ${lines} "${file}" |\
|
tail ${follow} ${lines} "${file}" 2>/dev/null |\
|
||||||
while IFS="" read -r input
|
while IFS="" read -r input 2>/dev/null
|
||||||
do
|
do
|
||||||
# read json from stdin and convert update format
|
# read json from stdin and convert update format
|
||||||
# replace any ID named BOTADMIN with ID of bot admin
|
# replace any ID named BOTADMIN with ID of bot admin
|
||||||
|
|
|
@ -15,7 +15,7 @@ USAGE='process_update.sh [-h|--help] [debug] [<file]'
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 30.01.2021 19:14
|
# CREATED: 30.01.2021 19:14
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -25,7 +25,7 @@ USAGE='promote_user.sh [-h|--help] "CHAT[ID]" "USER[ID]" "right[:true|false]" ..
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 25.01.2021 22:34
|
# CREATED: 25.01.2021 22:34
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -28,7 +28,7 @@ USAGE='broadcast_message.sh [-h|--help] [--doit] [--groups|--both|--db=file] [fo
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 16.12.2020 16:14
|
# CREATED: 16.12.2020 16:14
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -26,7 +26,7 @@ USAGE='send_message.sh [-h|--help] "CHAT[ID]" "message" "text|url" ...'
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 18.01.2021 11:34
|
# CREATED: 18.01.2021 11:34
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -9,8 +9,8 @@ USAGE='send_dice.sh [-h|--help] "CHAT[ID]" "emoji" [debug]'
|
||||||
# DESCRIPTION: send an animated emoji (dice) to given chat
|
# DESCRIPTION: send an animated emoji (dice) to given chat
|
||||||
#
|
#
|
||||||
# OPTIONS: CHAT[ID] - ID number of CHAT or BOTADMIN to send to yourself
|
# OPTIONS: CHAT[ID] - ID number of CHAT or BOTADMIN to send to yourself
|
||||||
# emoji - must be one of: “🎲”, “🎯”, “🏀”, “⚽”, or “🎰”
|
# emoji - must be one of: “🎲”, “🎯”, “🏀”, “⚽” “🎰” "🎳"
|
||||||
# ":game_die:" ":dart:" ":basketball:" ":soccer:" :slot_machine:"
|
# :game_die: :dart: :basketball: :soccer: :slot_machine: :bowling:
|
||||||
#
|
#
|
||||||
# -h - display short help
|
# -h - display short help
|
||||||
# --help - this help
|
# --help - this help
|
||||||
|
@ -21,7 +21,7 @@ USAGE='send_dice.sh [-h|--help] "CHAT[ID]" "emoji" [debug]'
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 07.02.2021 18:45
|
# CREATED: 07.02.2021 18:45
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -25,7 +25,7 @@ USAGE='send_file.sh [-h|--help] "CHAT[ID]" "file|URL" "caption ...." [type] [deb
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 25.12.2020 20:24
|
# CREATED: 25.12.2020 20:24
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -22,7 +22,7 @@ USAGE='send_message.sh [-h|--help] [format] "CHAT[ID]" "message ...." [debug]'
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
# CREATED: 16.12.2020 11:34
|
# CREATED: 16.12.2020 11:34
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#
|
#
|
||||||
|
|
||||||
# bashbot locale defaults to c.UTF-8, adjust locale in mycommands.sh if needed
|
# bashbot locale defaults to c.UTF-8, adjust locale in mycommands.sh if needed
|
||||||
|
@ -48,8 +48,10 @@ Additional commands from mycommands.dist ...
|
||||||
*• /game*: _throw a die_.
|
*• /game*: _throw a die_.
|
||||||
*• /question*: _Start interactive chat_.
|
*• /question*: _Start interactive chat_.
|
||||||
*• /cancel*: _Cancel any currently running interactive chat_.
|
*• /cancel*: _Cancel any currently running interactive chat_.
|
||||||
|
*• /run_notify*: _Start background job_.
|
||||||
|
*• /stop_notify*: _Stop notify background job_.
|
||||||
Written by Drew (@topkecleon) and KayM (@gnadelwartz).
|
Written by Drew (@topkecleon) and KayM (@gnadelwartz).
|
||||||
Get the code in my [GitHub](http://github.com/topkecleon/telegram-bot-bash)
|
Get the code on [GitHub](http://github.com/topkecleon/telegram-bot-bash)
|
||||||
'
|
'
|
||||||
|
|
||||||
# load modules on startup and always on on debug
|
# load modules on startup and always on on debug
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#
|
#
|
||||||
# Description: run all tests, exit after failed test
|
# Description: run all tests, exit after failed test
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#############################################################
|
#############################################################
|
||||||
|
|
||||||
#shellcheck disable=SC1090
|
#shellcheck disable=SC1090
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#
|
#
|
||||||
# Description: common stuff for all dev scripts
|
# Description: common stuff for all dev scripts
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#############################################################
|
#############################################################
|
||||||
|
|
||||||
# magic to ensure that we're always inside the root of our application,
|
# magic to ensure that we're always inside the root of our application,
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#
|
#
|
||||||
# works together with git pre-push.sh and ADD all changed files since last push
|
# works together with git pre-push.sh and ADD all changed files since last push
|
||||||
|
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
#shellcheck disable=SC1090
|
#shellcheck disable=SC1090
|
||||||
source "${0%/*}/dev.inc.sh"
|
source "${0%/*}/dev.inc.sh"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
############
|
############
|
||||||
# NOTE: you MUST run install-hooks.sh again when updating this file!
|
# NOTE: you MUST run install-hooks.sh again when updating this file!
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
############
|
############
|
||||||
# NOTE: you MUST run install-hooks.sh again when updating this file!
|
# NOTE: you MUST run install-hooks.sh again when updating this file!
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
############
|
############
|
||||||
# NOTE: you MUST run install-hooks.sh again when updating this file!
|
# NOTE: you MUST run install-hooks.sh again when updating this file!
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#
|
#
|
||||||
# Usage: source inject-json.sh
|
# Usage: source inject-json.sh
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
##############################################################
|
##############################################################
|
||||||
|
|
||||||
# download JSON.sh
|
# download JSON.sh
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# this has to run once atfer git clone
|
# this has to run once atfer git clone
|
||||||
# and every time we create new hooks
|
# and every time we create new hooks
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
#shellcheck disable=SC1090
|
#shellcheck disable=SC1090
|
||||||
source "${0%/*}/dev.inc.sh"
|
source "${0%/*}/dev.inc.sh"
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#
|
#
|
||||||
# Options: --notest - skip tests
|
# Options: --notest - skip tests
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
##############################################################
|
##############################################################
|
||||||
|
|
||||||
#shellcheck disable=SC1090
|
#shellcheck disable=SC1090
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#
|
#
|
||||||
# Usage: source make-hmtl
|
# Usage: source make-hmtl
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
##############################################################
|
##############################################################
|
||||||
|
|
||||||
# check for correct dir
|
# check for correct dir
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
# If you your bot is finished you can use make-standalone.sh to create the
|
# 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!
|
# the old all-in-one bashbot: bashbot.sh and commands.sh only!
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
###################################################################
|
###################################################################
|
||||||
|
|
||||||
# include git config and change to base dir
|
# include git config and change to base dir
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# joke hack to obfuscate bashbot.min.sh
|
# joke hack to obfuscate bashbot.min.sh
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
# shellcheck disable=SC2028,SC2016,SC1117
|
# shellcheck disable=SC2028,SC2016,SC1117
|
||||||
|
|
||||||
infile="bashbot.sh"
|
infile="bashbot.sh"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# list of additional files to check from shellcheck
|
# list of additional files to check from shellcheck
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
bashbot.rc
|
bashbot.rc
|
||||||
mycommands.conf
|
mycommands.conf
|
||||||
mycommands.sh.clean
|
mycommands.sh.clean
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
#
|
#
|
||||||
# Easy Versioning in git:
|
# Easy Versioning in git:
|
||||||
|
|
|
@ -132,5 +132,5 @@ You must update to [Version 1.20](https://github.com/topkecleon/telegram-bot-bas
|
||||||
|
|
||||||
#### [Next Create Bot](1_firstbot.md)
|
#### [Next Create Bot](1_firstbot.md)
|
||||||
|
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
|
|
|
@ -65,5 +65,5 @@ group. This step is up to you actually.
|
||||||
#### [Prev Installation](0_install.md)
|
#### [Prev Installation](0_install.md)
|
||||||
#### [Next Getting started](2_usage.md)
|
#### [Next Getting started](2_usage.md)
|
||||||
|
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
|
|
|
@ -392,5 +392,5 @@ send_action "${CHAT[ID]}" "action"
|
||||||
#### [Prev Create Bot](1_firstbot.md)
|
#### [Prev Create Bot](1_firstbot.md)
|
||||||
#### [Next Advanced Usage](3_advanced.md)
|
#### [Next Advanced Usage](3_advanced.md)
|
||||||
|
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
|
|
|
@ -302,5 +302,5 @@ Note: If you disable automatic retry, se above, you disable also connection prob
|
||||||
#### [Prev Getting started](2_usage.md)
|
#### [Prev Getting started](2_usage.md)
|
||||||
#### [Next Expert Use](4_expert.md)
|
#### [Next Expert Use](4_expert.md)
|
||||||
|
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
|
|
|
@ -434,5 +434,5 @@ for every poll until the maximum of BASHBOT_SLEEP ms.
|
||||||
#### [Prev Advanced Use](3_advanced.md)
|
#### [Prev Advanced Use](3_advanced.md)
|
||||||
#### [Next Best Practice](5_practice.md)
|
#### [Next Best Practice](5_practice.md)
|
||||||
|
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
|
|
|
@ -160,5 +160,5 @@ The second warning is about an unused variable, this is true because in our exam
|
||||||
#### [Prev Best Practice](5_practice.md)
|
#### [Prev Best Practice](5_practice.md)
|
||||||
#### [Next Functions Reference](6_reference.md)
|
#### [Next Functions Reference](6_reference.md)
|
||||||
|
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
|
|
|
@ -1673,5 +1673,5 @@ The name of your bot is available as bash variable "$ME", there is no need to ca
|
||||||
#### [Prev Best Practice](5_practice.md)
|
#### [Prev Best Practice](5_practice.md)
|
||||||
#### [Next Notes for Developers](7_develop.md)
|
#### [Next Notes for Developers](7_develop.md)
|
||||||
|
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
|
|
|
@ -387,5 +387,5 @@ fi
|
||||||
|
|
||||||
#### [Prev Function Reference](6_reference.md)
|
#### [Prev Function Reference](6_reference.md)
|
||||||
|
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,6 @@ plus use of keyboards in private chats. It's an extended version of mycommands.s
|
||||||
|
|
||||||
**Webhook** contains instructions on how use webhook API to get updates from telegram instead polling Telegram server.
|
**Webhook** contains instructions on how use webhook API to get updates from telegram instead polling Telegram server.
|
||||||
|
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#
|
#
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
######
|
######
|
||||||
# parameters
|
# parameters
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# file: run_filename
|
# file: run_filename
|
||||||
# background job to display content of all new files in WATCHDIR
|
# background job to display content of all new files in WATCHDIR
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
######
|
######
|
||||||
# parameters
|
# parameters
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# file: run_filename
|
# file: run_filename
|
||||||
# background job to display all new files in WATCHDIR
|
# background job to display all new files in WATCHDIR
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
######
|
######
|
||||||
# parameters
|
# parameters
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#
|
#
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
######
|
######
|
||||||
# parameters
|
# parameters
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
# shellcheck disable=SC1117
|
# shellcheck disable=SC1117
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
# adjust your language setting here
|
# adjust your language setting here
|
||||||
# https://github.com/topkecleon/telegram-bot-bash#setting-up-your-environment
|
# https://github.com/topkecleon/telegram-bot-bash#setting-up-your-environment
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# file. multibot.sh
|
# file. multibot.sh
|
||||||
# description: run multiple telegram bots from one installation
|
# description: run multiple telegram bots from one installation
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
if [ "$2" = "" ] || [ "$2" = "-h" ]; then
|
if [ "$2" = "" ] || [ "$2" = "-h" ]; then
|
||||||
echo "Usage: $0 botname command"
|
echo "Usage: $0 botname command"
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
|
|
||||||
SHELL=/bin/sh
|
SHELL=/bin/sh
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
######
|
######
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# AUTHOR: KayM (), kay@rrr.de
|
# AUTHOR: KayM (), kay@rrr.de
|
||||||
# DATE: 19.12.2020 19:03
|
# DATE: 19.12.2020 19:03
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
######
|
######
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
######
|
######
|
||||||
|
@ -29,6 +29,10 @@ export 'LANGUAGE=C.UTF-8'
|
||||||
unset IFS
|
unset IFS
|
||||||
# set -f # if you are paranoid use set -f to disable globbing
|
# set -f # if you are paranoid use set -f to disable globbing
|
||||||
|
|
||||||
|
# kill interactive script if not finished in time, e.g. user away or error
|
||||||
|
MAXWAIT="1m"
|
||||||
|
{ sleep "${MAXWAIT}"; printf "Stopping Questionnaire after %s, you need to much time to finish ... BYE\n" "${MAXWAIT}"; kill $$; wait 2>/dev/null ;} &
|
||||||
|
|
||||||
# simple yes/no question, defaults to no
|
# simple yes/no question, defaults to no
|
||||||
printf "Hi, hello there\nWould you like some tea (y/n)?\n"
|
printf "Hi, hello there\nWould you like some tea (y/n)?\n"
|
||||||
read -r answer <"${INPUT}"
|
read -r answer <"${INPUT}"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# file: botacl
|
# file: botacl
|
||||||
# a user not listed here, will return false from 'user_is_allowed'
|
# a user not listed here, will return false from 'user_is_allowed'
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
# Format:
|
# Format:
|
||||||
# user:resource:chat
|
# user:resource:chat
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# to show how you can customize bashbot by only editing mycommands.sh
|
# to show how you can customize bashbot by only editing mycommands.sh
|
||||||
# NOTE: this is not tested, simply copied from original source and reworked!
|
# NOTE: this is not tested, simply copied from original source and reworked!
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#
|
#
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
|
|
|
@ -46,15 +46,13 @@ Even it seems overhead to source Bashbot for every update, it's more responsive
|
||||||
|
|
||||||
Nevertheles there are some limitations compared to polling mode:
|
Nevertheles there are some limitations compared to polling mode:
|
||||||
- no startup actions
|
- no startup actions
|
||||||
- no background* and interactive jobs
|
|
||||||
- `addons` and `TIMER_EVENTS` are not working
|
- `addons` and `TIMER_EVENTS` are not working
|
||||||
|
|
||||||
\* Workaround for background jobs is to execute `./bashbot.sh resumeback` if a new background job was started.
|
Interactive and background jobs are working as of Bashbot Version 1.51.
|
||||||
|
|
||||||
#### Full webhook processing
|
#### Full webhook processing
|
||||||
|
|
||||||
Full webhook processing use an external script to imitate Bashbot polling mode with webhook.
|
Full webhook processing use an external script to imitate Bashbot polling mode with webhook.
|
||||||
*Warning:* This method is not much testet and may not work in all cases.
|
|
||||||
|
|
||||||
1. Default webook method must work first!
|
1. Default webook method must work first!
|
||||||
2. run `bashbot.sh init` to setup bashbot to run with your user id
|
2. run `bashbot.sh init` to setup bashbot to run with your user id
|
||||||
|
@ -98,5 +96,5 @@ webhook updates only over secure TLS connections with a valid SSL certificate ch
|
||||||
`socat` looks like a tool to listen for Telegram updates from bash scripts, let's see ...
|
`socat` looks like a tool to listen for Telegram updates from bash scripts, let's see ...
|
||||||
|
|
||||||
|
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
* @license http://www.wtfpl.net/txt/copying/ WTFPLv2
|
* @license http://www.wtfpl.net/txt/copying/ WTFPLv2
|
||||||
* @since 30.01.2021 20:24
|
* @since 30.01.2021 20:24
|
||||||
*
|
*
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
***********************************************************/
|
***********************************************************/
|
||||||
|
|
||||||
// bashbot home dir
|
// bashbot home dir
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#
|
#
|
||||||
# will be automatically sourced from bashbot
|
# will be automatically sourced from bashbot
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
# will be automatically sourced from bashbot
|
# will be automatically sourced from bashbot
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
# shellcheck disable=SC1117,SC2059
|
# shellcheck disable=SC1117,SC2059
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
# will be automatically sourced from bashbot
|
# will be automatically sourced from bashbot
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
# will be automatically sourced from bashbot
|
# will be automatically sourced from bashbot
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#
|
#
|
||||||
# source from commands.sh to use jsonDB functions
|
# source from commands.sh to use jsonDB functions
|
||||||
#
|
#
|
||||||
|
@ -355,10 +355,10 @@ function jssh_updateArray_async() {
|
||||||
# read JSON.sh style data and asssign to an ARRAY
|
# read JSON.sh style data and asssign to an ARRAY
|
||||||
# $1 ARRAY name, must be declared with "declare -A ARRAY" before calling
|
# $1 ARRAY name, must be declared with "declare -A ARRAY" before calling
|
||||||
Json2Array() {
|
Json2Array() {
|
||||||
# match ["....."]\t and replace \t with = and print delete ` quote true false escape not escaped $
|
|
||||||
# shellcheck disable=SC1091,SC1090
|
# shellcheck disable=SC1091,SC1090
|
||||||
|
# step 1: output only basic pattern
|
||||||
[ -z "$1" ] || source <( printf "$1"'=( %s )'\
|
[ -z "$1" ] || source <( printf "$1"'=( %s )'\
|
||||||
"$(sed -E -n -e '/\["[-0-9a-zA-Z_,."]+"\]\+*\t/ s/\t/=/p' -e 's/[`´]//g' -e 's/=(true|false)/="\1"/' -e 's/([^\]|^)\$/\1\\$/g')" )
|
"$(sed -E -n -e 's/[`´]//g' -e 's/\t(true|false)/\t"\1"/' -e 's/([^\]|^)\$/\1\\$/g' -e '/\["[-0-9a-zA-Z_,."]+"\]\+*\t/ s/\t/=/p')" )
|
||||||
}
|
}
|
||||||
# get Config Key from jssh file without jsshDB
|
# get Config Key from jssh file without jsshDB
|
||||||
# output ARRAY as JSON.sh style data
|
# output ARRAY as JSON.sh style data
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
# File: processUpdates.sh
|
# File: processUpdates.sh
|
||||||
# Note: DO NOT EDIT! this file will be overwritten on update
|
# Note: DO NOT EDIT! this file will be overwritten on update
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
##################################################################
|
##################################################################
|
||||||
|
|
||||||
##############
|
##############
|
||||||
|
@ -62,14 +62,19 @@ process_multi_updates() {
|
||||||
# processing of a single array item of update
|
# processing of a single array item of update
|
||||||
# $1 array index
|
# $1 array index
|
||||||
process_update() {
|
process_update() {
|
||||||
local num="$1" debug="$2"
|
local chatuser="Chat" num="$1" debug="$2"
|
||||||
pre_process_message "${num}"
|
pre_process_message "${num}"
|
||||||
# log message on debug
|
# log message on debug
|
||||||
[[ -n "${debug}" ]] && log_message "New Message ==========\n$(grep -F '["result",'"${num}" <<<"${UPDATE}")"
|
[[ -n "${debug}" ]] && log_message "New Message ==========\n$(grep -F '["result",'"${num}" <<<"${UPDATE}")"
|
||||||
|
|
||||||
# check for users / groups to ignore
|
# check for users / groups to ignore, inform them ...
|
||||||
jssh_updateArray_async "BASHBOTBLOCKED" "${BLOCKEDFILE}"
|
jssh_updateArray_async "BASHBOTBLOCKED" "${BLOCKEDFILE}"
|
||||||
[ -n "${USER[ID]}" ] && [[ -n "${BASHBOTBLOCKED[${USER[ID]}]}" || -n "${BASHBOTBLOCKED[${CHAT[ID]}]}" ]] && return
|
if [ -n "${USER[ID]}" ] && [[ -n "${BASHBOTBLOCKED[${USER[ID]}]}" || -n "${BASHBOTBLOCKED[${CHAT[ID]}]}" ]];then
|
||||||
|
[ -n "${BASHBOTBLOCKED[${USER[ID]}]}" ] && chatuser="User"
|
||||||
|
[ "${NOTIFY_BLOCKED_USERS}" == "yes" ] &&\
|
||||||
|
send_normal_message "${CHAT[ID]}" "${chatuser} blocked because: ${BASHBOTBLOCKED[${USER[ID]}]} ${BASHBOTBLOCKED[${CHAT[ID]}]}" &
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
# process per message type
|
# process per message type
|
||||||
if [ -n "${iQUERY[ID]}" ]; then
|
if [ -n "${iQUERY[ID]}" ]; then
|
||||||
|
@ -91,6 +96,10 @@ process_update() {
|
||||||
printf "%(%c)T: update received FROM=%s CHAT=%s CMD=%s\n" -1 "${USER[USERNAME]:0:20} (${USER[ID]})"\
|
printf "%(%c)T: update received FROM=%s CHAT=%s CMD=%s\n" -1 "${USER[USERNAME]:0:20} (${USER[ID]})"\
|
||||||
"${CHAT[USERNAME]:0:20}${CHAT[TITLE]:0:30} (${CHAT[ID]})"\
|
"${CHAT[USERNAME]:0:20}${CHAT[TITLE]:0:30} (${CHAT[ID]})"\
|
||||||
"${MESSAGE:0:30}${CAPTION:0:30}${URLS[*]}" >>"${UPDATELOG}"
|
"${MESSAGE:0:30}${CAPTION:0:30}${URLS[*]}" >>"${UPDATELOG}"
|
||||||
|
if [[ -z "${USER[ID]}" || -z "${CHAT[ID]}" ]]; then
|
||||||
|
printf "%(%c)T: IGNORE unknown update type: %s\n" -1 "$(grep '\["result",'"${num}"'.*,"id"\]' <<<"${UPDATE}")" >>"${UPDATELOG}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
#####
|
#####
|
||||||
# process inline and message events
|
# process inline and message events
|
||||||
|
@ -293,7 +302,7 @@ declare -A BASHBOTBLOCKED
|
||||||
start_bot() {
|
start_bot() {
|
||||||
local DEBUGMSG
|
local DEBUGMSG
|
||||||
# startup message
|
# startup message
|
||||||
DEBUGMSG="Start BASHBOT updates in Mode \"${1:-normal}\" =========="
|
DEBUGMSG="BASHBOT startup actions, mode set to \"${1:-normal}\" =========="
|
||||||
log_update "${DEBUGMSG}"
|
log_update "${DEBUGMSG}"
|
||||||
# redirect to Debug.log
|
# redirect to Debug.log
|
||||||
if [[ "$1" == *"debug" ]]; then
|
if [[ "$1" == *"debug" ]]; then
|
||||||
|
@ -336,6 +345,7 @@ get_updates(){
|
||||||
local nextsleep="100"
|
local nextsleep="100"
|
||||||
local stepsleep="${BASHBOT_SLEEP_STEP:-100}"
|
local stepsleep="${BASHBOT_SLEEP_STEP:-100}"
|
||||||
local maxsleep="${BASHBOT_SLEEP:-5000}"
|
local maxsleep="${BASHBOT_SLEEP:-5000}"
|
||||||
|
printf "%(%c)T: %b\n" -1 "Bot startup actions done, start polling updates ..."
|
||||||
while true; do
|
while true; do
|
||||||
# adaptive sleep in ms rounded to next 0.1 s
|
# adaptive sleep in ms rounded to next 0.1 s
|
||||||
sleep "$(_round_float "${nextsleep}e-3" "1")"
|
sleep "$(_round_float "${nextsleep}e-3" "1")"
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
# shellcheck disable=SC1117
|
# shellcheck disable=SC1117
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
# will be automatically sourced from bashbot
|
# will be automatically sourced from bashbot
|
||||||
|
|
||||||
|
@ -333,7 +333,7 @@ send_action() {
|
||||||
[ -n "${BOTSENT[ERROR]}" ] && processError "${FUNCNAME[0]}" "${BOTSENT[ERROR]}" "$1" "" "${BOTSENT[DESCRIPTION]}" "$2"
|
[ -n "${BOTSENT[ERROR]}" ] && processError "${FUNCNAME[0]}" "${BOTSENT[ERROR]}" "$1" "" "${BOTSENT[DESCRIPTION]}" "$2"
|
||||||
}
|
}
|
||||||
|
|
||||||
# $1 chat $2 emoji “🎲”, “🎯”, “🏀”, “⚽”, “🎰"
|
# $1 chat $2 emoji “🎲”, “🎯”, “🏀”, “⚽”, “🎰" "🎳"
|
||||||
# code: "\ud83c\udfb2" "\ud83c\udfaf" "\ud83c\udfc0" "\u26bd" "\ud83c\udfb0"
|
# code: "\ud83c\udfb2" "\ud83c\udfaf" "\ud83c\udfc0" "\u26bd" "\ud83c\udfb0"
|
||||||
# text: ":game_die:" ":dart:" ":basketball:" ":soccer:" :slot_machine:"
|
# text: ":game_die:" ":dart:" ":basketball:" ":soccer:" :slot_machine:"
|
||||||
# $3 reply_to_id
|
# $3 reply_to_id
|
||||||
|
@ -346,6 +346,7 @@ send_dice() {
|
||||||
*🏀*|*basket*|*'dfc0'*|*'DFC0'*) emoji='\ud83c\udfc0' ;;
|
*🏀*|*basket*|*'dfc0'*|*'DFC0'*) emoji='\ud83c\udfc0' ;;
|
||||||
*⚽*|*soccer*|*'26bd'*|*'26BD'*) emoji='\u26bd' ;;
|
*⚽*|*soccer*|*'26bd'*|*'26BD'*) emoji='\u26bd' ;;
|
||||||
*🎰*|*slot* |*'dfb0'*|*'DFB0'*) emoji='\ud83c\udfb0' ;;
|
*🎰*|*slot* |*'dfb0'*|*'DFB0'*) emoji='\ud83c\udfb0' ;;
|
||||||
|
*🎳*|*bowl* |*'dfb3'*|*'DFB3'*) emoji='\ud83c\udfb3' ;;
|
||||||
esac
|
esac
|
||||||
sendJson "$1" '"emoji": "'"${emoji}"'"'"${reply}" "${URL}/sendDice"
|
sendJson "$1" '"emoji": "'"${emoji}"'"'"${reply}" "${URL}/sendDice"
|
||||||
if [ "${BOTSENT[OK]}" = "true" ]; then
|
if [ "${BOTSENT[OK]}" = "true" ]; then
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
# Author: KayM (gnadelwartz), kay@rrr.de
|
# Author: KayM (gnadelwartz), kay@rrr.de
|
||||||
# Created: 09.01.2021 07:27
|
# Created: 09.01.2021 07:27
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#######################################################
|
#######################################################
|
||||||
|
|
||||||
##########
|
##########
|
||||||
|
@ -96,6 +96,9 @@ WELCOME_MSG="Welcome"
|
||||||
# export REPORT_NEWMEMBER="yes"
|
# export REPORT_NEWMEMBER="yes"
|
||||||
# export REPORT_LEFTMEMBER="yes"
|
# export REPORT_LEFTMEMBER="yes"
|
||||||
|
|
||||||
|
# uncomment to send user blocked by bot a warning if they send commands
|
||||||
|
# export NOTIFY_BLOCKED_USERS="yes"
|
||||||
|
|
||||||
# messages for admin only commands
|
# messages for admin only commands
|
||||||
NOTADMIN="Sorry, this command is allowed for admin or owner only"
|
NOTADMIN="Sorry, this command is allowed for admin or owner only"
|
||||||
NOTBOTADMIN="Sorry, this command is allowed for bot owner only"
|
NOTBOTADMIN="Sorry, this command is allowed for bot owner only"
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# License: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# License: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# Author: KayM (gnadelwartz), kay@rrr.de
|
# Author: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#######################################################
|
#######################################################
|
||||||
# shellcheck disable=SC1117
|
# shellcheck disable=SC1117
|
||||||
|
|
||||||
|
@ -324,8 +324,21 @@ else
|
||||||
# func="$1" err="$2" chat="$3" user="$4" emsg="$5" remaining args
|
# func="$1" err="$2" chat="$3" user="$4" emsg="$5" remaining args
|
||||||
bashbotError_403() {
|
bashbotError_403() {
|
||||||
log_debug "custom errorProcessing error 403: FUNC=$1 CHAT=$3 USER=${4:-no-user} MSGID=$6 ERTXT=$5"
|
log_debug "custom errorProcessing error 403: FUNC=$1 CHAT=$3 USER=${4:-no-user} MSGID=$6 ERTXT=$5"
|
||||||
|
local user="$4"; [[ -z "$4" && -n "$3" ]] && user="$3"
|
||||||
|
if [ -n "${user}" ]; then
|
||||||
|
# block chat/user
|
||||||
|
case "$6" in
|
||||||
|
*"blocked"*)
|
||||||
|
jssh_insertKeyDB "${user}" "User blocked bot on (LANG=C date)" "${BLOCKEDFILE}";;
|
||||||
|
*"kicked"*)
|
||||||
|
jssh_insertKeyDB "${user}" "Bot kicked from chat on (LANG=C date)" "${BLOCKEDFILE}";;
|
||||||
|
*)
|
||||||
|
jssh_insertKeyDB "${user}" "Reason: $6 on (LANG=C date)" "${BLOCKEDFILE}";;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# place your processing functions here --------------
|
# place your processing functions here --------------
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# License: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# License: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# Author: KayM (gnadelwartz), kay@rrr.de
|
# Author: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#######################################################
|
#######################################################
|
||||||
# shellcheck disable=SC1117
|
# shellcheck disable=SC1117
|
||||||
|
|
||||||
|
@ -126,4 +126,17 @@ else
|
||||||
done <<<"${result}"
|
done <<<"${result}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
###########################
|
||||||
|
# example error processing
|
||||||
|
# called when delete Message failed
|
||||||
|
# func="$1" err="$2" chat="$3" user="$4" emsg="$5" remaining args
|
||||||
|
bashbotError_delete_message() {
|
||||||
|
log_debug "custom errorProcessing delete_message: ERR=$2 CHAT=$3 MSGID=$6 ERTXT=$5"
|
||||||
|
}
|
||||||
|
|
||||||
|
# called when error 403 is returned (and no func processing)
|
||||||
|
# func="$1" err="$2" chat="$3" user="$4" emsg="$5" remaining args
|
||||||
|
bashbotError_403() {
|
||||||
|
log_debug "custom errorProcessing error 403: FUNC=$1 CHAT=$3 USER=${4:-no-user} MSGID=$6 ERTXT=$5"
|
||||||
|
}
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
# This file is public domain in the USA and all free countries.
|
# This file is public domain in the USA and all free countries.
|
||||||
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
# Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying)
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
######
|
######
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
# magic to ensure that we're always inside the root of our application,
|
# magic to ensure that we're always inside the root of our application,
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
# common variables
|
# common variables
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
../dev/hooks/pre-commit.sh
|
../dev/hooks/pre-commit.sh
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
# include common functions and definitions
|
# include common functions and definitions
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
# include common functions and definitions
|
# include common functions and definitions
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
|
|
||||||
# include common functions and definitions
|
# include common functions and definitions
|
||||||
# shellcheck source=test/ALL-tests.inc.sh
|
# shellcheck source=test/ALL-tests.inc.sh
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
# include common functions and definitions
|
# include common functions and definitions
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
# include common functions and definitions
|
# include common functions and definitions
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
# include common functions and definitions
|
# include common functions and definitions
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
# include common functions and definitions
|
# include common functions and definitions
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
# LICENSE: WTFPLv2 http://www.wtfpl.net/txt/copying/
|
||||||
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
# AUTHOR: KayM (gnadelwartz), kay@rrr.de
|
||||||
#
|
#
|
||||||
#### $$VERSION$$ v1.5-0-g8adca9b
|
#### $$VERSION$$ v1.51-0-g6e66a28
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
# include common functions and definitions
|
# include common functions and definitions
|
||||||
|
|
Loading…
Reference in New Issue
Block a user