Compare commits

..

328 Commits

Author SHA1 Message Date
jude
7ac69b59af Bump version 2024-11-16 14:38:30 +00:00
jude
0f9d3eda9a Update interface for template import/export 2024-11-16 14:35:19 +00:00
jude
0a9c390f32 Added a route for importing templates 2024-11-16 14:15:35 +00:00
jude
b8ee99cb45 Bump version 2024-11-16 12:40:35 +00:00
jude
56dbb95e22 Handle threads in channels option 2024-11-16 12:36:24 +00:00
jude
307649eea0 Fix images not working 2024-11-14 18:23:34 +00:00
jude
352e64377e Fix issue with row type 2024-10-21 19:20:25 +01:00
jude
33e85dc44d Fix issue with exporting 2024-10-21 18:50:06 +01:00
jude
eb5c851d97 .. 2024-10-13 19:01:37 +01:00
jude
6340f5a20f Add script to remove old reminders 2024-10-12 22:12:01 +01:00
jude
894961e2cd Bump version 2024-10-10 20:48:09 +01:00
jude
6f223b1bc2 Remove usages of FIND_IN_SET
FIND_IN_SET doesn't make use of indexes
2024-10-10 19:06:56 +01:00
jude
137ae6f24b Bump version 2024-10-10 17:35:13 +01:00
jude
dcfb5a2d4f Speed up delete query 2024-10-04 20:19:06 +01:00
jude
7395685e0d Working on adding docker stuff 2024-09-29 17:49:48 +01:00
jude
f7b9f9fd8c Bump version 2024-09-25 19:42:03 +01:00
jude
616ca7ea10 Fix styles for mobile 2024-09-25 19:34:09 +01:00
jude
23e2ed460b Bump version 2024-09-22 13:45:58 +01:00
jude
2d9946093a Keep the old users table temporarily 2024-09-22 11:20:31 +01:00
jude
9fbe5dcd13 Update migration script to not care about current db state 2024-09-21 17:26:34 +01:00
jude
302fe5bc74 Revert change to initial migration 2024-09-21 10:13:47 +01:00
jude
9bf0b5d7e4 Merge branch 'jude/fix-dashboard-patreon' into current 2024-09-21 10:11:19 +01:00
jude
9a6b65f3a3 Don't delete guild data when guild becomes unavailable 2024-09-17 23:47:27 +01:00
jude
b6ff149d51 Fix macro list/delete 2024-09-14 12:07:09 +01:00
jude
748e33566b Fix patreon not sharing between guild members 2024-08-19 21:50:14 +01:00
jude
e7c840a4d4 Fix patreon not sharing between guild members 2024-08-19 21:45:24 +01:00
jude
96dc80fef9 Fix migration script 2024-08-11 16:57:48 +01:00
jude
ef76611d33 Add preferences to interface 2024-08-04 15:05:28 +01:00
jude
febd04c374 Update schemas and resolve some warnings 2024-07-16 15:18:02 +01:00
jude
54ee3594eb Merge branch 'jude/remove-activity-setter' into current 2024-07-16 09:49:57 +01:00
jude
d7e90614c8 Bump ver 2024-07-07 16:35:32 +01:00
jude
b5dbfe336d Don't set activity in ready event 2024-07-07 16:31:23 +01:00
jude
b673a2fe6b Fix types 2024-07-07 16:29:28 +01:00
jude
f26682e6de Working on user preferences for dashboards 2024-07-04 20:52:36 +01:00
jude
218be2f0b1 Bump ver 2024-06-18 19:32:47 +01:00
jude
d7515f3611 Don't require View Channel permission 2024-06-18 19:28:53 +01:00
jude
6ae1096d79 Bump ver 2024-06-12 17:44:55 +01:00
jude
1f0d7adae3 Correct service file 2024-06-12 17:21:42 +01:00
jude
fc96ae526f Default permission checks to true 2024-06-10 18:30:55 +01:00
jude
8881ef0f85 Fix DM reminders trying to load guild data 2024-06-06 16:56:19 +01:00
jude
5e82a687f9 Increase watchdog 2024-06-04 22:34:58 +01:00
jude
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
jude
064efd4386 Bump version 2024-06-04 16:48:26 +01:00
jude
65b8ba3b47 Redirect old dashboard routes to new routes 2024-06-04 16:42:42 +01:00
9d452ed8cb Fix role selector 2024-05-10 17:37:27 +01:00
jude
441419b92b Bump ver 2024-05-04 13:00:30 +01:00
jude
aecf2c15be Store times as local time not UTC 2024-05-04 10:24:20 +01:00
jude
79da56c794 Bump ver 2024-05-03 16:26:52 +01:00
jude
ef10902c1e Fix todo list deletion not working properly 2024-05-03 16:21:27 +01:00
jude
c277f85c2a Bump dependencies 2024-05-03 16:07:34 +01:00
jude
035653c7fa Bump ver 2024-04-29 08:57:47 +01:00
jude
6358bc3deb Partially revert timezone change 2024-04-29 08:49:01 +01:00
jude
9f5066f982 Bump ver 2024-04-29 08:46:36 +01:00
jude
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
jude
1cf707140c Bump version 2024-04-16 12:22:02 +01:00
jude
e38c63f5ba Don't show empty channels 2024-04-16 11:42:19 +01:00
jude
d52b8b26f2 Upgrade dependencies 2024-04-16 11:19:21 +01:00
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
5e99a6f9de Add create todo under each channel
Sort channels for consistency
2024-04-11 15:32:34 +01:00
5406e6b8ec Show all channels and filter todos accordingly 2024-04-11 15:26:24 +01:00
jude
4ee0bc4e37 Bump ver 2024-04-11 12:43:22 +01:00
jude
b99bb7dcbf Fix todo sorting 2024-04-11 12:39:02 +01:00
jude
98f925dc84 Bump version 2024-04-10 18:54:30 +01:00
jude
24e316b12f Add delete/patch todos 2024-04-10 18:42:29 +01:00
jude
4063334953 More work on todo list 2024-04-09 21:21:46 +01:00
jude
e128b9848f More work on todo list support 2024-04-07 20:20:16 +01:00
jude
9989ab3b35 Start work on todo list support for dashboard 2024-04-06 14:27:58 +01:00
jude
b951db3f55 Bump version 2024-03-31 13:30:30 +01:00
jude
884a47bf36 Always show remaining time in top bar 2024-03-31 12:54:48 +01:00
jude
b0f932445c Add server emoji picker 2024-03-31 12:49:52 +01:00
jude
2861cdda0b Bump version 2024-03-29 16:28:09 +00:00
jude
7ba8fcd6b7 Add note to the server data page that states the bot might be restarting 2024-03-29 16:24:24 +00:00
jude
850f0fad57 Bump version 2024-03-29 16:22:13 +00:00
jude
a770a17ee7 Don't invalidate reminders when saving 2024-03-29 16:15:01 +00:00
jude
d15a66d9d9 Bump version 2024-03-28 19:36:23 +00:00
jude
30f011fcd5 Don't send attachments over API 2024-03-28 19:34:30 +00:00
jude
15dbed2f0f Bump version 2024-03-27 17:28:35 +00:00
jude
18cac0345b Allow removing attachments
Show HTTP errors
2024-03-27 17:19:19 +00:00
jude
334b1bc084 Bump version 2024-03-26 17:46:56 +00:00
jude
ba3c76c25f Fix import/export showing "Malformed base64" 2024-03-26 17:43:35 +00:00
jude
67b6f30c62 Add IDs to metrics 2024-03-25 16:41:49 +00:00
jude
8ae311190f Fix panic????????? 2024-03-25 06:07:30 +00:00
jude
016164affb Remove unused javascript/css 2024-03-24 21:00:27 +00:00
jude
2c0aeef700 Fix build. Bump version 2024-03-24 20:55:07 +00:00
jude
ecd75d6f55 Add metrics 2024-03-24 20:38:19 +00:00
jude
4a80d42f86 Move postman and web inside src 2024-03-24 20:23:16 +00:00
jude
075fde71df Bump version 2024-03-11 18:17:22 +00:00
jude
55136aecdc Set default embed color correctly 2024-03-11 18:14:27 +00:00
jude
63fc2cdcbc Block editing username and avatar on DMs 2024-03-10 19:43:57 +00:00
jude
3190738fc5 Extend user reminder API endpoints 2024-03-09 16:17:55 +00:00
jude
8f4810b532 Convert to/from timezone 2024-03-08 16:36:24 +00:00
jude
a5e6c41fa5 Bump ver
Update build file
2024-03-05 20:55:20 +00:00
jude
5f0aa0f834 Add routes for getting/posting user reminders 2024-03-05 20:36:38 +00:00
jude
dbe8e8e358 Add mentioning for channels 2024-03-04 20:36:37 +00:00
jude
85a114e55c Start adding stuff for user reminders 2024-03-03 21:58:48 +00:00
jude
329492b244 Add mention support
Allow vertical resizing of inputs
2024-03-03 21:44:35 +00:00
jude
66135ecd08 Show time until on collapsed reminders 2024-03-03 20:38:17 +00:00
jude
382c2a5a1e Stick options 2024-03-03 19:43:02 +00:00
jude
b91245a3f7 Build dashboard with bot 2024-03-03 13:21:06 +00:00
jude
6f0bdf9852 Support sending reminders to threads 2024-03-03 13:04:50 +00:00
jude
dcee9e0d2a Begin to work on thread support 2024-03-03 11:58:22 +00:00
jude
8e6e1a18b7 Bump ver 2024-03-01 18:04:34 +00:00
jude
72af0532fa Fix timezones 2024-03-01 17:54:05 +00:00
jude
e83b643d86 Show error for files that are too large 2024-03-01 16:56:31 +00:00
jude
0e0ab053f3 Fix time inputs 2024-03-01 16:54:56 +00:00
jude
8c2296b9c8 Bump versions 2024-02-28 21:37:10 +00:00
jude
1c6103142f Fix color picker not working 2024-02-28 21:30:53 +00:00
jude
328127c55e Fix images not setting properly 2024-02-28 21:30:49 +00:00
jude
b0e37b56c0 Bump version 2024-02-26 10:42:46 +00:00
jude
45f5b6261a Convert times to/from UTC 2024-02-26 10:26:07 +00:00
jude
5f6326179c Move styles into Vite
Make sidebar work better
2024-02-25 09:50:10 +00:00
jude
6254f91841 Bump version 2024-02-25 09:18:04 +00:00
jude
60b90a61d4 Adjust permission check
Correct response code for oauth redirect
2024-02-25 09:09:00 +00:00
jude
90f05758d0 Bypass self permission check for DMs 2024-02-24 22:27:29 +00:00
jude
74b7b5d711 Remove glob patterns from static file includes 2024-02-24 17:56:27 +00:00
jude
90550dc2c7 Add loader 2024-02-24 17:47:00 +00:00
jude
79e6498245 Add overlay when data fetching 2024-02-24 17:31:39 +00:00
jude
a8ef3d03f9 Add dashboard to build 2024-02-24 16:12:34 +00:00
jude
53e13844f9 Add unit tests 2024-02-24 15:02:34 +00:00
jude
dd7e681285 Update rust 2024-02-22 18:35:37 +00:00
jude
6c20bf2a0f Bump version 2024-02-22 17:47:40 +00:00
jude
15aa9ccffd Update help text 2024-02-22 17:42:29 +00:00
jude
525471bcad Correct help text 2024-02-22 17:35:50 +00:00
jude
86d53b63b6 Bump deps 2024-02-20 17:09:50 +00:00
jude
d8f266852a Add remaining commands 2024-02-18 14:32:58 +00:00
jude
76a286076b Link all top-level commands with macro recording/replaying logic 2024-02-18 13:24:37 +00:00
jude
5e39e16060 Add option types for top-level commands 2024-02-18 11:04:43 +00:00
jude
c1305cfb36 Extract trait 2024-02-17 20:25:14 +00:00
jude
4823754955 Move all commands to their own files 2024-02-17 18:55:16 +00:00
jude
eb92eacb90 Rearranged some commands
Working on a macro to automatically add option wrappers
2024-02-17 14:09:01 +00:00
jude
d0833b7bca Add macro for extracting arguments 2024-02-16 20:09:32 +00:00
jude
b81c3c80c1 Record some parameters for /remind 2024-02-15 17:28:43 +00:00
jude
2f6d035efe Rename table references 2024-02-14 19:44:53 +00:00
jude
96012ce43c Add migration script 2024-02-14 19:35:23 +00:00
jude
fa7ec8731b Fix hook 2024-02-09 17:03:04 +00:00
jude
def43bfa78 Refactor macros 2024-02-06 20:08:59 +00:00
jude
e4e9af2bb4 Wip commit 2024-01-07 17:10:22 +00:00
jude
cce0de7c75 wip bump versions 2023-12-22 19:12:42 +00:00
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
jude
7aae246388 Remove submodule 2023-12-22 16:58:30 +00:00
a2d442bc54 Reset intervals correctly 2023-12-22 16:58:30 +00:00
59982df827 Correct merge errors 2023-12-22 16:58:30 +00:00
jude
7a6372ed02 Update styles for notification flash 2023-12-22 16:58:30 +00:00
jude
14a54471f7 Build dashboard 2023-12-22 16:58:30 +00:00
jude
5d3b77f1cd Add metrics
Change dashboards to load an index.html file compiled otherwise
2023-12-22 16:58:30 +00:00
jude
1d64c8bb79 Remove stat table 2023-12-22 16:58:03 +00:00
8ba0f02b98 Bump version 2023-11-12 10:00:46 +00:00
d36438c6ce Bump package lock. Add attachment serializer 2023-11-12 09:39:45 +00:00
e0c60e2ce3 Decode attachments correctly when patching a reminder 2023-11-11 15:05:35 +00:00
jude
e7160215b0 Defer offset response 2023-11-11 13:36:40 +00:00
jude
6eaa6f0f28 Bump version 2023-10-19 20:32:01 +01:00
jude
9db0fa2513 Fix attachment decoding 2023-10-19 20:10:40 +01:00
jude
ca13fd4fa7 Restructure code 2023-10-08 18:24:04 +01:00
jude
55acc8fd16 Bump ver 2023-10-08 12:39:31 +01:00
jude
145711fa5d Add version strings to files 2023-10-08 12:21:38 +01:00
jude
5524215786 Bump ver 2023-10-07 16:10:01 +01:00
jude
e8bd05893f Transmit guild name with patreon information 2023-10-07 16:08:25 +01:00
jude
e3d3418f99 Change routing. Remove a macro 2023-10-05 18:54:53 +01:00
jude
2681280a39 Fix interval parsing for different cases 2023-10-01 09:42:58 +01:00
jude
00579428a1 Bump version 2023-09-25 18:20:22 +01:00
jude
b8ef999710 Reload reminders after import 2023-09-25 18:17:19 +01:00
jude
e8f84e281a Bump version 2023-09-24 14:53:16 +01:00
jude
8ddff698e5 Show messages when imports succeed. 2023-09-24 14:14:21 +01:00
jude
541633270c Fix margin on bottom of collapsed reminders 2023-09-24 13:58:24 +01:00
jude
25286da5e0 Use transactions for certain routes 2023-09-24 13:57:27 +01:00
jude
4bad1324b9 Restructure
Move some code out to other files. Add transaction guard
2023-09-24 13:11:53 +01:00
jude
bd1462a00c Reposition "options"
Fix import/export
2023-09-23 23:38:16 +01:00
jude
56ffc43616 Store intervals in templates 2023-09-23 22:47:21 +01:00
jude
52cf642455 Send edit button to beta dashboard 2023-09-23 20:32:57 +01:00
jude
0bf578357a Bump version 2023-09-23 18:31:51 +01:00
jude
6e9eccb62e Update dependencies 2023-09-23 18:29:25 +01:00
jude
6ea28284ce Bump ver 2023-09-23 18:24:39 +01:00
jude
a6525f3052 Move button row down. Correct image sizes on some browsers 2023-09-23 18:14:01 +01:00
jude
348639270d Move button row down 2023-09-23 18:05:26 +01:00
jude
37177c2431 Update styles for mobile 2023-09-23 18:04:41 +01:00
jude
8587bed703 Bump ver 2023-08-19 17:10:45 +01:00
jude
6c9af1ae8e Correct styles on mobile burger 2023-08-19 17:09:46 +01:00
jude
7695b7a476 Fix delete command 2023-08-19 14:35:07 +01:00
651da7b28e Improve some styles. Add an offline mode 2023-08-19 14:20:48 +01:00
eb086146bf Bump version 2023-08-16 17:05:18 +01:00
4ebd705e5e Add clearer indication of interval patreon requirements 2023-08-16 17:03:38 +01:00
5a85f1d83a Extract error sections to templates 2023-08-13 18:29:30 +01:00
68ba25886a Correct javascript comparisons 2023-08-11 13:19:31 +01:00
jude
e25bf6b828 bump 2023-08-10 18:41:47 +01:00
jude
5a386daa9d Fix expirations 2023-08-10 18:25:41 +01:00
jude
0d4a02fb1e Bump ver 2023-08-08 17:48:49 +01:00
jude
e135a74a9b Fix avatars not loading correctly 2023-08-08 17:44:40 +01:00
jude
77f17c8dc2 Partially fix reminder usernames resetting 2023-08-07 21:50:11 +01:00
jude
6a94f990cf Bump ver 2023-08-03 20:08:14 +01:00
jude
3aa5bd37aa Fix duplicating reminder fields 2023-08-03 19:57:28 +01:00
jude
fa83fed1af Fix interval updating 2023-08-03 19:50:15 +01:00
jude
666cb7fa2f Fix padding etc. 2023-08-03 19:28:12 +01:00
jude
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
jude
9405cfcee9 Fix "Reminder needs content".
Certain fields were not being checked correctly for content.
2023-08-03 17:32:17 +01:00
jude
cb25d02cdf Bump ver 2023-08-01 21:12:15 +01:00
jude
bfe651a125 Change autocomplete to use a past date in the past 2023-08-01 20:13:05 +01:00
jude
dc5e52d9ce Default datetime inputs to current date/time 2023-08-01 17:51:29 +01:00
jude
229ada83e1 Fix cron username 2023-07-31 20:14:45 +01:00
jude
13171d6744 Bump ver 2023-07-31 20:09:00 +01:00
jude
2ad941c94c Fix not sending followup reminders 2023-07-31 20:07:54 +01:00
jude
924d31e978 Bump ver 2023-07-31 20:05:43 +01:00
jude
f9a1b23212 Update privacy 2023-07-31 19:28:23 +01:00
jude
ae5795a7ea Update opcode handling 2023-07-31 19:25:06 +01:00
jude
ee36c38eda Update manifest 2023-07-31 19:18:53 +01:00
jude
eca7df3d9f Update style 2023-07-31 18:39:39 +01:00
jude
902b7e1b4a Change reminder sending behaviour to keep reminders but flag them as sent 2023-07-31 18:39:27 +01:00
jude
db1a53a797 Bump ver 2023-07-31 18:04:16 +01:00
jude
3605d71b73 Suppress errors. Restyle 2023-07-31 17:59:38 +01:00
jude
ea2cea573e Bump ver. Round failure rate. 2023-07-30 19:17:44 +01:00
jude
d5fa8036e8 Add data to admin page for success/fail history 2023-07-30 19:09:48 +01:00
jude
b8707bbc9a Fix deleting template making a call on empty template list 2023-07-30 17:16:37 +01:00
jude
99eea16f62 Bump ver 2023-07-30 17:11:37 +01:00
jude
88737302f3 Log reminder send status 2023-07-30 17:00:55 +01:00
jude
213e3a5100 Fix styles. Feedback button 2023-07-30 15:50:46 +01:00
jude
8fa1402ecc Bump ver 2023-07-30 15:42:46 +01:00
jude
e63996bb61 Fix create template not testing for errors 2023-07-30 15:36:58 +01:00
jude
9ede879630 Stats table migration 2023-07-30 15:28:26 +01:00
jude
88e9826a62 Update terms. Fix issue with role picker 2023-07-30 15:26:51 +01:00
jude
5d655c7e6d Update privacy policy 2023-07-30 15:16:34 +01:00
jude
51c9d8a7ae Fix client error on selecting server with no channels 2023-07-30 15:11:34 +01:00
jude
90df265114 Add handler for 50001 Missing Access 2023-07-30 14:13:20 +01:00
jude
e65429aa9c Fix interval input styles 2023-07-30 13:22:57 +01:00
jude
8d2232f0da Bump ver. Use Discord's error codes where possible to improve logging 2023-07-30 12:44:01 +01:00
jude
a58b9866ea Reduce log level 2023-07-30 12:14:47 +01:00
jude
b1f25be5d7 Use transparent background with dashboard logo 2023-07-29 17:13:05 +01:00
jude
f0f9787326 Bump ver 2023-07-23 17:00:09 +01:00
jude
302f5835e6 Fix wrapping on long server names 2023-07-23 16:30:15 +01:00
jude
58c778632e Fix wrapping on long server names 2023-07-23 16:28:27 +01:00
jude
5671fd462b Update contrast on the burger button. fix error thrown by update_select 2023-07-23 16:15:24 +01:00
jude
5ac9733f15 Bump ver 2023-07-23 14:44:35 +01:00
jude
01dc0334fd Fix arbitrary access to reminder list. 2023-07-23 14:29:59 +01:00
jude
4a17aac15c Bump ver 2023-07-23 12:36:25 +01:00
jude
8ce4fc9c6d Fix enable/disable button. Hide demo button 2023-07-23 12:16:09 +01:00
jude
b4f07cfc1c Fix some mobile styles. Fix race condition in client side 2023-07-23 12:06:03 +01:00
jude
8799089b2d Increase the size of reminder names. Restyle. 2023-07-22 15:09:06 +01:00
jude
88c4830209 Fix dashboard embed fields 2023-07-22 13:34:18 +01:00
jude
4dd3df5cc2 bump ver 2023-07-22 13:13:46 +01:00
jude
369a325a46 bump ver 2023-07-22 10:46:33 +01:00
jude
1a1a0fdefb show total reminders and intervals on admin dash 2023-07-10 09:59:11 +01:00
jude
dda8bd3e10 Fix dead link. Hopefully extract mysql details from environment 2023-06-23 11:56:53 +01:00
jude
edbfc92cb9 Add health check email notifications 2023-06-23 09:44:42 +01:00
jude
6de11f09db Change graph periods 2023-06-21 15:36:05 +01:00
jude
284bfcd9ad Split intervals 2023-06-21 15:24:43 +01:00
jude
3d627b5bf0 Add charts 2023-06-21 15:09:24 +01:00
jude
c3c0dbbbae Fetch upcoming schedule and backlog count 2023-06-21 13:26:28 +01:00
jude
64dd81e941 Admin only routes 2023-06-21 10:54:20 +01:00
jude
799298ca34 Add fail cutoff for reminder updating 2023-06-20 15:41:28 +01:00
jude
fa542bb24f Clear up warning from new Rust version 2023-06-20 15:33:25 +01:00
jude
e025d945cf Fix serious issue with adding days. Origin chrono v4.23 2023-06-20 15:30:44 +01:00
jude
bb1c61d0b9 Fallback for reminder days 2023-06-20 14:44:05 +01:00
jude
1519474f93 Report errors to server 2023-06-20 13:13:26 +01:00
jude
9d8622f418 Add logout button 2023-06-20 08:50:12 +01:00
jude
a66db37b33 update poise 2023-06-18 10:47:31 +01:00
jude
c8c1a171d4 Bump version 2023-06-18 10:04:55 +01:00
jude
88cfb829e3 Use conffiles 2023-06-17 12:49:01 +01:00
jude
16be7a328e Correct permissions 2023-06-16 14:00:44 +01:00
jude
04babf7930 updated some dashboard text. fixed authentication. hidden broken stuff 2023-06-16 13:38:42 +01:00
jude
96bc09e8b5 correct authentication 2023-06-16 10:20:42 +01:00
jude
976fb91ecc set default logs 2023-06-15 10:53:13 +01:00
jude
1305b6e64e Bump version 2023-06-14 17:50:56 +01:00
jude
cdfe44d958 Configure permissions properly on Rocket.toml. Make static path behave better 2023-06-14 13:29:48 +01:00
jude
c824a36832 Corrected a number of apt packaging issues 2023-06-13 10:40:48 +01:00
jude
c4bd2c1d18 bump dateparser requirement 2023-06-12 22:47:23 +01:00
jude
561555ab7e updated tos and privacy 2023-05-27 16:40:41 +01:00
jude
115fbd44cb update some frontend 2023-05-27 16:12:09 +01:00
jude
aa931328b0 Support ephemeral reminder confirmations 2023-05-11 19:40:33 +01:00
4b42966284 Moved stuff around since threads are ridiculous 2023-05-11 18:33:06 +01:00
523ab7f03a Partial thread support 2023-05-11 18:32:58 +01:00
6e831c8253 Add migration for threads. Add ability to load .env from wd 2023-05-11 18:32:50 +01:00
jude
4416e5d175 Remove need to supply webhook avatar 2023-05-08 17:32:59 +01:00
jude
734a39a001 Change default Python location. Update build instructions. Add container build instructions 2023-05-08 17:04:51 +01:00
jude
98191d29ee deb-related stuff 2023-05-07 21:08:59 +01:00
jude
1c4c4a8b31 Add deb stuff. Correct dependency on database name 2023-05-07 20:59:07 +01:00
jude
d496c81003 Correct typo in path 2023-05-07 20:38:08 +01:00
jude
094d210f64 Fix orphaned channels issue again 2023-03-24 19:52:41 +00:00
jude
314c72e132 Changed data import to add alongside rather than removing. 2023-03-24 19:41:34 +00:00
jude
4e0163f2cb Rename some environment variables. Add partial deb metadata 2023-03-24 17:44:43 +00:00
jude
e5b8c418af Merge remote-tracking branch 'origin/next' into next 2023-03-24 11:11:59 +00:00
jude
3ef8584189 Use SQLx migrations 2023-03-24 11:11:51 +00:00
Jude Southworth
df2ad09c86
Update README.md 2023-01-21 12:25:24 +00:00
jude
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
jude
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
jude
6e65e4ff3d update some help pages 2022-12-18 13:09:02 +00:00
jude
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
jude
e9bcb1973f Update web for daily intervals 2022-12-10 16:21:43 +00:00
jude
9b87fd4258 Ver bump 2022-12-10 15:38:21 +00:00
jude
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
jude
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
jude
08e4c6cb57 ver bump 2022-11-20 12:20:52 +00:00
jude
6e087bd2dd Fix character counting on /look. Initial support for jumping over DST boundaries 2022-11-20 12:20:10 +00:00
e9792e6322 ver bump 2022-09-26 16:59:57 +01:00
130504b964 Add notice to macro initial run 2022-09-26 16:44:30 +01:00
2a8117d0c1 Revert multiline changes 2022-09-20 17:00:33 +01:00
94bfd39085 Patch compilation against live schema 2022-09-17 13:05:50 +01:00
40cd5f8a36 Patch compilation against live schema 2022-09-17 13:03:52 +01:00
133b00a2ce Patch compilation against live schema 2022-09-17 12:52:03 +01:00
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
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
8f8235a86e Move macro commands to own module
Lots of code here
2022-09-12 16:45:00 +01:00
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
ecaa382a1e Add join message 2022-09-11 17:38:53 +01:00
8991198fd3 Use autocomplete to ensure content box is shown 2022-09-11 15:24:02 +01:00
jude
f20b95a482 Upgrade poise. Combine remind/multiline into one command 2022-09-08 17:58:05 +01:00
jude
8dd7dc6409 Added command for multiline reminders 2022-09-07 18:27:13 +01:00
jude
c799d10727 Move extra processes to user data setup 2022-09-03 16:19:59 +01:00
jude
ceb6fb7b12 bump version 2022-09-03 15:49:05 +01:00
Jude Southworth
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
jude
a38f6024c1 Migrate natural commands 2022-09-03 15:40:29 +01:00
jude
7d8748e3ef group by channel instead of guild 2022-08-19 09:04:12 +01:00
jude
bb3386c4e8 migration for $r commands 2022-08-14 16:22:00 +01:00
jude
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
jude
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
jude
2781f2923e Restrict reminder selection to one-per-guild during fetch loop 2022-07-28 19:20:15 +01:00
jude
03f08f0a18 Update deps. Drop limiter on reminder query 2022-07-27 21:42:09 +01:00
jude
79c86d43f2 Changed return types to results 2022-07-24 20:06:37 +01:00
jude
e19af54caf Import todo lists. Export other data. 2022-07-22 23:30:45 +01:00
jude
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
jude
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
jude
6f7d0f67b3 mentions 2022-05-15 12:14:07 +01:00
jude
bfc2d71ca0 patreon 2022-05-14 12:02:46 +01:00
jude
8eb46f1f23 delete reminders when the user cannot be direct messaged 2022-05-14 10:56:03 +01:00
jude
c4087bf569 pos mysql 2022-05-14 08:12:50 +01:00
jude
f25cfed8d7 edit button 2022-05-13 23:30:01 +01:00
jude
d2a8bd1982 update readme with better build instructions 2022-05-13 23:13:39 +01:00
jude
437ee6b446 ver bump 2022-05-13 23:10:29 +01:00
jude
7d43aa5918 cleared up all unwraps from the reminder sender. cleared up clippy lints. added undo button 2022-05-13 23:08:52 +01:00
jude
8bad95510d configure playing status 2022-05-13 12:43:27 +01:00
Jude Southworth
d7a0b727fb
Merge pull request #7 from reminder-bot/poise-2
Poise 2
2022-05-13 09:00:26 +01:00
480 changed files with 94354 additions and 7640 deletions

