A simple Discord bot that aims to provide a snapshot of the join logs given a range of time for servers.

Related tags

App HumpyDumpy
Overview

Humpy Dumpy Banner

πŸ§‹ What is Humpy Dumpy?

Humpy Dumpy is a simple Discord bot that aims to provide a snapshot of the join logs given a range of time for servers. It was created as a little boredom-reliever based on an idea that came from suggestions of Beemo's Discord server which people wanted a simple and easy way to dump join logs.

πŸ₯ Public Bot

Humpy Dumpy can be invited to your server with no permissions required, you can invite the publicly hosted bot if you do not want to self host: https://discord.com/api/oauth2/authorize?client_id=1009426851208384552&permissions=0&scope=applications.commands%20bot

πŸ’­ How does Humpy Dumpy work?

Humpy Dumpy works with the combination of MongoDB and Javacord to receive and store a snapshot of the user's information and related information onto a time-series collection to allow massive datasets with very little storage usage and performance impact (200k users was around 900 kilobytes of storage space according to MongoDB Compass).

Humpy Dumpy uses Javalin as its web framework to enable server moderators to receive a snapshot of the server's join logs at a given time range. To learn more about how to query with the HTTP API, please read the section below.

❓ Humpy Dumpy Flow

Humpy Dumpy provides a privacy-safe and simple HTTP API for server moderators to request their server join logs within a given timestamp but before we delve into how each query works, let us first understand the different routes available.

  • /range.json: This route enables for a full JSON representation of the server logs, this contains all the information needed like user name, discriminator, join timestamp, etc.
  • /range.txt: This route is a more simpler version of the JSON route and returns a plain-text content that contains only the users snowflakes (intended for mass banning).

Now that we have understood what the different routes means, let us delve into the query parameters available for each one.

πŸ“˜ JSON Route

Parameter Type Optional Example Additional Notes
before modified rfc 1132 datetime or minutes ago since now βœ”οΈ 17 Aug 2022, 16:34:12 UTC or 30 If using minutes ago since now, it takes the current time and minus it by the given minutes.
after modified rfc 1132 datetime or minutes ago since now βœ”οΈ 17 Aug 2022, 16:34:12 UTC or 30 If using minutes ago since now, it takes the current time and minus it by the given minutes.
token json web token ❌ View Image Acquirable by using the /token command in Discord.
onlyIds boolean βœ”οΈ true or false Makes the result return only the snowflakes of the users in a JSON format.

πŸ“– Plain-text Route

Parameter Type Optional Example Additional Notes
before modified rfc 1132 datetime or minutes ago since now βœ”οΈ 17 Aug 2022, 16:34:12 UTC or 30 If using minutes ago since now, it takes the current time and minus it by the given minutes.
after modified rfc 1132 datetime or minutes ago since now βœ”οΈ 17 Aug 2022, 16:34:12 UTC or 30 If using minutes ago since now, it takes the current time and minus it by the given minutes.
token json web token ❌ View Image Acquirable by using the /token command in Discord.
delimiter string βœ”οΈ , Separates each user snowflake with the delimiter, this is by default a next line.

πŸ’­ Modified RFC 1132 Date Time

To make it more human-friendly to read, all routes uses a Modified RFC 1132 (17 Aug 2022, 16:34:12 UTC) variant for its parameters. It's the same as the RFC 1132 Date Time (Wed, 17 Aug 2022, 16:34:12 UTC) but without the week of the day (Wed) which can be a mess to modify and cause issues for the end-user.

πŸ’­ Minutes Ago Since Now

Minutes ago since now should be self-explanatory, it is the minutes ago since now. To understand this, let us say that our current time is 06:30 and we set a minutes ago since now to 30 minutes, our new time would be 06:00 because the minutes ago since now would reduce the current time by the given value (30 minutes).

πŸ’­ JSON Web Token

JSON Web Token is an authentication or security identifier that should not be disclosed easily to others. All tokens generated by Humpy Dumpy have a maximum time limit of one (1) hour to prevent a misuse of the authentication token. Please keep this token as safe as possible unless you want your join logs to be viewed by other people.

πŸ’­ Acquiring a JSON Web Token

Acquiring a JSON Web Token is as simple as running the /token slash command on the server that you want to use the token on. A token is limited to only one server and you cannot use it to view other servers that you own or manage. A token have a maximum of one hour expiration and configureable down to five minutes to ensure that it is not used to expose joinlogs (invading privacy) of the server if it happens to be accidentally exposed (always recommend using as less time as possible for token lifespan).

πŸ’­ Sharing Logs

A best practice with Humpy Dumpy over sharing logs is to actually copy the response, saving it somewhere like GitHub Gist and sending it to whomever you like. It is not recommended to share the actual link that contains the token at all because it leaves a chance for the join logs other than the selected points of time to be exposed.

πŸ’­ Example Requests

To understand how our requests look, let us say that we want to query our server's recent 30 minutes joins, we can simply open a new browser tab and run the following:

http://humpydumpy.mihou.pw/range.json?after=30&token=<token>

The following query requests for all recent joins after (current_time - 30 minutes).

Preview

image

❓ Self-hosting

You can self-host Humpy Dumpy by following the instructions below:

  1. Clone the repository.
git clone https://github.com/ShindouMihou/HumpyDumpy && cd HumpyDumpy
  1. Create a Mongo database. You can create a free MongoDB database via Atlas RECOMMENDED for beginners or by self-hosting.
  2. Configure the .env by running the following command (Linux):
