You are browsing as a guest. Sign up (or log in) to start making projects!

stefdp

@stefdp

Joined May 31st, 2026

  • 86Devlogs
  • 6Projects
  • 4Ships
  • 61Votes
idk, I just do stuff, also check out my website: https://stefdp.com !
Open comments for this post

5h 22m 47s logged

  • Created the /help command: list all the commands of get info about a specific one
  • Temporarily took the old dashboard and adapted it to the new framework (the html side is gonna get remade by a friend, orangc)
  • Removed some unused envs
  • Added TailwindCSS compiling at startup soit can be used in the dashboard
0
0
16
Open comments for this post

5h 54m 40s logged

  • Created the /uptime command: display how long the bot has been online for
  • Created the /lyrics command: get the lyrics of a song (uses lrclib.net, lrcmux and lyricsOVH as sources)
  • Fixed /define command failing when there were too many definitions (was going over the 40 components limit)
  • Created the main README file
  • Added ownerOnly property to commands, so when they’re first added to the db, it sets the list of owners in the OWNERS env as allowed users
  • Added attachment options to the /embed command (for some reasons they’re added correctly but image and thumbnail don’t display while footer and author do)
0
0
13
Open comments for this post

4h 17m 42s logged

  • Created the /ubdict command: get the definition of a term from the urban dictionary
  • Created the /wikipedia command: get an article from wikipedia
  • Created the /fact command: get a random fact
  • Created the /joke command: get a random joke
  • Added a util function to split strings in group of approximately X character, but instead of cutting the text at exactly X characters, it cuts at the next end of a sentence after X characters, this way a sentence is never cut in half during pagination (currently only place where it’s used, aka /wikipedia command)
  • Added the User-Agent header to all the HTTP requests
  • Updated HttpLoggingInterceptor to use the correct logger class
0
0
36
Open comments for this post

2h 57m logged

  • Created the /define command: get the definition of a word
  • Updated the /steam game command to use components v2, and also a button to show the full game description if the detailed mode is too long to fit
  • Switched some places from if (xxx) { ... } else { null } to xxx?.let { ... }
0
0
12
Open comments for this post

7h 46m 54s logged

  • Created the Get User Banner command (user): …what the name says
  • Created the /github command (slash): get info about a GH user, repo or issue/PR
  • Created the /weather command (slash): get the current weather of a specific place
  • /steam game now uses buildString {} instead of adding to a array, then joining and merging it with another string
0
0
9
Open comments for this post

6h 31m 32s logged

  • Created the /steam command (slash): get info about a Steam game (optional detailed mode) or user
  • Created the /translate command (slash): convert any text from a language to another (about 131 languages available)
  • Installed the MS Azure SDK for the /translate (slash) & Translate Message (message) commands
  • Updated file layout for the dashboard so it looks better
  • Updated API services file layout too
  • Updated Kotlin from 2.4.10 to 2.4.20 and other libs
0
0
20
Open comments for this post

4h 30m 59s logged

  • Running a command now increases its uses value is the anonymous analytics table
  • Added new env variables and improved the system used to throw errors so it always kills all the processes when calling require
  • Created the dashboard ratelimits, sessions, auth middlewares/systems
  • Created the Discord OAuth2 login
  • Moved kord into a Bot object so it can be used in the dashboard too if needed
  • Created a listener for the discord webhook (stuff like bot authorized, bot deauthorized etc.) [UNTESTED]
  • Created a util function to get the bot’s invite url
  • Created API services for the discord OAuth2 token requesting and apprise API

There’s not much frontend / UI change so ima show a pic of the dash module code ig

0
0
28
Open comments for this post

