---
# System prepended metadata

title: Umaru.md

---

# 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.
