GithubHelp home page GithubHelp logo

ninodiscord / nino Goto Github PK

View Code? Open in Web Editor NEW
124.0 3.0 33.0 4.76 MB

πŸ”¨ δ»ι‡Ž β€” Cute, advanced discord moderation bot made in Kord. Make your server cute and automated with utilities for you and your server moderators! β˜† ~('β–½^δΊΊ)

Home Page: https://nino.sh

License: MIT License

TypeScript 94.48% JavaScript 5.34% Dockerfile 0.09% Shell 0.09%
discord-api discord discord-hack-week discord-bot docker kotlin kord

nino's People

Contributors

auguwu avatar davidcralph avatar deprilula28 avatar dondish avatar iceemc avatar jacobtyrrell avatar renovate-bot avatar temp12398123 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

nino's Issues

[Feature Request] Simplify commands, events and automod to make them more testable.

Is your feature request related to a problem? Please describe.
Commands should be the easiest part of the coding process, but due to the settings and translation API, the code is badly formatted and unreadable.

It's even worse than that, not having any formal way to code commands makes the code harder to test, which makes us only test manually. This may be good if the API is consistent, but as we can see from recent events, that it's not the case and caused many bugs.

Describe the solution you'd like
The solution consists of several steps:

  • Test API - for testing commands and events, making it easier by abstracting the environment and making it easy to simulate events and users.
  • Command API - for uniting all commands around one tested API. Making it much harder to have bugs in the command.

This solution will need some kind of draft, to not make them another inconsistent APIs like the Translation API.

Describe alternatives you've considered
Another alternative solution is to make commands simpler to understand, without an API, but that will lose the uniformity of the testability of each command.

[Feature Request] Guild Policies

What is a "guild policy?" - A guild policy is a way to include a subset of rules Nino can act on when a certain event has been emitted.

How would it work?

Guild policies will be placed in the guild_policies database table as the following structure:

{
  "guild_id": "...",
  "events": ["GUILD_MEMBER_ADD"],
  "do": {
     "type": "message_send",
     "data": {
         "channel_id": "...",
         "content": "..."
      }
  }
}

[Feature Request] Add more shortlinks

Use this as another shortlink database to generate from.

Also, add a GitHub action to refresh the shortlinks.json module whenever the database is updated (cron job probably in ~15 minutes / ~1 hour?)

  • Add the database to scripts/shortlinks.js
  • Add a GitHub action under .actions/ to periodically update the db if it has changed or not

Custom Prefix

Is your feature request related to a problem? Please describe.
Sometimes in servers, people like to customise the bot to suit the prefix that is easiest to them.

Describe the solution you'd like
A custom command system that uses a command to change prefix, e.g nino <prefix>

[Feature Request] Extend help docs to document all features

Is your feature request related to a problem? Please describe.

It is hard to know what things can be configured inside of Nino, because currently the help wiki page does not document everything

Describe the solution you'd like

Detailed docs for each value that can be set in x!settings

Workarounds

running x!settings set help shows you all configurable settings in the form of an error message, however, does not describe what they do

Other notes

  • Would be happy to have a shot @ it on the wiki for now
  • More issues coming soon before I try to address them in PR's

[Bug] Fix bug where on bot mute another case is created.

Describe the bug
When you use the mute command the bot logs again for a role add.

To Reproduce
Steps to reproduce the behavior:

  1. Set a mod-log channel
  2. Mute someone by adding the role.
  3. Unmute and mute someone using a command
  4. Look in mod-log

Expected behavior
It should not log twice.

Inconsistency in responses

Some messages use punctuation and others don't.
In general, I am against exclamation marks and heavy punctuation in short responses, as they make the message kind of shouty and agressive.

Allow mods to ban users without using Nino

For example:

I ban a user using Discord. The bot should listen for this and create a case in the mod-log, then allowing the moderator to set a reason.

This could apply to mute/unmute, ban and kick.

Dependency Dashboard

This issue provides visibility into Renovate updates and their statuses. Learn more

Rate Limited

These updates are currently rate limited. Click on a checkbox below to force their creation now.

  • Update dependency dev.kord:kord-core to v0.8.0-M14
  • Update dependency io.sentry:sentry-logback to v5.7.4
  • Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-bom to v1.6.3
  • Update dependency com.charleskorn.kaml:kaml to v0.46.0
  • Update dependency com.squareup.okhttp3:okhttp to v4.10.0
  • Update dependency io.prometheus:simpleclient to v0.16.0
  • Update dependency io.prometheus:simpleclient_common to v0.16.0
  • Update dependency io.prometheus:simpleclient_hotspot to v0.16.0
  • Update dependency net.logstash.logback:logstash-logback-encoder to v7.2
  • Update dependency org.jetbrains.kotlinx:atomicfu-gradle-plugin to v0.18.0
  • Update dependency io.sentry:sentry to v6
  • Update dependency io.sentry:sentry-kotlin-extensions to v6
  • Update dependency io.sentry:sentry-logback to v6

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

docker-compose
docker-compose.yml
  • redis no version found
  • postgres latest
  • docker.pkg.github.com/ninodiscord/timeouts/timeouts latest
dockerfile
Dockerfile
  • eclipse-temurin 18-alpine
  • eclipse-temurin 18-alpine
bot/Dockerfile
  • eclipse-temurin 18-alpine
  • eclipse-temurin 18-alpine
docker/cluster-operator/Dockerfile
  • noelware/cluster-operator latest
docker/prometheus/Dockerfile
  • prom/prometheus latest
github-actions
.github/workflows/Production.yml
  • actions/checkout v3
  • dawidd6/action-get-tag v1
  • dawidd6/action-get-tag v1
.github/workflows/Sentry.yml
  • actions/checkout v3
  • getsentry/action-release v1
.github/workflows/Shortlinks.yml
  • actions/checkout v3
  • NinoDiscord/actions master
.github/workflows/Staging.yml
  • actions/checkout v3
  • dawidd6/action-get-tag v1
  • dawidd6/action-get-tag v1
.github/workflows/ktlint.yml
  • actions/checkout v3
  • actions/setup-java v3
  • gradle/gradle-build-action v2
gradle
gradle.properties
settings.gradle.kts
build.gradle.kts
api/build.gradle.kts
  • com.auth0:java-jwt 3.19.1
  • io.prometheus:simpleclient_common 0.15.0
automod/build.gradle.kts
bot/build.gradle.kts
  • ch.qos.logback:logback-classic 1.2.11
  • ch.qos.logback:logback-core 1.2.11
  • com.charleskorn.kaml:kaml 0.43.0
  • net.logstash.logback:logstash-logback-encoder 7.1.1
  • io.sentry:sentry-logback 5.7.3
buildSrc/build.gradle.kts
  • org.jetbrains.kotlinx:atomicfu-gradle-plugin 0.17.2
  • com.diffplug.spotless:spotless-plugin-gradle 6.5.0
  • io.kotest:kotest-gradle-plugin 0.3.9
  • gay.floof.utils:gradle-utils 1.3.0
buildSrc/src/main/kotlin/nino-module.gradle.kts
  • io.kotest:kotest-bom 5.2.3
commands/legacy/build.gradle.kts
commands/slash/build.gradle.kts
commons/build.gradle.kts
  • org.jetbrains.kotlinx:kotlinx-serialization-bom 1.3.2
  • org.jetbrains.kotlinx:kotlinx-coroutines-bom 1.6.1
  • org.jetbrains.exposed:exposed-bom 0.38.2
  • io.ktor:ktor-bom 2.0.0
  • org.jetbrains.kotlinx:kotlinx-datetime 0.3.2
  • gay.floof.commons:commons-slf4j 1.3.0
  • org.apache.commons:commons-lang3 3.12.0
  • io.insert-koin:koin-core 3.1.6
  • com.squareup.okhttp3:okhttp 4.9.3
  • dev.kord:kord-core 0.8.0-M13
  • dev.kord.x:emoji 0.5.0
  • org.postgresql:postgresql 42.3.4
  • com.zaxxer:HikariCP 5.0.1
  • org.slf4j:slf4j-api 1.7.36
  • io.sentry:sentry-kotlin-extensions 5.7.3
  • io.sentry:sentry 5.7.3
  • org.codehaus.janino:janino 3.1.7
  • io.lettuce:lettuce-core 6.1.8.RELEASE
core/build.gradle.kts
database/build.gradle.kts
  • net.perfectdreams.exposedpowerutils:postgres-power-utils 1.0.0
modules/build.gradle.kts
modules/localisation/build.gradle.kts
  • com.charleskorn.kaml:kaml 0.43.0
modules/metrics/build.gradle.kts
  • io.prometheus:simpleclient_hotspot 0.15.0
  • io.prometheus:simpleclient 0.15.0
modules/punishments/build.gradle.kts
modules/ravy/build.gradle.kts
modules/scripting/build.gradle.kts
  • org.jruby:jruby 9.3.4.0
modules/timeouts/build.gradle.kts
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 7.4.2

  • Check this box to trigger a request for Renovate to run again on this repository

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Error type: undefined. Note: this is a nested preset so please contact the preset author if you are unable to fix it yourself.

[Bug] Lockdown does not select the right channels.

Describe the bug
When doing lockdown it doesn't select the right channels

To Reproduce
Steps to reproduce the behavior:

  1. Lockdown a specific channel.
  2. Watch as another channel gets locked

Expected behavior
Lockdown should only lock down the specified channels

Screenshots
Screenshot from 2020-08-05 21-51-06

Hierarchy is misspelled as heirarchy

Describe the bug
Hierarchy is misspelled everywhere as heirarchy.

To Reproduce
Steps to reproduce the behavior:

  1. Run any moderation command on someone above your role

Expected behavior
Hierarchy should be spelled correctly

[Bug Report]

I cant seem to find the config.yml file does anyone know where it is?

[Bug] Fix mute/unmute spam issue

Describe the bug
Spams the "mod log" channel with a bunch of cases because of calculating bigints over numbers

issue

To Reproduce
Steps to reproduce the behavior:

  1. Mute a user for over a week
  2. Wait that duration
  3. Nino spams mod-log

Expected behavior
It shouldn't spam the mod-log channel

Screenshots
View above

Discord (please complete the following information):
Not applicable in this situation

Additional context
None at the moment

Support redis password

im currently using redis with password since my servers redis is serving multi purpose bots/websites so having non password is out of option.

application.yml does not support redis password and suggest it does

You can ping roles via Nino on certain commands

Describe the bug
Some commands echo the content raw, allows mentioning commands.

To Reproduce
Steps to reproduce the behavior:

  1. Start the bot
  2. use x!help @ROLE
  3. Role is pinged

Expected behavior
The response should be sanitized.

[Roadmap] 1.4.2 -> 2.0.0

Roadmap

  • Add slash command variants
  • Refractor database models
  • Implement MikaBot/cluster-operator
  • #789
  • #704
  • Add message highlighting when discord.com/channels/.../messages/... appears
  • Rework argument system to be very safe for development and the end user Ended up being too complex, maybe later.
  • #275
  • Add thread commands into moderation (i.e, no-threads and threads)
  • Add tags into Nino with some new features.
    • Scriping Language for complex tags
    • Minimal API for less complex tags
    • Tag Recovery and Export/Import
  • Implement ravy API for banning unwanted users in the guild (if wanted)
  • #831

[Feature Request] Make the settings command more user friendly

Is your feature request related to a problem? Please describe.
By request, people always have said the settings command is very difficult to use, which we understand since it was coded when the bot was first fully introduced in mid-2019.

Describe the solution you'd like
I feel like we need other people's solutions so we can make it easier to make it more user friendly. So, if you have any suggestions, leave them here.

[Feature Request] Command aliases

To make it easier to come from other bots. This is a list of aliases I have thought of

  • prune: purge
  • ban --soft: softban
  • warn: point
  • warnings: points, checkpoints checkwarnings

[Feature Request] Slash commands

Is your feature request related to a problem? Please describe.

For newcomers, it may be hard to understand how to work your bot. Slash commands provide easy descriptions, easy marking of the expected field type, and optional parameters. Plus, selecting TAB to enter an argument is much faster than --, as well as argument completion being a huge speedup as well

Describe the solution you'd like

Commands to be mirrored using the / command api

Describe alternatives you've considered

A second bot to take /commands and then pipe it to Nino

Additional context

Slash commands are beta, and subject to change, but I believe the tradeoff is worth it for the ease of use

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.