1#![warn(clippy::all, clippy::pedantic)]
6#![allow(clippy::module_name_repetitions)]
7#![allow(clippy::missing_errors_doc)]
8#![allow(clippy::missing_panics_doc)]
9#![allow(clippy::must_use_candidate)]
10#![allow(clippy::doc_markdown)]
11#![allow(clippy::return_self_not_must_use)]
12#![allow(clippy::needless_pass_by_value)]
13#![allow(clippy::uninlined_format_args)]
14#![allow(clippy::assigning_clones)]
15#![allow(clippy::match_same_arms)]
16#![allow(clippy::cast_possible_wrap)]
17#![allow(clippy::redundant_closure_for_method_calls)]
18
19pub mod card;
20pub mod client;
21pub mod credential;
22pub mod error;
23pub mod handlers;
24pub mod messages;
25pub mod transport;
26
27pub use client::{ClientBuilder, DingTalkStreamClient};
28pub use credential::Credential;
29pub use error::{Error, Result};
30
31pub use handlers::callback::CallbackHandler;
33pub use handlers::chatbot::{AsyncChatbotHandler, ChatbotHandler, ChatbotReplier};
34pub use handlers::event::EventHandler;
35pub use handlers::graph::{GraphHandler, GraphReplier};
36pub use handlers::system::SystemHandler;
37
38pub use messages::card_callback::{CARD_CALLBACK_ROUTER_TOPIC, CardCallbackMessage};
40pub use messages::chatbot::{
41 AtUser, AudioContent, ChatbotMessage, ConversationMessage, FileContent, HostingContext,
42 ImageContent, RichTextContent, TextContent, VideoContent,
43};
44pub use messages::frames::{AckMessage, Headers, MessageBody, StreamMessage};
45pub use messages::graph::{GraphMessage, GraphRequest, GraphResponse, RequestLine, StatusLine};
46
47pub use card::instances::{
49 AIMarkdownCardInstance, CarouselCardInstance, MarkdownButtonCardInstance, MarkdownCardInstance,
50 RPAPluginCardInstance,
51};
52pub use card::replier::{AICardReplier, AICardStatus, CardReplier};
53pub use card::templates::{
54 generate_multi_text_image_card_data, generate_multi_text_line_card_data,
55};
56
57pub use messages::chatbot::{reply_specified_group_chat, reply_specified_single_chat};