cp .env.example .env && nano .env
  1. Build the Docker image.
docker build -t humpydumpy .
  1. Run the Docker image.
docker run --name humpydumpy --env-file .env -p 2004:2004 -d -i -t humpydumpy:latest

πŸ”– License

HumpyDumpy follows Apache 2.0 license which allows the following permissions:

  • βœ” Commercial Use
  • βœ” Modification
  • βœ” Distribution
  • βœ” Patent use
  • βœ” Private use

The contributors and maintainers of HumpyDumpy are not to be held liability over any creations that uses HumpyDumpy. We also forbid trademark use of the library and there is no warranty as stated by Apache 2.0 license. You can read more about the Apache 2.0 license on GitHub.

You might also like...
This assignment has been given to me for Android developer position at SonyLiv.

asssignmentSonyLiv This assignment has been given to me for Android developer position at SonyLiv. This codeis not full functional but can give a cont

An Android app that pulls the credit score information from a given endpoint and displays the records as a donut view

ClearScoreTest This is an Android app that pulls the credit score information fr

Forage-project - This is a project given by Google Android Developers team. It's specifically created for data persistance.

Forage - Starter Code Starter code for the fifth independent project for Android Basics in Kotlin. This project pairs with Unit 5 of Android Basics in

An Android app that gives you a password generated by a given phrase with a custom algorithm, it also has password and biometric security.

An Android app that gives you a password generated by a given phrase with a custom algorithm, it also has password and biometric security.

A distribution of performance-oriented Bukkit patches that aims to keep stability and vanilla behaviour
A distribution of performance-oriented Bukkit patches that aims to keep stability and vanilla behaviour

Patina A distribution of performance-oriented Bukkit patches that aims to keep stability and vanilla behaviour. You can find explanation of configurat

This app aims at helping people keep track of their job applications, and remind them regularly about the same.
This app aims at helping people keep track of their job applications, and remind them regularly about the same.

Applications Tracker Lately I have been applying for many roles, and it has become a hard task to keep track of all the applications. Spreadsheets are

CameraX- - CameraXbasic aims to demonstrate how to use CameraX APIs written in Kotlin

CameraXbasic CameraXbasic aims to demonstrate how to use CameraX APIs written in

Shotify aims to improve a largely forgotten about feature of the game: screenshots
Shotify aims to improve a largely forgotten about feature of the game: screenshots

A highly advanced screenshot mod. Modrinth β€’ Curseforge Shotify aims to improve a largely forgotten about feature of the game: screenshots. Taking a s

Based on mirai, a fast simple bot for maimai DX

maimai-bot δΈ€δΈͺ基于 mirai ε’Œ 舞萌 DX ζŸ₯εˆ†ε™¨ ηΌ–ε†™ηš„ maimai DX QQ ζœΊε™¨δΊΊζ’δ»Άγ€‚

Owner
Miu
meow meow meow
Miu
Simple metrics exporter HTTP server for Prometheus meant to be used for private Discord servers.

Discord Prometheus Exporter Simple metrics exporter HTTP server for Prometheus meant to be used for private Discord servers. Thanks to the creator of

Subham 2 Aug 28, 2022
AsukaBot - A simple Kotlin Discord Bot

The Discord bot of the serber, a private Discord server. Asuka is a Discord But running on the JDA API but made in kotlin.

Yann ItzPeaxel 2 Apr 24, 2022
Urban Dictionary discord bot.

Urban Dictionary Installation & Setup 1. Clone the repository git clone https://github.com/thexxiv/urbandictionary-discord-bot.git 2. Navigate to the

XXIV 0 Jan 17, 2022
DiscordBot - Small Discord bot using JDA

Discord bot written in kotlin and using JDA Use it yourself ./gradlew build crea

chell 2 Feb 2, 2022
A lightweight, feature-rich wrapper for the Telegram Bot API, providing a handy Kotlin DSL to quickly build your bot.

Kotlin Telegram Bot Kotlin based wrapper over Telegram API. Current version of the Telegram Api: 6.0 Principles Annotations Magic. The basic interacti

Jey 54 Sep 5, 2022
TimmyBot is a discord bot based on Discord4J and LavaPlayer

TimmyBot TimmyBot is a discord bot based on Discord4J and LavaPlayer Invite Click here to invite Timmy to your server Commands ?play - Plays a song, e

Ian de Villiers 0 Apr 21, 2022
A Discord bot heavily inspired by Ultimate Bravery to spice up your Pokemon Unite experience.

UniteBraveryBot ?? A Discord bot heavily inpired by Ultimate Bravery to spice up your Pokemon Unite experience. Required Permissions ?? View Channels

Alexander Deledda 2 Sep 8, 2022
SimpleCloud-haste-module - SimpleCloud module for uploading the logs of your services to hastebin

SimpleCloud Haste Module A SimpleCloud Module for uploading the current logs of

NeverStopGaming.net 5 Mar 6, 2022
A performance-oriented fork of Purpur intended to increase performance for entity-heavy servers by implementing multi-threaded and asynchronous improvements.

Petal is a performance-oriented fork of Purpur intended to increase performance for entity-heavy servers by implementing multi-threaded and asynchronous improvements.

Bloom 193 Oct 1, 2022
RoboDemo is a ShowCase library for Android to demonstrate to users how a given Activity works.

RoboDemo RoboDemo is a ShowCase library for Android to demonstrate to users how a given Activity works. A sample is available in the download area of

StΓ©phane Nicolas 221 Mar 15, 2022