python - @bot.message_handler() 中的 lamda 函数在 Telebot python 中无法正常工作
问题描述
我尝试在 python 脚本中实现以下代码行,以便使用 Telebot 构建电报机器人。
@bot.message_handler(func=lambda msg:True if msg.text.startswith('/test'))
def test_start(message):
msg=bot.send_message(message.chat.id,'This is feature is under developement')
上面的代码给了我一个语法错误。
@bot.message_handler(func=lambda msg:True if msg.text.startswith('/test') else False)
def test_start(message):
msg=bot.send_message(message.chat.id,'This is feature is under developement')
这段代码解决了语法错误,但仍然没有做我想做的事。当用户发送“/测试一些文本”时,我想识别它并在此之后执行一些操作。
我对 python 比较陌生,这是我第一次使用 Telebot 和 lambda 函数。所以请帮助我
- 确定为什么第一个代码给了我一个语法错误。
- 如何正确实现此startswith('/test')。非常感谢你。
解决方案
因为三元运算符具有特定的语法,所以必须遵循:
<value if True> if <condition> else <value if False>
您在第一个示例中所做的是:
<value if True> if <condition>
你也不必像以前那样做
True if msg.text.startswith('/test') else False
.startswith()
bool
自行返回。
目前还不清楚装饰器的作用,但为什么不直接在函数内部执行检查呢?
@bot.message_handler
def test_start(message):
if msg.startswith('/test'):
msg=bot.send_message(message.chat.id,'This is feature is under developement')
推荐阅读
- c++ - 侦听客户端连接时服务器会阻止执行吗?
- spring-boot - 如何为 Spring WebFlux 配置 netty http 客户端连接空闲超时
- laravel - 此路由不支持 POST 方法。支持的方法:GET、HEAD、PUT、PATCH、DELETE
- android - 从 Retrofit2 调用 Web 请求时如何解决 FATAL EXCEPTION?
- r - 如何将数据转换为非 equi 列?
- javascript - 正则表达式使用 powershell 脚本替换 javascript 内容
- cypress - 测试用例中的赛普拉斯 XHR API 调用验证
- rdf - JSON-LD 上下文:指定(固有)rdf:属性值的类型
- spring-data-jpa - spring data jpa 不使用@idClass 保存实体
- php - MySQLi begin_transaction 和自动提交