Git Product home page Git Product logo

modcore's Introduction

ModCore

Github Stars Github Issues .NET Build

ModCore is A powerful moderating bot written on top of the DSharpPlus library. ModCore is your assistant for server moderation and management through a wide range of hand-crafted features to make your life as a moderator or administrator a breeze!

Invite ModCore now!

Support

Need help with ModCore? Either use the /contact command or join the ModCore Discord!

ModCore Chat

modcore's People

Contributors

aexolate avatar dependabot[bot] avatar drake103 avatar drcreo avatar emzi0767 avatar inftord avatar izumemori avatar jcryer avatar johanneskauffmann avatar naamloos avatar oolunar avatar plerx2493 avatar uwx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

modcore's Issues

Feature: Ban appeal functionality

  • add a config value AllowBanAppeals with commands for setting this value
  • add a DM-only command $appeal [serverid]
  • add the following text to the ban DM: appealing this ban is possible by running $appeal [serverid]. when appealing is indeed possible
  • always check whether member is actually banned when appealing

Complete setup wizard

ModCore has a nice and useful setup wizard by @uwx, iirc this wan't done yet. Opening this issue to remind myself to finish it.

Null guild configs aren't properly handled in some places

Some events aren't properly handling null guild configs. This for example seems to happen in the Member Updated event and the User Updated event.

When this happens, the events simply throw and get ignored. For the end user this is no big issue, it won't be noticed. However, for the sake of clean code and a proper program this has to get fixed.

Sanitization extension methods are wrong

The following methods will never be called without a cast:

https://github.com/NaamloosDT/ModCore/blob/8f47918d6273b2b9c4efa8dea360e2ba2a7369ed/ModCore/Logic/Extensions/Sanitization.cs#L29-L39

This is due to an intricacy in how overload resolution works in the C# compiler, it will always prefer the string overload over the FormattableString one.

The only fix is to rename these overloads and use them wherever appropriate. They should probably not be removed, as they enforce invariant culture and sanitization within interpolated string parameters, which is pretty important.

Remove auto update scripts and (possibly) CI

As all builds are done on my end by now and the bot is not intended to be a "pull and run your own instance delele" kinda bot I suppose removing anything auto-update and CI related is fine.

Feedback system

A way for ModCore users to directly contact the bot developers.

Interactive commands

Have all commands with arguments have interactive counterparts that collect arguments with interactivity (and no arguments themselves)

example: screenshare command

[IDEA] ModCore Issue Finder

The idea is to add a command that will scan through a server to find possible issues with ModCore's functionality, e.g. missing permissions, channels it can't access, etc etc

ideabot

  • poll support
  • set up to give role on reaction
  • set up to give role on join
  • #113
  • avatar change log (and possibly other types of changes)
  • nickname change request system
  • #114
  • #115
  • Slowmode
  • #116
  • Todo lists
  • Additional strawpoll creator next to the reaction poll system
  • #117
  • Snipe command
  • #118
  • #119
  • #120
  • #121
  • #122
  • Mass mention filter (with exempt of course)
  • #123
  • Feedback system (DM Naamloos(?))
  • Temporary channel locks
  • Starboard leaderboards
  • #124
  • #125
  • #127
  • #126

ideabot v2

(UPDATED OP)
Instead of a rewrite, ModCore is getting a refactor. Here a list of new stuff I still want to add:

Mega mega todo

  • Use buttons instead of reactions for polls
  • Image based welcomer
  • Updated link filters and invite filters
  • Improve Giveaway feature
  • Verification system (give role on special phrase?)
  • Mass mention filter (with exempt of course)
  • Ticket system
  • Feedback system (DM Naamloos(?))
  • Temporary channel locks
  • Starboard leaderboards
  • Ban appeals
  • Delete welcome messages if a member leaves within specified time
  • Prevent purging polls etc
  • Highlighter (DM on phrase highlight)

[FEATURE] User-specific slowmode

Discord does not support slowmode for specific users

Idea: use the mute role

user sends message -> gets mute role for x minutes -> timespan ends -> remove mute role -> repeat

Reconsider license

I am not 100% sure whether I want to use GPLv3, and considering I am rewriting I'd fine with picking a different license..

[IDEA] OnFail attribute for specific commands

This would allow for implementing command-specific fail cases, telling the user what went wrong and how they can fix it + expected behaviour.

example:

[Command("test")]
public async Task TestAsync(CommandContext ctx)
{
    // let's pretend this has code that might fail
}

[CommandFail("test")]
public async Task TestFailAsync(CommandContext ctx, CommandErrorEventArgs error)
{
    // handle command-specific errors here
}

Action log

Gotta add some more of dem action logging aight

some commands are missing them

Remove unused/broken features, general cleanup.

ModCore has a lot of broken / incomplete commands/features. These need to either be fixed or removed. Next to that code has to be cleaned up a bit as well. Refactor might be nice.

More details coming soon, eg features that are broken / incomplete.

add CI

plez add appveyor hooks

add WithSettings method to operate on GuildSettings

eg.

await ctx.WithSettings(async cfg => {
    // do stuff with cfg
    cfg.Linkfilter.BlockBooters = true;
    cfg.Linkfilter.BlockInviteLinks = true;
    cfg.Linkfilter.BlockIpLoggers = true;
    cfg.Linkfilter.BlockShockSites = true;
    cfg.Linkfilter.BlockUrlShorteners = true;
    // implicit
    // await ctx.SetGuildSettingsAsync(cfg);
});

Ideas for new functionality

I've taken a look at some more popular moderation bots and hand picked a couple of functions that would be nice for modcore. (and thought up a couple)

  • Temporary bans
  • Global warnings (moderators from other guilds can see whether users have done more bad things)
  • Temporary mutes (mutes are at the moment permanent untill you unmute)
  • Leave server (for those who want to make the bot leave on its own)
  • Temporary pins (unpin after specific date/time)
  • Reminders (remind me to ban this guy after 2 hours :^) )
  • Clean bot's own commands (basically a shortcut to purge, or perhaps with user commands included)
  • Automated Kicks/Bans (after certain amount of warnings/strikes)
  • Scheduled Pins
  • Server warnings (these trigger the auto-kick/ban)
  • Tag system
  • Prune by regex

These are just proposals. Feel free to add anything c:

Issue with timers

Sometimes timers break, and keep resetting themselves. This is to be investigated ;^)

Cause:
unknown

What happens:
When setting a reminder, you won't get a confirmation message, yet the timer will be saved to the database. Once the timer is hit, it will just reset itself. This issue would just pop up randomly for (seemingly) no reason.

Currently it seems like a rebbot or cleaning the database table fixes it, yet we need a permanent full-on fix for this

[IDEA] Custom commands

I want to add something to allow users to build their own commands. When in beta I want to allow people to build their own JSON that gets validated and parsed to a command. Later on I want to build a graphical command builder which might be similar to scratch, I'm not sure yet.

Example ModCoreCommand format:

{
    "parameters":[
        {"name" : "user", "type" : "member"},
        {"name" : "nickname", "type" : "string"},
    ],
    "actions":[
        {"action" : "setnickname", "parameters" : [ "param:user", "param:nickname" ] }
    ]
}

I'll still have to think of notations for stuff like if-statements, but I think this might work out fine.

Commands will be:
$[command name] args for calling custom commands
$customcommands for listing custom commands

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.