As of version 12.4, PTB supports passing default values for arguments such as parse_mode
to reduce the need for repetition. For this purpose, the Defaults class was introduced. This makes it possible to set defaults for often used arguments. These are set at the creation of the bot and are immutable.
parse_mode
disable_notification
disable_web_page_preview
allow_sending_without_reply
do_quote
tzinfo
block
protect_content
link_preview_options
Here is a show case for setting parse_mode
to ParseMode.HTML
and tzinfo
to pytz.timezone('Europe/Berlin')
by default:
import logging import datetime as dtm import zoneinfo from telegram.constants import ParseMode from telegram.ext import MessageHandler, filters, Defaults, Application logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO ) async def job(context): chat_id = context.job.chat_id timezone = context.bot.defaults.tzinfo local_now = dtm.datetime.now(timezone) utc_now = dtm.datetime.now(dtm.UTC) text = f'Running job at {local_now} in timezone {timezone}, which equals {utc_now} UTC.' await context.bot.send_message(chat_id=chat_id, text=text) async def echo(update, context): text = update.message.text # Send with default parse mode await update.message.reply_text(f'<b>{text}</b>') # Override default parse mode locally await update.message.reply_text(f'*{text}*', parse_mode=ParseMode.MARKDOWN) # Send with no parse mode await update.message.reply_text(f'*{text}*', parse_mode=None) # Schedule job context.job_queue.run_once( job, dtm.datetime.now() + dtm.timedelta(seconds=1), chat_id=update.effective_chat.id ) def main(): """Instantiate a Defaults object""" defaults = Defaults(parse_mode=ParseMode.HTML, tzinfo=zoneinfo.ZoneInfo('Europe/Berlin')) application = ( Application.builder() .token("TOKEN") .defaults(defaults) .build() ) # on non command text message - echo the message on Telegram application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo)) # Start the Bot application.run_polling() if __name__ == '__main__': main()
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4