discord-community/wiki/Home.md
Knut Ahlers ac3eee5e0c
Add more documentation
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2021-08-01 00:18:07 +02:00

5.5 KiB

Setup

Discord Bot

  • Go to https://discord.com/developers/applications and create your application
  • Go to "Bot" in your newly created application and click "Add a bot"
  • Give it a name which later will be your bots name, optionally upload an image which will be its profile image
  • Disable "Public Bot", enable the "Privileged Gateway Intents"
  • Copy and note your bots token (you will need to enter it into the bot_token field of the config

Create a config

  • Create a new text file named config.yaml (you can name it otherwise, just adapt the rest of the examples)
  • Put the text shown below ("Config format") into it
  • Adjust the module_configs

Start the bot

Using Docker

# docker pull luzifer/discord-community
# docker run --rm -ti -v /path/to/your/configfile:/config -e CONFIG=/config/config.yaml luzifer/discord-community

Using Binary

  • Download the latest release from the release page
  • Unpack the archive you've downloaded
  • Start the bot in the same directory as your config (or provide a path to the config):
# ./discord-community --config=config.yaml

Config format

---

bot_token: '...'
guild_id: '...'

module_configs:
  - type: module-type
    attributes:
      key: value

...

Modules

Type: clearchannel

Cleans up old messages from a channel (for example announcement channel) which are older than the retention time

Attribute Req. Type Default Value Description
discord_channel_id string ID of the Discord channel to clean up
retention duration How long to keep messages in this channel
cron string 0 * * * * When to execute the cleaner
only_users []string [] When this list contains user IDs, only posts authored by those IDs will be deleted
protect_users []string [] When this list contains user IDs, posts authored by those IDs will not be deleted

Type: liveposting

Announces stream live status based on Discord streaming status

Attribute Req. Type Default Value Description
discord_channel_id string ID of the Discord channel to post the message to
post_text string Message to post to channel use ${displayname} and ${username} as placeholders
twitch_client_id string Twitch client ID the token was issued for
twitch_client_secret string Secret for the Twitch app identified with twitch_client_id
stream_freshness duration 5m How long after stream start to post shoutout
whitelisted_role string Only post for members of this role ID

Type: liverole

Adds live-role to certain group of users if they are streaming on Twitch

Attribute Req. Type Default Value Description
role_streamers_live string Role ID to assign to live streamers
twitch_client_id string Twitch client ID the token was issued for
twitch_client_secret string Secret for the Twitch app identified with twitch_client_id
role_streamers string Only take members with this role ID into account

Type: presence

Updates the presence status of the bot to display the next stream

Attribute Req. Type Default Value Description
fallback_text string What to set the text to when no stream is found (playing <text>)
twitch_channel_id string ID (not name) of the channel to fetch the schedule from
twitch_client_id string Twitch client ID the token was issued for
twitch_token string Token for the user the twitch_channel_id belongs to
cron string * * * * * When to execute the module
schedule_past_time duration 15m How long in the past should the schedule contain an entry

Type: schedule

Posts stream schedule derived from Twitch schedule as embed in Discord channel

Attribute Req. Type Default Value Description
discord_channel_id string ID of the Discord channel to post the message to
embed_title string Title of the embed (used to find the managed post, must be unique for that channel)
twitch_channel_id string ID (not name) of the channel to fetch the schedule from
twitch_client_id string Twitch client ID the token was issued for
twitch_token string Token for the user the twitch_channel_id belongs to
cron string */10 * * * * When to execute the schedule transfer
embed_color int64 0x2ECC71 Integer representation of the hex color for the embed
embed_description string Description for the embed block
embed_thumbnail_height int64 Height of the thumbnail
embed_thumbnail_url string Publically hosted image URL to u100se as thumbnail
embed_thumbnail_width int64 Width of the thumbnail
schedule_entries int64 5 How many schedule entries to add to the embed as fields
schedule_past_time duration 15m How long in the past should the schedule contain an entry