擅长:python、mysql、java
<p>错误表示在<code>msg</code>dict中没有<code>text</code>键。可能是某些没有文本的特殊电报消息,或者在某些情况下代码中存在删除<code>text</code>键的错误。你可以利用</p>
<pre><code>command = msg.get('text')
</code></pre>
<p>当没有文本时得到<code>None</code>。或者</p>
^{pr2}$
<p>当没有文本时获取空字符串(即<code>''</code>)。在</p>
<p>您还可以检查<code>msg</code>内是否有<code>text</code>运算符,或者没有<code>in</code>运算符:</p>
<pre><code>if 'text' not in msg:
logger.error('bad message received!')
return
</code></pre>
<hr/>
<p>如果你想让你的服务一直运行,你应该添加一些自动重启的机制。在</p>
<p>就像在Python中,在发生任何错误后重新启动:</p>
<pre><code>while True:
try:
logger.info("Starting bot")
run_bot()
except Exception:
logger.exception("Something bad happened. Restarting")
</code></pre>
<p>我还建议在文件或服务(如<a href="https://sentry.io/" rel="nofollow noreferrer">Sentry</a>)中记录错误,以调查为什么之后没有文本。在</p>