xesite/blog/howto-automate-discord-webh...

61 lines
1.8 KiB
Markdown

---
title: How to Automate Discord Message Posting With Webhooks and Cron
date: 2018-03-29
series: howto
---
Most Linux systems have [`cron`](https://en.wikipedia.org/wiki/Cron) installed to run programs at given intervals. An example usecase would be to install package updates every Monday at 9 am (keep the sysadmins awake!).
Discord lets us post things using [webhooks](https://discordapp.com/developers/docs/resources/webhook). Combining this with cron lets us create automated message posting bots at arbitrary intervals.
## The message posting script
Somewhere on disk, copy down the following script:
```sh
#!/bin/sh
# msgpost.sh
# change MESSAGE, WEBHOOK and USERNAME as makes sense
# This code is trivial, and not covered by any license or warranty.
# explode on errors
set -e
MESSAGE='haha memes are funny xD'
WEBHOOK=https://discordapp.com/api/webhooks/0892379892092/AFkljAoiuj098oKA_98kjlA85jds
USERNAME=KRONK
curl -X POST \
-F "content=${MESSAGE}" \
-F "username=${USERNAME}" \
"${WEBHOOK}"
```
Test run it and get a message like this:
![example discord message](https://i.imgur.com/dtjXcei.png)
## How to automate it
To automate it, first open your [`crontab(5)`](http://man7.org/linux/man-pages/man5/crontab.5.html) file:
```console
$ crontab -e
```
Then add a crontab entry as such:
```crontab
# Post this funny message every hour, on the hour
0 * * * * sh /path/to/msgpost.sh
# Also valid with some implementations of cron (non-standard)
@hourly sh /path/to/msgpost.sh
```
Then save this with your editor and it will be loaded into the cron daemon. For more information on crontab formats, see [here](https://crontab.guru/).
To run multiple copies of this, create multiple copies of `msgpost.sh` on your drive with multiple crontab entries.
Have fun :)