问题描述
我正在创建一个 Telegram 机器人,它将以随机语言回复 Hello
。工作正常,但问题是即使我随机发送一些像 sfdsfjls
这样没有意义的东西,它也会回复。
我该怎么做才能让它只在我说 Hi
或 Hello
时回复,而当我随机发送一些东西时它回复类似 I don't get it
的内容。
我正在使用 pytelegrambotapi
。
我的代码:
import telebot
import random
bot_token =''
bot= telebot.TeleBot(token=bot_token)
lang1= ['Hola','Konnichiwa','Bonjour','Namaste']
# Handle normal messages
@bot.message_handler()
def send_welcome(message):
# Detect 'hi'
if message.text == 'hi' or 'hello':
bot.send_message(message.chat.id,(random.choice(lang1)))
解决方法
你需要
if message.text == 'hi' or message.text == 'hello':
改为关闭
if message.text == 'hi' or 'hello':
因为 or 'hello'
部分将总是导致 TRUE
,因为您可以test here。
另一种选择,不过检查 if a string matches any other string 可能看起来像这样:
triggers = {'hi','hello'}
if message.text in triggers:
应用这些修复并添加额外的检查 based on the comment 为我们提供以下代码:
import telebot
import random
bot_token =''
bot= telebot.TeleBot(token=bot_token)
lang1= ['Hola','Konnichiwa','Bonjour','Namaste']
# Handle normal messages
@bot.message_handler()
def send_welcome(message):
# Detect Messages
if message.text == 'hi' or message.text == 'hello':
bot.send_message(message.chat.id,(random.choice(lang1)))
elif message.text == 'Test':
bot.send_message(message.chat.id,'Test succeeded')
else:
bot.send_message(message.chat.id,'Sorry I don\'t get it!')