5h 49m 44s logged

  • Created the /export command (slash): send the file path and export it (as well as give the file’s github url (owner only)
  • Created the Save as Tag command (message): save a message as tag, both embeds & content
  • Created the Convert to QR Code command (message): convert a message’s content to a QR code (either as image or text)
  • Created the Download Voice Message command (message): as the name says, download as MP3 a user’s voice message
  • Created the Set as Reminder command (message): set a user’s message (either content or URL) as a reminder
  • Created the Get Message JSON command (message): get the JSON object of the message
  • Created the Get Member Avatar command (user): get the server specific avatar of the user
  • Created the Get User Avatar command (user): get the global avatar of the user
  • Created the Get User Avatar Decoration command (user): get the avatar decoration of the user
  • Created the Get Member JSON command (user): get the JSON object of the member
  • Created the Get User JSON command (user): get the JSON object of the user
  • Environment variables are now loaded at startup via a gradle task
  • Added a LOG_LEVEL env to choose the level of the console output to show
  • Created a util function for plurals
  • Set tag name limit to 255 chars
0
0
75
Open comments for this post

7h 8m logged

  • Added the /tag command: save preset messages that you can then send later (they can also contain embeds)
    it has the following subcommands:
  • content: set or remove the content of a tag
  • embed: add or remove an embed from a tag
  • delete: delete a tag
  • export: export all your tags as a JSON file
  • import: import the JSON file obtained from the export subcommand (in case of conflicts, the old and new tag will be previeable in the bot dashboard if enabled)
  • list: Display all your subcommands
  • get: Get the content & embeds of a specific subcommand
  • Fixed/Impoved the /embed command button & modal handlers & added an ID to buttons & modals to avoid 2 diff commands handling the same interaction
0
0
71
Open comments for this post

5h 34m 59s logged

  • Created the /gary command: get random images of 4 cats: Gary, Goober, Gulliber (Gully) and Garfield
  • Created the /ping command: get the bot’s ping (pic has high ping cuz it’s running on my laptop, in Italy)
  • Created the /botavatar command: change the bot avatar, either from a file, URL, copy from an user or copy from the bot owner
  • Created the /colorpicker command: give an HEX, RGB or HSL color and it displays it as well as showing its HEX, RGB and HSL variants
  • Added the /reminders command: set a reminder and the bot will send you a DM, reminder can either be single-run, multi-run and inifinitely run (the user defines an interval such as 30m, 2d15h etc., then the bot will send a DM with the reminder after this interval and will repeat it how many times the user defined it to, so if an user defines a reminder with 2h interval and 3 repeats, it will send the same reminder in 2h, 4h and 6h) (hope i explained well :pf: )
  • Switched database initialization from SchemaUtils to MigrationUtils this way if i edit a scheme, it’s also applied at startup instead of just creating new tables and never modifying them
  • Made the dashboard disableable
0
0
16
Open comments for this post

6h 31m 19s logged

  • Created the /minecraft command: allows to fetch
  1. Java and Bedrock edition server data (with mcstatus.io API)
  2. Player info (with Starlight API by lunareclipse.studio)
  3. Player skin rendered as a 3D model in different poses (with Starlight API)
  • Created the /embed command: send anything as an embed
  • Created the /qr command: encode some text into a QR Code (output can be an image or an ASCII text)
  • Updated the dashboard to add a static resource /skinModels which is used for the /minecraft skin sub command to fetch custom made models
  • Added a regex for HEX colors (matches #ffffff, #fff, ffffff and fff)
  • created a Minecraft object to collect all minecraft related functions
  • Created the starlight and mcstatus.io API services & added them in the API client
  • Update main handleRequest function to add an optional error handler
0
0
14
Open comments for this post

3h 35m 34s logged

  • Added the /8ball command: ask a question and get a random answer
  • Added topic command: get a random topic to start a conversation
  • Added /qalc command: execute calculation using libqalculate
  • Added /console command: run any shell command
  • Added /animal command: get a random animal (cat, dog, fox, duck)
  • Added /ip command: get info about an IPv4 or IPv6 address
  • Installed the retrofit libs required to make HTTP requests
  • Added a regex to check if a IPv4 or IPv6 is valid (took from networkingtoolbox.net)
  • Created util function to get the country flag & name from its code (took from my Hackatime android app)
0
0
19
Open comments for this post

5h 57m 19s logged

  • Added /http command: get a HTTP status with the picture of an animal like cat, dog, goat, duck etc.
  • Added /perms command: add/remove/list the users allowed to use a specific command
  • Added /status command: enable/disable specific commands
  • Added /dig: perform a dig query on a domain
  • Added /whois: perform a WHOIS query on a domain/IP/ASN
  • Fixed database upsert function erroring because no column was being passed as keys (primary)
  • Moved command registration to the onReady event
  • Installed a lib for DNS queries and a lib to check other libs updates
  • Added a utility Domain object that contains the function to perform dig and whois queries
  • Added utility functions to convert a ISO string, epoch seconds or Instant to discord time format
0
0
18
Open comments for this post

3h 32m 5s logged

  • Created the /eval command
  • Added the registration & handling of the commands (also checks if the user can run the command and if the command is enabled, by checking the enabled status and allowedUsers list in the command_permissions table)
  • Installed some libs to run code at runtime (JavaScript, Python and Kotlin (used in /eval)
0
0
8
Open comments for this post

4h 51m 22s logged

Created the base skeleton with the bot (w/ events), web dashboard (rn just shows “WIP” text) and database with the schemes & some helper functions


For the Discord bot i’m using the Kord library
For the web dashboard i’m using the Ktor library
This is the first time i use either of those 2 libs so my usage may not be the best :pf:

0
0
12
Open comments for this post

4h 8m 45s logged

  • Added the leaderboard screen
  • Took Pager, PullToRefresh and TextInput components from my other apps
  • Added pull to refresh in all screens (goals, home, projects & leaderboard (for leaderboard u gotta do it specifically on the leaderboard, not outside))
  • Fixed a crash when opening a project git repo
  • Fixed login failing to send the API key to the server because i had put it before actually storing the access token so it would error with “Missing access token”
  • installed a lib to load images form the network (used for the avatars in the leaderboard)
  • Improved the .shimmerable modifier
  • Improved spacing in the settings save buttons between the text and the icon/loading spinner
  • Fixed backend API’s sendApiKey function using wrong tag in logging
0
0
12
Open comments for this post

2h 20m 18s logged

  • Fixed the missing types so now the app builds
  • Updated all HTTP requests that needed an API key so instead of only fetching it, they also cache it
  • Added a HTTP request to revoke the Hackatime OAuth2 access token which is used on logout
  • Added waterfall padding to the Header component (waterfall padding is a larger horizontal padding for phones that have rounded/curved screen edges)
  • Moved LoginScreen, ProjectsScreen, GoalsScreen and SettingsScreen to viewModel
  • Added a scrollbar in all scrollable screens (took the scrollbar code from my other apps)
  • Added the Notification object (this too took from ym other apps)
  • Added base skeleton for the leaderboard tab (just shows “WIP”)

GL to the GOIs, the commits for this devlogs were a mess cuz i made alot of changes at once and then tried to split it in multiple commits to avoid making a huge one 😭 🥀

0
0
54
Open comments for this post

6h 16m 57s logged

  • Switched login to Hackatime OAuth2 (untested)
  • Moved MainActivity to use a viewModel and update the FCM registering
  • Moved HomeScreen to use a viewModel
  • Added a custom Logger class (taken from my other apps)
  • Entirely rewritten the API endpoints using the new API docs
  • Updated the Firebase token registration handling (untested)
  • Made SecureStorage keys constant
  • Updated some function types
  • Renamed “API Key” to “data” in the share to server switch as now it shares the access token
  • Updated libs and raised target SDK from 36 (Android 16) to 37 (Android 17)

Current code can not be currently built as most screens have missing types after the API endpoints rewrite
also idk what to put as pic since it’s all code changes and can’t build the app so i’ll put the OAuth2 handling with the net.openid:appauth library

0
0
7
Open comments for this post

2h 35m logged

  • Added updated checking
    • For F-Droid flavor it doesn’t do anything
    • For APK flavor it checks my git repo
    • For Play Store flavor it uses play store com.google.android.play:app-update library
  • Updated the app site, available at https://ptero.stefdp.com
  • Updated the changelog & app images in the fastlane folder
  • Added an animation when switching between loading states with circular loading
0
0
11
Loading more…

Followers

Loading…