Compare commits

...
455 Commits
Author SHA1 Message Date
claude Bot 1101425380 Add support for S3-backed image storage 2026-10-18 19:04:14 +01:00
claude Bot 7fcb2eb747 Update build process 2026-10-11 14:26:15 +01:00
claude Bot 644adc3f87 Bump version 2026-10-10 20:07:36 +01:00
claude Bot f41846d88b Don't attempt to send "empty" embeds 2026-10-10 20:03:15 +01:00
claude Bot d77ff6b216 2nd attempt 2026-05-25 20:29:14 +01:00
claude Bot b1fda50d4c Fix re-rendering issue 2026-05-23 18:15:41 +01:00
claude Bot 05c7b9151c Remove column drop 2026-05-21 20:15:43 +01:00
claude Bot f1e0a7cdf8 Disable cache lookup for users 2026-05-21 20:09:06 +01:00
claude Bot 050277ac8b Add dark mode support 2026-05-16 19:17:29 +01:00
claude Bot 9c6c324b02 Remove npm build as its done by build.rs 2025-12-22 16:54:21 +00:00
claude Bot d7065cf0d6 Remove ignored file 2025-12-17 18:32:16 +00:00
claude Bot b0c6eedba9 Update run containerfile for /remind support 2025-11-26 18:35:20 +00:00
jude 77690b57c6 Merge pull request 'jude/docker' (#5) from jude/docker into current
Reviewed-on: #5
2025-11-23 10:34:03 +00:00
claude Bot b273d8035a Use Caddy to serve localhost HTTPS 2025-11-23 10:32:37 +00:00
claude Bot a4ec39e4a2 Fix dashboard rendering 2025-11-09 16:07:14 +00:00
claude Bot 901cf575c4 Docker compose setup 2025-11-05 18:30:49 +00:00
claude Bot e98cb67f5f Bump version 2025-10-27 17:53:47 +00:00
claude Bot 1d8fd39d13 Apply patreon sharing across web/bot 2025-10-27 17:52:31 +00:00
claude Bot 91310d47d3 Add patreon-sharing option 2025-10-04 18:09:31 +01:00
claude Bot 5ae4baa2a6 Bump version 2025-09-16 21:09:25 +01:00
claude Bot 6884adc5b2 Add some docs 2025-09-16 21:06:51 +01:00
claude Bot 6ade91e11b Add cron parser for start time of a reminder 2025-09-16 21:00:58 +01:00
jude 20f0fb1c20 Merge pull request 'jude/custom-timestamp-formatting' (#4) from jude/custom-timestamp-formatting into current
Reviewed-on: #4
2025-09-16 19:19:07 +00:00
claude Bot 4d14365f2b Add another example 2025-08-22 20:14:28 +01:00
claude Bot 0f4df703eb Fix formatting strings 2025-08-21 22:51:57 +01:00
claude Bot a9edcec43c Deduplicate dashboard frontend code 2025-06-24 19:56:45 +01:00
claude Bot cc5f6d9d55 Bump version 2025-06-18 22:13:05 +01:00
claude Bot 761d545496 Improve errors and wording 2025-06-18 22:08:32 +01:00
claude Bot 265e48f84b Retry the fix 2025-03-20 16:56:10 +00:00
claude Bot c0583f2d43 Bump version 2025-03-20 16:44:39 +00:00
claude Bot cf84315fdd Handle errors properly from the API 2025-03-20 16:40:43 +00:00
claude Bot a604e4d191 Improve error message 2025-03-08 18:20:04 +00:00
claude Bot baa1f2a229 Fix columns not working properly 2025-03-08 17:55:50 +00:00
claude Bot 98160a8023 Add geoip data and 451 handler 2025-02-09 17:02:44 +00:00
claude Bot 7ac69b59af Bump version 2024-11-16 14:38:30 +00:00
claude Bot 0f9d3eda9a Update interface for template import/export 2024-11-16 14:35:19 +00:00
claude Bot 0a9c390f32 Added a route for importing templates 2024-11-16 14:15:35 +00:00
claude Bot b8ee99cb45 Bump version 2024-11-16 12:40:35 +00:00
claude Bot 56dbb95e22 Handle threads in channels option 2024-11-16 12:36:24 +00:00
claude Bot 307649eea0 Fix images not working 2024-11-14 18:23:34 +00:00
claude Bot 352e64377e Fix issue with row type 2024-10-21 19:20:25 +01:00
claude Bot 33e85dc44d Fix issue with exporting 2024-10-21 18:50:06 +01:00
claude Bot eb5c851d97 .. 2024-10-13 19:01:37 +01:00
claude Bot 6340f5a20f Add script to remove old reminders 2024-10-12 22:12:01 +01:00
claude Bot 894961e2cd Bump version 2024-10-10 20:48:09 +01:00
claude Bot 6f223b1bc2 Remove usages of FIND_IN_SET
FIND_IN_SET doesn't make use of indexes
2024-10-10 19:06:56 +01:00
claude Bot 137ae6f24b Bump version 2024-10-10 17:35:13 +01:00
claude Bot dcfb5a2d4f Speed up delete query 2024-10-04 20:19:06 +01:00
claude Bot 7395685e0d Working on adding docker stuff 2024-09-29 17:49:48 +01:00
claude Bot f7b9f9fd8c Bump version 2024-09-25 19:42:03 +01:00
claude Bot 616ca7ea10 Fix styles for mobile 2024-09-25 19:34:09 +01:00
claude Bot 23e2ed460b Bump version 2024-09-22 13:45:58 +01:00
claude Bot 2d9946093a Keep the old users table temporarily 2024-09-22 11:20:31 +01:00
claude Bot 9fbe5dcd13 Update migration script to not care about current db state 2024-09-21 17:26:34 +01:00
claude Bot 302fe5bc74 Revert change to initial migration 2024-09-21 10:13:47 +01:00
claude Bot 9bf0b5d7e4 Merge branch 'jude/fix-dashboard-patreon' into current 2024-09-21 10:11:19 +01:00
claude Bot 9a6b65f3a3 Don't delete guild data when guild becomes unavailable 2024-09-17 23:47:27 +01:00
claude Bot b6ff149d51 Fix macro list/delete 2024-09-14 12:07:09 +01:00
claude Bot 748e33566b Fix patreon not sharing between guild members 2024-08-19 21:50:14 +01:00
claude Bot e7c840a4d4 Fix patreon not sharing between guild members 2024-08-19 21:45:24 +01:00
claude Bot 96dc80fef9 Fix migration script 2024-08-11 16:57:48 +01:00
claude Bot ef76611d33 Add preferences to interface 2024-08-04 15:05:28 +01:00
claude Bot febd04c374 Update schemas and resolve some warnings 2024-07-16 15:18:02 +01:00
claude Bot 54ee3594eb Merge branch 'jude/remove-activity-setter' into current 2024-07-16 09:49:57 +01:00
claude Bot d7e90614c8 Bump ver 2024-07-07 16:35:32 +01:00
claude Bot b5dbfe336d Don't set activity in ready event 2024-07-07 16:31:23 +01:00
claude Bot b673a2fe6b Fix types 2024-07-07 16:29:28 +01:00
claude Bot f26682e6de Working on user preferences for dashboards 2024-07-04 20:52:36 +01:00
claude Bot 218be2f0b1 Bump ver 2024-06-18 19:32:47 +01:00
claude Bot d7515f3611 Don't require View Channel permission 2024-06-18 19:28:53 +01:00
claude Bot 6ae1096d79 Bump ver 2024-06-12 17:44:55 +01:00
claude Bot 1f0d7adae3 Correct service file 2024-06-12 17:21:42 +01:00
claude Bot fc96ae526f Default permission checks to true 2024-06-10 18:30:55 +01:00
claude Bot 8881ef0f85 Fix DM reminders trying to load guild data 2024-06-06 16:56:19 +01:00
claude Bot 5e82a687f9 Increase watchdog 2024-06-04 22:34:58 +01:00
claude Bot de4ecf8dd6 QoL
* Made todo added responses ephemeral if /settings ephemeral is on
* Enabled systemd watchdog
* Move metrics to rocket
2024-06-04 18:40:49 +01:00
claude Bot 064efd4386 Bump version 2024-06-04 16:48:26 +01:00
claude Bot 65b8ba3b47 Redirect old dashboard routes to new routes 2024-06-04 16:42:42 +01:00
jude 9d452ed8cb Fix role selector 2024-05-10 17:37:27 +01:00
claude Bot 441419b92b Bump ver 2024-05-04 13:00:30 +01:00
claude Bot aecf2c15be Store times as local time not UTC 2024-05-04 10:24:20 +01:00
claude Bot 79da56c794 Bump ver 2024-05-03 16:26:52 +01:00
claude Bot ef10902c1e Fix todo list deletion not working properly 2024-05-03 16:21:27 +01:00
claude Bot c277f85c2a Bump dependencies 2024-05-03 16:07:34 +01:00
claude Bot 035653c7fa Bump ver 2024-04-29 08:57:47 +01:00
claude Bot 6358bc3deb Partially revert timezone change 2024-04-29 08:49:01 +01:00
claude Bot 9f5066f982 Bump ver 2024-04-29 08:46:36 +01:00
claude Bot 1d06999e41 Fix bugs with time picker
* Load UTC time correctly at page load
* Don't translate to/from timezone when using the browser date/time
  input
2024-04-16 12:44:19 +01:00
claude Bot 1cf707140c Bump version 2024-04-16 12:22:02 +01:00
claude Bot e38c63f5ba Don't show empty channels 2024-04-16 11:42:19 +01:00
claude Bot d52b8b26f2 Upgrade dependencies 2024-04-16 11:19:21 +01:00
jude bb2128a7ed Tweaks
* Don't show @everyone in the role picker
* Show some text on the image picker talking about Discord CDN
* Correct == in todos
2024-04-11 15:40:50 +01:00
jude 5e99a6f9de Add create todo under each channel
Sort channels for consistency
2024-04-11 15:32:34 +01:00
jude 5406e6b8ec Show all channels and filter todos accordingly 2024-04-11 15:26:24 +01:00
claude Bot 4ee0bc4e37 Bump ver 2024-04-11 12:43:22 +01:00
claude Bot b99bb7dcbf Fix todo sorting 2024-04-11 12:39:02 +01:00
claude Bot 98f925dc84 Bump version 2024-04-10 18:54:30 +01:00
claude Bot 24e316b12f Add delete/patch todos 2024-04-10 18:42:29 +01:00
claude Bot 4063334953 More work on todo list 2024-04-09 21:21:46 +01:00
claude Bot e128b9848f More work on todo list support 2024-04-07 20:20:16 +01:00
claude Bot 9989ab3b35 Start work on todo list support for dashboard 2024-04-06 14:27:58 +01:00
claude Bot b951db3f55 Bump version 2024-03-31 13:30:30 +01:00
claude Bot 884a47bf36 Always show remaining time in top bar 2024-03-31 12:54:48 +01:00
claude Bot b0f932445c Add server emoji picker 2024-03-31 12:49:52 +01:00
claude Bot 2861cdda0b Bump version 2024-03-29 16:28:09 +00:00
claude Bot 7ba8fcd6b7 Add note to the server data page that states the bot might be restarting 2024-03-29 16:24:24 +00:00
claude Bot 850f0fad57 Bump version 2024-03-29 16:22:13 +00:00
claude Bot a770a17ee7 Don't invalidate reminders when saving 2024-03-29 16:15:01 +00:00
claude Bot d15a66d9d9 Bump version 2024-03-28 19:36:23 +00:00
claude Bot 30f011fcd5 Don't send attachments over API 2024-03-28 19:34:30 +00:00
claude Bot 15dbed2f0f Bump version 2024-03-27 17:28:35 +00:00
claude Bot 18cac0345b Allow removing attachments
Show HTTP errors
2024-03-27 17:19:19 +00:00
claude Bot 334b1bc084 Bump version 2024-03-26 17:46:56 +00:00
claude Bot ba3c76c25f Fix import/export showing "Malformed base64" 2024-03-26 17:43:35 +00:00
claude Bot 67b6f30c62 Add IDs to metrics 2024-03-25 16:41:49 +00:00
claude Bot 8ae311190f Fix panic????????? 2024-03-25 06:07:30 +00:00
claude Bot 016164affb Remove unused javascript/css 2024-03-24 21:00:27 +00:00
claude Bot 2c0aeef700 Fix build. Bump version 2024-03-24 20:55:07 +00:00
claude Bot ecd75d6f55 Add metrics 2024-03-24 20:38:19 +00:00
claude Bot 4a80d42f86 Move postman and web inside src 2024-03-24 20:23:16 +00:00
claude Bot 075fde71df Bump version 2024-03-11 18:17:22 +00:00
claude Bot 55136aecdc Set default embed color correctly 2024-03-11 18:14:27 +00:00
claude Bot 63fc2cdcbc Block editing username and avatar on DMs 2024-03-10 19:43:57 +00:00
claude Bot 3190738fc5 Extend user reminder API endpoints 2024-03-09 16:17:55 +00:00
claude Bot 8f4810b532 Convert to/from timezone 2024-03-08 16:36:24 +00:00
claude Bot a5e6c41fa5 Bump ver
Update build file
2024-03-05 20:55:20 +00:00
claude Bot 5f0aa0f834 Add routes for getting/posting user reminders 2024-03-05 20:36:38 +00:00
claude Bot dbe8e8e358 Add mentioning for channels 2024-03-04 20:36:37 +00:00
claude Bot 85a114e55c Start adding stuff for user reminders 2024-03-03 21:58:48 +00:00
claude Bot 329492b244 Add mention support
Allow vertical resizing of inputs
2024-03-03 21:44:35 +00:00
claude Bot 66135ecd08 Show time until on collapsed reminders 2024-03-03 20:38:17 +00:00
claude Bot 382c2a5a1e Stick options 2024-03-03 19:43:02 +00:00
claude Bot b91245a3f7 Build dashboard with bot 2024-03-03 13:21:06 +00:00
claude Bot 6f0bdf9852 Support sending reminders to threads 2024-03-03 13:04:50 +00:00
claude Bot dcee9e0d2a Begin to work on thread support 2024-03-03 11:58:22 +00:00
claude Bot 8e6e1a18b7 Bump ver 2024-03-01 18:04:34 +00:00
claude Bot 72af0532fa Fix timezones 2024-03-01 17:54:05 +00:00
claude Bot e83b643d86 Show error for files that are too large 2024-03-01 16:56:31 +00:00
claude Bot 0e0ab053f3 Fix time inputs 2024-03-01 16:54:56 +00:00
claude Bot 8c2296b9c8 Bump versions 2024-02-28 21:37:10 +00:00
claude Bot 1c6103142f Fix color picker not working 2024-02-28 21:30:53 +00:00
claude Bot 328127c55e Fix images not setting properly 2024-02-28 21:30:49 +00:00
claude Bot b0e37b56c0 Bump version 2024-02-26 10:42:46 +00:00
claude Bot 45f5b6261a Convert times to/from UTC 2024-02-26 10:26:07 +00:00
claude Bot 5f6326179c Move styles into Vite
Make sidebar work better
2024-02-25 09:50:10 +00:00
claude Bot 6254f91841 Bump version 2024-02-25 09:18:04 +00:00
claude Bot 60b90a61d4 Adjust permission check
Correct response code for oauth redirect
2024-02-25 09:09:00 +00:00
claude Bot 90f05758d0 Bypass self permission check for DMs 2024-02-24 22:27:29 +00:00
claude Bot 74b7b5d711 Remove glob patterns from static file includes 2024-02-24 17:56:27 +00:00
claude Bot 90550dc2c7 Add loader 2024-02-24 17:47:00 +00:00
claude Bot 79e6498245 Add overlay when data fetching 2024-02-24 17:31:39 +00:00
claude Bot a8ef3d03f9 Add dashboard to build 2024-02-24 16:12:34 +00:00
claude Bot 53e13844f9 Add unit tests 2024-02-24 15:02:34 +00:00
claude Bot dd7e681285 Update rust 2024-02-22 18:35:37 +00:00
claude Bot 6c20bf2a0f Bump version 2024-02-22 17:47:40 +00:00
claude Bot 15aa9ccffd Update help text 2024-02-22 17:42:29 +00:00
claude Bot 525471bcad Correct help text 2024-02-22 17:35:50 +00:00
claude Bot 86d53b63b6 Bump deps 2024-02-20 17:09:50 +00:00
claude Bot d8f266852a Add remaining commands 2024-02-18 14:32:58 +00:00
claude Bot 76a286076b Link all top-level commands with macro recording/replaying logic 2024-02-18 13:24:37 +00:00
claude Bot 5e39e16060 Add option types for top-level commands 2024-02-18 11:04:43 +00:00
claude Bot c1305cfb36 Extract trait 2024-02-17 20:25:14 +00:00
claude Bot 4823754955 Move all commands to their own files 2024-02-17 18:55:16 +00:00
claude Bot eb92eacb90 Rearranged some commands
Working on a macro to automatically add option wrappers
2024-02-17 14:09:01 +00:00
claude Bot d0833b7bca Add macro for extracting arguments 2024-02-16 20:09:32 +00:00
claude Bot b81c3c80c1 Record some parameters for /remind 2024-02-15 17:28:43 +00:00
claude Bot 2f6d035efe Rename table references 2024-02-14 19:44:53 +00:00
claude Bot 96012ce43c Add migration script 2024-02-14 19:35:23 +00:00
claude Bot fa7ec8731b Fix hook 2024-02-09 17:03:04 +00:00
claude Bot def43bfa78 Refactor macros 2024-02-06 20:08:59 +00:00
claude Bot e4e9af2bb4 Wip commit 2024-01-07 17:10:22 +00:00
claude Bot cce0de7c75 wip bump versions 2023-12-22 19:12:42 +00:00
jude e7803b98e8 Merge pull request 'jude/react-dashboard' (#3) from jude/react-dashboard into current
Reviewed-on: #3
2023-12-22 16:58:30 +00:00
claude Bot 7aae246388 Remove submodule 2023-12-22 16:58:30 +00:00
jude a2d442bc54 Reset intervals correctly 2023-12-22 16:58:30 +00:00
jude 59982df827 Correct merge errors 2023-12-22 16:58:30 +00:00
claude Bot 7a6372ed02 Update styles for notification flash 2023-12-22 16:58:30 +00:00
claude Bot 14a54471f7 Build dashboard 2023-12-22 16:58:30 +00:00
claude Bot 5d3b77f1cd Add metrics
Change dashboards to load an index.html file compiled otherwise
2023-12-22 16:58:30 +00:00
claude Bot 1d64c8bb79 Remove stat table 2023-12-22 16:58:03 +00:00
jude 8ba0f02b98 Bump version 2023-11-12 10:00:46 +00:00
jude d36438c6ce Bump package lock. Add attachment serializer 2023-11-12 09:39:45 +00:00
jude e0c60e2ce3 Decode attachments correctly when patching a reminder 2023-11-11 15:05:35 +00:00
claude Bot e7160215b0 Defer offset response 2023-11-11 13:36:40 +00:00
claude Bot 6eaa6f0f28 Bump version 2023-10-19 20:32:01 +01:00
claude Bot 9db0fa2513 Fix attachment decoding 2023-10-19 20:10:40 +01:00
claude Bot ca13fd4fa7 Restructure code 2023-10-08 18:24:04 +01:00
claude Bot 55acc8fd16 Bump ver 2023-10-08 12:39:31 +01:00
claude Bot 145711fa5d Add version strings to files 2023-10-08 12:21:38 +01:00
claude Bot 5524215786 Bump ver 2023-10-07 16:10:01 +01:00
claude Bot e8bd05893f Transmit guild name with patreon information 2023-10-07 16:08:25 +01:00
claude Bot e3d3418f99 Change routing. Remove a macro 2023-10-05 18:54:53 +01:00
claude Bot 2681280a39 Fix interval parsing for different cases 2023-10-01 09:42:58 +01:00
claude Bot 00579428a1 Bump version 2023-09-25 18:20:22 +01:00
claude Bot b8ef999710 Reload reminders after import 2023-09-25 18:17:19 +01:00
claude Bot e8f84e281a Bump version 2023-09-24 14:53:16 +01:00
claude Bot 8ddff698e5 Show messages when imports succeed. 2023-09-24 14:14:21 +01:00
claude Bot 541633270c Fix margin on bottom of collapsed reminders 2023-09-24 13:58:24 +01:00
claude Bot 25286da5e0 Use transactions for certain routes 2023-09-24 13:57:27 +01:00
claude Bot 4bad1324b9 Restructure
Move some code out to other files. Add transaction guard
2023-09-24 13:11:53 +01:00
claude Bot bd1462a00c Reposition "options"
Fix import/export
2023-09-23 23:38:16 +01:00
claude Bot 56ffc43616 Store intervals in templates 2023-09-23 22:47:21 +01:00
claude Bot 52cf642455 Send edit button to beta dashboard 2023-09-23 20:32:57 +01:00
claude Bot 0bf578357a Bump version 2023-09-23 18:31:51 +01:00
claude Bot 6e9eccb62e Update dependencies 2023-09-23 18:29:25 +01:00
claude Bot 6ea28284ce Bump ver 2023-09-23 18:24:39 +01:00
claude Bot a6525f3052 Move button row down. Correct image sizes on some browsers 2023-09-23 18:14:01 +01:00
claude Bot 348639270d Move button row down 2023-09-23 18:05:26 +01:00
claude Bot 37177c2431 Update styles for mobile 2023-09-23 18:04:41 +01:00
claude Bot 8587bed703 Bump ver 2023-08-19 17:10:45 +01:00
claude Bot 6c9af1ae8e Correct styles on mobile burger 2023-08-19 17:09:46 +01:00
claude Bot 7695b7a476 Fix delete command 2023-08-19 14:35:07 +01:00
jude 651da7b28e Improve some styles. Add an offline mode 2023-08-19 14:20:48 +01:00
jude eb086146bf Bump version 2023-08-16 17:05:18 +01:00
jude 4ebd705e5e Add clearer indication of interval patreon requirements 2023-08-16 17:03:38 +01:00
jude 5a85f1d83a Extract error sections to templates 2023-08-13 18:29:30 +01:00
jude 68ba25886a Correct javascript comparisons 2023-08-11 13:19:31 +01:00
claude Bot e25bf6b828 bump 2023-08-10 18:41:47 +01:00
claude Bot 5a386daa9d Fix expirations 2023-08-10 18:25:41 +01:00
claude Bot 0d4a02fb1e Bump ver 2023-08-08 17:48:49 +01:00
claude Bot e135a74a9b Fix avatars not loading correctly 2023-08-08 17:44:40 +01:00
claude Bot 77f17c8dc2 Partially fix reminder usernames resetting 2023-08-07 21:50:11 +01:00
claude Bot 6a94f990cf Bump ver 2023-08-03 20:08:14 +01:00
claude Bot 3aa5bd37aa Fix duplicating reminder fields 2023-08-03 19:57:28 +01:00
claude Bot fa83fed1af Fix interval updating 2023-08-03 19:50:15 +01:00
claude Bot 666cb7fa2f Fix padding etc. 2023-08-03 19:28:12 +01:00
claude Bot a5678e15dc Fix styling on buttons
Prevent template buttons from wrapping by consuming more vertical space on middle-sized screens
2023-08-03 18:07:03 +01:00
claude Bot 9405cfcee9 Fix "Reminder needs content".
Certain fields were not being checked correctly for content.
2023-08-03 17:32:17 +01:00
claude Bot cb25d02cdf Bump ver 2023-08-01 21:12:15 +01:00
claude Bot bfe651a125 Change autocomplete to use a past date in the past 2023-08-01 20:13:05 +01:00
claude Bot dc5e52d9ce Default datetime inputs to current date/time 2023-08-01 17:51:29 +01:00
claude Bot 229ada83e1 Fix cron username 2023-07-31 20:14:45 +01:00
claude Bot 13171d6744 Bump ver 2023-07-31 20:09:00 +01:00
claude Bot 2ad941c94c Fix not sending followup reminders 2023-07-31 20:07:54 +01:00
claude Bot 924d31e978 Bump ver 2023-07-31 20:05:43 +01:00
claude Bot f9a1b23212 Update privacy 2023-07-31 19:28:23 +01:00
claude Bot ae5795a7ea Update opcode handling 2023-07-31 19:25:06 +01:00
claude Bot ee36c38eda Update manifest 2023-07-31 19:18:53 +01:00
claude Bot eca7df3d9f Update style 2023-07-31 18:39:39 +01:00
claude Bot 902b7e1b4a Change reminder sending behaviour to keep reminders but flag them as sent 2023-07-31 18:39:27 +01:00
claude Bot db1a53a797 Bump ver 2023-07-31 18:04:16 +01:00
claude Bot 3605d71b73 Suppress errors. Restyle 2023-07-31 17:59:38 +01:00
claude Bot ea2cea573e Bump ver. Round failure rate. 2023-07-30 19:17:44 +01:00
claude Bot d5fa8036e8 Add data to admin page for success/fail history 2023-07-30 19:09:48 +01:00
claude Bot b8707bbc9a Fix deleting template making a call on empty template list 2023-07-30 17:16:37 +01:00
claude Bot 99eea16f62 Bump ver 2023-07-30 17:11:37 +01:00
claude Bot 88737302f3 Log reminder send status 2023-07-30 17:00:55 +01:00
claude Bot 213e3a5100 Fix styles. Feedback button 2023-07-30 15:50:46 +01:00
claude Bot 8fa1402ecc Bump ver 2023-07-30 15:42:46 +01:00
claude Bot e63996bb61 Fix create template not testing for errors 2023-07-30 15:36:58 +01:00
claude Bot 9ede879630 Stats table migration 2023-07-30 15:28:26 +01:00
claude Bot 88e9826a62 Update terms. Fix issue with role picker 2023-07-30 15:26:51 +01:00
claude Bot 5d655c7e6d Update privacy policy 2023-07-30 15:16:34 +01:00
claude Bot 51c9d8a7ae Fix client error on selecting server with no channels 2023-07-30 15:11:34 +01:00
claude Bot 90df265114 Add handler for 50001 Missing Access 2023-07-30 14:13:20 +01:00
claude Bot e65429aa9c Fix interval input styles 2023-07-30 13:22:57 +01:00
claude Bot 8d2232f0da Bump ver. Use Discord's error codes where possible to improve logging 2023-07-30 12:44:01 +01:00
claude Bot a58b9866ea Reduce log level 2023-07-30 12:14:47 +01:00
claude Bot b1f25be5d7 Use transparent background with dashboard logo 2023-07-29 17:13:05 +01:00
claude Bot f0f9787326 Bump ver 2023-07-23 17:00:09 +01:00
claude Bot 302f5835e6 Fix wrapping on long server names 2023-07-23 16:30:15 +01:00
claude Bot 58c778632e Fix wrapping on long server names 2023-07-23 16:28:27 +01:00
claude Bot 5671fd462b Update contrast on the burger button. fix error thrown by update_select 2023-07-23 16:15:24 +01:00
claude Bot 5ac9733f15 Bump ver 2023-07-23 14:44:35 +01:00
claude Bot 01dc0334fd Fix arbitrary access to reminder list. 2023-07-23 14:29:59 +01:00
claude Bot 4a17aac15c Bump ver 2023-07-23 12:36:25 +01:00
claude Bot 8ce4fc9c6d Fix enable/disable button. Hide demo button 2023-07-23 12:16:09 +01:00
claude Bot b4f07cfc1c Fix some mobile styles. Fix race condition in client side 2023-07-23 12:06:03 +01:00
claude Bot 8799089b2d Increase the size of reminder names. Restyle. 2023-07-22 15:09:06 +01:00
claude Bot 88c4830209 Fix dashboard embed fields 2023-07-22 13:34:18 +01:00
claude Bot 4dd3df5cc2 bump ver 2023-07-22 13:13:46 +01:00
claude Bot 369a325a46 bump ver 2023-07-22 10:46:33 +01:00
claude Bot 1a1a0fdefb show total reminders and intervals on admin dash 2023-07-10 09:59:11 +01:00
claude Bot dda8bd3e10 Fix dead link. Hopefully extract mysql details from environment 2023-06-23 11:56:53 +01:00
claude Bot edbfc92cb9 Add health check email notifications 2023-06-23 09:44:42 +01:00
claude Bot 6de11f09db Change graph periods 2023-06-21 15:36:05 +01:00
claude Bot 284bfcd9ad Split intervals 2023-06-21 15:24:43 +01:00
claude Bot 3d627b5bf0 Add charts 2023-06-21 15:09:24 +01:00
claude Bot c3c0dbbbae Fetch upcoming schedule and backlog count 2023-06-21 13:26:28 +01:00
claude Bot 64dd81e941 Admin only routes 2023-06-21 10:54:20 +01:00
claude Bot 799298ca34 Add fail cutoff for reminder updating 2023-06-20 15:41:28 +01:00
claude Bot fa542bb24f Clear up warning from new Rust version 2023-06-20 15:33:25 +01:00
claude Bot e025d945cf Fix serious issue with adding days. Origin chrono v4.23 2023-06-20 15:30:44 +01:00
claude Bot bb1c61d0b9 Fallback for reminder days 2023-06-20 14:44:05 +01:00
claude Bot 1519474f93 Report errors to server 2023-06-20 13:13:26 +01:00
claude Bot 9d8622f418 Add logout button 2023-06-20 08:50:12 +01:00
claude Bot a66db37b33 update poise 2023-06-18 10:47:31 +01:00
claude Bot c8c1a171d4 Bump version 2023-06-18 10:04:55 +01:00
claude Bot 88cfb829e3 Use conffiles 2023-06-17 12:49:01 +01:00
claude Bot 16be7a328e Correct permissions 2023-06-16 14:00:44 +01:00
claude Bot 04babf7930 updated some dashboard text. fixed authentication. hidden broken stuff 2023-06-16 13:38:42 +01:00
claude Bot 96bc09e8b5 correct authentication 2023-06-16 10:20:42 +01:00
claude Bot 976fb91ecc set default logs 2023-06-15 10:53:13 +01:00
claude Bot 1305b6e64e Bump version 2023-06-14 17:50:56 +01:00
claude Bot cdfe44d958 Configure permissions properly on Rocket.toml. Make static path behave better 2023-06-14 13:29:48 +01:00
claude Bot c824a36832 Corrected a number of apt packaging issues 2023-06-13 10:40:48 +01:00
claude Bot c4bd2c1d18 bump dateparser requirement 2023-06-12 22:47:23 +01:00
claude Bot 561555ab7e updated tos and privacy 2023-05-27 16:40:41 +01:00
claude Bot 115fbd44cb update some frontend 2023-05-27 16:12:09 +01:00
claude Bot aa931328b0 Support ephemeral reminder confirmations 2023-05-11 19:40:33 +01:00
jude 4b42966284 Moved stuff around since threads are ridiculous 2023-05-11 18:33:06 +01:00
jude 523ab7f03a Partial thread support 2023-05-11 18:32:58 +01:00
jude 6e831c8253 Add migration for threads. Add ability to load .env from wd 2023-05-11 18:32:50 +01:00
claude Bot 4416e5d175 Remove need to supply webhook avatar 2023-05-08 17:32:59 +01:00
claude Bot 734a39a001 Change default Python location. Update build instructions. Add container build instructions 2023-05-08 17:04:51 +01:00
claude Bot 98191d29ee deb-related stuff 2023-05-07 21:08:59 +01:00
claude Bot 1c4c4a8b31 Add deb stuff. Correct dependency on database name 2023-05-07 20:59:07 +01:00
claude Bot d496c81003 Correct typo in path 2023-05-07 20:38:08 +01:00
claude Bot 094d210f64 Fix orphaned channels issue again 2023-03-24 19:52:41 +00:00
claude Bot 314c72e132 Changed data import to add alongside rather than removing. 2023-03-24 19:41:34 +00:00
claude Bot 4e0163f2cb Rename some environment variables. Add partial deb metadata 2023-03-24 17:44:43 +00:00
claude Bot e5b8c418af Merge remote-tracking branch 'origin/next' into next 2023-03-24 11:11:59 +00:00
claude Bot 3ef8584189 Use SQLx migrations 2023-03-24 11:11:51 +00:00
claude Bot df2ad09c86 Update README.md 2023-01-21 12:25:24 +00:00
claude Bot d70fb24eb1 Fix todo viewing not working for large entries
Was not checking the length of the item when trying to add it to the
dropdown, causing failures.
2023-01-06 17:08:09 +00:00
claude Bot 3150c7267d Add validating to length-validated fields on edit
Can't just replace edit logic with overwrite logic because partial editing is used in enabling/disabling. So need to replicate logic in a sensible way.
2022-12-18 13:38:43 +00:00
claude Bot 6e65e4ff3d update some help pages 2022-12-18 13:09:02 +00:00
claude Bot 67a4db2e9a Ensure interval updating is performed properly
Validate patreon status. Validate interval length against minimum. Update the reminder pane to reflect changes that were made. Properly deserialize.
2022-12-11 10:09:26 +00:00
claude Bot e9bcb1973f Update web for daily intervals 2022-12-10 16:21:43 +00:00
claude Bot 9b87fd4258 Ver bump 2022-12-10 15:38:21 +00:00
claude Bot a49a849917 Support daily intervals
Add new database column for interval_days. Update humantime to return days as a separate field.
2022-12-10 15:32:49 +00:00
claude Bot aa74a7f9a3 Use timezones wherever possible.
Replace uses of NaiveDateTime with DateTime<Utc>. Use timezones in postman to update days correctly. Use chrono::Months to update months rather than using MySQL query.
2022-11-22 20:41:07 +00:00
claude Bot 08e4c6cb57 ver bump 2022-11-20 12:20:52 +00:00
claude Bot 6e087bd2dd Fix character counting on /look. Initial support for jumping over DST boundaries 2022-11-20 12:20:10 +00:00
jude e9792e6322 ver bump 2022-09-26 16:59:57 +01:00
jude 130504b964 Add notice to macro initial run 2022-09-26 16:44:30 +01:00
jude 2a8117d0c1 Revert multiline changes 2022-09-20 17:00:33 +01:00
jude 94bfd39085 Patch compilation against live schema 2022-09-17 13:05:50 +01:00
jude 40cd5f8a36 Patch compilation against live schema 2022-09-17 13:03:52 +01:00
jude 133b00a2ce Patch compilation against live schema 2022-09-17 12:52:03 +01:00
jude 57336f5c81 Change macro list to use fields to prevent going over limit
Add length checks for name and description
2022-09-17 12:37:58 +01:00
jude b62d24c024 Add an autocomplete for time hints
Shows the approximate time until a reminder will send in the autocomplete area.
2022-09-12 17:49:10 +01:00
jude 8f8235a86e Move macro commands to own module
Lots of code here
2022-09-12 16:45:00 +01:00
jude c8f646a8fa Override timezone per command
Timezone option that will override the timezone on a per-command basis
2022-09-11 18:59:46 +01:00
jude ecaa382a1e Add join message 2022-09-11 17:38:53 +01:00
jude 8991198fd3 Use autocomplete to ensure content box is shown 2022-09-11 15:24:02 +01:00
claude Bot f20b95a482 Upgrade poise. Combine remind/multiline into one command 2022-09-08 17:58:05 +01:00
claude Bot 8dd7dc6409 Added command for multiline reminders 2022-09-07 18:27:13 +01:00
claude Bot c799d10727 Move extra processes to user data setup 2022-09-03 16:19:59 +01:00
claude Bot ceb6fb7b12 bump version 2022-09-03 15:49:05 +01:00
claude Bot 6708abdb0f Merge pull request #10 from reminder-bot/jellywx/fix-dm-reminders
group by channel instead of guild
2022-09-03 15:44:00 +01:00
claude Bot a38f6024c1 Migrate natural commands 2022-09-03 15:40:29 +01:00
claude Bot 7d8748e3ef group by channel instead of guild 2022-08-19 09:04:12 +01:00
claude Bot bb3386c4e8 migration for $r commands 2022-08-14 16:22:00 +01:00
claude Bot 25b84880a5 Don't send non-interval disabled reminders
Skip the sending logic as some users use disabled one-time reminders as presets
2022-08-04 19:06:29 +01:00
claude Bot 7b6e967a5d Block/allow DM reminders
Only affects slash commands but this is sort of a non-issue post September
2022-07-29 19:22:15 +01:00
claude Bot 2781f2923e Restrict reminder selection to one-per-guild during fetch loop 2022-07-28 19:20:15 +01:00
claude Bot 03f08f0a18 Update deps. Drop limiter on reminder query 2022-07-27 21:42:09 +01:00
claude Bot 79c86d43f2 Changed return types to results 2022-07-24 20:06:37 +01:00
claude Bot e19af54caf Import todo lists. Export other data. 2022-07-22 23:30:45 +01:00
claude Bot f4213c6a83 Cache channel in todo list command
Channel was not being cached, placing channel todos into the server todo list.
2022-07-02 08:31:17 +01:00
claude Bot f56db14720 Webhook command
Add a command to view the webhook, as some users wish to use the webhook to edit past reminders.
2022-06-17 17:15:48 +01:00
claude Bot 6f7d0f67b3 mentions 2022-05-15 12:14:07 +01:00
claude Bot bfc2d71ca0 patreon 2022-05-14 12:02:46 +01:00
claude Bot 8eb46f1f23 delete reminders when the user cannot be direct messaged 2022-05-14 10:56:03 +01:00
claude Bot c4087bf569 pos mysql 2022-05-14 08:12:50 +01:00
claude Bot f25cfed8d7 edit button 2022-05-13 23:30:01 +01:00
claude Bot d2a8bd1982 update readme with better build instructions 2022-05-13 23:13:39 +01:00
claude Bot 437ee6b446 ver bump 2022-05-13 23:10:29 +01:00
claude Bot 7d43aa5918 cleared up all unwraps from the reminder sender. cleared up clippy lints. added undo button 2022-05-13 23:08:52 +01:00
claude Bot 8bad95510d configure playing status 2022-05-13 12:43:27 +01:00
claude Bot d7a0b727fb Merge pull request #7 from reminder-bot/poise-2
Poise 2
2022-05-13 09:00:26 +01:00
claude Bot 1c1f5662d3 removed guild only hook. permissions on commands. fix for macro command count. 2022-05-13 08:59:46 +01:00
jude ded750aa2d update dependencies 2022-04-19 15:23:27 +01:00
jude 4c4f0927f1 fix attachments. remove webhook sending for speedup 2022-04-09 12:21:28 +01:00
claude Bot 0f05018cab removed remainder of old personal dashboard code. fixed big lighthouse issues. 2022-04-07 21:41:24 +01:00
claude Bot 85d27c5bba fields are now json and work. fix for intervals. moved some code together 2022-04-07 17:13:02 +01:00
claude Bot d946ef1dca process intervals. inlining fields 2022-04-03 21:53:28 +01:00
claude Bot f21d522435 mobile appearence 2022-03-27 19:17:30 +01:00
claude Bot 3add718cdf interval field client processing 2022-03-27 18:03:42 +01:00
claude Bot f4ef7afea0 show newly created reminders. fix color rendering. 2022-03-27 14:15:01 +01:00
claude Bot f8547bba70 upload attachments 2022-03-26 20:03:58 +00:00
claude Bot 08fd88ce54 styling interval inputs 2022-03-24 22:40:05 +00:00
claude Bot abfe492192 put a plain background on images 2022-03-24 21:36:22 +00:00
claude Bot afb2fbe4ff patch reminders 2022-03-22 22:21:47 +00:00
claude Bot 878ea11502 graceful shutdown 2022-03-21 23:11:52 +00:00
claude Bot 93da746bdc support articles 2022-03-20 21:41:38 +00:00
claude Bot 9e6a387f82 support articles 2022-03-20 21:04:24 +00:00
claude Bot af9d8bea62 collapse/expand elements. moved the embed color picker 2022-03-20 18:29:27 +00:00
claude Bot 318be1fa5e prettier for javascript formatting. sorting 2022-03-20 15:46:22 +00:00
claude Bot 3b6e02e16e working on editing reminders 2022-03-20 00:10:19 +00:00
claude Bot a56f84f659 timezone help. moved javascript to separate file 2022-03-19 23:47:40 +00:00
claude Bot 3e4dd0fa48 channel selection shows properly. loader 2022-03-19 21:28:11 +00:00
claude Bot d0d2d50966 create reminders :) 2022-03-19 17:41:34 +00:00
claude Bot e2e5b022a0 create reminder route. formatting on frontend 2022-03-05 19:43:02 +00:00
claude Bot 6ae2353c92 add distinct identifying names. log errors in run_macro 2022-02-20 12:19:39 +00:00
claude Bot 06c4deeaa9 component models 2022-02-19 22:11:21 +00:00
claude Bot afc376c44f everything except component model actions 2022-02-19 18:21:11 +00:00
claude Bot 84ee7e77c5 2nd attempt at doing poise stuff 2022-02-19 14:32:03 +00:00
claude Bot 620f054703 extracted event handler. removed custom sharding code. extracted util functions 2022-02-19 13:28:24 +00:00
claude Bot cb471c52f3 optionally dont run web/postman 2022-02-19 12:45:33 +00:00
claude Bot 37420b2b1f ..... 2022-02-11 20:03:53 +00:00
claude Bot 49974b7153 moved dashboard crate into here 2022-02-11 17:44:08 +00:00
claude Bot a3844dde9e moved postman into separate crate 2022-02-06 15:47:59 +00:00
jude d62c8c95c2 support months in sender 2022-02-01 23:41:28 +00:00
jude 05606dfec1 update lock 2022-02-01 23:05:14 +00:00
jude 68ee42f244 Merge remote-tracking branch 'origin/next' into next
# Conflicts:
#	Cargo.lock
2022-02-01 23:04:44 +00:00
jude fad28faabb interval months/interval seconds 2022-02-01 23:04:31 +00:00
jude e5ab99f67b removed some log messages. rustfmt 2021-12-21 13:46:10 +00:00
jude e47715917e integrate reminder sender 2021-12-20 13:48:18 +00:00
jude 4f9eb58c16 made the missing perms send a message (since the webhook responses bypass perms) 2021-11-18 21:05:49 +00:00
jude c953bc0cd3 various todo fixes 2021-11-15 08:09:48 +00:00
jude 610779a293 added mention blocker to everything 2021-11-15 07:51:38 +00:00
jude ebd1efa990 added check for guild only commands 2021-11-13 22:30:18 +00:00
jude 5230101a8d beta0 2021-11-13 14:12:37 +00:00
jude d8f42c1b25 fixed an issue with utc time. removed intents 2021-11-07 13:23:41 +00:00
jude 23c6b3869e patreon gated repeat argument 2021-11-06 23:30:38 +00:00
jude a21f518b21 removed framework impl 2021-11-02 20:19:29 +00:00
jude f1bfc11160 removed all remaining restriction code 2021-11-02 20:10:10 +00:00
jude 72228911f2 Readded some guild data code. fixed some weird cases with macro command. removed restrict command. changed db to be 'as it was'. removed execution limiters since commands are quite heavily ratelimited anyway 2021-10-30 21:02:11 +01:00
jude db7cca6296 added to the migration file somewhat. added some checks to components 2021-10-26 22:13:51 +01:00
jude e36e718f28 removed all guild data related code 2021-10-26 21:10:14 +01:00
jude 44debf93c5 removed dead code 2021-10-26 20:54:22 +01:00
jude 9b54fba5e5 Revert "turned pager into a single type"
This reverts commit 4490f19c
2021-10-26 20:11:19 +01:00
jude 6cf660c7ee macro stuff 2021-10-16 19:18:16 +01:00
jude 4490f19c04 turned pager into a single type 2021-10-13 17:23:50 +01:00
jude a362a24cfc changed a bunch of types so the macro run command works nicely 2021-10-13 16:37:15 +01:00
jude 903daf65e6 ... 2021-10-12 21:52:43 +01:00
jude b310e99085 todo pager and selector 2021-10-11 21:19:08 +01:00
jude ebabe0e85a todo stuff 2021-10-02 22:54:34 +01:00
jude 6b5d6ae288 fixed del pager. todo stuff 2021-09-27 17:34:13 +01:00
jude 379e488f7a subcommand group syntax 2021-09-24 12:55:35 +01:00
jude d84d7ab62b added functionality for reusable hook functions that will execute on commands 2021-09-22 21:12:29 +01:00
jude a0974795e1 ... 2021-09-18 13:40:30 +01:00
jude a9c91bee93 pager improvements. deleting working 2021-09-16 18:30:16 +01:00
jude b2207e308a optimized packing slightly. restrict interactions 2021-09-16 15:42:50 +01:00
jude 3c1eeed92f look command pager 2021-09-16 14:48:29 +01:00
jude 395a8481f1 typing 2021-09-12 16:59:19 +01:00
jude bae0433bd9 framework now supports subcommands. timer cmd working 2021-09-12 16:09:57 +01:00
jude 3e547861ea components 2021-09-11 20:40:58 +01:00
jude 9b5333dc87 more commands. fixed an issue with text only commands 2021-09-11 00:14:23 +01:00
jude 471948bed3 linked everything together 2021-09-10 18:09:25 +01:00
jude c148cdf556 removed language_manager.rs. framework reworked for slash commands. updated info commands for new framework 2021-09-06 13:46:16 +01:00
jude 98aed91d21 revert some usages of discord builtin timestamp formatting 2021-09-02 23:59:30 +01:00
jude 40630c0014 restructured all the reminder creation stuff into builders 2021-09-02 23:38:12 +01:00
jude 85a8ae625d interactions to delete a newly created reminder 2021-07-17 22:53:00 +01:00
jude 43bbcb3fe0 cleared up clippy lints 2021-07-17 17:00:47 +01:00
jude 1556318d07 turned models into module 2021-07-16 21:28:51 +01:00
jude ea2b0f4b0a removed useless thing 2021-07-16 18:23:43 +01:00
jude f02c04b313 use discord timestamp formatting 2021-07-16 18:22:39 +01:00
jude 320060b1bd functions for signing stuff 2021-07-16 18:18:35 +01:00
jude bef33c6dac show user who created reminder 2021-07-10 18:24:43 +01:00
jude 7bcb3c4a70 fixed oversight where users could set DM reminders across servers 2021-07-10 13:25:12 +01:00
jude 2e153cffab removed some stuff from perm checks that is no longer needed 2021-06-27 17:15:50 +01:00
jude 540f120d7d lang command uses interaction buttons 2021-06-27 16:55:59 +01:00
jude 59ffb505dc timezone command uses interaction buttons 2021-06-27 16:31:54 +01:00
jude 2bec2b9e12 added an on delete clause 2021-06-23 14:04:46 +01:00
jude 507075d9d4 fixed the migration script since mysql is stupid 2021-06-22 16:46:42 +01:00
jude 85659f05aa migrated reminder commands to new database code 2021-06-03 17:43:28 +01:00
jude eb07ece779 added migration file 2021-06-03 16:42:22 +01:00
jude 1a09f026c9 made ratelimiting only apply when a command is actually done 2021-05-25 22:43:35 +01:00
jude b31843c478 check time to kill users that get stuck in executing state 2021-05-23 10:59:06 +01:00
jude 9109250fe8 fix for alias 2021-05-13 20:20:53 +01:00
jude 2346c2e978 v bump 2021-05-13 18:50:42 +01:00
jude a0da4dcf00 ratelimit commands 2021-05-13 18:50:22 +01:00
503 changed files with 193863 additions and 6321 deletions

No files matched your search

+29 -4
View File
@@ -1,7 +1,32 @@
/target target
.env .env
/venv /venv
__pycache__/
.cargo .cargo
assets .idea
out.json static/index.html
/.idea static/assets
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
.junie
+2
View File
@@ -0,0 +1,2 @@
printWidth = 90
tabWidth = 4
@@ -0,0 +1,84 @@
{
"db_name": "MySQL",
"query": "\n SELECT id, channel, nudge, webhook_id, webhook_token, paused,\n paused_until\n FROM channels\n WHERE channel = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNIQUE_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "channel",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 2,
"name": "nudge",
"type_info": {
"type": "Short",
"flags": "NOT_NULL",
"max_size": 6
}
},
{
"ordinal": 3,
"name": "webhook_id",
"type_info": {
"type": "LongLong",
"flags": "UNIQUE_KEY | UNSIGNED",
"max_size": 20
}
},
{
"ordinal": 4,
"name": "webhook_token",
"type_info": {
"type": "Blob",
"flags": "BLOB",
"max_size": 262140
}
},
{
"ordinal": 5,
"name": "paused",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 6,
"name": "paused_until",
"type_info": {
"type": "Timestamp",
"flags": "BINARY",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
true,
true,
false,
true
]
},
"hash": "017b3f73101926a3fe029ed75c412ec902aa74fee334c23fd75fe0cde1e324ca"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM patreon_link WHERE user_id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "0402e16b1ec89a96d893d43f6b40500ccbde3c619116a702c87954df49898e23"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "\n SELECT IFNULL(timezone, 'UTC') AS timezone\n FROM users\n WHERE id = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "timezone",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 128
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false
]
},
"hash": "0b7435a03c52a97a02363fdb30be7e320e07c1969826f169b69ea4b1615e36cd"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE users\n SET timezone = ?, allowed_dm = ?\n WHERE id = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "0ba0f26935e8aa3ad8083fc33e8826f53918e623cd19a145ce536daa16a2a73f"
}
@@ -0,0 +1,54 @@
{
"db_name": "MySQL",
"query": "\n SELECT id, dm_channel, IF(timezone IS NULL, ?, timezone) AS timezone, allowed_dm\n FROM users\n WHERE id = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 1,
"name": "dm_channel",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 10
}
},
{
"ordinal": 2,
"name": "timezone",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 65532
}
},
{
"ordinal": 3,
"name": "allowed_dm",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
false,
false,
true,
false
]
},
"hash": "0c88c5b30d2065c22e8f92ec97c921a33d599689f3283783d5416330f82b3e73"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE users\n SET dashboard_color_scheme = ?\n WHERE id = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "0fc1aa1d3cd8ab05585cbabfcd532ad744056476a924da1d4ad7b540b7499bd4"
}
@@ -0,0 +1,34 @@
{
"db_name": "MySQL",
"query": "\n SELECT todos.id, value FROM todos\n WHERE user_id = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNIQUE_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "value",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 8000
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false
]
},
"hash": "143549a79d51e027d8a7382a29b98deb3f4b5ca144c19a841660ed21f5ecda6e"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE reminders\n SET interval_seconds = NULL, interval_days = NULL, interval_months = NULL\n WHERE uid = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "19851ea7e43b625e6761ef18f4ab6f044850103fbfe44379a3557d4bd3bec044"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "\n SELECT IFNULL(timezone, 'UTC') AS timezone\n FROM users\n WHERE timezone IS NOT NULL\n GROUP BY timezone\n ORDER BY COUNT(timezone) DESC\n LIMIT 21\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "timezone",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 128
}
}
],
"parameters": {
"Right": 0
},
"nullable": [
false
]
},
"hash": "19bc60a2ff67ce6e169985a76405af51d7d16d4d7b84d1c239de5af79da93268"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n INSERT INTO todos (guild_id, channel_id, value)\n VALUES (\n (SELECT id FROM guilds WHERE guild = ?),\n (SELECT id FROM channels WHERE channel = ?),\n ?\n )\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "1b6c7786a3072e670b01755cc3c8baed295ef52e640d1d0b8c2e235d054f9e19"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "\n SELECT 1 as _r\n FROM timers\n WHERE owner = ?\n AND name = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "_r",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | BINARY",
"max_size": 2
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
false
]
},
"hash": "1b99f406cdac86118e40bf481a2905eea2005f35dcc4e96c7e099387a337fe87"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n DELETE FROM timers\n WHERE owner = ?\n AND name = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "1fc7899f041f2fa1b14e9d05fd5a604960aba6620e75f82b053aed7e4ccbd520"
}
@@ -0,0 +1,84 @@
{
"db_name": "MySQL",
"query": "\n SELECT id, channel, nudge, webhook_id, webhook_token, paused, paused_until\n FROM channels\n WHERE channel = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNIQUE_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "channel",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 2,
"name": "nudge",
"type_info": {
"type": "Short",
"flags": "NOT_NULL",
"max_size": 6
}
},
{
"ordinal": 3,
"name": "webhook_id",
"type_info": {
"type": "LongLong",
"flags": "UNIQUE_KEY | UNSIGNED",
"max_size": 20
}
},
{
"ordinal": 4,
"name": "webhook_token",
"type_info": {
"type": "Blob",
"flags": "BLOB",
"max_size": 262140
}
},
{
"ordinal": 5,
"name": "paused",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 6,
"name": "paused_until",
"type_info": {
"type": "Timestamp",
"flags": "BINARY",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
true,
true,
false,
true
]
},
"hash": "21b660ecbeffcac31ef283f59e420360a28b344759407024a11dc4a04da9341d"
}
@@ -0,0 +1,234 @@
{
"db_name": "MySQL",
"query": "SELECT\n reminders.attachment,\n reminders.attachment_name,\n reminders.content,\n reminders.embed_author,\n reminders.embed_author_url,\n reminders.embed_color,\n reminders.embed_description,\n reminders.embed_footer,\n reminders.embed_footer_url,\n reminders.embed_image_url,\n reminders.embed_thumbnail_url,\n reminders.embed_title,\n reminders.embed_fields,\n reminders.enabled,\n reminders.expires,\n reminders.interval_seconds,\n reminders.interval_days,\n reminders.interval_months,\n reminders.name,\n reminders.tts,\n reminders.uid,\n reminders.utc_time\n FROM reminders\n WHERE uid = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "attachment",
"type_info": {
"type": "Blob",
"flags": "BLOB | BINARY",
"max_size": 16777215
}
},
{
"ordinal": 1,
"name": "attachment_name",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 1040
}
},
{
"ordinal": 2,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 3,
"name": "embed_author",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 4,
"name": "embed_author_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 5,
"name": "embed_color",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 6,
"name": "embed_description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 7,
"name": "embed_footer",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 8,
"name": "embed_footer_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 9,
"name": "embed_image_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 10,
"name": "embed_thumbnail_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 11,
"name": "embed_title",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 12,
"name": "embed_fields",
"type_info": {
"type": "Json",
"flags": "BLOB | BINARY",
"max_size": 4294967295
}
},
{
"ordinal": 13,
"name": "enabled",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 14,
"name": "expires",
"type_info": {
"type": "Datetime",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 15,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 16,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 17,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 18,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 400
}
},
{
"ordinal": 19,
"name": "tts",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 20,
"name": "uid",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 256
}
},
{
"ordinal": 21,
"name": "utc_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | NO_DEFAULT_VALUE",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
true,
true,
false,
false,
true,
false,
false,
false,
true,
true,
true,
false,
true,
false,
true,
true,
true,
true,
false,
false,
false,
false
]
},
"hash": "2613618c00941649726b31f7c50b5ef50d85323a73def5c87bab2a58c80bf6cd"
}
@@ -0,0 +1,54 @@
{
"db_name": "MySQL",
"query": "\n SELECT\n IFNULL(timezone, 'UTC') AS timezone,\n use_browser_timezone,\n dashboard_color_scheme,\n reset_inputs_on_create\n FROM users\n WHERE id = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "timezone",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 128
}
},
{
"ordinal": 1,
"name": "use_browser_timezone",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 2,
"name": "dashboard_color_scheme",
"type_info": {
"type": "String",
"flags": "NOT_NULL | ENUM",
"max_size": 24
}
},
{
"ordinal": 3,
"name": "reset_inputs_on_create",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false
]
},
"hash": "2b5514b8707e699638103d32ed11fd09f6deeafcf3310eed7e92f5cb53b4d0b3"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n DELETE FROM reminders\n WHERE `utc_time` < NOW() - INTERVAL ? DAY\n AND status != 'pending'\n ORDER BY `utc_time`\n LIMIT 1000\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "2d780695fe98347ea4ab2cb745462f0a9c55cf913c71d4d822b91958f4f8a729"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "SELECT interval_seconds AS seconds FROM reminders WHERE uid = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
true
]
},
"hash": "33658ca3d75dd369ada738773c37f7dfda290c0e91640de805ca5947a11b91c6"
}
@@ -0,0 +1,34 @@
{
"db_name": "MySQL",
"query": "SELECT value, CONCAT('#', channels.channel) AS channel_id FROM todos\n LEFT JOIN channels ON todos.channel_id = channels.id\n INNER JOIN guilds ON todos.guild_id = guilds.id\n WHERE guilds.guild = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "value",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 8000
}
},
{
"ordinal": 1,
"name": "channel_id",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 84
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
true
]
},
"hash": "33dc87e03b45f2e36e941509a3492da910fbad24dce508469758bc8eb32bf914"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE channels SET webhook_id = NULL, webhook_token = NULL WHERE channel = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "38c3e110054bd49f5c0ae0da8fec298574a405954abcb263453722b4c474c59d"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "SELECT 1 as A FROM guilds WHERE guild = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "A",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | BINARY",
"max_size": 2
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false
]
},
"hash": "3f09cb97650fcb169659ad6b26b427d02e5015a22aec85011ddac3eba924c3c4"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n DELETE FROM todos\n WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)\n AND id = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "42ca9744c91f43f962254918d9758f766d8c71d71206c8911de7867115f09f65"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE reminders SET `status` = 'deleted' WHERE uid = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "4572261eb56c2783440f2bc5536407f8fa9423c6606f2f0b9128a83cabbbc269"
}
@@ -0,0 +1,134 @@
{
"db_name": "MySQL",
"query": "\n SELECT\n reminders.id,\n reminders.uid,\n channels.channel,\n reminders.utc_time,\n reminders.interval_seconds,\n reminders.interval_days,\n reminders.interval_months,\n reminders.expires,\n reminders.enabled,\n reminders.content,\n reminders.embed_description,\n reminders.set_by\n FROM\n reminders\n INNER JOIN\n channels\n ON\n channels.id = reminders.channel_id\n WHERE\n `status` = 'pending' AND\n channels.id = (SELECT dm_channel FROM users WHERE id = ?)\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "uid",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 256
}
},
{
"ordinal": 2,
"name": "channel",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 3,
"name": "utc_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | NO_DEFAULT_VALUE",
"max_size": 19
}
},
{
"ordinal": 4,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 5,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 6,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 7,
"name": "expires",
"type_info": {
"type": "Datetime",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 8,
"name": "enabled",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 9,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 10,
"name": "embed_description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 11,
"name": "set_by",
"type_info": {
"type": "LongLong",
"flags": "MULTIPLE_KEY | UNSIGNED",
"max_size": 20
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
true,
false,
false,
false,
true
]
},
"hash": "45e555a2a0664662f55cc738f91abf8c51648fb687f9568c4dd5f48e9273253a"
}
@@ -0,0 +1,34 @@
{
"db_name": "MySQL",
"query": "\n SELECT todos.id, value FROM todos\n INNER JOIN guilds ON todos.guild_id = guilds.id\n WHERE guilds.guild = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNIQUE_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "value",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 8000
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false
]
},
"hash": "46a742ed72cccb2d9d1e89819130772f0e2e231e362138c875b4b4346074686b"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT IGNORE INTO guilds (guild) VALUES (?)",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "48603378e8cbe169c2c60e32f3f8ee758f37927fcb494513ba50f510ace23654"
}
@@ -0,0 +1,234 @@
{
"db_name": "MySQL",
"query": "\n SELECT\n reminders.attachment,\n reminders.attachment_name,\n reminders.content,\n reminders.embed_author,\n reminders.embed_author_url,\n reminders.embed_color,\n reminders.embed_description,\n reminders.embed_footer,\n reminders.embed_footer_url,\n reminders.embed_image_url,\n reminders.embed_thumbnail_url,\n reminders.embed_title,\n IFNULL(reminders.embed_fields, '[]') AS embed_fields,\n reminders.enabled,\n reminders.expires,\n reminders.interval_seconds,\n reminders.interval_days,\n reminders.interval_months,\n reminders.name,\n reminders.tts,\n reminders.uid,\n reminders.utc_time\n FROM reminders\n INNER JOIN channels ON channels.id = reminders.channel_id\n WHERE `status` = 'pending' AND channels.channel = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "attachment",
"type_info": {
"type": "Blob",
"flags": "BLOB | BINARY",
"max_size": 16777215
}
},
{
"ordinal": 1,
"name": "attachment_name",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 1040
}
},
{
"ordinal": 2,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 3,
"name": "embed_author",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 4,
"name": "embed_author_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 5,
"name": "embed_color",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 6,
"name": "embed_description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 7,
"name": "embed_footer",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 8,
"name": "embed_footer_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 9,
"name": "embed_image_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 10,
"name": "embed_thumbnail_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 11,
"name": "embed_title",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 12,
"name": "embed_fields",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | BINARY",
"max_size": 4294967292
}
},
{
"ordinal": 13,
"name": "enabled",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 14,
"name": "expires",
"type_info": {
"type": "Datetime",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 15,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 16,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 17,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 18,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 400
}
},
{
"ordinal": 19,
"name": "tts",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 20,
"name": "uid",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 256
}
},
{
"ordinal": 21,
"name": "utc_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | NO_DEFAULT_VALUE",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
true,
true,
false,
false,
true,
false,
false,
false,
true,
true,
true,
false,
false,
false,
true,
true,
true,
true,
false,
false,
false,
false
]
},
"hash": "48a9268e9106a3a05e86ab36551944ba855a07b0241e912c6b1adee779c6f0ea"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "SELECT interval_months AS months FROM reminders WHERE uid = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
true
]
},
"hash": "48f9486fca42de11da150154e3713779c9062b9c0ba59dfb4f2781dbfcd50997"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT INTO reminders (\n uid,\n attachment,\n attachment_name,\n channel_id,\n avatar,\n content,\n embed_author,\n embed_author_url,\n embed_color,\n embed_description,\n embed_footer,\n embed_footer_url,\n embed_image_url,\n embed_thumbnail_url,\n embed_title,\n embed_fields,\n enabled,\n expires,\n interval_seconds,\n interval_days,\n interval_months,\n name,\n restartable,\n tts,\n username,\n `utc_time`\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
"describe": {
"columns": [],
"parameters": {
"Right": 26
},
"nullable": []
},
"hash": "4cc3ff2bbdf8502f6e739a002c7aa16df8c4f24de0966b26b268efab97e205e3"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE `channels` SET paused = 0, paused_until = NULL WHERE `channel` = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "4cffbd513f47223f7b58a97983e4f98722a7f369b81b584f3d6e9526755b465a"
}
@@ -0,0 +1,134 @@
{
"db_name": "MySQL",
"query": "\n SELECT\n reminders.id,\n reminders.uid,\n channels.channel,\n reminders.utc_time,\n reminders.interval_seconds,\n reminders.interval_days,\n reminders.interval_months,\n reminders.expires,\n reminders.enabled,\n reminders.content,\n reminders.embed_description,\n reminders.set_by\n FROM\n reminders\n LEFT JOIN\n channels\n ON\n channels.id = reminders.channel_id\n WHERE\n `status` = 'pending' AND\n channels.guild_id = (SELECT id FROM guilds WHERE guild = ?)\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "uid",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 256
}
},
{
"ordinal": 2,
"name": "channel",
"type_info": {
"type": "LongLong",
"flags": "UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 3,
"name": "utc_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | NO_DEFAULT_VALUE",
"max_size": 19
}
},
{
"ordinal": 4,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 5,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 6,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 7,
"name": "expires",
"type_info": {
"type": "Datetime",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 8,
"name": "enabled",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 9,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 10,
"name": "embed_description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 11,
"name": "set_by",
"type_info": {
"type": "LongLong",
"flags": "MULTIPLE_KEY | UNSIGNED",
"max_size": 20
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
true,
false,
true,
true,
true,
true,
false,
false,
false,
true
]
},
"hash": "4dc78a4ebdad0d9fb721389013537093dd814c313bc8ecc80fc9767420afb798"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n INSERT INTO todos (guild_id, value)\n VALUES (\n (SELECT id FROM guilds WHERE guild = ?), ?\n )\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "4ed04c5ace1b8bbd76d507ddedd3d52104f402e0cdf7c8aff0a9ecbb1d385f9b"
}
@@ -0,0 +1,264 @@
{
"db_name": "MySQL",
"query": "\n SELECT\n reminders.attachment_name,\n reminders.avatar,\n channels.channel,\n reminders.content,\n reminders.embed_author,\n reminders.embed_author_url,\n reminders.embed_color,\n reminders.embed_description,\n reminders.embed_footer,\n reminders.embed_footer_url,\n reminders.embed_image_url,\n reminders.embed_thumbnail_url,\n reminders.embed_title,\n reminders.embed_fields,\n reminders.enabled,\n reminders.expires,\n reminders.interval_seconds,\n reminders.interval_days,\n reminders.interval_months,\n reminders.name,\n reminders.restartable,\n reminders.tts,\n reminders.uid,\n reminders.username,\n reminders.utc_time\n FROM reminders\n LEFT JOIN channels ON channels.id = reminders.channel_id\n WHERE uid = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "attachment_name",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 1040
}
},
{
"ordinal": 1,
"name": "avatar",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 2,
"name": "channel",
"type_info": {
"type": "LongLong",
"flags": "UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 3,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 4,
"name": "embed_author",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 5,
"name": "embed_author_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 6,
"name": "embed_color",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 7,
"name": "embed_description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 8,
"name": "embed_footer",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 9,
"name": "embed_footer_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 10,
"name": "embed_image_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 11,
"name": "embed_thumbnail_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 12,
"name": "embed_title",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 13,
"name": "embed_fields",
"type_info": {
"type": "Json",
"flags": "BLOB | BINARY",
"max_size": 4294967295
}
},
{
"ordinal": 14,
"name": "enabled",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 15,
"name": "expires",
"type_info": {
"type": "Datetime",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 16,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 17,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 18,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 19,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 400
}
},
{
"ordinal": 20,
"name": "restartable",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 21,
"name": "tts",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 22,
"name": "uid",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 256
}
},
{
"ordinal": 23,
"name": "username",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 128
}
},
{
"ordinal": 24,
"name": "utc_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | NO_DEFAULT_VALUE",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
true,
true,
true,
false,
false,
true,
false,
false,
false,
true,
true,
true,
false,
true,
false,
true,
true,
true,
true,
false,
false,
false,
false,
true,
false
]
},
"hash": "53db321bc70b45800f696115b65da8550de208104017f8e0d0a163781488a534"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "\n SELECT m.id\n FROM command_macro m\n INNER JOIN guilds\n ON guilds.id = m.guild_id\n WHERE guild = ?\n AND m.name = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
false
]
},
"hash": "58033c087ddc347942c8e11a73382af43c6d1c8d4cd8bc326013d83a582f2c45"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE todos\n SET value = ?\n WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)\n AND id = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "5920618a13941f8228c6d44fa8fa1bf21c15636629032d1a2e2b5be991eb055d"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE reminders SET `status` = 'sent' WHERE `id` = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "5a868f66c95000f07fc931e6a1a39160f6a12b9bf89c8294c6a75a27efc72a18"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "SELECT id FROM channels WHERE channel = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNIQUE_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false
]
},
"hash": "5c6b59c3e145f7ef5584f41823a8b97e4faaf10d4c92726eea79fdb01ed2bd33"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT IGNORE INTO channels (channel, guild_id) VALUES (?, (SELECT id FROM guilds WHERE guild = ?))",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "5d7a787e3a6f487c3fe00bd39d308c9350c82e58b0ad1aae0b92824375786f02"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT INTO command_macro (guild_id, name, description, commands) VALUES ((SELECT id FROM guilds WHERE guild = ?), ?, ?, ?)",
"describe": {
"columns": [],
"parameters": {
"Right": 4
},
"nullable": []
},
"hash": "5f3aca2b311d7b6b2c77f1d4f2c115a66da34b41954026afd42fc3ecd2b7f746"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "\nSELECT COUNT(1) as count FROM timers WHERE owner = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "count",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | BINARY",
"max_size": 21
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false
]
},
"hash": "60c42764d04c0802b460aa14b7693d2c9297d392c24badd50cb8e8f0399f2bcd"
}
@@ -0,0 +1,34 @@
{
"db_name": "MySQL",
"query": "\n SELECT todos.id, value FROM todos\n WHERE user_id = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNIQUE_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "value",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 8000
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false
]
},
"hash": "61e4394e9d5fd5cb81fdb944b3eefb683175806e077789802fb5124e513629d6"
}
@@ -0,0 +1,134 @@
{
"db_name": "MySQL",
"query": "\n SELECT\n reminders.id,\n reminders.uid,\n channels.channel,\n reminders.utc_time,\n reminders.interval_seconds,\n reminders.interval_days,\n reminders.interval_months,\n reminders.expires,\n reminders.enabled,\n reminders.content,\n reminders.embed_description,\n reminders.set_by\n FROM\n reminders\n INNER JOIN\n channels\n ON\n reminders.channel_id = channels.id\n WHERE\n reminders.id = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "uid",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 256
}
},
{
"ordinal": 2,
"name": "channel",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 3,
"name": "utc_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | NO_DEFAULT_VALUE",
"max_size": 19
}
},
{
"ordinal": 4,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 5,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 6,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 7,
"name": "expires",
"type_info": {
"type": "Datetime",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 8,
"name": "enabled",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 9,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 10,
"name": "embed_description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 11,
"name": "set_by",
"type_info": {
"type": "LongLong",
"flags": "MULTIPLE_KEY | UNSIGNED",
"max_size": 20
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
true,
false,
false,
false,
true
]
},
"hash": "67b970d7b85f7bf3e71a58af10bedf7281cf0d8601b149383037d604a22a64c7"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE users\n SET timezone = ?\n WHERE id = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "67c60c45fe59e94e59b90f85fef5c9f3ae0848023f7726c5b091edb8961e0f02"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE users\n SET reset_inputs_on_create = ?\n WHERE id = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "68381118053cfd45e44417e5b2a2981099e484f7b5af7b499f99f95f04d0ee7e"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE channels SET webhook_id = ?, webhook_token = ? WHERE channel = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "6ec71e49db34468ccc8314ac36f70208e299230c2c825278b6eb9ca0e703b9cb"
}
@@ -0,0 +1,34 @@
{
"db_name": "MySQL",
"query": "\n SELECT todos.id, value FROM todos\n INNER JOIN channels ON todos.channel_id = channels.id\n WHERE channels.channel = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNIQUE_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "value",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 8000
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false
]
},
"hash": "7090db580f61598257017ee117ef55264e10bb9d26d39f25a305ba014e5185a3"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM command_macro WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "731ee62b92df2295d8962dfa97a3a05b0a28119daba09f2533ffbfb2eb385036"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM channels WHERE channel = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "756713780ab6eaaff6db30cb62df98663dacfa751ec67ff5055507376bbce37d"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n INSERT INTO users (id, dm_channel, timezone)\n VALUES (?, (SELECT id FROM channels WHERE channel = ?), ?)\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "7bc8f2dca6cfb89bc42c4697456daf1f0610e14705b6226d669492830e9cf1f3"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n INSERT INTO todos (guild_id, channel_id, value)\n VALUES (\n (SELECT id FROM guilds WHERE guild = ?),\n NULL,\n ?\n )\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "7d3e8ab7f15e5c8317b22d28ac5bdb2d25e9b7e4b4fd12b1df2a40a7e4e22f9d"
}
@@ -0,0 +1,34 @@
{
"db_name": "MySQL",
"query": "\n SELECT todos.id, value FROM todos\n WHERE user_id = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNIQUE_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "value",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 8000
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false
]
},
"hash": "7e4845f11842ad9d40392c5e38254979332bf56c172376966bc7ef543e7d8a22"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT INTO reminders (\n uid,\n attachment,\n attachment_name,\n channel_id,\n content,\n embed_author,\n embed_author_url,\n embed_color,\n embed_description,\n embed_footer,\n embed_footer_url,\n embed_image_url,\n embed_thumbnail_url,\n embed_title,\n embed_fields,\n enabled,\n expires,\n interval_seconds,\n interval_days,\n interval_months,\n name,\n tts,\n `utc_time`\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
"describe": {
"columns": [],
"parameters": {
"Right": 23
},
"nullable": []
},
"hash": "7f44451c441507ccd7f8d41633fb156f95a28389fcc9c489fdb228446f88342e"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n INSERT INTO todos (user_id, value)\n VALUES (?, ?)\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "822ff9e91cc5a56fcb22bcac1ae905314fd47282b6141171aa0c362b49d7cee4"
}
@@ -0,0 +1,34 @@
{
"db_name": "MySQL",
"query": "SELECT webhook_token, webhook_id FROM channels WHERE channel = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "webhook_token",
"type_info": {
"type": "Blob",
"flags": "BLOB",
"max_size": 262140
}
},
{
"ordinal": 1,
"name": "webhook_id",
"type_info": {
"type": "LongLong",
"flags": "UNIQUE_KEY | UNSIGNED",
"max_size": 20
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
true,
true
]
},
"hash": "8d796b776edb1819875f5646313a7d99590f43b6bc3e475752d6946194a1a58a"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "\n SELECT DATE_ADD(?, INTERVAL (SELECT nudge FROM channels WHERE id = ?) SECOND) AS `utc_time`\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "utc_time",
"type_info": {
"type": "Datetime",
"flags": "BINARY",
"max_size": 26
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
true
]
},
"hash": "8ebe13b1c531f199ee8e67eff66e1fdf3a08c4027db0fed0390b8ec2a3e5241e"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "SELECT user_id FROM patreon_link WHERE guild_id = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "user_id",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | PRIMARY_KEY | MULTIPLE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false
]
},
"hash": "92cdd6af01e398b22112ffe88b9ff63d9cc61faaf0dee9eda974efbc8bf84173"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n DELETE FROM reminders\n WHERE `utc_time` < NOW() - INTERVAL ? DAY\n ORDER BY `utc_time`\n LIMIT 1000\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "93897198be27266cd9de90063ee67594cf65c1216c9b9787fc96cd8ffcc1cdef"
}
@@ -0,0 +1,114 @@
{
"db_name": "MySQL",
"query": "\n SELECT\n `embed_title` AS title,\n `embed_description` AS description,\n `embed_image_url` AS image_url,\n `embed_thumbnail_url` AS thumbnail_url,\n `embed_footer` AS footer,\n `embed_footer_url` AS footer_url,\n `embed_author` AS author,\n `embed_author_url` AS author_url,\n `embed_color` AS color,\n IFNULL(`embed_fields`, '[]') AS \"fields:_\"\n FROM reminders\n WHERE `id` = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "title",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 1,
"name": "description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 2,
"name": "image_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 3,
"name": "thumbnail_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 4,
"name": "footer",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 5,
"name": "footer_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 6,
"name": "author",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 7,
"name": "author_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 8,
"name": "color",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 9,
"name": "fields:_",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | BINARY",
"max_size": 4294967292
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
true,
true,
false,
true,
false,
true,
false,
false
]
},
"hash": "98ce62a260f411b834ab4b5374b49ea79850cce49e23b71d0eee917609beabd2"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE reminders SET `status` = 'failed', `status_message` = ? WHERE `id` = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "99923c6772c44bf3a356d79fd1b3c7ac6934938598ff08b9cdd06a7a1bc49952"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE reminders\n INNER JOIN `channels`\n ON `channels`.id = reminders.channel_id\n SET reminders.`utc_time` = reminders.`utc_time` + ?\n WHERE channels.`channel` = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "9b871f08d294555453696808185c6d29d4753619fbee6295a053cefaa9dcc0ae"
}
@@ -0,0 +1,234 @@
{
"db_name": "MySQL",
"query": "\n SELECT\n reminders.`id` AS id,\n\n channels.`channel` AS channel_id,\n reminders.`thread_id` AS thread_id,\n channels.`webhook_id` AS webhook_id,\n channels.`webhook_token` AS webhook_token,\n\n channels.`paused` AS 'channel_paused',\n channels.`paused_until` AS 'channel_paused_until',\n reminders.`enabled` AS 'enabled',\n\n reminders.`tts` AS tts,\n reminders.`pin` AS pin,\n reminders.`content` AS content,\n reminders.`attachment` AS attachment,\n reminders.`attachment_name` AS attachment_name,\n\n reminders.`utc_time` AS 'utc_time',\n reminders.`timezone` AS timezone,\n reminders.`restartable` AS restartable,\n reminders.`expires` AS 'expires',\n reminders.`interval_seconds` AS 'interval_seconds',\n reminders.`interval_days` AS 'interval_days',\n reminders.`interval_months` AS 'interval_months',\n\n reminders.`avatar` AS avatar,\n reminders.`username` AS username\n FROM\n reminders\n INNER JOIN\n channels\n ON\n reminders.channel_id = channels.id\n WHERE\n reminders.`status` = 'pending' AND\n reminders.`id` IN (\n SELECT\n MIN(id)\n FROM\n reminders\n WHERE\n reminders.`utc_time` <= NOW() AND\n `status` = 'pending' AND\n (\n reminders.`interval_seconds` IS NOT NULL\n OR reminders.`interval_months` IS NOT NULL\n OR reminders.`interval_days` IS NOT NULL\n OR reminders.enabled\n )\n GROUP BY channel_id\n )\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "channel_id",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 2,
"name": "thread_id",
"type_info": {
"type": "LongLong",
"flags": "",
"max_size": 20
}
},
{
"ordinal": 3,
"name": "webhook_id",
"type_info": {
"type": "LongLong",
"flags": "UNIQUE_KEY | UNSIGNED",
"max_size": 20
}
},
{
"ordinal": 4,
"name": "webhook_token",
"type_info": {
"type": "Blob",
"flags": "BLOB",
"max_size": 262140
}
},
{
"ordinal": 5,
"name": "channel_paused",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 6,
"name": "channel_paused_until",
"type_info": {
"type": "Timestamp",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 7,
"name": "enabled",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 8,
"name": "tts",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 9,
"name": "pin",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 10,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 11,
"name": "attachment",
"type_info": {
"type": "Blob",
"flags": "BLOB | BINARY",
"max_size": 16777215
}
},
{
"ordinal": 12,
"name": "attachment_name",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 1040
}
},
{
"ordinal": 13,
"name": "utc_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | NO_DEFAULT_VALUE",
"max_size": 19
}
},
{
"ordinal": 14,
"name": "timezone",
"type_info": {
"type": "String",
"flags": "NOT_NULL | ENUM",
"max_size": 128
}
},
{
"ordinal": 15,
"name": "restartable",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 16,
"name": "expires",
"type_info": {
"type": "Datetime",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 17,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 18,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 19,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 20,
"name": "avatar",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 21,
"name": "username",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 128
}
}
],
"parameters": {
"Right": 0
},
"nullable": [
false,
false,
true,
true,
true,
false,
true,
false,
false,
false,
false,
true,
true,
false,
false,
false,
true,
true,
true,
true,
true,
true
]
},
"hash": "a33ef7167746183766b6a9b4e31784dd3712fa2b4f72482d4b681e0a9fdbaf1d"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT INTO patreon_link (user_id, guild_id, linked_at) VALUES (?, ?, NOW())\n ON DUPLICATE KEY UPDATE guild_id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "a647934dc5485cfbf430c77b71f7b181f888b0961d5274621e5e1dd76417080e"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "\n SELECT 1 as _e\n FROM command_macro\n WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)\n AND name = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "_e",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | BINARY",
"max_size": 2
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
false
]
},
"hash": "a8355cb8a542fd1e79c54006757debd814d8e335cd345efc32bc2fd4ee411876"
}
@@ -0,0 +1,234 @@
{
"db_name": "MySQL",
"query": "SELECT * FROM reminder_template WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 400
}
},
{
"ordinal": 2,
"name": "guild_id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | MULTIPLE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 10
}
},
{
"ordinal": 3,
"name": "username",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 128
}
},
{
"ordinal": 4,
"name": "avatar",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 5,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 6,
"name": "tts",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 7,
"name": "attachment",
"type_info": {
"type": "Blob",
"flags": "BLOB | BINARY",
"max_size": 16777215
}
},
{
"ordinal": 8,
"name": "attachment_name",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 1040
}
},
{
"ordinal": 9,
"name": "embed_title",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 10,
"name": "embed_description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 11,
"name": "embed_image_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 12,
"name": "embed_thumbnail_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 13,
"name": "embed_footer",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 14,
"name": "embed_footer_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 15,
"name": "embed_author",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 16,
"name": "embed_author_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 17,
"name": "embed_color",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 18,
"name": "embed_fields",
"type_info": {
"type": "Json",
"flags": "BLOB | BINARY",
"max_size": 4294967295
}
},
{
"ordinal": 19,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 20,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 21,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
true,
true,
false,
false,
true,
true,
false,
false,
true,
true,
false,
true,
false,
true,
false,
true,
true,
true,
true
]
},
"hash": "a8b3563796f18e8ac28166771892226dbf8f730535e7f2d1225ff9eb6b1d9361"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "SELECT interval_days AS days FROM reminders WHERE uid = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
true
]
},
"hash": "acc7421aa088e613be3cae984719589ecb067c3a0a9f3eec2eeb710e3d59734e"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE channels\n SET\n nudge = ?,\n webhook_id = ?,\n webhook_token = ?,\n paused = ?,\n paused_until = ?\n WHERE id = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 6
},
"nullable": []
},
"hash": "af08f3524c316f438feb62a24c67b96197e3655a87efe128914ed386be20d900"
}
@@ -0,0 +1,54 @@
{
"db_name": "MySQL",
"query": "\n SELECT id, dm_channel, timezone, allowed_dm\n FROM users\n WHERE id = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 1,
"name": "dm_channel",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 10
}
},
{
"ordinal": 2,
"name": "timezone",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | MULTIPLE_KEY",
"max_size": 128
}
},
{
"ordinal": 3,
"name": "allowed_dm",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false
]
},
"hash": "b582fd4496d339d3a5516c003b16481dc7c30ee4bc11ffda3fd585d346b7d105"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM reminder_template WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?) AND id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "bc6ac702094fb25f4b0cfd44b5ee1226c2a1da730db0977836493d057bf0250c"
}
@@ -0,0 +1,214 @@
{
"db_name": "MySQL",
"query": "SELECT\n name,\n attachment,\n attachment_name,\n avatar,\n content,\n embed_author,\n embed_author_url,\n embed_color,\n embed_description,\n embed_footer,\n embed_footer_url,\n embed_image_url,\n embed_thumbnail_url,\n embed_title,\n embed_fields,\n interval_seconds,\n interval_days,\n interval_months,\n tts,\n username\n FROM reminder_template WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 400
}
},
{
"ordinal": 1,
"name": "attachment",
"type_info": {
"type": "Blob",
"flags": "BLOB | BINARY",
"max_size": 16777215
}
},
{
"ordinal": 2,
"name": "attachment_name",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 1040
}
},
{
"ordinal": 3,
"name": "avatar",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 4,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 5,
"name": "embed_author",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 6,
"name": "embed_author_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 7,
"name": "embed_color",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 8,
"name": "embed_description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 9,
"name": "embed_footer",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 10,
"name": "embed_footer_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 11,
"name": "embed_image_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 12,
"name": "embed_thumbnail_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 13,
"name": "embed_title",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 14,
"name": "embed_fields",
"type_info": {
"type": "Json",
"flags": "BLOB | BINARY",
"max_size": 4294967295
}
},
{
"ordinal": 15,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 16,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 17,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 18,
"name": "tts",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 19,
"name": "username",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 128
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
true,
true,
true,
false,
false,
true,
false,
false,
false,
true,
true,
true,
false,
true,
true,
true,
true,
false,
true
]
},
"hash": "be4c9a0fffa3ecaad4eb8ae59229ebfed685cf069b309ab874db4db069d14a3c"
}
@@ -0,0 +1,44 @@
{
"db_name": "MySQL",
"query": "\n SELECT m.name, m.description, m.commands\n FROM command_macro m\n INNER JOIN guilds g\n ON g.id = m.guild_id\n WHERE guild = ?\n AND m.name = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 400
}
},
{
"ordinal": 1,
"name": "description",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 400
}
},
{
"ordinal": 2,
"name": "commands",
"type_info": {
"type": "Json",
"flags": "NOT_NULL | BLOB | BINARY | NO_DEFAULT_VALUE",
"max_size": 4294967295
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
false,
true,
false
]
},
"hash": "c3c45d97f391ea84e73353ff340af9efbbe48f1131d2e80ce31983a40441fce2"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT INTO guilds (guild) VALUES (?)",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "cd88a8b4d727bd36df48ef3f114a070256e3a8cb28a2d140bddfe300391c165e"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n INSERT INTO channels (\n webhook_id,\n webhook_token,\n channel\n ) VALUES (?, ?, ?)\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "cec70bfde8779baa938ed311e19a6566af60c0ac27240efaf0071162a2a02c4e"
}
@@ -0,0 +1,34 @@
{
"db_name": "MySQL",
"query": "SELECT id, ephemeral_confirmations FROM guilds WHERE guild = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNIQUE_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "ephemeral_confirmations",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false
]
},
"hash": "cef200cc2ff70ce29e6a4273ccbf0a08120a26448571187d871cb4746d59cb7a"
}
@@ -0,0 +1,134 @@
{
"db_name": "MySQL",
"query": "\n SELECT\n reminders.id,\n reminders.uid,\n channels.channel,\n reminders.utc_time,\n reminders.interval_seconds,\n reminders.interval_days,\n reminders.interval_months,\n reminders.expires,\n reminders.enabled,\n reminders.content,\n reminders.embed_description,\n reminders.set_by\n FROM\n reminders\n INNER JOIN\n channels\n ON\n reminders.channel_id = channels.id\n WHERE\n `status` = 'pending' AND\n channels.channel = ? AND\n reminders.enabled >= ?\n ORDER BY\n reminders.utc_time\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "uid",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 256
}
},
{
"ordinal": 2,
"name": "channel",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 3,
"name": "utc_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | NO_DEFAULT_VALUE",
"max_size": 19
}
},
{
"ordinal": 4,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 5,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 6,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 7,
"name": "expires",
"type_info": {
"type": "Datetime",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 8,
"name": "enabled",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 9,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 10,
"name": "embed_description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 11,
"name": "set_by",
"type_info": {
"type": "LongLong",
"flags": "MULTIPLE_KEY | UNSIGNED",
"max_size": 20
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
true,
false,
false,
false,
true
]
},
"hash": "d2921961627fef0e12892dbbcd4b891e58c0e52c20897aab3d95365774c01bda"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE reminders SET `utc_time` = ? WHERE `id` = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "d2c89e166a5fcc4819feba4a2253bdf63025bc35f59ba175505a455a565988fb"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\nINSERT INTO timers (name, owner) VALUES (?, ?)\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "d725c2be00dc44619eb6d1dce6fac6c7f18cc71b5df7af604f3408ceeb80c39d"
}
@@ -0,0 +1,134 @@
{
"db_name": "MySQL",
"query": "\n SELECT\n reminders.id,\n reminders.uid,\n channels.channel,\n reminders.utc_time,\n reminders.interval_seconds,\n reminders.interval_days,\n reminders.interval_months,\n reminders.expires,\n reminders.enabled,\n reminders.content,\n reminders.embed_description,\n reminders.set_by\n FROM\n reminders\n INNER JOIN\n channels\n ON\n reminders.channel_id = channels.id\n WHERE\n reminders.uid = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "uid",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 256
}
},
{
"ordinal": 2,
"name": "channel",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 3,
"name": "utc_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | NO_DEFAULT_VALUE",
"max_size": 19
}
},
{
"ordinal": 4,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 5,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 6,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 7,
"name": "expires",
"type_info": {
"type": "Datetime",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 8,
"name": "enabled",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 9,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 10,
"name": "embed_description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 11,
"name": "set_by",
"type_info": {
"type": "LongLong",
"flags": "MULTIPLE_KEY | UNSIGNED",
"max_size": 20
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
true,
false,
false,
false,
true
]
},
"hash": "d7f469dd1c7f37f1aca643e9018083b48da1cf988030b9efeae451e77e54a23d"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n INSERT INTO todos (guild_id, channel_id, value)\n VALUES (\n (SELECT id FROM guilds WHERE guild = ?),\n (SELECT id FROM channels WHERE channel = ?),\n ?\n )\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "e3cc53601f6a45e0509d8557eb38f66a7e69543df831e7cd48c757dc4040340f"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE reminders SET channel_id = ? WHERE uid = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "ebc018a38c00e907cc466b9100b6cbb10b029d364637c1fa76b44526dd1ba2e3"
}
@@ -0,0 +1,24 @@
{
"db_name": "MySQL",
"query": "\n SELECT name\n FROM command_macro\n WHERE\n guild_id = (SELECT id FROM guilds WHERE guild = ?)\n AND name LIKE CONCAT(?, '%')\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 400
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
false
]
},
"hash": "ec4e4480d40fab071d7c2543954174317cd326c53ae50338b81e1aa211b1eb0a"
}
@@ -0,0 +1,34 @@
{
"db_name": "MySQL",
"query": "\n SELECT todos.id, value FROM todos\n INNER JOIN channels ON todos.channel_id = channels.id\n WHERE channels.channel = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNIQUE_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "value",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 8000
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false
]
},
"hash": "ec7cef46d1cd6785932009f866675fbf886cab69b4f05f947d94f141057f4456"
}
@@ -0,0 +1,234 @@
{
"db_name": "MySQL",
"query": "\n SELECT reminders.attachment,\n reminders.attachment_name,\n reminders.content,\n reminders.embed_author,\n reminders.embed_author_url,\n reminders.embed_color,\n reminders.embed_description,\n reminders.embed_footer,\n reminders.embed_footer_url,\n reminders.embed_image_url,\n reminders.embed_thumbnail_url,\n reminders.embed_title,\n reminders.embed_fields,\n reminders.enabled,\n reminders.expires,\n reminders.interval_seconds,\n reminders.interval_days,\n reminders.interval_months,\n reminders.name,\n reminders.tts,\n reminders.uid,\n reminders.utc_time\n FROM reminders\n LEFT JOIN channels ON channels.id = reminders.channel_id\n WHERE uid = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "attachment",
"type_info": {
"type": "Blob",
"flags": "BLOB | BINARY",
"max_size": 16777215
}
},
{
"ordinal": 1,
"name": "attachment_name",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 1040
}
},
{
"ordinal": 2,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 3,
"name": "embed_author",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 4,
"name": "embed_author_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 5,
"name": "embed_color",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 6,
"name": "embed_description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 7,
"name": "embed_footer",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 8,
"name": "embed_footer_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 9,
"name": "embed_image_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 10,
"name": "embed_thumbnail_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 11,
"name": "embed_title",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 12,
"name": "embed_fields",
"type_info": {
"type": "Json",
"flags": "BLOB | BINARY",
"max_size": 4294967295
}
},
{
"ordinal": 13,
"name": "enabled",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 14,
"name": "expires",
"type_info": {
"type": "Datetime",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 15,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 16,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 17,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 18,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 400
}
},
{
"ordinal": 19,
"name": "tts",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 20,
"name": "uid",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 256
}
},
{
"ordinal": 21,
"name": "utc_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | NO_DEFAULT_VALUE",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
true,
true,
false,
false,
true,
false,
false,
false,
true,
true,
true,
false,
true,
false,
true,
true,
true,
true,
false,
false,
false,
false
]
},
"hash": "ecbea4acb61da864a4f83004b1163391068456a366fee95daff5f46413bcf494"
}
@@ -0,0 +1,44 @@
{
"db_name": "MySQL",
"query": "SELECT name, description, commands FROM command_macro WHERE guild_id = (SELECT id FROM guilds WHERE guild = ?)",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 400
}
},
{
"ordinal": 1,
"name": "description",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 400
}
},
{
"ordinal": 2,
"name": "commands",
"type_info": {
"type": "Json",
"flags": "NOT_NULL | BLOB | BINARY | NO_DEFAULT_VALUE",
"max_size": 4294967295
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
true,
false
]
},
"hash": "f127927d89da0f0414806d8f047cb33b9fa3ed93a6c463624238151c1f8885be"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n INSERT IGNORE INTO channels (channel)\n VALUES (?)\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "f4aa95503b5ee839199de93c8051f22ff2b25b08ea0d7e9dba74f556503903e8"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM guilds WHERE guild = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "f551df7922ce36c63e961a822ffd0b83c5d6f16d1eadca9fb41d6c98fe7580ee"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE reminders SET `status` = 'deleted' WHERE uid = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "f56e49a76deedf22d67b4771291b2e44ade49e739202c8062126855a5e807cb6"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT INTO reminder_template\n (guild_id,\n name,\n attachment,\n attachment_name,\n avatar,\n content,\n embed_author,\n embed_author_url,\n embed_color,\n embed_description,\n embed_footer,\n embed_footer_url,\n embed_image_url,\n embed_thumbnail_url,\n embed_title,\n embed_fields,\n interval_seconds,\n interval_days,\n interval_months,\n tts,\n username\n ) VALUES ((SELECT id FROM guilds WHERE guild = ?), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,\n ?, ?, ?, ?, ?, ?, ?)",
"describe": {
"columns": [],
"parameters": {
"Right": 21
},
"nullable": []
},
"hash": "f64d9a37720b8459ffbdd66186194b35332cc37b09a176165a839c342ba5354c"
}
@@ -0,0 +1,44 @@
{
"db_name": "MySQL",
"query": "\nSELECT name, start_time, owner FROM timers WHERE owner = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 128
}
},
{
"ordinal": 1,
"name": "start_time",
"type_info": {
"type": "Timestamp",
"flags": "NOT_NULL | BINARY | TIMESTAMP",
"max_size": 19
}
},
{
"ordinal": 2,
"name": "owner",
"type_info": {
"type": "LongLong",
"flags": "NOT_NULL | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false
]
},
"hash": "f6ca1db12bf8d9c67409bea200222ca598c9940a04479b417b714b6cc4535d83"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n INSERT INTO reminders (\n `uid`,\n `channel_id`,\n `thread_id`,\n `utc_time`,\n `timezone`,\n `interval_seconds`,\n `interval_days`,\n `interval_months`,\n `expires`,\n `content`,\n `tts`,\n `attachment_name`,\n `attachment`,\n `set_by`\n ) VALUES (\n ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?\n )\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 14
},
"nullable": []
},
"hash": "f9d2d9f6809b6c852297e5c60b6c356af5176c6b81b86cd701c1b8af8212f194"
}
@@ -0,0 +1,264 @@
{
"db_name": "MySQL",
"query": "\n SELECT\n reminders.attachment_name,\n reminders.avatar,\n channels.channel,\n reminders.content,\n reminders.embed_author,\n reminders.embed_author_url,\n reminders.embed_color,\n reminders.embed_description,\n reminders.embed_footer,\n reminders.embed_footer_url,\n reminders.embed_image_url,\n reminders.embed_thumbnail_url,\n reminders.embed_title,\n reminders.embed_fields,\n reminders.enabled,\n reminders.expires,\n reminders.interval_seconds,\n reminders.interval_days,\n reminders.interval_months,\n reminders.name,\n reminders.restartable,\n reminders.tts,\n reminders.uid,\n reminders.username,\n reminders.utc_time\n FROM reminders\n LEFT JOIN channels ON channels.id = reminders.channel_id\n WHERE uid = ?",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "attachment_name",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 1040
}
},
{
"ordinal": 1,
"name": "avatar",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 2,
"name": "channel",
"type_info": {
"type": "LongLong",
"flags": "UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 3,
"name": "content",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 4,
"name": "embed_author",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 5,
"name": "embed_author_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 6,
"name": "embed_color",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 7,
"name": "embed_description",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 8,
"name": "embed_footer",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 8192
}
},
{
"ordinal": 9,
"name": "embed_footer_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 10,
"name": "embed_image_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 11,
"name": "embed_thumbnail_url",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 12,
"name": "embed_title",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 1024
}
},
{
"ordinal": 13,
"name": "embed_fields",
"type_info": {
"type": "Json",
"flags": "BLOB | BINARY",
"max_size": 4294967295
}
},
{
"ordinal": 14,
"name": "enabled",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 15,
"name": "expires",
"type_info": {
"type": "Datetime",
"flags": "BINARY",
"max_size": 19
}
},
{
"ordinal": 16,
"name": "interval_seconds",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 17,
"name": "interval_days",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 18,
"name": "interval_months",
"type_info": {
"type": "Long",
"flags": "UNSIGNED",
"max_size": 10
}
},
{
"ordinal": 19,
"name": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 400
}
},
{
"ordinal": 20,
"name": "restartable",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 21,
"name": "tts",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 22,
"name": "uid",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | UNIQUE_KEY | NO_DEFAULT_VALUE",
"max_size": 256
}
},
{
"ordinal": 23,
"name": "username",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 128
}
},
{
"ordinal": 24,
"name": "utc_time",
"type_info": {
"type": "Datetime",
"flags": "NOT_NULL | MULTIPLE_KEY | BINARY | NO_DEFAULT_VALUE",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
true,
true,
true,
false,
false,
true,
false,
false,
false,
true,
true,
true,
false,
true,
false,
true,
true,
true,
true,
false,
false,
false,
false,
true,
false
]
},
"hash": "fa58f079f00bec4c3f9cbb2ee0a607f63c5b586654c541bff6b99eff83ae0a44"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE users\n SET use_browser_timezone = ?\n WHERE id = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "fb47acedb33990c77af3e8e43d809696053fbd09c32ac9e14a551896b28d9e57"
}
@@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE guilds SET ephemeral_confirmations = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "fb58ff6df067daf6b4c4a7ff59015a19ed609aafd5a73584b7ed7c8f3b17785e"
}
@@ -0,0 +1,44 @@
{
"db_name": "MySQL",
"query": "\n SELECT\n todos.id,\n channels.channel AS channel_id,\n value\n FROM todos\n INNER JOIN guilds\n ON guilds.id = todos.guild_id\n LEFT JOIN channels\n ON channels.id = todos.channel_id\n WHERE guilds.guild = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNIQUE_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "channel_id",
"type_info": {
"type": "LongLong",
"flags": "UNIQUE_KEY | UNSIGNED | NO_DEFAULT_VALUE",
"max_size": 20
}
},
{
"ordinal": 2,
"name": "value",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 8000
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
true,
false
]
},
"hash": "fb5c958c86293cffae048c7ccf8175ed70e48ecbc8112626d60391e3c4e36d32"
}
@@ -0,0 +1,34 @@
{
"db_name": "MySQL",
"query": "\n SELECT todos.id, value FROM todos\n INNER JOIN guilds ON todos.guild_id = guilds.id\n WHERE guilds.guild = ?\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": {
"type": "Long",
"flags": "NOT_NULL | PRIMARY_KEY | UNIQUE_KEY | UNSIGNED | AUTO_INCREMENT",
"max_size": 10
}
},
{
"ordinal": 1,
"name": "value",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL | NO_DEFAULT_VALUE",
"max_size": 8000
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false
]
},
"hash": "fea907a5a9c0b9a6e6f605759a39bc99d43e5526614e7711d8d3a28d1a61fbcd"
}
+24
View File
@@ -0,0 +1,24 @@
# Caddy v2 configuration for local development (HTTPS on localhost)
# Reverse-proxy to the bot service and serve static assets.
# Uses Caddy's internal CA to generate a self-signed certificate for localhost.
# HTTP -> HTTPS redirect for local development
:80 {
redir https://localhost{uri}
}
# Local HTTPS site with self-signed cert
localhost {
encode zstd gzip
# Issue a locally-trusted certificate via Caddy's internal CA
tls internal
# Serve static files under /static from the mounted volume
handle_path /static* {
root * /var/www/reminder-rs/static
file_server
}
# Proxy everything else to the bot service inside the Docker network
reverse_proxy bot:18920
}
Generated
+4622 -820
View File
File diff suppressed because it is too large. Load diff
+69 -17
View File
@@ -1,30 +1,82 @@
[package] [package]
name = "reminder_rs" name = "reminder-rs"
version = "1.4.13" version = "1.7.45"
authors = ["jellywx <judesouthworth@pm.me>"] authors = ["Jude Southworth <judesouthworth@pm.me>"]
edition = "2018" edition = "2021"
license = "AGPL-3.0 only"
description = "Reminder Bot for Discord, now in Rust"
[dependencies] [dependencies]
dashmap = "4.0" poise = "0.6.1"
dotenv = "0.15" dotenv = "0.15"
humantime = "2.1"
tokio = { version = "1", features = ["process", "full"] } tokio = { version = "1", features = ["process", "full"] }
reqwest = "0.11" reqwest = { version = "0.12", features = ["json"] }
regex = "1.4" regex = "1.10"
log = "0.4" log = "0.4"
env_logger = "0.8" env_logger = "0.11"
chrono = "0.4" chrono = "0.4"
chrono-tz = "0.5" chrono-tz = { version = "0.9", features = ["serde"] }
lazy_static = "1.4" lazy_static = "1.4"
num-integer = "0.1" num-integer = "0.1"
serde = "1.0" serde = "1.0"
serde_json = "1.0" serde_json = "1.0"
rand = "0.7" serde_repr = "0.1"
Inflector = "0.11" rmp-serde = "1.1"
rand = "0.8"
levenshtein = "1.0" levenshtein = "1.0"
# serenity = { version = "0.10", features = ["collector"] } sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "macros", "mysql", "bigdecimal", "chrono", "migrate"] }
serenity = { git = "https://github.com/serenity-rs/serenity", branch = "next", features = ["collector"] } base64 = "0.22"
sqlx = { version = "0.5", features = ["runtime-tokio-rustls", "macros", "mysql", "bigdecimal", "chrono"]} secrecy = "0.8.0"
futures = "0.3.30"
prometheus = "0.13.3"
rocket = { version = "0.5.0", features = ["tls", "secrets", "json"] }
rocket_dyn_templates = { version = "0.2.0", features = ["tera"] }
serenity = { version = "0.12", default-features = false, features = ["builder", "cache", "client", "gateway", "http", "model", "utils", "rustls_backend"] }
oauth2 = "4"
csv = "1.2"
sd-notify = "0.4.1"
cron-parser = "0.10"
image = { version = "0.25", default-features = false, features = ["jpeg", "png", "gif", "webp"] }
nsfw = { version = "0.2", default-features = false }
rust-s3 = { version = "0.38", default-features = false, features = ["tokio-rustls-tls"] }
[dependencies.regex_command_attr] [dependencies.extract_derive]
path = "./regex_command_attr" path = "extract_derive"
[dependencies.recordable_derive]
path = "recordable_derive"
[package.metadata.deb]
depends = "$auto, python3-dateparser (>= 1.0.0)"
suggests = "mysql-server-8.0, nginx"
maintainer-scripts = "debian"
assets = [
["target/release/reminder-rs", "usr/bin/reminder-rs", "755"],
["static/css/*", "lib/reminder-rs/static/css", "644"],
["static/favicon/*", "lib/reminder-rs/static/favicon", "644"],
["static/img/**/*", "lib/reminder-rs/static/img", "644"],
["static/js/*", "lib/reminder-rs/static/js", "644"],
["static/webfonts/*", "lib/reminder-rs/static/webfonts", "644"],
["static/site.webmanifest", "lib/reminder-rs/static/site.webmanifest", "644"],
["templates/**/*", "lib/reminder-rs/templates", "644"],
["reminder-dashboard/dist/static/assets/*", "lib/reminder-rs/static/assets", "644"],
["reminder-dashboard/dist/index.html", "lib/reminder-rs/static/index.html", "644"],
["conf/default.env", "etc/reminder-rs/config.env", "600"],
["conf/Rocket.toml", "etc/reminder-rs/Rocket.toml", "600"],
["conf/gb-ipv4.csv", "etc/reminder-rs/gb-ipv4.csv", "600"],
# ["nginx/reminder-rs", "etc/nginx/sites-available/reminder-rs", "755"]
]
conf-files = [
"/etc/reminder-rs/config.env",
"/etc/reminder-rs/Rocket.toml",
]
[[package.metadata.deb.systemd-units]]
unit-scripts = "systemd"
unit-name = "reminder-rs"
start = false
[[package.metadata.deb.systemd-units]]
unit-scripts = "systemd"
unit-name = "reminder-rs-clean-images"
start = false
+9
View File
@@ -0,0 +1,9 @@
FROM ubuntu:20.04
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH
RUN apt update && DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt install -y gcc gcc-multilib cmake pkg-config libssl-dev curl mysql-client-8.0 npm
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal --default-toolchain nightly
RUN cargo install cargo-deb
+43
View File
@@ -0,0 +1,43 @@
FROM alpine:latest AS build
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH
RUN apk add gcc build-base pkgconfig openssl-dev openssl-libs-static curl mysql-client npm
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal --default-toolchain nightly
WORKDIR /usr/src/reminder-rs
# Docker is shit
COPY ./.sqlx ./.sqlx
COPY ./assets ./assets
COPY ./conf ./conf
COPY ./extract_derive ./extract_derive
COPY ./migrations ./migrations
COPY ./recordable_derive ./recordable_derive
COPY ./reminder-dashboard ./reminder-dashboard
COPY ./src ./src
COPY ./static ./static
COPY ./templates ./templates
COPY ./build.rs ./
COPY ./Cargo.lock ./
COPY ./Cargo.toml ./
COPY ./dp.py ./
# Build and install the Rust binary
RUN cargo install --path .
FROM alpine:latest AS runtime
WORKDIR /usr/src/reminder-rs
COPY --from=build /usr/local/cargo/bin/reminder-rs /usr/local/bin/reminder-rs
COPY --from=build /usr/src/reminder-rs/static /usr/src/reminder-rs/static
COPY --from=build /usr/src/reminder-rs/templates /usr/src/reminder-rs/templates
RUN apk add python3 py3-pip
RUN pip3 install --no-cache --break-system-packages dateparser
EXPOSE 18920
CMD ["reminder-rs"]
Loaded 100 of 503 files, more files were not shown because too many files have changed in this diff. Show more