This commit is contained in:
InsanusMokrassar
2023-09-11 13:41:50 +00:00
parent cfa79f4489
commit b0876ba961
5 changed files with 117 additions and 45 deletions

View File

@@ -604,6 +604,13 @@
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#what-is-the-error-failed-to-load-class-orgslf4jimplstaticloggerbinder" class="md-nav__link">
What is the error Failed to load class "org.slf4j.impl.StaticLoggerBinder"?
</a>
</li>
<li class="md-nav__item">
<a href="#how-to-filter-updates-in-some-part-of-behaviourbuilder" class="md-nav__link">
How to filter updates in some part of BehaviourBuilder?
@@ -1826,6 +1833,13 @@
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#what-is-the-error-failed-to-load-class-orgslf4jimplstaticloggerbinder" class="md-nav__link">
What is the error Failed to load class "org.slf4j.impl.StaticLoggerBinder"?
</a>
</li>
<li class="md-nav__item">
<a href="#how-to-filter-updates-in-some-part-of-behaviourbuilder" class="md-nav__link">
How to filter updates in some part of BehaviourBuilder?
@@ -1885,18 +1899,26 @@
<h1 id="faq">FAQ<a class="headerlink" href="#faq" title="Permanent link">&para;</a></h1>
<h2 id="what-is-the-error-failed-to-load-class-orgslf4jimplstaticloggerbinder">What is the error <code>Failed to load class "org.slf4j.impl.StaticLoggerBinder"</code>?<a class="headerlink" href="#what-is-the-error-failed-to-load-class-orgslf4jimplstaticloggerbinder" title="Permanent link">&para;</a></h2>
<div class="language-text highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>SLF4J: Failed to load class &quot;org.slf4j.impl.StaticLoggerBinder&quot;.
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>SLF4J: Defaulting to no-operation (NOP) logger implementation
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
</span></code></pre></div>
<p>This error is just a warning about the absence of <a href="https://www.slf4j.org">slf4j</a> setup. You may fix this error
by following to <a href="https://stackoverflow.com/a/9919375">stackoverflow answer</a></p>
<hr />
<h2 id="how-to-filter-updates-in-some-part-of-behaviourbuilder">How to filter updates in some part of <code>BehaviourBuilder</code>?<a class="headerlink" href="#how-to-filter-updates-in-some-part-of-behaviourbuilder" title="Permanent link">&para;</a></h2>
<p>You may create subcontext with
<code>BehaviourBuilder.</code><a href="https://tgbotapi.inmo.dev/tgbotapi.behaviour_builder/dev.inmo.tgbotapi.extensions.behaviour_builder/create-sub-context-and-do-with-updates-filter.html"><code>createSubContextAndDoWithUpdatesFilter</code></a>
and pass there <code>updatesUpstreamFlow</code> parameter with any operations over parent behaviour builder:</p>
<div class="language-kotlin highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="n">buildBehaviourWithLongPolling</span><span class="w"> </span><span class="p">{</span>
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="w"> </span><span class="n">createSubContextAndDoWithUpdatesFilter</span><span class="p">(</span>
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="w"> </span><span class="n">updatesUpstreamFlow</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">filter</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* some condition */</span><span class="w"> </span><span class="p">},</span>
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="w"> </span><span class="n">stopOnCompletion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="c1">// disable stopping of sub context after setup</span>
</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="w"> </span><span class="n">onCommand</span><span class="p">()</span><span class="w"> </span><span class="c1">//...</span>
</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="w"> </span><span class="p">}</span>
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="p">}</span>
<div class="language-kotlin highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="n">buildBehaviourWithLongPolling</span><span class="w"> </span><span class="p">{</span>
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="w"> </span><span class="n">createSubContextAndDoWithUpdatesFilter</span><span class="p">(</span>
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="w"> </span><span class="n">updatesUpstreamFlow</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">filter</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* some condition */</span><span class="w"> </span><span class="p">},</span>
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="w"> </span><span class="n">stopOnCompletion</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="c1">// disable stopping of sub context after setup</span>
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="w"> </span><span class="n">onCommand</span><span class="p">()</span><span class="w"> </span><span class="c1">//...</span>
</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="w"> </span><span class="p">}</span>
</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="p">}</span>
</span></code></pre></div>
<h3 id="additional-info">Additional info<a class="headerlink" href="#additional-info" title="Permanent link">&para;</a></h3>
<ul>
@@ -1906,7 +1928,7 @@ and pass there <code>updatesUpstreamFlow</code> parameter with any operations ov
<h3 id="cases">Cases<a class="headerlink" href="#cases" title="Permanent link">&para;</a></h3>
<ul>
<li>Filtering of chats and users:
<div class="language-kotlin highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="w"> </span><span class="n">updatesUpstreamFlow</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">filter</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nb">it</span><span class="p">.</span><span class="na">sourceChat</span><span class="p">()</span><span class="w"> </span><span class="o">?.</span><span class="na">id</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">requiredChatId</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nb">it</span><span class="p">.</span><span class="na">sourceUser</span><span class="p">()</span><span class="w"> </span><span class="o">?.</span><span class="na">id</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">requiredUserId</span><span class="w"> </span><span class="p">}</span>
<div class="language-kotlin highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="w"> </span><span class="n">updatesUpstreamFlow</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">filter</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nb">it</span><span class="p">.</span><span class="na">sourceChat</span><span class="p">()</span><span class="w"> </span><span class="o">?.</span><span class="na">id</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">requiredChatId</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nb">it</span><span class="p">.</span><span class="na">sourceUser</span><span class="p">()</span><span class="w"> </span><span class="o">?.</span><span class="na">id</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">requiredUserId</span><span class="w"> </span><span class="p">}</span>
</span></code></pre></div><ul>
<li><strong>See</strong>:<ul>
<li><a href="https://tgbotapi.inmo.dev/tgbotapi.utils/dev.inmo.tgbotapi.extensions.utils.extensions/source-chat.html">Update.sourceChat</a></li>