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, &param, &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;