foukoapi 0.1.0-alpha.1

Cross-platform bot framework in Rust. Write your handlers once, run the same bot on Telegram and Discord with shared accounts, embeds, keyboards and SQLite storage.
Documentation
//! # FoukoApi
//!
//! A Rust framework for building cross-platform bots. Write a command once,
//! run it on Telegram, Discord and anything you plug in next.
//!
//! ```no_run
//! use foukoapi::{Bot, Platform};
//!
//! # async fn run() -> foukoapi::Result<()> {
//! Bot::new()
//!     .add_platform(Platform::telegram(std::env::var("TG_TOKEN")?))
//!     .add_platform(Platform::discord(std::env::var("DISCORD_TOKEN")?))
//!     .command("/help", |ctx| async move {
//!         ctx.reply("hi! i work everywhere").await
//!     })
//!     .run()
//!     .await
//! # }
//! ```
//!
//! FoukoApi is in early development. Expect the API to evolve until `0.1` lands.

#![cfg_attr(docsrs, feature(doc_cfg))]
#![warn(missing_docs, rust_2018_idioms)]

mod accounts;
mod bot;
mod command;
pub mod config;
mod ctx;
mod error;
mod keyboard;
mod platform;
mod storage;
pub mod util;

pub mod adapters;

pub use accounts::Accounts;
pub use bot::{Bot, TextMatch};
pub use command::{Command, Handler};
pub use config::{bootstrap_env, DbUrl, EnvState};
pub use ctx::{Ctx, ReplyFn};
pub use error::{Error, Result};
pub use keyboard::{Button, Embed, EmbedField, Keyboard, Reply};
pub use platform::{Platform, PlatformKind};
#[cfg(feature = "sqlite")]
pub use storage::SqliteStorage;
pub use storage::{open_storage, open_storage_from, AnyStorage, MemoryStorage, Storage};