• Stars
    star
    155
  • Rank 240,864 (Top 5 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

シンプル - Discord Bot with role selection, moderation, karma ranking, a starboard, code execution, raid alerting, backups, a web interface, twitch notifications and more!

~ シンプル ~

A simple multi purpose discord bot written in Go (discord.go)
with focus on stability and reliability


    Docker Cloud Automated build 

Branch Tests CI Docker CD Releases CD
master (stable)
dev (canary)

Invite

Here you can choose between the stable or canary version of shinpuru:

Intro

シンプル (shinpuru), a simple (as the name says), multi-purpose Discord Bot written in Go, using bwmarrin's package discord.go as API and gateway wrapper and ken as slash command and interaction framework. The focus on this bot is to provide general purpose, administration and security tools while keeping stability, reliability and maintainability in focus.

shinpuru is mainly used as administration and security tool on my development discord. Feel free to drop by to see shinpuru in action! 😉


Features

Slash Commands

shinpuru mainly uses slash commands to interact with the bot. In the wiki, you can find an automatically generated list of commands, their descriptions and how to use them (or here you can find a more interactive list in the web interface).

You can also find a searchable list in the web interface of shinpuru.

poek6z96T9.mp4

Web Interface

If you are sick of using commands, you can also use the web interface of shinpuru. Simply log in with your Discord Account (alternatively, you can also use the /login command).

Most features of shinpuru available via slash commands are also accessible in the web interface with additional visualization and information provided.

firefox_GCcqUWkYER.mp4

REST API

The web interface simply connects to the REST API exposed by the web server of shinpuru. You can also acquire an API token linked to your account to access the REST API directly, if you want.

Here you can read more about how to connect to shinpuru's REST API and which endpoints are available.

Chat Features

Code Execution

When someone posts code inside a code block, shinpuru can extract the code and language and execute it outputting the result into chat.

The code is picked up and sent to a code execution engine, which safely executes the code and sends back the result via a REST API. Therefore, you can chose between ranna or JDoodle in the config.

Karma

shinpuru features a Karma system which is inspired by Reddit. You can define specific emotes which, when attached to a message, increase or reduce the karma points of a member. You can also specify the amount of "tokens" which can be spent each hour as well as a penalty for giving negative karma, which also takes karma from the executor to prevent downvote spam.

It is also possible to execute actions when passing specific amounts of karma. For example, you can add or remove roles, send messages or even kick/ban members depending on their karma points.

Color Reactions

Another unique feature of shinpuru are color reactions. When enabled (see /colorreaction), shinpuru can fetch colors from chat messages and display them into a reaction. When clicked on the reaction, more information about the color is then posted into chat.

Votes

You can simply create votes using the /vote slash command where users can pseudo anonymously vote using reactions.

Twitch Notifications

You can add names of twitch streamers to a watchlist (see /twitchnotify) and when they go live, a notification message in sent into the specified channel.

Quote Messages

You can use the /quote command to quote messages by ID or link (even cross-channel).

image

Starboard

As literally any other bot, shinpuru also features a starboard! You can even specify an amount of karma members get when their message get into the starboard.

Channel Statistics

You can use the /channelstats command to analyze contribution statistics for specific text channels.

Guild Security & Moderation

Report System

shinpuru features a deeply integrated reporting and moderation system. You can create reports for members who violate guild rules which then are posted into a modlog channel (if specified). Also, all reports of a member can be viewed on their user profiles as well as in the web interface.

Of course, you can also kick and ban members with shinpuru, which also creates a report record in the modlog. It is even possible to create so called "ghost reports". It allows to report or ban members by ID which are no more part of the server.

When a member wants to request an unban, this can be done via the web interface when navigating to <webAddress>/unbanme.

vRPSl97B9Z.mp4

Guild Backups

When enabled, shinpuru will create a backup of your guild's infrastructure every 12 hours. This includes guild settings, channels (names, positions and groups), roles (names, positions and permissions) and members (nicknames and applied roles).

When your guild gets raided or an admin goes rouge, you can simply choose one of the created backups and reset the guilds state.

The last 10 backups are stored and can be reviewed in the web interface.

Raid Alerting

This system allows you to set a threshold of new user ingress rate. When this rate exceeds, for example when a lot of (bot) accounts flush in to your guild (aka raiding), all admins of the guild will be alerted via DM. Also, the guilds moderation setting will be raised to Highest so that only users with roles or a valid phone number can chat.

image

Additionally, all joined users after the event triggered are logged in a list which can be viewed in the web interface. You can also use this list to bulk kick or ban users captured in the antiraid join list.


Docker

Read about how to host shinpuru using the provided Docker image in the wiki article.


Compiling

Read about self-compiling in the wiki article.


Public Packages


Third party dependencies

Back End

Web Front End

Assets

The mascot artwork is created by the wonderful artist Kuglu. Please feel free to give them a visit. 💖


Copyright © 2018-present zekro Development (Ringo Hoffmann).
Covered by the MIT License.

More Repositories

1

timedmap

A thread safe map which has expiring key-value pairs.
Go
54
star
2

stargrab

Securely mirror your starred repositories.
Python
28
star
3

ken

A cutting edge (haha), object-oriented and highly modular application command handler for Discordgo.
Go
24
star
4

shireikan

司令官 - A prototype, object-oriented command handler for discordgo.
Go
16
star
5

godeepl

A golang wrapper around the Deepl JSON RPC API.
Go
13
star
6

yuri

Best soundbot in whole North Korea! Supporting hotkeys and a web interface!
JavaScript
13
star
7

go-win-mime-fix

Little tool to fix golangs mime.TypeByExtension issue with js files on windows plattform
Go
12
star
8

photolio

A self-hosted light weight web gallery / portfolio to show my photography work on my web page.
TypeScript
10
star
9

senjouBot

A little python discord self-bot
Python
8
star
10

asyncrcon

Client implementation of Minecraft's RCON protocol using asyncio.
Python
8
star
11

spigot-autobuild

Docker image to build the latest version of a specified spigot minecraft version on startup
Shell
7
star
12

lookupex

🔍 The nEXt generation of Discord ID lookup!
Elixir
7
star
13

supercharge

A web application to record and analyze your League of Legends champion mastery points.
C#
7
star
14

no-google-challenge

Simple Challenge: Create a full stack web applciation without using any web search engine to look for solutions and answers.
C#
7
star
15

webwol

Simple but super overengineered wake-on-lan web app.
TypeScript
6
star
16

voidseeker

Image storage, indexing and searching utility. Built with ASP.NET and React on top of Elasticsearch and Minio.
C#
5
star
17

dgrs

A (WIP) DiscordGo state manager using Redis.
Go
5
star
18

giveawayBot

A little Discord bot focusing on creating giveaways engagable with reactions.
Go
5
star
19

ratelimit

simple token bucket based rate limiter (e.g. for limiting HTTP API requests)
Go
5
star
20

itsfriday

The tool for spreading friday-happiness to your Twitter followers!
Python
5
star
21

di

An experimental Go 1.20+ generic dependency injection package based on type parameters and reflection.
Go
5
star
22

yuri69

The best soundboard that exists for Discord.
Go
5
star
23

tokenToolsR

A rewrite of the discordTokenTools with better performance and less dependencies.
TypeScript
4
star
24

zekro.de

The code of my main web page.
HTML
4
star
25

ComputerCraftStuff

Some scripts I've coded for Minecraft ComputerCraft
Lua
4
star
26

visitor-count

Simple micro-application to generate a visitor count SVG which can be embeded to GitHub profile readmes, for example.
Go
4
star
27

ForgeDiscordRPC

Minecraft Forge Mod connecting Minecraft to Discord RPC
Java
3
star
28

AcceptMessage

discord.js addon to create acceptable messages
JavaScript
3
star
29

dotfiles

my shitty dotfiles
Shell
3
star
30

HardcoreRevive

A Spigot/PaperMC plugin to revive players in minecraft hardcore.
Java
3
star
31

sop

A go1.18+ package to (maybe) simplify performing operations on slices in a fluent-like style.
Go
3
star
32

zekroTJA

My Profile Readme
Python
2
star
33

idgen

A simple CLI to generate various UIDs in the terminal.
Rust
2
star
34

slicerdicer

A little command line tool to slice an image into same-sized parts. This was concipated to slice images into multipart Discord emotes.
Go
2
star
35

factorio-docker

A simple, pre-built Factorio docker server image.
Shell
2
star
36

counter

A simple command line tool to write and modify number counters to a textfile.
Rust
2
star
37

tonic

Zero-storage light weight image manager web app - created with go + gin + react
TypeScript
2
star
38

r34-crawler

A simple CLI tool to fetch and download images from rule34.xxx
Go
2
star
39

SleepBetter

Spigot plugin to sleep when a defined percentage of players are in bed
Java
2
star
40

gitv

CLI / CI/CD utility to get a version from git and put it into the package.json. Not more, not less.
TypeScript
2
star
41

resource-vault

My personal vault of general resources and documents for all subjects of development, design and media work.
JavaScript
2
star
42

papermc-docker

A Docker image to host a Minecraft server using PaperMC.
Shell
2
star
43

snowflake-js

A twitter like snowflake adaption to create unique, time stamp based IDs for node.js
JavaScript
2
star
44

dcdl

A Discord bot for downloading attachments from channel messages.
Go
2
star
45

schnittstelle

A CLI tool to generate an interface from the methods implemented for a struct in a Go source tree.
Go
2
star
46

spigot-dockerized

Minecraft spigot dockerized with selectable verisons on build and configurable JVM start arguments.
Dockerfile
2
star
47

netrics

Speedtest.net + Prometheus = netrics
Go
2
star
48

docs

Just a repo for some docs.
Python
1
star
49

MagicStaffs

A Minecraft Forge Mod which adds magic Staffs. WIP ATM.
Java
1
star
50

ghostwriter

A little CLI tool to record changes in a file and replay them step by step.
Rust
1
star
51

cds

A simple content delivery server - written in Go unsing fasthttp.
Go
1
star
52

duesgoerd

A super simple chat web app to find out how the f**k Rust works.
Rust
1
star
53

goChat

Testing project to get into gorilla websockets. Here you can find the latest versions test demo:
Go
1
star
54

discord-mediadl

A script to download attachment media of a discord channel
Python
1
star
55

rogu

Yet another taggable, human readable, colorful, structured logger with a builder-like API.
Go
1
star
56

arduinoStuff

Stuff I create for my Arduino Uno board
C++
1
star
57

go-template

This is one of my personal Go project templates.
Makefile
1
star
58

jwt

A very simplistic implementation of JWT taking advantage of Go 1.18 generic type parameters for parsing claim objects.
Go
1
star
59

chapterize

A CLI tool to convert EDL marker files (for example from DaVinci Resolve) to YouTube video timestamps.
Rust
1
star
60

aoc2022

My Advent of Code 2022 solutions in Rust.
Rust
1
star
61

pasty-rs

A low level Rust API wrapper crate for pasty.
Rust
1
star
62

rconclient

A simple staight forward RCON client especially concipated to be used in Docker containers
Python
1
star
63

eventbus

A go package to send and receive pub-sub messages using channels.
Go
1
star
64

timedmap-rs

A thread-safe hash map with expiring key-value pairs.
Rust
1
star
65

colorname

A go package to find the color name of a given color value.
Go
1
star
66

OBSSocialPlugin

An OBS browser source plugin to display social contact information.
HTML
1
star
67

passgen

Small tool to generate random passwords by command line
Go
1
star
68

yuri3

[WIP] The successor of yuri2, which was the successor or yuri.
Go
1
star
69

servus

A dead simple application to serve files and directories over HTTP.
Rust
1
star
70

seiteki

静的 - A wrapper around fasthttp to serve routed web applications like Angular or VueJS apps
Go
1
star
71

tenso

tensō is just another short link service.
Rust
1
star