You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram Bot开发遇TypeError:一元运算符~操作数类型错误

解决Telegram Bot的TypeError: bad operand type for unary ~: 'type'错误

问题原因

你遇到的错误是因为直接将~操作符作用在了过滤器类上,而非过滤器实例。filters.Text和filters.Command是类(type类型),~操作符仅能用于过滤器实例,因此触发类型错误。

解决方案

根据你使用的python-telegram-bot版本,选择对应修正方式:

版本v13.x及以上(推荐)

该版本官方提供了预定义的过滤器实例,直接调用即可:

def main():
    updater = Updater(bot="Telegram API key", update_queue=my_queue)

    conv_handler = ConversationHandler(
        entry_points=[CommandHandler('start', start)],
        states={
        RECIPIENT_NAME: [MessageHandler(filters.TEXT & ~filters.COMMAND, callback=recipient_name)],
        RECIPIENT_NUMBER: [MessageHandler(filters.TEXT & ~filters.COMMAND, callback=recipient_number)],
        SERVICE: [MessageHandler(filters.TEXT & ~filters.COMMAND, callback=service)],
        VERIFY_IDENTITY: [MessageHandler(filters.TEXT & ~filters.COMMAND, callback=verify_identity)]
        },
        fallbacks=[CommandHandler('cancel', cancel)],
    )
  • 用filters.TEXT替换filters.Text:filters.TEXT是预定义实例,匹配任意文本消息
  • 用~filters.COMMAND替换~filters.Command:filters.COMMAND是预定义实例,匹配任意命令消息,~取反后表示排除命令消息

版本v12.x及以下

该版本需要手动实例化过滤器类:

def main():
    updater = Updater(bot="Telegram API key", update_queue=my_queue)

    conv_handler = ConversationHandler(
        entry_points=[CommandHandler('start', start)],
        states={
        RECIPIENT_NAME: [MessageHandler(filters.Text() & ~filters.Command(), callback=recipient_name)],
        RECIPIENT_NUMBER: [MessageHandler(filters.Text() & ~filters.Command(), callback=recipient_number)],
        SERVICE: [MessageHandler(filters.Text() & ~filters.Command(), callback=service)],
        VERIFY_IDENTITY: [MessageHandler(filters.Text() & ~filters.Command(), callback=verify_identity)]
        },
        fallbacks=[CommandHandler('cancel', cancel)],
    )
  • 给filters.Text和filters.Command添加括号(),创建过滤器实例后再使用&和~操作符

内容的提问来源于stack exchange,提问作者isaac palakunnel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:22:26