Skip to content

A Markov chain Discord chat bot. Generates unique messages by learning from past messages. Also occasionally attaches images to messages.

Notifications You must be signed in to change notification settings

claabs/markov-discord

Repository files navigation

MarkBot for Discord

A Markov chain bot using markov-strings.

Usage

  1. Configure what channels you want the bot to listen/learn from:
    • User: /listen modify
    • Bot: Select which channels your would like the bot to actively listen to
  2. Train the bot in a lengthy text channel:
    • User: /train
    • Bot: Parsing past messages from 5 channel(s).
  3. Ask the bot to say something:
    • User: /mark
    • Bot: worms are not baby snakes, by the way

Training from a file

Using the json option in the /train command, you can import a list of messages. An example JSON file can be seen here.

Setup

This bot stores your Discord server's entire message history, so a public instance to invite to your server is not available due to obvious data privacy concerns. Instead, you can host it yourself.

  1. Create a Discord bot application
  2. Under the "Bot" section, enable the "Message Content Intent", and copy the token for later.
  3. Setup and configure the bot using one of the below methods:

Docker

Running this bot in Docker is the easiest way to ensure it runs as expected and can easily recieve updates.

  1. Install Docker for your OS

  2. Open a command prompt and run:

    docker run --restart unless-stopped -d -v /my/host/dir:/usr/app/config ghcr.io/claabs/markov-discord:latest

    Where /my/host/dir is a accessible path on your system. --restart=unless-stopped is recommended in case an unexpected error crashes the bot.

  3. The Docker container will create a default config file in your mounted volume (/my/host/dir). Open it and add your bot token. You may change any other values to your liking as well. Details for each configuration item can be found here: https://claabs.github.io/markov-discord/classes/AppConfig.html

  4. Run the container again and use the invite link printed to the logs.

Windows

  1. Install Node.js 16 or newer.

  2. Download this repository using git in a command prompt

    git clone https://github.com/claabs/markov-discord.git

    or by just downloading and extracting the project zip from GitHub.

  3. Open a command prompt in the markov-discord folder.

    # NPM install non-development packages
    npm ci
    # Build the Typescript
    npm run build
    # Initialize the config
    npm start
  4. The program will create a config/config.json in the project folder. Open it and add your bot token. You may change any other values to your liking as well. Details for each configuration item can be found here: https://claabs.github.io/markov-discord/classes/AppConfig.html

  5. Run the bot:

    npm start

    And use the invite link printed to the logs.