StampyAI / stampy

A Discord bot for the Robert Miles AI server
37 stars 9 forks source link

stampy banner image

stam.py

This repository contains the code for Stampy The Safety Bot (@Stampy). Stampy’s primary purpose is to share questions from Rob Miles YouTube comments section and responses from Rob Miles AI Discord. Questions from YouTube that are interesting spark conversations on discord. Responses to the YouTube question on Discord can then be posted by Stampy as a reply to the YouTube comment.

You can also directly interact with Stampy on Discord (see invite link below). Ask it a question by messaging Stampy <YOUR QUESTION> on any channel.

Discord

Discussion and planning is primarily done on Discord. You are welcome to join via this invite.

Developer Set-up

  1. Install Requirements:
  2. If you want to contribute changes, fork and then clone the repo
    • To fork, click the fork button on top of this page and accept default settings.
    • To clone run git clone https://github.com/<USERNAME>/stampy.git
  3. Create stampy python conda environment
    • Change directory to where you downloaded the stampy github repository: cd stampy
    • Run conda env create -f environment.yml This will create an anaconda python kernel with all the dependencies required to run the current version of stampy.
  4. If you want to contribute to Stampy dev, you may want access to the shared Stampy test server. In the #stampy-dev channel, ask to be given access to:
    • #stampy-dev-priv channel to access the .env information
    • Stampy's Test Server
  5. Set Environment Variables
    • if running your own Stampy instance:
      • Create .env in the root of the stampy repository (so dotenv can find it)
      • In .env, set at least the following variables:
        • ENVIRONMENT_TYPE to "development" or "production".
        • DISCORD_TOKEN to your bot token
        • DISCORD_GUILD to your server ID
        • DATABASE_PATH to the path to the Q&A database (normally in ./database/stampy.db).
      • STAMPY_MODULES: list of your desired modules, or leave unset to load all modules in the ./modules/ directory. You probably don't want all, as some of them aren't applicable to servers other than Rob's.
        • Details about other variables can be found in the .env section below.
    • if working on our Stampy instance:
      • In the #stampy-dev-priv channel, go to pinned messages, and copy the message that starts with DISCORD_TOKEN
      • Create .env in the root of the stampy repository (so dotenv can find it)
      • Paste the message into .env
      • Add coda api token to .env: first create a coda account, then create a token in account settings, then add CODA_API_TOKEN="your-token-here" to .env
  6. Verify that your setup is working
    • Run conda activate stampy
    • Then run python3 stam.py or python stam.py from the base directory of the repository.
      • Alternatively, if you prefer to restart stampy on any file save (and if you have NodeJS installed), you can run npx nodemon stamp.py.
    • Go to Stampy's Test Server, then #stampy-dev-priv channel.
    • You should see a message from Stampy saying I just (re)started from git branch master by <your name>!
    • If you ask Stampy a question (e.g. Stampy, what is AI), you should see messages in your terminal processing this question.

Environment variables

All lists are space-separated. To find more specifics of what each variable affects, you can grep for the lower-case version of the name.

You'll need at least these:

Not required:

Specific modules (excluding LLM stuff):

LLM stuff:

Docker

The repo contains both a Dockerfile and a docker-compose. Stampy can be configured through the .env file. The docker-compose file will bind-mount the directory ./local into /stampydata in the container. It changes FACTOID_DATABASE_PATH to /stampydata/Factoids.db so it will stay across reboots.

The Stampy Docker-compose server can be brought up with:

sudo docker compose build && sudo docker compose up

It can be shut down with double Ctrl-C. To make Stampy a daemon, add -d to the up command.

The Dockerfile can also execute Stampy's tests by adding STAMPY_RUN_TESTS="TRUE" to the .env file.

How to Contribute

Check out the currently open github issues and pull requests, if you see something open you can help out with add a comment. Most coordinations is done through live voice calls in the discord.

If you make a change to source code, please create a new branch first, then commit your changes there. Open a pull request on github and ask for other developers to review your code before merging.

See TUTORIAL.md for a step-by-step tutorial detailing how to add features.