# Umaru.md
## Roadmap
- Each version will be separated into feature sets comprising of individual features that will be indicated by checkboxes.
- Prefix a task/feature with an uppercase initial enclosed in parentheses to claim or indicate that you are working on it.
- Remove the prefix and place an _"x"_ character in between the square brackets **or** click the checkbox on the document render preview to indicate that the task/feature is finished.
### v1.0
- [ ] Comics (manga/manhwa/manhua) chapter or anime episode release notifier
- Process of obtaining updates - depending on the source site: web scraping, RSS feed scraper, API, or webhooks to a channel (like [PatchBot](https://patchbot.io/) for game updates)
- How to choose a singular result for a singular query from multiple sources? Priority-based depending on site reliability, update frequency, release process?
- All or selective (subscribed) updates...?
- Notifications for entirely new titles...?
- Ensure posting on specific channels (only where enabled)
- User/role mentions
- [ ] Comics updates
- [ ] Manga
- [ ] Manhwa
- [ ] Manhua
- [ ] Anime updates
### v2.0
- [ ] Reverse search image to sauce
- [ ] Acquire an image from a message ID (eg. "\<prefix\> sauce -m \<ID\>" or command with image attachment..?)
- [ ] Reverse image search and return a single result
- [ ] Special roles for succeeding sub thresholds
- [ ] Text translator
### v3.0
- [ ] Games..? Cause Umaru-chan also likes to play games, aside from reading manga
- [ ] Knowledge/facts
- [ ] Todo/Tasklist
- [ ] Free Stuff Notifier
### v4.0 onwards
- [ ] Website + support Discord
- [ ] Sharding and ensuring scalability
- [ ] Increasing popularity and bot users
- [ ] Profit...?
## Tasks
- [ ] Improve logging
- [ ] Other assets?
- [ ] Web update source list
- [ ] Rename...? Because of [another public bot with same name](https://top.gg/bot/700856205274382337), might have implications when we decide to publicize the bot as well
- [x] Choose bot command prefix
- [x] Command names for features
- [x] Umaru bot avatar (PNG)
## Standards and Reminders
- Versioning:
- _a.b.c_
- a - completed feature set
- b - single implemented feature
- c - patches, bugfixes, etc.
- _./assets/_ - images, avatars, icons, and other media assets
- _./config/_ - config files
- _./config/secrets.json_ - application secrets
- _./config/defaults.json_ - default configuration options, if any
- _./config/\<server_ID\>/config.json - server-specific configs
- _./lib/_ - custom-made libraries, reusable and helper functions
- _./commands/_ - modules of bot features
- **NEVER** put application secrets in source code or commit any of it to the remote repository. Request for me to regenerate the app's secret tokens if you have accidentally done so.
## Syntax
```plaintext
Terms and shorthands:
<> = required sub = subscription msg = message
[] = optional res = respond
{} = administrator-optional src = source
adapt = adaptation
avail = availability
Basic structure:
<prefix><action> [flags] [query] {(u)ser/(r)ole} {(c)hannel} {(n)ote}
prefix - "!"
flags
category - "", "anime", "manga", "manhwa"
action - "sub", "unsub"
Available query types per category:
* anime:
words = kissanime.ru
* manga:
words
id = mangaupdates.com (www.mangaupdates.com/authors.html?id=24697)
* manhwa
words
----------------------------------------------------------------------------
# Administrator only
!on {u/r} {c} # enable bot (current channel if unspecified)
!off {u/r} {c} # disable bot (current channel if unspecified)
!mode # show bot's current mode
!mode {mode} # change bot notification mode
# ignore - bot won't send any notifications
# subonly (default) - bot will only send notifications if
# someone from the server is subbed
# always - bot will always send notifications, but won't
# mention anyone
# alwaysplus - bot will always send notifications and
# mention everyone subbed
!list
!list-channels
!list-allows
!list-subs
!stats # show sub statistics
!guilds # list all guilds the bot is in
!status # show bot status
!status {n} # change bot status
!prefix # display current prefix
!prefix <prefix> # change prefix
!reset-all # remove all subs and disable bot (confirm by invoker required)
!reset-prefix # Reset prefix to default
# Person of Culture role required
!mysubs # list user subs
!<category> mysubs # narrow search
!search # res no_query_any
!search <query> # match: res src + adapt avail
!<category> search # res no_query_<category>
!<category> search <query> # match: res src + adapt avail
!sub # same as mysubs
!sub <query> # match_one: sub; match_many: react choice
!<category> sub # narrow search; same as mysubs
!<category> sub <query> # narrow search; same as sub <query>
!unsub # same as mysubs
!unsub <query> # match_one: unsub; match_many: react choice
!<category> unsub # narrow search; same as mysubs
!<category> unsub <query> # narrow search; same as unsub <query>
!sauce # media in msg: search; else: res no_media
!sauce <msg_ID> # media in msg: search; else: res no_media
# All roles
!help # help page
!h # help page
!info # bot info
!uptime # bot uptime
!allow-notifs {u/r} # assign Person of Culture role to access bot
```
## Required Permissions
1. Read Messages
2. Send Messages
## Links
- [Umaru Application Dashboard](https://discord.com/developers/applications/739125903002697739) (not sure if accessible outside my account)
- [Discord.js Documentation](https://discord.js.org/#/docs/main/stable/general/welcome)
- [Discord.js Quickstart Guide](https://discordjs.guide)
- [Discord Permissions Calculator](https://discordapi.com/permissions.html) (for proper bot invite link creation)
- [Discord Webhooks Intro](https://support.discord.com/hc/en-us/articles/228383668)
---
- All achieved milestones will be moved accordingly to [CHANGELOG.md](https://github.com/Off-by-NaN/Umaru/blob/master/CHANGELOG.md).
- This todo will be pushed to the repository every once in a while when updates and/or progress are made.