Files
markov-discord/README.md
2020-01-11 20:50:53 -06:00

4.9 KiB

MarkBot for Discord

A Markov chain bot using markov-strings.

Usage

  1. Train the bot in a lengthy text channel:
    • User: !mark train
    • Markbot: @User, Finished training from past 76394 messages.
  2. Ask the bot to say something:
    • User: !mark
    • Markbot: This Shopko has a Linux release

Setup

First, create a Discord bot application.

Windows

Requirements

Setup

  1. Install Node.js 12.0 or newer.

  2. Download this repository using git in a command prompt

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

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

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

    # Install Windows build tools (if you didn't install build tools with Node)
    npm install --global --production windows-build-tools
    # NPM install non-development packages
    npm install --production
    # Build the Typescript
    npm run build
    
  4. Create a file called config.json in the project directory with the contents:

    {
      "prefix":"!mark",
      "game":"\"!mark help\" for help",
      "token":"k5NzE2NDg1MTIwMjc0ODQ0Nj.DSnXwg.ttNotARealToken5p3WfDoUxhiH"
    }
    

    Feel free to change the command prefix, game display. Add your bot token.

  5. Run the bot:

    npm start
    

Debian Linux

Requirements

  • Node.js 12.0+
  • Python 2.7 (for erlpack)
  • C++ build tools (for erlpack)

Download

# Clone this repository
git clone https://github.com/charlocharlie/markov-discord.git
cd markov-discord

Configure

Create a file called config.json in the project directory with the contents:

{
  "prefix":"!mark",
  "game":"\"!mark help\" for help",
  "token":"k5NzE2NDg1MTIwMjc0ODQ0Nj.DSnXwg.ttNotARealToken5p3WfDoUxhiH"
}

Feel free to change the command prefix, game display. Add your bot token.

Install and Run

# Install Node.js if you haven't already
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
nvm install node

# NPM install non-development packages
npm install --production

# If you run into build errors, install the following packages:
sudo apt-get install python -y
sudo apt-get install build-essential -y

# Build the Typescript
npm run build

# Start the program
npm start

Docker

Setup with Docker Hub image

  1. Install Docker for your OS.

  2. Open a command prompts and run:

    docker pull charlocharlie/markov-discord
    docker run --rm -d charlocharlie/markov-discord:latest
    

Setup with source

  1. Install Docker for your OS.

  2. Download this repository using git in a command prompt

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

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

  3. Open a command prompt in the markov-discord folder and run this one-liner:

    docker run --rm -e TOKEN=YOUR.BOT.TOKEN -v config:/usr/src/markbot/config -it $(docker build -q .)
    # Be patient as the build output is suppressed
    

Changelog

0.7.1

  • Readme updates
  • Config loading fix
  • Fix min score
  • Add generator options to config
  • Document Node 12 update

0.7.0

  • Convert project to Typescript
  • Optimize Docker build (smaller image)
  • Load corpus from filesystem to reduce memory load

0.6.2

  • Fix MarkovDB not loading on boot

0.6.1

  • Fix bot crashing on scheduled regen

0.6.0

  • Added Docker deploy functionality.
  • Moved config and database to ./config directory. Existing configs will be migrated.
  • Config-less support via bot token located in an environment variable.
  • Update dependencies.
  • Change corpus regen time to 4 AM.

0.5.0

  • Fixed bug where !mark help didn't work.
  • Only admins can train.
  • The bot responds when mentioned.
  • The bot cannot mention @everyone.
  • Added version number to help.
  • Added !mark tts for a quieter TTS response.
  • Readme overhaul.
  • Simpler config loading.

0.4.0

  • Huge refactor.
  • Added !mark debug which sends debug info alongside the message.
  • Converted the fetchMessages function to async/await (updating the requirement to Node.js 8).
  • Updated module versions.
  • Added faster unique-array-by-property function
  • Added linting and linted the project.

0.3.0

  • Added TTS support and random message attachments.
  • Deleted messages no longer persist in the database longer than 24 hours.

0.2.0

  • Updated training algorithm and data structure.

Thanks

Thanks to BotMaker-for-Discord which I used as a reference when during development.