Skip to content
Write-only command-line Discord webhook integration written in 100% Bash script
Branch: master
Clone or download
Latest commit 30a3016 Oct 20, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs update readme Sep 8, 2018
tests tests are broken Aug 16, 2018
.gitignore move notification script to makefile Aug 14, 2018
.travis.yml move notification script to makefile Aug 14, 2018
LICENSE Create LICENSE Aug 14, 2018
Makefile add site Aug 17, 2018
README.md update readme Sep 8, 2018
discord.sh Fix typo Oct 20, 2018
run_tests.sh update tests Aug 15, 2018

README.md


discord.sh

Travis CI (master branch) GitHub stars

Write-only command-line integration for Discord webhooks, written in 100% Bash script. Influenced heavily by slack-cli.

Table of Contents

Features

  • Create and send very customizable and beautiful Discord messages 🎉
  • Less than 400 lines of pure Bash 😎
  • Extremely lightweight ⚡ 🚀
  • Only requires curl and jq to run 🔥

Dependencies

  • curl (http requests)
  • bats (tests)
  • jq (JSON parsing)

Usage

1. Setting up a Discord webhook.

  1. Setup a webhook in the desired Discord text channel
  2. Download (or clone) a copy of discord.sh
  3. Point discord.sh at a webhook endpoint (see below)
  4. Go nuts.

2. Specifying a Webhook URL within discord.sh

There are three ways to point discord.sh at a webhook endpoint, in order of priority that discord.sh takes:

  1. Pass the webhook URL as an argument to discord.sh using --webhook-url
  2. Set an environment variable called $DISCORD_WEBHOOK
  3. Create a file called .webhook in the same directory as discord.sh, containing only the webhook URL

3. Using the script

Simple chat example

$ ./discord.sh --webhook-url=$WEBHOOK --text "Hello, world!"

Simple chat example with custom username and avatar

$ ./discord.sh \
  --webhook-url=$WEBHOOK \
  --username "NotificationBot" \
  --avatar "https://i.imgur.com/12jyR5Q.png" \
  --text "Hello, world!"

Advanced chat example using an embed (using all possible options)

$ ./discord.sh \
  --webhook-url=$WEBHOOK \
  --username "NotificationBot" \
  --avatar "https://i.imgur.com/12jyR5Q.png" \
  --text "Check out this embed!" \
  --title "New Notification!" \
  --description "This is a description\nPretty cool huh?" \
  --color "0xFFFFFF" \
  --url "https://github.com/ChaoticWeg/discord.sh" \
  --author "discord.sh v1.0" \
  --author-url "https://github.com/ChaoticWeg/discord.sh" \
  --author-icon "https://i.imgur.com/12jyR5Q.png" \
  --image "https://i.imgur.com/12jyR5Q.png" \
  --thumbnail "https://i.imgur.com/12jyR5Q.png" \
  --footer "discord.sh v1.0" \
  --footer-icon "https://i.imgur.com/12jyR5Q.png" \
  --timestamp

Sending a file (up to 8MB, per Discord limitations)

Note: per the Discord webhook API, posts cannot contain embeds and file attachments. Therefore, discord.sh will bail out when trying to build a message with embeds and files. The best practice is to send the message with embeds before sending a file.

$ ./discord.sh \
  --webhook-url=$WEBHOOK \
  --file README.md \
  --username "Notification Bot" \
  --text "Check out this README.md file!"

Options

--webhook-url <url>

This should be set to your Discord webhook URL. You may alternatively set the environment variable DISCORD_WEBHOOK to your Discord webhook URL and that way you don't have to pass in the webhook URL inline.

--text <string>

This is basic text like shown below.

--username <string>

You can override the username of the webhook "bot" with this flag.

--avatar <url>

You can override the avatar of the webhook "bot" with this flag.

Advanced Options

Now we're going to look at how to setup a custom embed message.

--title <string>

This option allows you to set the title of the embed.

--description <string>

This option allows you to set the description of the embed.

--color <string>

This option allows you to set color on the left of the embed.

Input Syntax 1: 0x + COLOR HEX

Input Syntax 2: COLOR DEC

Input Example 1: --color 0xFFFFFF

Input Example 2: --color 16777215

--url <url>

This option allows you to set the URL of the --title flag within the embed.

--author <string>

This option allows you to set the author name of the embed.

--author-url <url>

This option allows you to set the author URL of the --author flag within the embed.

--author-icon <url>

This option allows you to set the author icon that sits to the left of the --author flag within the embed.

--image <url>

This option allows you to set the image that sits within the embed.

--thumbnail <url>

This option allows you to set the thumbnail that sits to the right within the embed.

--footer <string>

This option allows you to set the thumbnail that sits to the right within the embed.

--footer-icon <url>

This option allows you to set the footer icon that sites to the right of the --footer flag within the embed.

--timestamp

This option allows you to define whether the timestamp is displayed on the embed message or not.

Input Type: None

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

GPL-3.0

Made with 💖 by ChaoticWeg || Documentation and design by Suce and Matt

You can’t perform that action at this time.