即使是随机文本,Telegram bot 也会回复

问题描述

我正在创建一个 Telegram 机器人,它将以随机语言回复 Hello。工作正常,但问题是即使我随机发送一些像 sfdsfjls 这样没有意义的东西,它也会回复

我该怎么做才能让它只在我说 HiHello回复,而当我随机发送一些东西时它回复类似 I don't get it内容

我正在使用 pytelegrambotapi

enter image description here

我的代码

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!')

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...