Commit graph

442 commits

Author SHA1 Message Date
5cb61ecd65
fix(aurora): awaited a coroutine 2024-06-05 01:39:34 -04:00
9622e037c9
fix(aurora): fixed another sql syntax error 2024-06-05 01:38:27 -04:00
e9a64e5a39
fix(aurora): fixed an sql syntax error 2024-06-05 01:37:41 -04:00
afac274978
fix(aurora): removed a useless try/except block 2024-06-05 01:36:45 -04:00
e988917319
feat(aurora): added a return_obj parameter to Moderation.execute() 2024-06-05 01:31:40 -04:00
42f7f9f69b
feat(aurora): migrated Aurora.handle_expiry() to use Moderation.execute() instead of opening its own connections 2024-06-05 01:29:47 -04:00
d07e5ed804
misc(aurora): changing around some logging levels 2024-06-05 01:12:49 -04:00
df465e5ba6
fix(aurora): awaited another coroutine 2024-06-05 01:11:18 -04:00
76572e2281
fix(aurora): awaited a coroutine 2024-06-05 01:05:11 -04:00
d629f1a5a2
fix(aurora): awaited two coroutines 2024-06-05 01:02:09 -04:00
ca4510d3a5
fix(aurora): why was I CLOSING THE CONNECTION THERE 😭 2024-06-05 01:01:17 -04:00
3247e6fb82
fix(aurora): lmao i'm dumb 2024-06-05 00:59:33 -04:00
67e3abf5ce
fix(aurora): use interaction.channel.send instead 2024-06-05 00:54:05 -04:00
d1b5346396
fix(aurora): fixed failed_cases in the aurora importer 2024-06-05 00:51:13 -04:00
fe5823b637
fix(aurora): awaited a coroutine 2024-06-05 00:41:41 -04:00
3383e84221
fix(aurora): fixed some issues with aiosqlite 2024-06-05 00:39:56 -04:00
56a2f96a2d
feat(aurora): made database.connect() into an async context manager 2024-06-05 00:36:12 -04:00
eebddd6e89
fix(aurora): override aiosqlite's logging level to warning 2024-06-05 00:25:19 -04:00
5cbf4e7e47
feat(aurora): migrated to aiosqlite 2024-06-05 00:14:43 -04:00
027144f35d
fix(aurora): pylint fixes
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 30s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 49s
2024-06-04 23:55:55 -04:00
0d64e3f652
misc(aurora): convert Change.from_dict() to use utils.timedelta_from_string()
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 29s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 48s
2024-06-04 23:52:35 -04:00
8591649465
fix(aurora): fixed aurora.utilities.utils.timedelta_from_string not including days in its calculations
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 29s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 46s
2024-06-04 23:43:53 -04:00
78630dc317
feat(aurora): added timedelta_from_string() function
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 31s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 50s
2024-06-04 23:31:52 -04:00
74d122a2e7
fix(aurora): catch importer errors instead of letting the entire import process die 2024-06-04 23:31:36 -04:00
ce48c1e889
fix(aurora): fixed a valueerror
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 30s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 47s
2024-06-04 16:55:29 -04:00
ff34310113
fix(aurora): fixed a valueerror
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 31s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 47s
2024-06-04 16:52:19 -04:00
3d2dabae08
fix(aurora): fixed a typeerror
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 29s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 47s
2024-06-04 16:50:33 -04:00
3fdc54b7cb
fix(aurora): get_next_case_number now only retrieves the first entry in the sql database (using LIMIT 1)
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 28s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 43s
2024-06-04 16:37:28 -04:00
b252343dc0
misc(aurora): allow Moderation.log() to skip returning the class object
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 29s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 44s
2024-06-04 16:35:18 -04:00
720e100a20
fix(aurora): removed some logging statements
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 29s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 47s
2024-06-04 15:52:23 -04:00
ff66006b8a
misc(aurora): add more logging
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 29s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 50s
2024-06-04 15:43:15 -04:00
fdb96539c3
fix(aurora): removed a useless debug statement
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 28s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 44s
2024-06-04 15:39:16 -04:00
7a664ce9c3
fix(aurora): make Change.reason optional
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 28s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 44s
2024-06-04 15:37:58 -04:00
3168c42787
fix(aurora): fixed a pydantic ValidationError
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 44s
2024-06-04 15:36:38 -04:00
5d53eec2f1
fix(aurora): fixed a valueerror in the Change.from_dict() method
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 28s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 43s
2024-06-04 15:32:59 -04:00
166421b6ba
fix(aurora): removed a character causing a valueerror
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 28s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 43s
2024-06-04 15:23:45 -04:00
0a207b66e4
fix(aurora): fixed an error with timedelta formatting
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 28s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 43s
2024-06-04 15:22:50 -04:00
5151f65317
fix(aurora): added more to the debugging statement
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 43s
2024-06-04 14:59:57 -04:00
0089625ef3
fix(aurora): add a debug statement
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 43s
2024-06-04 14:56:51 -04:00
8ac735dafe
misc(aurora): change the JSONEncoder subclass to use match/case instead of if statements
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 40s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 1m4s
2024-06-04 14:20:01 -04:00
21fa3d9eb0
feat(aurora): added an __int__ dunder method to the moderation model
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 30s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 46s
2024-06-04 12:44:58 -04:00
38180f5ccd
fix(aurora): fixed an sql operation error
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 30s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 46s
2024-06-04 12:29:24 -04:00
a10af37f14
feat(aurora): add support for OFFSET in Moderation.get_latest() 2024-06-04 12:23:12 -04:00
cb420d2fc4
fix(aurora): pylint/ruff fix
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 37s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 54s
2024-06-04 11:52:34 -04:00
04223c3c55
Merge branch 'main' into aurora-pydantic
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 28s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 46s
2024-06-04 11:48:15 -04:00
1c6d2456ed
misc(aurora): changed aurora.utilities.utils.get_bool_emoji to use match/case instead of if/else
All checks were successful
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 43s
Actions / Build Documentation (MkDocs) (pull_request) Successful in 29s
2024-06-04 00:04:46 -04:00
9b0f977016
feat(aurora): moved get_next_case_number() into the Moderation class, along with removing from_sql and get_all_cases. also added some other classmethods to replace those.
also modified message_factory and its calls to add a new kwarg
2024-06-04 00:04:11 -04:00
460d5a31fc
feat(aurora): allow the Moderation.execute() classmethod to accept a cursor, to prevent opening a new database connection on every call 2024-06-03 23:48:21 -04:00
bbe8b281d1
misc(aurora): changed two typehints in aurora.utilities.utils and added other typehints 2024-06-03 23:46:22 -04:00
be253b668b
feat(aurora): converted /history to use the new Moderation sql queries
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 45s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 1m9s
2024-06-03 01:07:00 -04:00
22f9ce52d1
fix(aurora): fixed a typeerror
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 42s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 1m11s
2024-06-03 00:55:56 -04:00
499cfbe8a9
misc(aurora): use tuples instead of lists
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 44s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 1m14s
2024-06-03 00:55:09 -04:00
99d95afe07
fix(aurora): fixed another TypeError
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 45s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 1m10s
2024-06-03 00:51:51 -04:00
028e22ebec
fix(aurora): happy now?
Some checks failed
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 1m9s
Actions / Build Documentation (MkDocs) (pull_request) Successful in 43s
2024-06-03 00:50:17 -04:00
4c28453173
fix(aurora): fixed a TypeError
Some checks failed
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 1m9s
Actions / Build Documentation (MkDocs) (pull_request) Successful in 42s
2024-06-03 00:49:08 -04:00
d646754466
feat(aurora): added a bunch of functionality to the Moderation model
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 44s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 1m11s
2024-06-03 00:47:56 -04:00
76f176d4cc
feat(aurora): change history to use Moderation.from_sql_all()
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 45s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 1m10s
2024-06-03 00:22:32 -04:00
c35580c576
misc(aurora): change to aurora importer log arguments
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 47s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 1m15s
2024-06-03 00:17:33 -04:00
7fc6235abe
fix(aurora): remove bot keys from the change import when importing from aurora
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 46s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 1m12s
2024-06-03 00:15:17 -04:00
21e51dc320
misc(aurora): minor syntax change
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 46s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 1m15s
2024-06-03 00:09:39 -04:00
db477c4744
fix(aurora): fixed an issue with json encoding
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 47s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 1m10s
2024-06-03 00:07:52 -04:00
1990b97518
fix(aurora): ignore moderation cases where the moderation_id is 0
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 49s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 1m13s
2024-06-02 23:59:17 -04:00
641f45d126
feat(aurora): add the from_sql_all classmethod to the Moderation model
All checks were successful
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 1m9s
Actions / Build Documentation (MkDocs) (pull_request) Successful in 47s
2024-06-02 23:53:19 -04:00
73c9104882
fix(aurora): cast to string before checking length to avoid typeerrors when reason is None
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 40s
2024-05-24 04:26:58 -04:00
5b64ee9578
feat(aurora): add metadata to evidenceformat
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 40s
2024-05-24 04:22:42 -04:00
bfb4d8768d
fix(aurora): add moderation metadata to the log factory
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 38s
2024-05-24 04:18:17 -04:00
7f71ca3d6d
fix(aurora): change interval metadata
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 41s
2024-05-24 04:16:48 -04:00
3dcc637920
fix(aurora): avoid keyerrors
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 39s
2024-05-24 04:15:27 -04:00
9a4f19f4a1
fix(aurora): show metadata key/value pairs in /case
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 41s
2024-05-24 04:12:28 -04:00
7a9c9846de
fix(aurora): fixed a broken from_id method
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 40s
2024-05-24 04:09:27 -04:00
0cc7d6079d
fix(aurora): removed useless debug statement
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 40s
2024-05-24 04:06:05 -04:00
ed923f1d9b
fix(aurora): finally actually maybe fixed the pydantic validation error
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 25s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 38s
2024-05-24 04:04:21 -04:00
39cb5feb50
misc(aurora): adding temporary debug logging
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 32s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 44s
2024-05-24 04:02:15 -04:00
c90796f6b3
fix(aurora): hopefully actually fixed the pydantic validation error
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 38s
2024-05-24 04:01:15 -04:00
0b1d1d29e6
fix(aurora): hopefully fixed a pydantic validation error
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 39s
2024-05-24 03:57:54 -04:00
599ab8c51d
fix(aurora): fixed a non-async function being awaited
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 39s
2024-05-24 03:56:32 -04:00
797fd561c9
fix(aurora): fixed another typeerror
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 39s
2024-05-24 03:53:38 -04:00
51d3245703
fix(aurora): fixed a typeerror in Moderation.log()
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 38s
2024-05-24 03:51:43 -04:00
0411e3dab7
fix(aurora): fixed a typeerror in the check_moddable function
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 39s
2024-05-24 03:49:55 -04:00
67b33a2eb8
feat(aurora): added a slowmode command
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 39s
2024-05-24 03:46:20 -04:00
1405dae49e
fix(aurora): add roles to evidenceformat
All checks were successful
Actions / Build Documentation (MkDocs) (push) Successful in 28s
Actions / Lint Code (Ruff & Pylint) (push) Successful in 41s
2024-05-20 20:59:01 -04:00
dc51aa7bdc
fix(aurora): import fixes
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 31s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 45s
2024-05-09 21:27:26 -04:00
904fd1c914
fix(aurora): fixed more import errors
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 40s
2024-05-06 21:46:01 -04:00
92d221ff70
fix(aurora): forgot a file!
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 41s
2024-05-06 21:43:08 -04:00
d91a4f49f9
fix(aurora): fixed import errors
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 42s
2024-05-06 21:39:43 -04:00
ab878739c4
misc(aurora): pep 604 compliance
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 28s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 43s
2024-05-06 21:04:08 -04:00
946e14ee3c
fix(aurora): something idk
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 42s
2024-05-06 20:45:22 -04:00
bcc4aa384f
fix(aurora): hopefully fixed the module not found issue?
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 41s
2024-05-06 17:41:14 -04:00
260dd3ef4c
fix(aurora): fixing a ModuleNotFound error
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 40s
2024-05-06 17:35:43 -04:00
c69b3cd032
misc(aurora): import change
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 42s
2024-05-06 17:33:28 -04:00
2b79e3b6a8
fix(aurora): added an __init__.py to a directory that was missing one
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 40s
2024-05-06 17:29:57 -04:00
7dfe94869c
misc(aurora): codebase cleanup
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 41s
2024-05-06 17:23:59 -04:00
ac8cefd779
fix(aurora): pylint fixes
All checks were successful
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 43s
2024-05-06 16:47:21 -04:00
09471a4027
misc(aurora): change the logging severity of Change.from_dict()'s logs to trace
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 41s
2024-05-06 16:39:13 -04:00
15ccd5530a
fix(aurora): fixed a few unboundlocalerrors
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 41s
2024-05-06 16:37:52 -04:00
bb5ab8e61b
fix(aurora): make Moderration.from_result() return a Moderation object instead of a dictionary
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 28s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 42s
2024-05-06 16:36:27 -04:00
c2e017339e
fix(aurora): fixed a broken classmethod
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 44s
2024-05-06 16:35:06 -04:00
d7ca5cab46
feat(aurora): cleaned up the codebase and fixed a whole bunch of bugs
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 27s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 42s
2024-05-06 16:34:08 -04:00
53b67e1c95
fix(aurora): convert results into a dictionary before making a Moderation instance out of them
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 28s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 43s
2024-05-06 16:07:35 -04:00
d7a8fbe367
fix(aurora): ignore moderations with the id 0 in the history command
Some checks failed
Actions / Build Documentation (MkDocs) (pull_request) Successful in 26s
Actions / Lint Code (Ruff & Pylint) (pull_request) Failing after 40s
2024-05-06 16:02:00 -04:00