【问题标题】:Python telegram bot doesn't recognize text messagePython电报机器人无法识别短信
【发布时间】:2020-10-16 16:19:41
【问题描述】:

这里我有一个代码,用于为电报制作一个简单的回声机器人。

from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import logging

from data.constants import API_TOKEN, LOGGING_FORMAT

logging.basicConfig(format=LOGGING_FORMAT, level=logging.DEBUG)

updater = Updater(token=API_TOKEN)
dispatcher = updater.dispatcher


def start(update, context):
    context.bot.send_message(chat_id=update.effective_chat.id,
                             text='Hello, dude.')


def echo(update, context):
    context.bot.send_message(chat_id=update.effective_chat.id,
                             text=update.message.text)


start_handler = CommandHandler('start', start)
echo_handler = MessageHandler(Filters.text, echo)


dispatcher.add_handler(start_handler)
dispatcher.add_handler(echo_handler)


if __name__ == '__main__':
    updater.start_polling()
    updater.idle()

我为此使用了 python-telegram-bot 库。

由于某种原因,这个机器人只能识别命令,而不是纯文本。我的意思是,echo 函数只与我呼应文本,从/ 开始。函数start 可以正常工作。 更有趣的是,我在另一个电报机器人库中遇到了同样的问题 - aiogram

发疯后,我写信给python-telegram-bot 支持咨询以解决我的问题。 运行我的 sn-p 后,支持人员承认,这对他们来说效果很好,并建议我最后的希望之举:在新机器人上尝试。我从@BotFather 获得了新的 API 密钥,尝试了一下,但现在我在这里。这意味着我的代码仍然无法正常工作。

有一些参考资料,可以帮助我们解决它:

https://python-telegram-bot.readthedocs.io/en/latest/telegram.html https://github.com/python-telegram-bot/python-telegram-bot/wiki/Extensions-–-Your-first-Bot

但我想,问题出在我的工作环境中,尽管我尝试在不同的新设备上运行我的代码。

【问题讨论】:

    标签: python python-3.6 telegram-bot python-telegram-bot


    【解决方案1】:

    我的建议是遵循 Python Telegram 示例,其中在设置处理程序时定义了 CommandHandler 和 MessageHandler 对象

    dp = updater.dispatcher
    
    dp.add_handler(CommandHandler("help", help_command_handler))
    dp.add_handler(MessageHandler(Filters.text, main_handler))
    

    【讨论】:

    • 你的意思是我应该在dp 声明之后添加处理程序吗?
    • 我的意思是不要创建处理程序并设置它们(2条指令),而是像我的示例中那样设置和创建它们。我在想是否可能存在类型不匹配
    • 那么有什么意义呢?应该有什么改变?该变量以相同的方式在两个变体中初始化。无论如何,它并不能解决问题。
    • 作为 Python 一种强类型语言,我认为对象类型验证(在运行时发生)可能会受到某种影响。
    • 重点是我的代码对其他人来说可以正常工作,那么对象类型验证如何才能对一个人正常工作而对其他人不工作呢?此外,我们也没有例外。这意味着,对象类型验证通过了。
    【解决方案2】:

    已解决:让机器人不仅可以识别命令,还可以识别短信,要么我们需要disable privacy mode

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2017-08-18
      • 2015-11-01
      • 1970-01-01
      • 2022-01-01
      • 2021-02-21
      • 1970-01-01
      相关资源
      最近更新 更多