teloxide 0.12.2

An elegant Telegram bots framework for Rust
Documentation
[package]
name = "teloxide"
version = "0.12.2"
description = "An elegant Telegram bots framework for Rust"

rust-version.workspace = true
edition.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true

documentation = "https://docs.rs/teloxide/"
readme = "../../README.md"

keywords = ["teloxide", "telegram", "telegram-bot", "telegram-bot-api", "bot"]
categories = ["web-programming", "api-bindings", "asynchronous"]


[features]
default = ["native-tls", "ctrlc_handler", "teloxide-core/default",  "auto-send"]

webhooks = ["rand"]
webhooks-axum = ["webhooks", "axum", "tower", "tower-http"]

# FIXME: rename `sqlite-storage` -> `sqlite-storage-nativetls`
sqlite-storage = ["sqlx", "sqlx/runtime-tokio-native-tls", "native-tls"]
sqlite-storage-rustls = ["sqlx", "sqlx/runtime-tokio-rustls", "rustls"]
redis-storage = ["redis"]
cbor-serializer = ["serde_cbor"]
bincode-serializer = ["bincode"]

macros = ["teloxide-macros"]

ctrlc_handler = ["tokio/signal"]

native-tls = ["teloxide-core/native-tls"]
rustls = ["teloxide-core/rustls"]
auto-send = ["teloxide-core/auto_send"]
throttle = ["teloxide-core/throttle"]
cache-me = ["teloxide-core/cache_me"] # FIXME: why teloxide and core use - _ differently?
trace-adaptor = ["teloxide-core/trace_adaptor"]
erased = ["teloxide-core/erased"]

# currently used for `README.md` tests, building docs for `docsrs` to add `This is supported on feature="..." only.`,
# and for teloxide-core.
nightly = ["teloxide-core/nightly"]

full = [
    "webhooks",
    "webhooks-axum",
    "sqlite-storage",
    # "sqlite-storage-rustls" is explicitly ommited here,
    # since it conflicts with "sqlite-storage"
    "redis-storage",
    "cbor-serializer",
    "bincode-serializer",
    "macros",
    "ctrlc_handler",
    "teloxide-core/full",
    "native-tls",
    "rustls",
    "auto-send",
    "throttle",
    "cache-me",
    "trace-adaptor",
    "erased",
]


[dependencies]
teloxide-core = { version = "0.9.1", path = "../teloxide-core", default-features = false }
teloxide-macros = { version = "0.7.1", path = "../teloxide-macros", optional = true }

serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }

dptree = "0.3.0"

# Uncomment this if you want to test teloxide with a specific dptree commit
# dptree = { git = "https://github.com/teloxide/dptree", rev = "df578e4" }

tokio = { version = "1.8", features = ["fs"] }
tokio-util = "0.7"
tokio-stream = "0.1.8"

url = "2.2.2"
log = "0.4"
bytes = "1.0"
mime = "0.3"

derive_more = "0.99"
thiserror = "1.0"
futures = "0.3.15"
pin-project = "1.0"
serde_with_macros = "1.4"
aquamarine = "0.1.11"

sqlx = { version = "0.6", optional = true, default-features = false, features = [
        "macros",
        "sqlite",
] }
redis = { version = "0.21", features = ["tokio-comp"], optional = true }
serde_cbor = { version = "0.11", optional = true }
bincode = { version = "1.3", optional = true }
axum = { version = "0.6.0", optional = true }
tower = { version = "0.4.12", optional = true }
tower-http = { version = "0.3.4", features = ["trace"], optional = true }
rand = { version = "0.8.5", optional = true }


[dev-dependencies]
rand = "0.8.3"
pretty_env_logger = "0.4.0"
serde = "1"
serde_json = "1"
tokio = { version = "1.8", features = ["fs", "rt-multi-thread", "macros"] }
reqwest = "0.11.11"
chrono = "0.4"
tokio-stream = "0.1"


[package.metadata.docs.rs]
# NB: can't use `all-features = true`, because `sqlite-storage` conflicts with `sqlite-storage-rustls`
features = ["full", "nightly"]
# FIXME: Add back "-Znormalize-docs" when https://github.com/rust-lang/rust/issues/93703 is fixed
rustdoc-args = ["--cfg", "docsrs"]
rustc-args = ["--cfg", "dep_docsrs"]
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]


[[test]]
name = "redis"
path = "tests/redis.rs"
required-features = ["redis-storage", "cbor-serializer", "bincode-serializer"]

[[test]]
name = "sqlite"
path = "tests/sqlite.rs"
required-features = ["sqlite-storage", "cbor-serializer", "bincode-serializer"]


[[example]]
name = "admin"
required-features = ["macros", "ctrlc_handler"]

# This is required due to some stuff with dev-dependencies,
# backwards compatability and cargo:
# https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#scrape-examples
doc-scrape-examples = true

[[example]]
name = "buttons"
required-features = ["macros", "ctrlc_handler"]

[[example]]
name = "command"
required-features = ["macros", "ctrlc_handler"]

[[example]]
name = "db_remember"
required-features = ["sqlite-storage", "redis-storage", "bincode-serializer", "macros"]

[[example]]
name = "dialogue"
required-features = ["macros", "ctrlc_handler"]

[[example]]
name = "dispatching_features"
required-features = ["macros", "ctrlc_handler"]

[[example]]
name = "heroku_ping_pong"
required-features = ["webhooks-axum", "ctrlc_handler"]

[[example]]
name = "inline"
required-features = ["macros", "ctrlc_handler"]

[[example]]
name = "ngrok_ping_pong"
required-features = ["webhooks-axum", "ctrlc_handler"]

[[example]]
name = "purchase"
required-features = ["macros", "ctrlc_handler"]

[[example]]
name = "shared_state"
required-features = ["ctrlc_handler"]

[[example]]
name = "throw_dice"
required-features = ["ctrlc_handler"]