Coder Social home page Coder Social logo

jakethedev / tavernbot Goto Github PK

View Code? Open in Web Editor NEW
24.0 2.0 6.0 892 KB

D&D Discord Bot - based on Discord.js and Node 8.

License: MIT License

JavaScript 94.33% Shell 5.67%
discord discord-bot dungeons-and-dragons rpg-tool dice dice-roller dungeon-master hacktoberfest

tavernbot's Introduction



Hi, I'm Jake! ๐Ÿ‘‹

I'm an experienced software engineer with a B.S. in Computer Science and some handy devops and leadership skills. I've enjoyed writing and teaching software since 2014, and I focus on communication, teamwork, and pragmatism. I heard once that "you should write code like the next maintainer knows where you live", and that one just really stuck with me.

If you're here for the Discord Battlebot, you've come to the right place!


Expert with:

  • Writing maintainable/testable code
  • Quickly learning new languages and systems
  • Java | Maven | JavaScript | NPM
  • Debian Linux | Bash | VIM (Custom)
  • Github | Jenkins | Bamboo | CI/CD
  • Devops and workflow optimization
  • Leadership skills and inclusion
  • Mentoring and teaching others
  • Giving constructive feedback
  • Receiving criticism optimistically
  • Collaboration and problem solving
  • Handling vague requirements
  • Applying new knowledge quickly
  • Staying cool under pressure

Experienced with:

  • Docker | Kubernetes | AWS EC2
  • Node.js | HTML5 | CSS3 | PHP
  • C | Golang | Python 3 | Android
  • MySQL | PostgreSQL | MongoDB
  • Apache | Nginx | Networking
  • Project Design | Architecture
  • OOD and Database Design
  • UI/UX Design and Graphics

Additional highlights:

  • Strong remote work skills
  • Excited to learn new technology
  • Can connect well with any team
  • A/V production and editing
  • Capable with music production, mixing, and a six-string

tavernbot's People

Contributors

dependabot[bot] avatar jakethedev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

tavernbot's Issues

Roll Macros in Discord

!macro monkPunch 1d20+7, 1d4 + 2 + 1d6

We want to stash good macros like this. Probably save the last 256 or so. Then we can roll them with

!macro monkP

Because prefix is life.

Webpack Tavernlib for Static Site

I'd like to be able to run an npm script to build this and export it for a website. This could bring a lot of neat features to a page without having to duplicate code.

Could be a great chance to use Parcel

Magic 8 Ball

For those tough decisions. Could be fun to expand to like 40 or 50 responses

Input: !8 Should I attack the dragon?
Output: Most definitely

5e Funnel Character Generator

Talk to Abe, get the lowdown on how he sets that up, and replicate that functionality with the bot. Assuming he's cool with it.

Async Performance Thoughts

We should at least attempt to support async stuff. That sets a good foundation for scale in case people really like this bot

Initiative Tracker

Brainstorm: How to get the bot to track an initiative order? It should only track one, but we want to build it with the idea in mind that multiple parallel games may be played on the server.

I think most trackers suck, and we can do better.

Input: !init Thordak 17, Gimli 19, Frodo 2, Shelob 11, Tracer 21
Output: Initiative is set! Tracer is up, Gimli is on deck!

Input: !init Dopey 3
Output: Dopey has joined the fray! Tracer is up, Gimli is on deck!

Input: !init
Output: Gimli is up! Thordak is on deck!

Input: !init list
Output: Char Name (Init value) in a vertical list, with an arrow pointing at the current initiative.

Input: !init clear
Output: The dust settles and the battle is over.

Steampunk Hooks

I want the bot to be able to generate hooks for modern/future steampunk settings

Cyberpunk Hooks

I want the bot to be able to generate hooks for futuristic cyberpunk settings. We want to talk to some Shadowrun GMs for this stuff

Init Automod Module

Certain filtering and ban actions can be automated, because not everyone is super civil at times

Ideas:

  • Word filters: Some are warnings, some are next-time-you're-banned, and some are autoban
  • Role/permission lockdown for banned people as an option instead of pure kicks

Stop command

!youhavebeenterminated

This should cause the bot to stop, and we'll have a system mechanism that restarts it such as a cron job or a watchdog process (Resolved; #47) This command should be locked down to mods and bot admins.

Move Lookup

This is pretty specific to dungeon world, but could be pretty handy.

Content Generation Link Provider

Not sure how to approach this. There's interest in the idea of having a command, "!links param" or something, where the bot will reply with a few really great links for a thing.

Idea: Links are stored like { "url": "url.place.com", "tags": [ 'tag1', 'tag2', 'etc' ] }, and we should cache a list of each link per tag, so when a user inputs "!list npcna", it finds all 'npcname' links and replies with those.

Examples include things such as donjon.sh links, watabou city generator...

Handy mod commands

