/NexusMods.Monitor

Monitors NexusMods Posts/Bugs sections and reports them in Discord/Slack channels

Primary LanguageC#MIT LicenseMIT

Nexus Mods Monitor

CodeFactor

Discord and Slack bots that monitor any changes in the NexusMods Posts/Bugs sections and reports them in subscribed channels.

Bugs Posts
drawing drawing

How to deploy

Experience with docker and docker-compose is required.
Go to src\docker-compose and edit the docker-compose.yml file.
You need to add real API Keys to Discord__BotToken (for Bot.Discord to work), Slack__BotToken (for Bot.Slack to work), NexusMods__APIKey (for Metadata to work).
If you don't need either Discord or Slack bot, just comment the service out.
Run docker-compose up -d as usual.
You can check http://localhost:30080 for logs.

Usage

Once the bots are deployed, you have the following commands:

  • !nmm subscribe [Game Id] [Mod Id] will start to monitor the desired mod and will report any changes in the current channel.
  • !nmm unsubscribe [Game Id] [Mod Id] will stop monitoring in the current channel.
  • !nmm subscribe [Mod Url]
  • !nmm unsubscribe [Mod Url]
  • !nmm subscriptions displays current subscriptions in the current channel.
  • !nmm ratelimits
  • !nmm authorize
  • !nmm about
  • !nmm help

About

The repository consists of five services:

  • Metadata - Web API based service that handles parsing of NexusMods.com accessing it's API.
  • Subscriptions - Web API based service that handles mod subscription.
  • Scraper - processes NexusMods data from Metadata and raises events if changes are detected.
  • Bot.Discord - listens for events and posts them as messages in Discord channels based on current subscriptions.
  • Bot.Slack - listens for events and posts them as messages in Slack channels based on current subscriptions.

Based on Microsoft's DDD guidelines.
NATS is used for the inter-process Event Bus, via abstraction provided by Enbiso.NLib.EventBus.
Mediatr for the in-process command/event bus, directly.
PostgreSQL for data storage.
Seq/Graylog for log storage.