Search code examples
python-telegram-botpy-telegram-bot-api

python-telegram-bot for (v20.x) TypeError: bad operand type for unary ~: 'type'


I am trying to build a telegram bot, I have just reproduce the code:

from telegram.ext import MessageHandler
from telegram.ext import filters
from telegram.ext import Application
from telegram import Update
from telegram.ext import ContextTypes
from decouple import config

def testFunc (update: Update, context: ContextTypes.DEFAULT_TYPE):
    print('Hi')
    
def main():
   
    BOT_TOKEN = config('TELE_BOT_API_KEY_2')
    application = Application.builder().token(BOT_TOKEN).build()
    
    application.add_handler(MessageHandler(filters.Text & ~filters.Command, testFunc))
    
    application.run_polling()

if __name__ == '__main__':
    main()

The error this code shows is:

Bot\AsyncAdvanceBot\test3.py", line 16, in main
    application.add_handler(MessageHandler(filters.Text & ~filters.Command, testFunc))
TypeError: bad operand type for unary ~: 'type'

I am using python-telegram-bot api v20.x I know this might be a naive problem that I might be missing. Thanks!

I tried changing the code to different format but it doesn't work.


Solution

  • I got it! It was as I said naive error. I was not thinking straight😅 I have seen the document even earlier and was only focusing on making filters.Command to filters.COMMAND, but forgot to change filters.Text to filters.TEXT. just replaced

    filters.Text & ~filters.Command 
    

    with

    filters.TEXT & ~filters.COMMAND