This sends Dink notifications into Discord.
It can:
- only allow people who are on your roster
- read that roster from a Google Sheet
- quietly tag the correct Discord member
- split events into forum threads like Loot, Pets, Clues, and so on
If you want the easiest setup, use a public Google Sheet and the default gviz mode. That does not need a Google API key.
Upload these files to your web server:
- index.php
- config.json
- .htaccess if your host uses Apache
Create a file named config.local.json.
The easiest way is:
- Copy
config.json - Rename the copy to
config.local.json - Edit only
config.local.json
Open config.local.json and set:
urlTokendiscordWebhookUrlrosterLookup.googleSheet.sheetId
You will probably also want:
rosterLookup.googleSheet.sheetName
Create a Google Sheet with columns like this:
| Player | Status | Discord ID | Discord Name |
|---|---|---|---|
| Some RSN | Active | DISCORD_USER_ID_HERE | DiscordUser |
Important:
Playermust match the RSN coming from DinkStatusshould beActiveif you are using the default filterDiscord IDshould be the real Discord user ID, not just the display name
If your column names are different, update these in config.local.json:
rosterLookup.columns.playerrosterLookup.columns.statusrosterLookup.columns.discordIdrosterLookup.columns.discordName
If you are using the default easy mode:
- set
rosterLookup.sourcetogoogle_sheet - leave
rosterLookup.googleSheet.modeasgviz - make the sheet public or published so the server can read it
If the sheet is not publicly readable, the no-key method will not work. In that case switch to values_api and use an API key.
In a URL like this:
https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID_HERE/edit#gid=0
the sheet ID is:
YOUR_SHEET_ID_HERE
Put that into:
rosterLookup.googleSheet.sheetId
Create a Discord webhook in the channel you want to post to, then paste it into:
discordWebhookUrl
Set:
urlToken
Example:
If urlToken is your-secret-token, your webhook endpoint becomes something like:
https://your-site.com/dinkmiddleman/your-secret-token
Send a test payload from Dink to your final URL.
If nothing shows up:
- Check that the player exists in the sheet
- Check that their
StatusmatchesrequiredStatus - Check logs/dink.log if logging is enabled
For most people, these are the best settings:
It is the easiest no-API-key Google Sheets option. Your server reads the sheet directly from Google in JSON form.
That is the official Google Sheets API. It is better for restricted-access setups, but it needs a Google API key.
That is the older method that reads the sheet as CSV. It still works, but it is usually not the easiest option anymore.
If you do not want to use a roster at all:
"rosterLookup": {
"enabled": false
}If you just want everything to post into one normal Discord channel:
"forumRouting": {
"enabled": false
}Set any event type to false:
"eventRules": {
"DEATH": {
"enabled": false
}
}Usually means one of these:
- the RSN in Dink does not exactly match the
Playervalue in the sheet - the row status is not
Active - the wrong sheet tab name is set
- the sheet is not public/published while using
gviz
Check:
discordWebhookUrlis correct- the final URL ends with your
urlToken - the event type is enabled
- the event is above any minimum value filters
Try these in order:
- Confirm
sheetIdis correct - Confirm
sheetNamematches the tab name exactly - Make the sheet public/published if using
gviz - Switch to
values_apiif you want a more locked-down setup