Telegram Bot没有命令行通过python

时间:2018-05-30 09:36:05

标签: python bots python-telegram-bot

我是Telegram机器人的新手,现在我测试一个简单响应的telegraom机器人。我们知道,我们可以使用python进行电报。有我的代码:

from telegram.ext import Updater, CommandHandler
 def hello(bot, update):
     update.message.reply_text(
        'Hello {}'.format(update.message.from_user.first_name))

updater = ipdater(token='xxx') updater.dispatcher.add_handler(CommandHandler('hello', hello)) updater.start_polling() updater.idle()

现在我输入" /你好"在电报中,它可以回复"您好,我的名字"

我想知道如何在没有命令行的情况下运行机器人?

例如,我输入"你好",它可以回复"你好,我的名字"?

2 个答案:

答案 0 :(得分:2)

是的,你绝对可以做到。您需要使用对文本消息做出反应的MessageHandler

根据用户的文字定义您的回调:

def handle_message(bot, update):
    text = update.message.text
    if text == 'hello':
        update.message.reply_text('Hello {}'.format(update.message.from_user.first_name))

并向您的调度员添加消息处理程序:

dispatcher.add_handler(MessageHandler(filters=Filters.text, callback=handle_message))

请注意,消息处理程序采用过滤器。在这种情况下,它是文本,但它可以是图像或其他东西。重要的是要知道这会触发机器人收到的每条短信。如果您要接收大量消息,我建议您编写更复杂的过滤器。

答案 1 :(得分:0)

我回应@ dev4Fun答案-仅需注意机器人应禁用隐私的一件事。

要这样做-

  1. 从群组中删除Bot
  2. 询问@botfather禁用隐私
  3. 将机器人重新添加到组

然后,您将通过Filter.Text接收所有消息。