1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
//! Telexide is a rust library for the telegram API
//!
//! View the [examples] to see practical examples of how to use the library.
//!
//! Use the [`ClientBuilder`] to easily create a [`Client`] object to your
//! preferences and register commands with the [`create_framework`] macro and/or
//! register your own update handlers, before running [`Client::start`] to start
//! your bot. All of this is designed to be highly customisable. For further
//! information about the client, please see the [client's module-level
//! documentation][client].
//!
//! API calls are easy to make using the [`APIClient`] and the api data models,
//! or create and use your own api client by implementing the [`API`] trait. For
//! further information about the api client, please see the [api's module-level
//! documentation][api].
//!
//! A default command framework is provided using the [`Framework`] object,
//! providing easy handling of incoming [telegram bot commands][tg_commands]
//! sent by users of your bot. For further information about the framework,
//! please see the [framework's module-level documentation][framework].
//!
//! Telegram also has their own [API docs for bots][tg docs]. Although this
//! documentation will try to be as accurate as possible, if you need to be
//! sure, refer to their docs.
//!
//! # Resources
//! - [Examples][examples]
//! - [Github Repository]
//! - [crates.io]
//!
//! # Installation
//!
//! Add the following to your `Cargo.toml` file:
//!
//! ```toml
//! [dependencies]
//! telexide = "0.1"
//! ```
//!
//! [examples]: https://github.com/callieve/telexide/tree/master/examples
//! [Github Repository]: https://github.com/callieve/telexide
//! [crates.io]: https://crates.io/crates/telexide
//! [tg docs]: https://core.telegram.org/bots/api
//! [client]: client/index.html
//! [`ClientBuilder`]: client/struct.ClientBuilder.html
//! [`Client`]: client/struct.Client.html
//! [`Client::start`]: client/struct.Client.html#method.start
//! [`APIClient`]: api/struct.APIClient.html
//! [`API`]: api/trait.API.html
//! [api]: api/index.html
//! [tg_commands]: https://core.telegram.org/bots#commands
//! [`Framework`]: framework/struct.Framework.html
//! [framework]: framework/index.html
#![warn(clippy::pedantic)]
#![allow(
dead_code,
clippy::module_inception,
clippy::must_use_candidate,
clippy::missing_errors_doc,
clippy::module_name_repetitions,
clippy::struct_excessive_bools,
clippy::wildcard_imports,
clippy::too_many_lines
)]
pub mod api;
pub mod client;
pub mod framework;
pub mod model;
mod utils;
/// Macros for using the framework and helping with adding listeners
pub mod macros {
pub use super::create_framework;
pub use telexide_proc_macros::{command, prepare_listener};
}
pub use client::Client;
pub use utils::result::{Error, Result};
pub mod prelude {
//! A default set of exports which can be helpful to use.
//!
//! note that [`TelexideError`] is a re-export of [`telexide::Error`] under
//! a different name to remove likely ambiguity with other crate error
//! enums.
//!
//! ## Examples
//!
//! Import all of the exports:
//!
//! ```rust
//! use telexide::prelude::*;
//! ```
//!
//! [`telexide::Error`]: ../enum.Error.html
//! [`TelexideError`]: ../enum.Error.html
pub use super::{
client::{Client, ClientBuilder, Context},
create_framework,
framework::CommandResult,
model::{Message, Update},
Error as TelexideError,
};
pub use telexide_proc_macros::{command, prepare_listener};
}
#[doc(hidden)]
#[allow(unused_imports)]
pub use paste::expr as paste_expr;