Function teloxide::commands_repl
source · pub async fn commands_repl<'a, R, Cmd, H, Args>(
bot: R,
handler: H,
cmd: PhantomData<Cmd>
)where
R: Requester + Clone + Send + Sync + 'static,
<R as Requester>::GetUpdates: Send,
H: Injectable<DependencyMap, ResponseResult<()>, Args> + Send + Sync + 'static,
Cmd: BotCommands + Send + Sync + 'static,
CommandsRepl::repl
insteadctrlc_handler
only.Expand description
A REPL for commands.
REPLs are meant only for simple bots and rapid prototyping.
If you need to supply dependencies or describe more complex dispatch logic, please use Dispatcher
.
See also: “Dispatching or REPLs?”.
All errors from the handler and update listener will be logged.
Signature
Don’t be scared by many trait bounds in the signature, in essence they require:
bot
is a bot, client for the Telegram bot API. It is represented via theRequester
trait.handler
is anasync
function that takes arguments fromDependencyMap
(see below) and returnsResponseResult
.cmd
is a type hint for your command enumerationMyCommand
: just writeMyCommand::ty()
. Note thatMyCommand
must implement theBotCommands
trait, typically via#[derive(BotCommands)]
.
All the other requirements are about thread safety and data validity and can be ignored for most of the time.
Handler arguments
teloxide
provides the following types to the handler
:
Each of these types can be accepted as a handler parameter. Note that they
aren’t all required at the same time: e.g., you can take only the bot and
the command without Me
and Message
.
Stopping
To stop a REPL, simply press Ctrl
+C
in the terminal where you run the program.
Note that graceful shutdown may take some time (we plan to improve this, see #711).
Caution
DO NOT use this function together with Dispatcher
and other REPLs,
because Telegram disallow multiple requests at the same time from the same bot.