Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEAT] Implement Overwatch Functions in a Cog #220

Open
4 tasks done
portalBlock opened this issue May 3, 2023 · 3 comments · May be fixed by #234
Open
4 tasks done

[FEAT] Implement Overwatch Functions in a Cog #220

portalBlock opened this issue May 3, 2023 · 3 comments · May be fixed by #234
Labels
new-cog New cog for bot.

Comments

@portalBlock
Copy link
Member

portalBlock commented May 3, 2023

Overview

Move Overwatch from a standalone Golang app to a Cog. This initial conversion will have a lot of hardcoded parameters. I'll work towards switching it to configurable as I can. All these parameters are turned and have been in production for a while already, so it shouldn't be too much of an immediate concern.

Commands

[p]overwatch: root command, sub commands to follow as this is rebuilt

DoD

  • Profile heuristics (hardcoded for now) and reporting
  • Message embed & attachment frequency analysis and reporting
  • Voice activity analysis and reporting
  • Multiple region role detection, reporting, and repair (removed, out of scope for Overwatch subsystem)

Stretch

  • Eventually make the profile heuristics configurable
@portalBlock portalBlock added the new-cog New cog for bot. label May 3, 2023
@portalBlock
Copy link
Member Author

portalBlock commented May 7, 2023

Profile heuristics added, and they're now configurable! I decided to add everything as its own cog instead of one large cog, since that's probably more in line with how Red should work. Docs will be updated too, but for now:

About

The profile checker uses regex-based rules to alert on users joining with a predictable name pattern. This is useful for certain bot and user spam. The user's username will always be checked, but if enabled, the nickname can also be checked. Each rule consists of a name, regex pattern, nickname option, alert level, and reason. The alert level is used to determine the alert method when the rule is triggered ("HIGH" is akin to the emergency report and pings all online/idle mods while "LOW" simply posts the message). The rule's reason is included in the alert as additional context.

Commands

[p]owprofile add <rule name> <regex pattern> <reason> <alert level: HIGH or LOW> <check nickname: YES or NO>: adds a rule
[p]owprofile delete <rule name>: deletes the named rule
[p]owprofile channel <channel>: sets the alert channel

Other

Known bugs:

  • When adding a rule each argument is limited to one word (no spaces). This is a WIP.
  • There must be at least one rule or the rule checker breaks. There's a rule added in the default config for this reason. It can be deleted once another is added. A simple None check will fix this.
  • The nickname checking is broken (and currently disabled). There was a type error I need to fix yet.

@portalBlock
Copy link
Member Author

Voice channel activity analytics added!

About

Very simple time checks. You can configure the log channel and the time (in hours) before a user can stream or enable their camera without triggering an alert. Alerts are an "emergency"-level alert.

Commands

[p]owvoice time <int: time in hours>: sets the time in hours.
[p]owvoice logchannel [channel]: sets the log channel to the current channel, or the mentioned channel if specified.

@portalBlock portalBlock linked a pull request May 23, 2023 that will close this issue
3 tasks
@portalBlock portalBlock linked a pull request May 23, 2023 that will close this issue
3 tasks
@portalBlock
Copy link
Member Author

portalBlock commented May 23, 2023

All previous commands are invalid. Please see the Readme for updated details.

Message embed/attachment analysis added.

About

Monitors the frequency of message embeds and attachments from users. Then alerts if the set thresholds are exceeded.

Commands

[p]messagewatch logchannel [channel]: set the log output channel to the current or specified channel.
[p]messagewatch fetchtime <float: time>: set the recent message fetch time (in milliseconds).
[p]messagewatch frequencies embed <float: frequency>: set the maximum allowable frequency of embeds/attachments.
[p]messagewatch exemptions memberduration <int: duration>: set the duration (in hours) that a member must be in the server to qualify for exemptions.
[p]messagewatch exemptions textmessages <float: frequency>: set the minimum frequency of text-only messages to be exempt (aka participation exemption).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new-cog New cog for bot.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant