Giter VIP home page Giter VIP logo

boop_bot's Introduction

Boop Bot

A Discord bot written in NodeJS as part of my A-Commit-A-Day challenge.

What is "A-Commit-A-Day"?

A-Commit-A-Day is a challenge I've coined which pushes programmers to make at least one commit to their Github every day.

Why A-Commit-A-Day?

I have had trouble motivating myself to start working on projects. College and studying has kept me occupied as of late, and I have had little time to think about what I want to make. Additonally, I have ADHD and have difficulties remembering any ideas I might come up with unless I have them down on paper. This has resulted in an activity gap in my commit history, which is something I would like to amend in order to keep myself invigorated.

Should I Give A-Commit-A-Day A Try?

If you are like me, and you have trouble keeping yourself up to speed on development technologies and project ideas, I would definitely give A-Commit-A-Day a shot. It never hurts to try!

So what, you can just add a comment to your code and call it a (commit-a) day? (hehe, I like puns)

Definitely not. The point of A-Commit-A-Day is to remind your brain to work on something programming-related at least once a day. That being said, you have to either enjoy programming or have the willpower to commit to it to fulfill the challenge.

With that in mind, it is a good idea to keep a roadmap of your programs. In my case, I've created a constantly growing to-do list for Boop Bot, which I update whenever I run into a bug or come up with an idea for a feature or a way I can optimize my code.

I'm not really sure what to make though?

If you're a bit lost and cannot decide what you want to try out, take a look at a couple of articles to give you some ideas:


Contributing

I am not currently looking for contributors to the project. This is something I would like to pursue on my own, however any feedback would be extremely helpful and appreciated.

Installation

Since Boop Bot is open source, it would only be fair for me to write a guide on starting the bot.

Boop Bot is written in NodeJS, so first make sure you have NodeJS installed.
Windows (x64)
Linux/Mac (package manager guide)

When that is done, navigate to your cloned boop_bot folder and type

npm install && npm i -g nodemon

npm install will install all of the necessary packages required to run Boop Bot, and npm i -g nodemon installs nodemon, which is required to run the bot in developer mode.
Next, create a Discord bot account and write this to .env in the project root:

TOKEN=YOUR_TOKEN_HERE

Next, check out Firebase and create a Firestore, then download your service key, put the json file in the services directory and name it serviceAccountKey.json. .env and serviceAccountKey.json are both in .gitignore, so you won't have to worry about accidentally pushing them.

When all is set and done, open your terminal in the boop_bot directory and type npm test to start the bot.

Changelog

1.0.0 - Feb 23, 2021

  • Initial release, added readme and restructured folders for readability and scalability.

1.0.1 - Feb 24, 2021

  • Added printme command.
  • Reformatted commandhandler convention.
  • Patched up readme slightly. (I found some typos and such)

1.0.2 - Feb 25, 2021

  • Reminders <30s are saved to memory as timeouts so they can be send sooner.

1.0.3 - Feb 26, 2021

  • Added error catcher to index.js (for no good reason, just wanted to follow good practices)
  • Cleaned up packages (removed redundant references, etc.)
  • I wasn't motivated to do much more today. I feel unmotivated at the moment. Hopefully that will change tomorrow.

Roadmap

+ - Implemented
- - Pending or in the works

TODO - Features
+ fix argument length ("some text" only saves "some")
+ throw error for invalid alias stamp
+ load reminders <30s to cache
- newline support in $b remind
+ update command help tab
- clear expired reminders on bot startup
- add multiple reminds support
- add $b getreminds and $b removeremind
- dynamic time support for $b remind (i.e. $b remind 2h30m clean room)
+ add printme command
TODO - Meta
+ Categorize each section of the application into separate folders
+ Encapsulate commands in their own files, all in /commands/
+ create folder /src/ and put all code in there
+ build coherent readme (talk about a-commit-a-day and stuff)
+ clean up packages (i.e. remove firestore from firebase.js)
- optimize message embeds (save them to cache instead of re-creating every time a command is run)
+ encapsulate string functions into stringutils.js
+ restructure commandhandler to abide by javascript convention
- clean up intellisense in commandhandler.js

boop_bot's People

Contributors

sevanescence avatar

Stargazers

Mingi Hwang avatar

Watchers

James Cloos avatar  avatar

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.