#slack #webhook #messaging #hook

slack-hook

A rust crate for sending messages to Slack via webhooks

14 releases (8 breaking)

Uses old Rust 2015

0.8.0 Oct 23, 2018
0.6.0 Sep 26, 2017
0.5.0 Jul 24, 2017
0.3.0 Feb 26, 2017
0.0.1 Dec 30, 2014

#21 in #slack

Download history 566/week @ 2023-11-20 441/week @ 2023-11-27 497/week @ 2023-12-04 476/week @ 2023-12-11 543/week @ 2023-12-18 277/week @ 2023-12-25 352/week @ 2024-01-01 523/week @ 2024-01-08 789/week @ 2024-01-15 835/week @ 2024-01-22 712/week @ 2024-01-29 866/week @ 2024-02-05 776/week @ 2024-02-12 1087/week @ 2024-02-19 1215/week @ 2024-02-26 1032/week @ 2024-03-04

4,138 downloads per month
Used in 6 crates (5 directly)

MIT/Apache

41KB
882 lines

rust-slack

Travis Build Status Documentation crates.io MIT licensed Apache licensed

A rust crate for sending messages to Slack via webhooks.

Slack is a messaging platform for team collaboration.

Upgrading? See the CHANGELOG.

Requires rust 1.17 or newer.

Usage

Add this to your Cargo.toml:

[dependencies]
slack-hook = "0.7"

Add the crate to your existing project:

extern crate slack_hook;
use slack_hook::{Slack, PayloadBuilder};

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);
    match res {
        Ok(()) => println!("ok"),
        Err(x) => println!("ERR: {:?}",x)
    }
}

Attachments

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.

License

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.

Dependencies

~24MB
~518K SLoC