knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
The add operator (+
, or more formally +.TelegramObject
) is an S3 method for class TelegramObject
that enables you to add any kind of Handler
to an Updater
's Dispatcher
.
Say you want to build a bot with a simple handler for the /start
command:
start <- function(bot, update){ bot$sendMessage(chat_id = update$message$chat_id, text = sprintf("Hello %s!", update$message$from$first_name)) } start_handler <- CommandHandler("start", start)
You can then build your updater with:
updater <- Updater("TOKEN") + start_handler
As things start to get more complex, you can chain multiple handlers in a single call:
echo <- function(bot, update){ bot$sendMessage(chat_id = update$message$chat_id, text = update$message$text) } updater <- Updater("TOKEN") + CommandHandler("start", start) + MessageHandler(echo, MessageFilters$text)
And keep adding...
caps <- function(bot, update, args){ if (length(args > 0L)){ text_caps <- toupper(paste(args, collapse = " ")) bot$sendMessage(chat_id = update$message$chat_id, text = text_caps) } } updater <- updater + CommandHandler("caps", caps, pass_args = TRUE)
Give it a try! Start polling the updater:
updater$start_polling()
And send /start to the bot, /caps foo or just a simple text.
The operator is indeed calling the add_handler
method from an Updater
's Dispatcher
. Then:
updater <- updater + start_handler
Is equivalent to:
updater$dispatcher$add_handler(start_handler)
Also, it works with Dispatcher
objects:
dispatcher <- updater$dispatcher dispatcher <- dispatcher + start_handler
So, all in all, the +.TelegramObject
operator simplifies the construction of an Updater
. However, if you want to add a handler with advanced settings, let's say by controlling the group
in which it is placed, you will need to make an add_handler
call.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.