nationalcollegiateesports / discord-bot

MIT License
2 stars 0 forks source link

Figure out bot architecture #9

Open themaxdavitt opened 3 years ago

themaxdavitt commented 3 years ago

We need to figure out how we want to architect this bot to allow ease in:

themaxdavitt commented 3 years ago

I looked over a bunch of different bots and bot frameworks and have a rough idea of how I want to structure this. Open to comments of course!

discord-bot
├── __tests__
│   └── ...
├── assets
│   ├── favicon.ico
│   └── ...
├── bin
│   ├── api.js
│   ├── bot.js
│   └── ...
├── out
│   ├── index.html
│   └── ...
├── src
│   ├── api
│   │   └── ...
│   ├── bot
│   │   ├── commands
│   │   │   └── ...
│   │   ├── events
│   │   │   └── ...
│   │   └── ...
│   ├── common
│   │   └── ...
│   └── dashboard
│       └── ...
├── package.json
└── ...

We already agreed up on using discord.js but I'm not sure about whether or not we should use Akairo or Commando as the framework on top of it. Both seem fairly well documented, are updated at similar rates, and are pretty similar usage-wise from the brief time I've spent comparing them. It seems like Akairo allows for more advanced functionality (as well as MongoDB-based configuration) though.

Let me know what you guys think!

EDIT: Wanted to clarify that the MongoDB support seems to be designed for using guild IDs as keys.

EDIT 2: Also want to mention that we're of course going to have more files and folders in the repo e.g. for CI.

themaxdavitt commented 3 years ago

Closed a few related issues, we can refer back to them for info of course though.

eritbh commented 3 years ago

I don't have any opinions on discord.js command frameworks as I'll be learning whatever we settle on from scratch. :P The overall directory structure you outlined makes sense to me though. As far as CI/CD goes, I've enjoyed using Github Actions. Having things all on the same site is very convenient, and the Actions ecosystem has been surprisingly solid for setting up more complex workflows, e.g. SSHing into a server to automatically update the live bot from Github when changes are pushed to the main branch.