我是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()
现在我输入" /你好"在电报中,它可以回复"您好,我的名字"
我想知道如何在没有命令行的情况下运行机器人?
例如,我输入"你好",它可以回复"你好,我的名字"?
答案 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答案-仅需注意机器人应禁用隐私的一件事。
要这样做-
- 从群组中删除Bot
- 询问@botfather禁用隐私
- 将机器人重新添加到组
然后,您将通过Filter.Text接收所有消息。