-
Couldn't load subscription status.
- Fork 0
Extensions – Advanced Filters
This page describes advanced use cases for the filters used with MessageHandler from telegram.ext.
When using MessageHandler it is sometimes useful to have more than one filter. This can be done using so called bit-wise operators. In python those operators are &, | and ~ meaning AND, OR and NOT respectively.
from telegram.ext import MessageHandler, Filters
handler = MessageHandler(Filters.video | Filters.photo | Filters.document,
callback)handler = MessageHandler(Filters.forwarded & Filters.photo, callback)from telegram import MessageEntity
handler = MessageHandler(
Filters.text & (Filters.entity(MessageEntity.URL) |
Filters.entity(MessageEntity.TEXT_LINK)),
callback)handler = MessageHandler(Filtes.photo & (~ Filters.forwarded), callback)It is also possible to write our own filters. In essence, a filter is simply a function that receives a Message instance and returns either True or False. This function has to implemented in a new class that inherits from BaseFilter, which allows it to be combined with other filters. If the combination of all filters evaluates to True, the message will be handled.
Say we wanted to allow only those messages that contain the text "python-telegram-bot is awesome", we could write a custom filter as so:
from telegram.ext import BaseFilter
class FilterAwesome(BaseFilter):
def filter(self, message):
return 'python-telegram-bot is awesome' in message.text
# Remember to initialize the class.
filter_awesome = FilterAwesome()The class can of cause be named however you want, the only important things are:
- The class has to inherit from
BaseFilter - It has to implement a
filtermethod - You have to create an instance of the class
The filter can then be used as:
awesome_handler = MessageHandler(filter_awesome, callback)- Wiki of
python-telegram-bot© Copyright 2015-2025 – Licensed by Creative Commons
- Architecture Overview
- Builder Pattern for
Application - Types of Handlers
- Working with Files and Media
- Exceptions, Warnings and Logging
- Concurrency in PTB
- Advanced Filters
- Storing data
- Making your bot persistent
- Adding Defaults
- Job Queue
- Arbitrary
callback_data - Avoiding flood limits
- Webhooks
- Bot API Forward Compatiblity
- Frequently requested design patterns
- Code snippets
- Performance Optimizations
- Telegram Passport
- Bots built with PTB
- Automated Bot Tests