Crates.io | slack-hook2 |
lib.rs | slack-hook2 |
version | 0.10.1 |
source | src |
created_at | 2020-02-19 14:15:38.151578 |
updated_at | 2022-11-25 04:37:29.973718 |
description | A rust crate for sending messages to Slack via webhooks. |
homepage | https://github.com/clux/rust-slack |
repository | https://github.com/clux/rust-slack |
max_upload_size | |
id | 210590 |
size | 55,582 |
A rust crate for sending messages to Slack via webhooks. A modernized fork of the slack-hook
crate. Happy to merge things back in the future.
Slack is a messaging platform for team collaboration.
Upgrading? See the CHANGELOG.
Requires rust 1.35 or newer.
NOTE: Slack webhooks are deprecated. Use this crate only for legacy codebases.
Add this to your Cargo.toml
:
[dependencies]
slack-hook2 = "0.10.1"
Add the crate to your existing project:
use slack_hook2::{Slack, PayloadBuilder};
#[tokio::main]
async fn main() {
let slack = Slack::new("https://hooks.slack.com/services/abc/123/45z").unwrap();
let p = PayloadBuilder::new()
.text("test message")
.channel("#testing")
.username("My Bot")
.icon_emoji(":chart_with_upwards_trend:")
.build()
.unwrap();
let res = slack.send(&p).await;
match res {
Ok(()) => println!("ok"),
Err(x) => println!("ERR: {:?}",x)
}
}
To create a payload with just an attachment:
extern crate slack_hook;
use slack_hook::{PayloadBuilder, AttachmentBuilder};
fn main() {
let _ = PayloadBuilder::new()
.attachments(vec![AttachmentBuilder::new("my text").color("#b13d41").build().unwrap()])
.build()
.unwrap();
}
Slack messaging API permits you to send links within text. However, given the different formatting rules, these text fragments need to be specified as follows:
extern crate slack_hook;
use slack_hook::{PayloadBuilder, SlackTextContent, SlackLink};
use slack_hook::SlackTextContent::{Text, Link};
fn main() {
let _ = PayloadBuilder::new()
.text(vec![
Text("Hello".into()),
Link(SlackLink::new("https://google.com", "Google")),
Text(", nice to know you.".into())
].as_slice())
.build()
.unwrap();
}
Sending this payload will print the following in slack (note: each element of the Vec
has been
space-separated):
Hello Google, nice to know you.
This technique can be used for any function that has the Into<SlackText>
trait bound.
This library is distributed under similar terms to Rust: dual licensed under the MIT license and the Apache license (version 2.0).
See LICENSE-APACHE, LICENSE-MIT, and COPYRIGHT for details.