Giter VIP home page Giter VIP logo

shower-pomelo-bot's Introduction

πŸšΏπŸˆπŸ€–

Why?

Automating some of the tedium of organizing when we unlock a new puzzle can free up our energy for solving.

What?

Miscellaneous bot and code for the Shower Pomelo MIT Mystery Hunt team.

Pieces:

  • Discord bot
  • Google Sheets integration
  • Hosted online (currently set up for Heroku)
  • (TODO) Code repository for those puzzles that need it
  • (In progress) Knowledge repository

Planned improvements are tracked as GitHub Issues.

Discordbot

  • Command for new puzzle creates google sheet, new channel, publishes link to sheet, pings @new puzzle in channel, and informs hub
  • Command for solving a puzzle marks and moves the Google sheet, moves the Discord channel to the archive, and informs Hub

Google Sheets integration

  • Shared folder needed
  • Uses a service account
  • Makes a copy of a template sheet, names it, puts it in the applicable folder
  • Updates the title of the sheet when solved

Hosted online somewhere

  • Currently on free tier of Heroku

Code repository for those puzzles that need it

Commonly used functions (assuming python):

  • CSV to Numpy array
  • Alphabetic 1=A 26=Z encoding
  • Basic anagrammer
  • SAT solver
  • Grid game model?

Docker

Build

docker build -t carlyrobison/shower-pomelo-bot:latest .

Push

docker push carlyrobison/shower-pomelo-bot:latest

Secrets

Running in k8s requires the following secret to be created:

kubectl create secret generic gcp \
--from-literal=GOOGLE_DRIVE_HUNT_FOLDER_ID= \
--from-literal=GOOGLE_DRIVE_SOLVED_FOLDER_ID= \
--from-literal=GOOGLE_SHEETS_TEMPLATE_FILE_ID= \
--from-literal=DISCORD_PUZZLEANNOUNCE_CHANNEL= \
--from-literal=DISCORD_PUZZLE_CATEGORY= \
--from-literal=DISCORD_ARCHIVE_CATEGORY= \
--from-literal=GOOGLE_API_CLIENT_EMAIL= \
--from-literal=GOOGLE_API_PRIVATE_KEY= 

shower-pomelo-bot's People

Contributors

carlyrobison avatar thenumenorean avatar

Watchers

 avatar  avatar

shower-pomelo-bot's Issues

Make a $summary command.

Lists number of puzzles (sheets? channels?) outstanding and number of puzzles in the archive folder.

Add puzzle status

This is useful for noting when a puzzle is untriaged, stuck, waiting for a hint, unstuck, or solved.

Possible statuses:

  • Needs Triage
  • Needs work!
  • Currently working on (maybe.... I suspect that's too much overhead)
  • Stuck
  • Waiting (for a hint, for subpuzzle answers)

Add persistence

Use a datastore to keep track of puzzle name, spreadsheet link, discord, answer.

This enables summary functionality and adding tagging later.

Add puzzle tags

Add the ability to add a free-form string (emojis allowed) to the puzzle.

Uses for tags:

  • puzzle status (although we may want this as a first class operation)
  • round(s)
  • content contained in puzzle (music, food, pop culture, physical, logic, Pokemon, etc)

Parts to add (or spawn a new issue):

  • Datastore integration
  • Discord command(s)
  • Display on website

Add a link in Google Sheet to Discord channel.

I don't think you can provide a clickable link to a specific Discord channel. But maybe just adding the channel name? That would make the relation two way, until the channel gets renamed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.