Skip to content

Latest commit

 

History

History
99 lines (80 loc) · 4.44 KB

README.md

File metadata and controls

99 lines (80 loc) · 4.44 KB

Kobalt — A privacy-first Discord bot.

First and foremost, we respect your privacy. All data collection is opt-in.

This project is built on the foundational work of Silk!

As it stands right now, this project is not only in a very early stage, but also very proof-of-concept-y.

Here's a topological view of the layout of the project from a service point-of-view. image

Development & Debugging / Running the bot

Given the inherently...convoluted nature of Microservices, this bot isn't trivial to work with, but I've provided a few compose files under the build directory. services.docker-compose.yml runs Postgres, Redis, and RabbitMQ, which are required for core functionality of the bot and some microservices, however the bot itself does not rely on microservices unless you add plugins.

Running the bot is just as simple as building and running, but you will need to provide some configuration. For testing purposes, of if you're just running Kobalt for a small server, .NET User Secrets are probably fine.

appsettings.json also works, but if you're planning on opening a PR, ensusure you don't accidentally commit sensitive data.

Your configuration will look something like this, however this format may change in the future.

You can acquire your bot token and public key from the Discord Developer Dashboard, however the latter is only necessary if you configure an HTTP endpoint for interactions. This provides better performance for commands, but is wholly unneccessary in most situations.

{
  "Kobalt": {
    "RemindersApiUrl": "http://localhost:5010",
    "InfractionsApiUrl":"http://localhost:5020",
    "PhishingApiUrl": "http://localhost:5030"
  },
  "ConnectionStrings": {
    "Kobalt": "Server=localhost;Database=kobalt;Username=kobalt;Password=kobalt;",
    "RabbitMQ": "rabbitmq://kobalt:kobalt@localhost:5672"
  },
  "Discord": {
    "Token": "Your bot token",
    "ShardCount": 1,
    "PublicKey": "Your Public Key"
  }
}

Note

PublicKey can be ommitted if you intend to use the bot without an HTTP endpoint for interactions. Specify KOBALT_HTTP_INTERACTIONS_ENABLED=false (env var) or { "Kobalt": { "HttpInteractionsEnabled": false } } (appsettings.json) to disable HTTP interactions.

Feature checklist (AKA a Roadmap)

  • Kobalt (The bot itself)

    • Configuration
    • Entertainment (TBD)
      • RPG/MUD? (Plays well in Discord)
    • Moderation (See Infraction API)* (Cases need an update command, but this is otherwise complete)
    • Utility
      • ID Search/Info
      • Reminders
      • Role Menus
      • Timezone/Timestamp helper
      • Push-to-Talk (PTT) Threshold
  • Infraction API

    • Infractions
      • Create infraction (PUT /infractions/guilds/{guildID})
      • Get guild infractions (GET /infractions/guilds/{guildID})
      • Update infraction (PATCH /infractions/guilds/{guildID}/{id})
      • Get user infractions (GET /infractions/guilds/{guildID}/users/{id})
    • Infraction Rules
      • Get guild infraction rules (GET /infractions/guilds/{guildID}/rules)
      • Create infraction rule (POST /infractions/guilds/{guildID}/rules)
      • Update infraction rule (PATCH /infractions/guilds/{guildID}/rules/{id})
      • Delete infraction rule (DELETE /infractions/guilds/{guildID}/rules/{id})
    • Infraction History
    • Infraction Exemptions (TBD?)
    • Infraction Logging (Handled by Kobalt)
    • Infraction Dispatch (Requires support on Kobalt)
  • Artist Authentication API

    • Reverse Image Search
    • Artist Verification (Likely a manual process)
  • Dashboard

    • Manage Reminders
    • Manage Guild Configuration
    • Manage Infraction Rules
    • Manage Infraction Exemptions
    • Manage Infraction Logging
    • Artist Verification Registration
  • Reminder Microservice

    • Create Reminder
    • Get Reminder
    • Update Reminder
    • Delete Reminder
    • Dispatch Reminder (Requires Kobalt Support)
  • Anti-Phish Microservice

    • Handle aggregated phishing sources
    • Expose API for Kobalt to query