Ideas include adding and deleting roles, kicking people, a funny no-impact banhammer command

Fate Character Generator?

First, figure out if there's an SRD to work with. Then, figure out if anyone can possibly use this. Finally, if all that lines up, set up a sweet little generator for new Fate characters

Awesome Dice Roller

In tavernlib, we want to be able to run dice and advanced queries with useful output. As discussed before, this needs to include subtraction support

input: !roll 1d20 +5, 2d6 + 3 - 1d4
Output: @UserThatRolled,
1d20+5: 17
2d6+3-1d4: 11 - 2: 9

Space-age Hooks

I want the bot to be able to generate hooks for futuristic space settings

feature request: coin flip

!flip [n]

[n] is the (optional) number of flipped coins. The bot replies with the total number of heads and total number of tails. You may also want to specify a maximum number.

Spell SRD Lookup

Dig through SRDs for spells. Param one should be the system (5e, PF, fate, DW, AW, SR, etc), and if we have an SRD included in the app for it, run a search and return the spell info. Prefix search should be adequate

Input: !spell 5e fireball, !spell PF cure light
Output: Appropriate spell info or an informative error

Character and NPC generator Specs

Creating NPC/PC

  • class+spec (title only, no powers)
  • race+sub (include stat mods)
  • background from table
  • profs
  • stats
  • 2 knives by default
    • Knife theory table!

Basic Dungeon Generator

Figure out who said it - MT Black? - that there's a perfect formula for a dungeon. It was easy to replicate too: it's got an entrance, traps, loot, fights, secrets, and a boss. We could make a simple ascii map generator that prints out a legend with randomized attributes, giving us dungeons from 5 to like 20 rooms.

Summon command

!summon user
And the bot replies by tagging the user/role within a fancy summoning circle of ASCII art

Remove Role

A user should be able to remove a role that they have, especially flair roles - perhaps we should consider when a mod tries to remove mod from themselves, but let's assume that won't happen initially

Music and Soundscapes

Can the bot play Sword Coast Soundscapes? Will the channel owner even let us do that?

We'll figure all that out another day. Dependencies should be set for this to work, but let's try to test with an MP3 or something from the pi to make sure

High Fantasy Hooks

The bot should be able to generate rpg hooks for high fantasy settings.

This is mostly done, we need more villains and descriptors, but the pieces are in place

Low Fantasy Hooks

I want the bot to be able to generate hooks for low fantasy settings

Monster SRD Search

Monster generator can default to 5e I think, but that's not the easiest way forward. Param one should be the system (5e, PF, fate, DW, AW, SR, etc), and if we have an SRD included in the app for it, run a search and return a stat block

Input: !monster 5e adult red, !monster PF goblin
Output: Appropriate states from appropriate srd

Various stats commands

!bot stats

Mostly just cus I think it's neat. Show system RAM% and, if implemented, roll macro usage. Show total dice rolled and commands requested over life of bot.

Inspired by rad admin panels: https://github.com/epicmaxco/vuestic-admin

UPDATE:
Using Supervisor to solve #47 will give us this, the bot just has to curl itself. Alternately, this would be fun to code...

Autostart and Reloading

We need an init script or something of the sort that we can enable to auto-start the bot on boot, and to reload the bot when code changes. That way we can cron a "git pull master" and have auto-updates work smoothly

Nodemon:
https://www.npmjs.com/package/nodemon
remy/nodemon#1176

Node service init.d creator:
https://www.npmjs.com/package/node-service-linux

PM2, could run a script that runs nodemon:
http://pm2.keymetrics.io/docs/usage/quick-start/

Could shorten this:
https://github.com/chovy/node-startup/blob/master/init.d/node-app

Sass joke cmd upgrade

!sass @user

Ideas include tagging the user in a sassy message, sassing the user and then muting them for 10 seconds, or random variants of a sass message. This would ideally be a decent gag and not an admin command, probably in the chatter.js file in discordlib (or whichever novelty code file replaces it someday)

Future ideas for sass: contact the owner of this and see if we can use these http://www.dmsguild.com/m/product/236600

Modern Hooks

I want the bot to be able to generate hooks for modern settings

Add Role Function

In the discordlib, we need to be able to add roles. Specifically, a user should be able to add a flair role for themselves, but an admin should be able to add roles to a user too.

No one should be able to grant escalation of rights, such as mod roles. Perhaps cache all mod roles on connect, and use that list to compare the requested role?

NPC Name Generator

We want a damn good generator for core D&D races, and probably an additioanl category for rad villain names

Implement a Help system

Core: !help should list commands and what they need to run successfully.

Advanced: I think the best way might be to have each function return some help text when invoked with a single parameter of 'help'. This allows us to be consistent across the app, and to iterate all the loaded functions of tavernlib/discordlib/etc and just concat all the help stuff together for a global "!help all" command

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.