slack_rust/lib.rs
1//! [Slack API Client](https://api.slack.com)
2//!
3//! It supports [SocketMode](https://api.slack.com/apis/connections/socket), [Event API](https://api.slack.com/apis/connections/events-api), and [WEB API](https://api.slack.com/web).
4//!
5//! # Usage
6//!
7//! ## [Web API](https://api.slack.com/methods)
8//!
9//! ```no_run
10//! use slack::chat::post_message::{post_message, PostMessageRequest};
11//! use slack::http_client::default_client;
12//! use slack_rust as slack;
13//! use std::env;
14//!
15//! #[async_std::main]
16//! async fn main() {
17//! let slack_bot_token =
18//! env::var("SLACK_BOT_TOKEN").unwrap_or_else(|_| panic!("slack bot token is not set."));
19//!
20//! let slack_api_client = default_client();
21//! let param = PostMessageRequest {
22//! channel: "channel_id".to_string(),
23//! text: Some("Hello world!!".to_string()),
24//! ..Default::default()
25//! };
26//!
27//! let response = post_message(&slack_api_client, ¶m, &slack_bot_token)
28//! .await
29//! .expect("api call error");
30//! println!("{:?}", response);
31//! }
32//! ```
33//!
34//! ### Builder
35//!
36//! ```ignore
37//! let attachments = vec![Attachment::builder()
38//! .color("#36a64f".to_string())
39//! .author_name("slack-rust".to_string())
40//! .author_icon("https://!2.bp.blogspot.com/-3o7K8_p8NNM/WGCRsl8GiCI/AAAAAAABAoc/XKnspjvc0YIoOiSRK9HW6wXhtlnZvHQ9QCLcB/s800/pyoko_hashiru.png".to_string())
41//! .title("slack_rust_example".to_string())
42//! .build()];
43//! let param = PostMessageRequest::builder(slack_channel_id)
44//! .text("Hello World!!".to_string())
45//! .attachments(attachments)
46//! .build();
47//! ```
48//!
49//! ## [Socket Mode](https://api.slack.com/apis/connections/socket-implement)
50//!
51//! ```no_run
52//! use async_trait::async_trait;
53//! use slack::chat::post_message::{post_message, PostMessageRequest};
54//! use slack::http_client::{default_client, SlackWebAPIClient};
55//! use slack::socket::event::{HelloEvent, InteractiveEvent};
56//! use slack::socket::socket_mode::{ack, EventHandler, SocketMode, Stream};
57//! use slack::views::open::{open, OpenRequest};
58//! use slack::views::view::{View, ViewType};
59//! use slack_rust as slack;
60//! use std::env;
61//!
62//! #[async_std::main]
63//! async fn main() {
64//! env_logger::init();
65//!
66//! let slack_app_token =
67//! env::var("SLACK_APP_TOKEN").unwrap_or_else(|_| panic!("slack app token is not set."));
68//! let slack_bot_token =
69//! env::var("SLACK_BOT_TOKEN").unwrap_or_else(|_| panic!("slack bot token is not set."));
70//! let api_client = default_client();
71//!
72//! SocketMode::new(api_client, slack_app_token, slack_bot_token)
73//! .option_parameter("SLACK_CHANNEL_ID".to_string(), "channel_id".to_string())
74//! .run(&mut Handler)
75//! .await
76//! .unwrap_or_else(|_| panic!("socket mode run error."));
77//! }
78//!
79//! pub struct Handler;
80//!
81//! #[allow(unused_variables)]
82//! #[async_trait]
83//! impl<S> EventHandler<S> for Handler
84//! where
85//! S: SlackWebAPIClient,
86//! {
87//! async fn on_hello(&mut self, socket_mode: &SocketMode<S>, e: HelloEvent, s: &mut Stream) {
88//! log::info!("hello event: {:?}", e);
89//! }
90//! async fn on_interactive(
91//! &mut self,
92//! socket_mode: &SocketMode<S>,
93//! e: InteractiveEvent,
94//! s: &mut Stream,
95//! ) {
96//! log::info!("interactive event: {:?}", e);
97//! ack(&e.envelope_id, s)
98//! .await
99//! .expect("socket mode ack error.");
100//!
101//! let request = PostMessageRequest {
102//! channel: socket_mode
103//! .option_parameter
104//! .get("SLACK_CHANNEL_ID")
105//! .unwrap()
106//! .to_string(),
107//! text: Some("Hello World!!".to_string()),
108//! ..Default::default()
109//! };
110//! let response = post_message(&socket_mode.api_client, &request, &socket_mode.bot_token)
111//! .await
112//! .expect("post message api error.");
113//! log::info!("post message api response: {:?}", response);
114//! }
115//! }
116//! ```
117
118pub mod apps;
119pub mod attachment;
120pub mod auth;
121pub mod block;
122pub mod channels;
123pub mod chat;
124pub mod comments;
125pub mod conversations;
126pub mod dnd;
127pub mod error;
128pub mod event_api;
129pub mod files;
130pub mod http_client;
131pub mod items;
132pub mod payloads;
133pub mod profiles;
134pub mod reactions;
135pub mod reminders;
136pub mod socket;
137pub mod team;
138pub mod usergroups;
139pub mod users;
140pub mod views;