GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Builder Pattern

Builder Pattern

Jump to bottom Edit New page
Iulian Onofrei edited this page May 15, 2023 · 10 revisions

The Builder Pattern in telegram.ext

In this library, there are roughly four important components that make up everything:

  1. The Updater is responsible for fetching updates that Telegram sent to your bot
  2. The Bot provides high-level access to the methods of the Bot API
  3. The BaseRequest is responsible to handle the actual networking stuff, i.e. sending the requests to the Bot API
  4. The Application binds everything together and is responsible for handling the updates fetched by the Updater.

In addition to those four, there are several other components, which are not as significant for the structure of a python-telegram-bot program.

All of those components have different parameters. Some of them are optional. Some are required. Some are mutually exclusive. That's a lot to take in and when coding your bot and setting this all up by yourself would be tiresome.

That's why python-telegram-bot makes an effort to make the setup easy with reasonable defaults. For example, after running

from telegram.ext import Application
application = Application.builder().token('TOKEN').build()

you will automatically have

  • the Updater available as application.updater
  • the Bot available as application.bot or application.updater.bot (both are the same object)
  • a BaseRequest object initialized and ready to be used by the application.bot
  • several other components & sane default values set up.

But what if you want to customize some arguments that Application, Updater, Bot, BaseRequest or other components accept? Do you have to build all those objects yourself and glue them together? No! (Well, you can, but you don't have to.)

This is where the builder pattern comes into play. The idea is roughly as follows: You went shopping and have all the ingredients for a nice stew, but you don't want to cook yourself. So you hand everything to a chef. The chef will tell you that some of your ingredients don't match and will discard them. Afterwards, he'll cook a nice stew for you and you never need to worry about how exactly that's done.

Let's get a bit more technical. First, we need the cook:

from telegram.ext import Application
builder = Application.builder()

Now, we hand over the ingredients:

builder.token(token)  # the bot token is the main ingredient
builder.context_types(context_types)  # In case you want to use custom context types for your `Application`
builder.read_timeout(read_timeout)  # In case you want to fine tune the networking backend
...

Finally, we have the chef cook the stew:

application = builder.build()

All this can also be chained into a single line:

from telegram.ext import Application
application = Application.builder().token(token).context_types(context_types).read_timeout(read_timeout).build()

And that's already it!

The docs of ApplicationBuilder have all the info about which "ingredients" it can handle, i.e. which methods it has. Each method will tell you

  • how the parameters will be used (e.g. the token passed to ApplicationBuilder.token will be used for the Bot available as Application.bot)
  • What happens if you don't call this method. For most things, PTB will use reasonable defaults.

Wiki of python-telegram-bot © Copyright 2015-2026 – Licensed by Creative Commons

Must read

  1. Introduction to the API
  2. Tutorial: Your first bot
  3. FAQ
  4. How to ask good questions
  5. How to write an MWE

Concepts & Important Elements

  1. Architecture Overview
  2. Builder Pattern for Application
  3. Types of Handlers
  4. Working with Files and Media
  5. Exceptions, Warnings and Logging
  6. Concurrency in PTB

Notable Features

  1. Advanced Filters
  2. Storing data
  3. Making your bot persistent
  4. Adding Defaults
  5. Job Queue
  6. Arbitrary callback_data
  7. Avoiding flood limits
  8. Webhooks
  9. Bot API Forward Compatiblity

Code Resources

  1. Frequently requested design patterns
  2. Code snippets
  3. Performance Optimizations
  4. Telegram Passport
  5. Bots built with PTB
  6. Automated Bot Tests

Examples explained

  1. InlineKeyboard Example

Networking

  1. Working Behind a Proxy
  2. Handling network errors

Other resources

  1. Where to host Telegram Bots
  2. How to host your bot
  3. Local API Server
  4. Type Checking with PTB
  5. Press
  6. Notes on GAE
  7. Related Projects
  8. Emoji

Transition Guides

  • Version 4
  • Version 5
  • Version 12
  • Version 13
  • Version 20

Administration

  • Test Bots
  • How To Release
  • Bots, Groups & Channels
  • PTB tests knowledge base
  • Bot API Backward Compatibility

Clone this wiki locally

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.