31
.gitignore vendored
View File

@ -1,7 +1,30 @@
/target target
.env .env
/venv /venv
.cargo .cargo
assets .idea
out.json web/static/index.html
/.idea web/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?

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE reminders SET `status` = 'deleted' WHERE FIND_IN_SET(id, ?)\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "09f6269e5df3acc01e8e2660532b5fcab21c0cd4fd126b580176d24578932d7e"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n UPDATE channels\n SET\n name = ?,\n nudge = ?,\n blacklisted = ?,\n webhook_id = ?,\n webhook_token = ?,\n paused = ?,\n paused_until = ?\n WHERE id = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 8
},
"nullable": []
},
"hash": "1bd6f70d57d5e913f97025cf6fc5be795a1302485ef1c07fe13eb246f184a1d1"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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": "2db489e076c93a5a2baf2dd48eb3278d68296aea93097a642e2bbb5112d51fe8"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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 FIND_IN_SET(channels.channel, ?)\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": "3695f95cea95c075b2b3becdf1b5d75bf1ccace3b9a176086faa4ad76c0a0fbd"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT IGNORE INTO guilds (guild) VALUES (?)",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "48603378e8cbe169c2c60e32f3f8ee758f37927fcb494513ba50f510ace23654"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,104 @@
{
"db_name": "MySQL",
"query": "\n SELECT id, channel, name, nudge, blacklisted, 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": "name",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 400
}
},
{
"ordinal": 3,
"name": "nudge",
"type_info": {
"type": "Short",
"flags": "NOT_NULL",
"max_size": 6
}
},
{
"ordinal": 4,
"name": "blacklisted",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 5,
"name": "webhook_id",
"type_info": {
"type": "LongLong",
"flags": "UNIQUE_KEY | UNSIGNED",
"max_size": 20
}
},
{
"ordinal": 6,
"name": "webhook_token",
"type_info": {
"type": "Blob",
"flags": "BLOB",
"max_size": 262140
}
},
{
"ordinal": 7,
"name": "paused",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 8,
"name": "paused_until",
"type_info": {
"type": "Timestamp",
"flags": "BINARY",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
true,
false,
false,
true,
true,
false,
true
]
},
"hash": "4d26e92088234552f9159b876c7fdd3bb557a7f918820e289bd39742de553883"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE reminders SET `status` = 'sent' WHERE `id` = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "5a868f66c95000f07fc931e6a1a39160f6a12b9bf89c8294c6a75a27efc72a18"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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` = DATE_ADD(reminders.`utc_time`, INTERVAL ? SECOND)\n WHERE FIND_IN_SET(channels.`channel`, ?)\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "65496ff85dd92b5aaf12519628afdc16ca7d70131744c9c53880dc56b92991d9"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\n DELETE FROM todos WHERE FIND_IN_SET(id, ?)\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "6e00a27fa770d1aa8cac48cd8878e712ef536c67eeb4fb9a4a801459ada35715"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM command_macro WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "731ee62b92df2295d8962dfa97a3a05b0a28119daba09f2533ffbfb2eb385036"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM channels WHERE channel = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "756713780ab6eaaff6db30cb62df98663dacfa751ec67ff5055507376bbce37d"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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 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.restartable,\n reminders.tts,\n reminders.uid,\n reminders.username,\n reminders.utc_time\n FROM reminders\n INNER JOIN channels ON channels.id = reminders.channel_id\n WHERE `status` = 'pending' AND FIND_IN_SET(channels.channel, ?)",
"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": "NOT_NULL | 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": "VarString",
"flags": "NOT_NULL | BINARY",
"max_size": 4294967292
}
},
{
"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,
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
false,
false,
false,
true,
true,
true,
true,
false,
false,
false,
false,
true,
false
]
},
"hash": "af5bf4c6b30ffd316ecebc2dd53554e41f0d4f40cad63736930d20cb18159b38"
}

View File

@ -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"
}

View File

@ -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": "bbdd4bd7ebffb97efab8ba7e829159e104615260929341ec0e961b4d5cd6ca0c"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT INTO guilds (guild) VALUES (?)",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "cd88a8b4d727bd36df48ef3f114a070256e3a8cb28a2d140bddfe300391c165e"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE reminders SET `utc_time` = ? WHERE `id` = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "d2c89e166a5fcc4819feba4a2253bdf63025bc35f59ba175505a455a565988fb"
}

View File

@ -0,0 +1,104 @@
{
"db_name": "MySQL",
"query": "\n SELECT id, channel, name, nudge, blacklisted, 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": "name",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 400
}
},
{
"ordinal": 3,
"name": "nudge",
"type_info": {
"type": "Short",
"flags": "NOT_NULL",
"max_size": 6
}
},
{
"ordinal": 4,
"name": "blacklisted",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 5,
"name": "webhook_id",
"type_info": {
"type": "LongLong",
"flags": "UNIQUE_KEY | UNSIGNED",
"max_size": 20
}
},
{
"ordinal": 6,
"name": "webhook_token",
"type_info": {
"type": "Blob",
"flags": "BLOB",
"max_size": 262140
}
},
{
"ordinal": 7,
"name": "paused",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 8,
"name": "paused_until",
"type_info": {
"type": "Timestamp",
"flags": "BINARY",
"max_size": 19
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
true,
false,
false,
true,
true,
false,
true
]
},
"hash": "d3e41b7c9df5823c418181f46aa78999159afbd458dcd05ffb9e032182ec493b"
}

View File

@ -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 FIND_IN_SET(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": "d60ea641070dbd882cd53878fa109d08bd3f65e0da8c263e78fe0b200228bc2b"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "\nINSERT INTO timers (name, owner) VALUES (?, ?)\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "d725c2be00dc44619eb6d1dce6fac6c7f18cc71b5df7af604f3408ceeb80c39d"
}

View File

@ -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"
}

View File

@ -0,0 +1,264 @@
{
"db_name": "MySQL",
"query": "SELECT\n reminders.attachment,\n reminders.attachment_name,\n reminders.avatar,\n CONCAT('#', channels.channel) AS 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.username,\n reminders.utc_time\n FROM reminders\n LEFT JOIN channels ON channels.id = reminders.channel_id\n WHERE FIND_IN_SET(channels.channel, ?) AND status = 'pending'",
"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": "avatar",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 2048
}
},
{
"ordinal": 3,
"name": "channel",
"type_info": {
"type": "VarString",
"flags": "",
"max_size": 84
}
},
{
"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": "enabled",
"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": "name",
"type_info": {
"type": "VarString",
"flags": "NOT_NULL",
"max_size": 400
}
},
{
"ordinal": 21,
"name": "restartable",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"ordinal": 22,
"name": "tts",
"type_info": {
"type": "Tiny",
"flags": "NOT_NULL",
"max_size": 1
}
},
{
"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,
true,
false,
false,
true,
false,
false,
false,
true,
true,
true,
false,
true,
false,
true,
true,
true,
true,
false,
false,
false,
true,
false
]
},
"hash": "db69def9391283efb9bf915223d7d6b2d169203b7dc45481a509137f7590d9a6"
}

View File

@ -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"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE reminders SET channel_id = ? WHERE uid = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "ebc018a38c00e907cc466b9100b6cbb10b029d364637c1fa76b44526dd1ba2e3"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "DELETE FROM guilds WHERE guild = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "f551df7922ce36c63e961a822ffd0b83c5d6f16d1eadca9fb41d6c98fe7580ee"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE reminders SET `status` = 'deleted' WHERE uid = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "f56e49a76deedf22d67b4771291b2e44ade49e739202c8062126855a5e807cb6"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "INSERT IGNORE INTO channels (channel, name, guild_id) VALUES (?, ?, (SELECT id FROM guilds WHERE guild = ?))",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "f8e99a39fb87d47bcdf70f38e00c4dbe4d6832b1b073efddfa79a8cd756d8dc6"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,12 @@
{
"db_name": "MySQL",
"query": "UPDATE guilds SET ephemeral_confirmations = ? WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "fb58ff6df067daf6b4c4a7ff59015a19ed609aafd5a73584b7ed7c8f3b17785e"
}

View File

@ -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"
}

View File

@ -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"
}

3845
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,32 +1,71 @@
[package] [package]
name = "reminder_rs" name = "reminder-rs"
version = "1.6.0-beta3" version = "1.7.35"
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]
poise = "0.2" poise = "0.6.1"
dotenv = "0.15" dotenv = "0.15"
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 = { version = "0.5", features = ["serde"] } 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"
serde_repr = "0.1" serde_repr = "0.1"
rmp-serde = "0.15" rmp-serde = "1.1"
rand = "0.7" rand = "0.8"
levenshtein = "1.0" levenshtein = "1.0"
sqlx = { version = "0.5", features = ["runtime-tokio-rustls", "macros", "mysql", "bigdecimal", "chrono"]} sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "macros", "mysql", "bigdecimal", "chrono", "migrate"] }
base64 = "0.13.0" base64 = "0.22"
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"
[dependencies.postman] [dependencies.extract_derive]
path = "postman" path = "extract_derive"
[dependencies.reminder_web] [dependencies.recordable_derive]
path = "web" 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"],
# ["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"
start = false

9
Containerfile.build Normal file
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

37
Containerfile.run Normal file
View File

@ -0,0 +1,37 @@
FROM ubuntu:24.04
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH
RUN apt update
RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt install -y gcc gcc-multilib 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
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/public ./reminder-dashboard/public
COPY ./reminder-dashboard/src ./reminder-dashboard/src
COPY ./reminder-dashboard/index.html ./reminder-dashboard/
COPY ./reminder-dashboard/package.json ./reminder-dashboard/
COPY ./reminder-dashboard/package-lock.json ./reminder-dashboard/
COPY ./reminder-dashboard/tsconfig.json ./reminder-dashboard/
COPY ./reminder-dashboard/vite.config.ts ./reminder-dashboard/
COPY ./src ./src
COPY ./static ./static
COPY ./templates ./templates
COPY ./build.rs ./
COPY ./Cargo.lock ./
COPY ./Cargo.toml ./
COPY ./dp.py ./
RUN cargo install --path .
CMD ["reminder-rs"]

View File

@ -2,23 +2,41 @@
Reminder Bot for Discord. Reminder Bot for Discord.
## How do I use it? ## How do I use it?
We offer a hosted version of the bot. You can invite it with: **https://invite.reminder-bot.com**. The catch is that repeating I offer a hosted version of the bot. You can invite it with: **https://invite.reminder-bot.com**. The catch is that repeating
reminders are paid on the hosted version of the bot. Keep reading if you want to host it yourself. reminders are paid on the hosted version of the bot. Keep reading if you want to host it yourself.
You'll need rustc and cargo for compilation. To run, you'll need Python 3 still (due to no suitable replacement for dateparser in Rust) You'll need rustc and cargo for compilation. To run, you'll need Python 3 still (due to no suitable replacement for dateparser in Rust)
### Compiling ### Build APT package
Reminder Bot can be built by running `cargo build --release` in the top level directory. It is necessary to create a folder called 'assets' containing an image file with its name specified in the environment as `WEBHOOK_AVATAR`, of dimensions 128x128px to be used as the webhook avatar.
#### Compilation environment variables Recommended method.
These environment variables must be provided when compiling the bot
By default, this builds targeting Ubuntu 20.04. Modify the Containerfile if you wish to target a different platform. These instructions are written using `podman`, but `docker` should work too.
1. Install container software: `sudo apt install podman`.
2. Install database server: `sudo apt install mysql-server-8.0`. Create a database called `reminders`
3. Install SQLx CLI: `cargo install sqlx-cli`
4. From the source code directory, execute `sqlx migrate run`
5. Build container image: `podman build -t reminder-rs .`
6. Build with podman: `podman run --rm --network=host -v "$PWD":/mnt -w /mnt -e "DATABASE_URL=mysql://user@localhost/reminders" reminder-rs cargo deb`
### Compiling for other target
1. Install requirements:
`sudo apt install gcc gcc-multilib cmake libssl-dev build-essential python3-dateparser`
2. Install rustup from https://rustup.rs
3. Install the nightly toolchain: `rustup toolchain default nightly`
4. Install database server: `sudo apt install mysql-server-8.0`. Create a database called `reminders`.
5. Install `sqlx-cli`: `cargo install sqlx-cli`.
6. Run migrations: `sqlx migrate run`.
7. Set environment variables:
* `DATABASE_URL` - the URL of your MySQL database (`mysql://user[:password]@domain/database`) * `DATABASE_URL` - the URL of your MySQL database (`mysql://user[:password]@domain/database`)
* `WEBHOOK_AVATAR` - accepts the name of an image file located in `$CARGO_MANIFEST_DIR/assets/` to be used as the avatar when creating webhooks. **IMPORTANT: image file must be 128x128 or smaller in size** 8. Build: `cargo build --release`
### Setting up Python
Reminder Bot by default looks for a venv within it's working directory to run Python out of. To set up a venv, install `python3-venv` and run `python3 -m venv venv`. Then, run `source venv/bin/activate` to activate the venv, and do `pip install dateparser` to install the required library
### Environment Variables ### Configuring
Reminder Bot reads a number of environment variables. Some are essential, and others have hardcoded fallbacks. Environment variables can be loaded from a .env file in the working directory. Reminder Bot reads a number of environment variables. Some are essential, and others have hardcoded fallbacks. Environment variables can be loaded from a .env file in the working directory.
__Required Variables__ __Required Variables__
@ -30,10 +48,5 @@ __Other Variables__
* `LOCAL_TIMEZONE` - default `UTC`, necessary for calculations in the natural language processor * `LOCAL_TIMEZONE` - default `UTC`, necessary for calculations in the natural language processor
* `SUBSCRIPTION_ROLES` - default `None`, accepts a list of Discord role IDs that are given to subscribed users * `SUBSCRIPTION_ROLES` - default `None`, accepts a list of Discord role IDs that are given to subscribed users
* `CNC_GUILD` - default `None`, accepts a single Discord guild ID for the server that the subscription roles belong to * `CNC_GUILD` - default `None`, accepts a single Discord guild ID for the server that the subscription roles belong to
* `PYTHON_LOCATION` - default `venv/bin/python3`. Can be changed if your Python executable is located somewhere else * `PYTHON_LOCATION` - default `/usr/bin/python3`. Can be changed if your Python executable is located somewhere else
* `THEME_COLOR` - default `8fb677`. Specifies the hex value of the color to use on info message embeds * `THEME_COLOR` - default `8fb677`. Specifies the hex value of the color to use on info message embeds
* `DM_ENABLED` - default `1`, if `1`, Reminder Bot will respond to direct messages
### Todo List
* Convert aliases to macros

Some files were not shown because too many files have changed in this diff Show More