Ske
bb7ee130a6
Fix error when proxying all-whitespace message
2020-07-05 13:26:49 +02:00
Ske
da7befa1b7
Fix token DM error
2020-07-05 13:23:23 +02:00
Ske
f03bab303c
Explicitly error if the URI schema is wrong
2020-07-05 13:19:43 +02:00
Ske
666b21a08f
Add category headers to blacklist channels
2020-07-05 13:16:21 +02:00
Ske
da9bfbb46d
Redo blacklist list fetching/rendering
2020-07-05 13:08:18 +02:00
Ske
01d25ca391
Fix compiler warning in ShowBlacklisted
2020-07-05 13:01:38 +02:00
BeeFox-sys
55ea314b42
Fix: Escape Backticks ( #192 )
2020-07-05 12:55:21 +02:00
ariel w
224b653ee0
Add command to show current proxy blacklist ( #189 )
2020-07-05 12:54:27 +02:00
Ske
42b9b4f08e
Restrict proxy conflict checking to the same system
2020-07-03 12:00:59 +02:00
Ske
98d4ee8664
Add -sd as alias for -search-description
2020-07-03 11:03:20 +02:00
Ske
c88ccea0b2
Remove June avatar (it's July now)
2020-07-02 19:11:46 +02:00
Ske
c87e67245d
Create GetXXX utils wrapping try blocks
2020-07-02 18:29:04 +02:00
Ske
7fef8c1dde
Split up Context class into more extension methods
2020-07-01 18:27:26 +02:00
Ske
53036da6a5
Move checks in Context to extension methods
2020-07-01 18:18:38 +02:00
Ske
0598c53f62
Migrate guild objects to the patch system
2020-06-29 15:20:28 +02:00
Ske
467ce78522
Retire more IDataStore methods
2020-06-29 14:54:11 +02:00
Ske
9c1efc7886
Move system updates to the same patch system as members
2020-06-29 14:39:19 +02:00
Ske
c5697b33e2
Finally retire the PKMember setters!
2020-06-29 14:15:30 +02:00
Ske
281b669391
Refactor member updates to use a patch object
2020-06-29 13:57:48 +02:00
Ske
472e556ef0
Pass proper allowed_mentions when sending webhook messages
2020-06-28 20:26:14 +02:00
Ske
9420cb56f8
Show sorted field on the long list by default
2020-06-28 18:14:59 +02:00
Ske
3207fcff1b
Fix guild ID row name in query
2020-06-26 15:07:51 +02:00
Ske
e4d51b5198
Explicitly check for bot/WH users before running command handler
2020-06-26 01:49:51 +02:00
Ske
4f6a4c000d
Fix setting server name/avatar with no row in the member_guild table
2020-06-25 22:23:15 +02:00
Ske
bb75519f6b
Properly handle unauthorized log channel access
2020-06-25 09:14:05 +02:00
Ske
50b5a8fbee
Fix changing autoproxy settings with no system_guild row
2020-06-24 17:50:12 +02:00
Ske
0ee22813fa
Don't trim inner string when matching proxy tags
2020-06-24 17:19:01 +02:00
Ske
a83e9306bb
Reimplement autoproxy escape character
2020-06-24 16:48:55 +02:00
Ske
3e297178c7
Hopefully fix user cache error in ReactionAdd
2020-06-24 16:47:34 +02:00
Ske
447b986706
Add dispname -> displayname alias
2020-06-23 09:59:39 +02:00
Fiona
5ba0dd0273
allow for matching by member display name
2020-06-22 21:06:25 +10:00
Ske
d3cf382e3b
Migrate to date/time format extension methods
2020-06-21 16:05:04 +02:00
Ske
dcffbef805
Migrate to more privacy helper extensions
2020-06-21 15:51:08 +02:00
Ske
84d5adf907
Fix build errors from DSP update
2020-06-21 15:34:32 +02:00
Ske
34f4ff4e1b
Upgrade DSharpPlus version to 4.0.0-nightly-00707
...
This fixes passing an empty mention array to SendMessageAsync, making our workaround obsolete
2020-06-21 15:11:18 +02:00
Ske
378c49cb20
Remove 60+ (whew) SanitizeMentions() calls
2020-06-20 17:36:03 +02:00
Ske
2c35649ef0
Use AllowedMentions to disable mentions everywhere by default
2020-06-20 17:33:10 +02:00
Ske
ff7b728762
Merge branch 'feature/granular-privacy'
2020-06-20 16:25:08 +02:00
Ske
368320abf4
Add warning when setting avatar privacy with no server avatar
2020-06-20 16:10:36 +02:00
Ske
c428d95479
Fix auth checking when looking up member avatar
2020-06-20 16:10:22 +02:00
Ske
ae4e8f97d0
Add member avatar privacy
2020-06-20 16:00:50 +02:00
acw0
11848bc19f
Add support for Auttaja webhook message logs
2020-06-19 13:00:04 -04:00
Ske
8df42f7d92
Ignore bot reactions
2020-06-18 17:49:43 +02:00
Astrid
68eeb858ec
Merge pull request #184 from acw0/feature/gearbot
...
Add GearBot to log cleanup
2020-06-18 17:43:24 +02:00
Ske
5075565d2f
Default to UTC given no system in member lists
2020-06-18 17:41:14 +02:00
Ske
7e8e1f1b8c
Don't try paginating with empty results
2020-06-18 17:40:51 +02:00
Ske
27c8100cac
Get rid of switch exhaustiveness compiler warning
2020-06-18 17:34:03 +02:00
Ske
dd9cc3ef0c
Respect description privacy when searching members
2020-06-18 17:33:37 +02:00
Ske
56eae82b0a
Move most references to PKMember.Name to go through helper extepsions for privacy
2020-06-18 17:08:36 +02:00
acw0
8559f1f532
Add GearBot to log cleanup
2020-06-17 20:46:03 -04:00
Ske
761270f0c3
Clean up member privacy command
2020-06-17 23:06:49 +02:00
Ske
e92700f339
Comment out color privacy stuff for now (revisit later?)
2020-06-17 21:51:40 +02:00
BeeFox-sys
721a4502bb
Feature/granular member privacy ( #174 )
...
* Some reasons this needs to exist for it to run on my machine? I don't think it would hurt to have it in other machines so
* Add options to member model
* Add Privacy to member embed
* Added member privacy display list
* Update database settings
* apparetnly this is nolonger needed?
* Fix sql call
* Fix more sql errors
* Added in settings control
* Add all subject to system privacy
* Basic API Privacy
* Name privacy in logs
* update todo
* remove CheckReadMemberPermission
* Added name privacy to log embed
* update todo
* Update todo
* Update api to handle privacy
* update todo
* Update systemlist full to respect privacy (as well as system list)
* include colour as option for member privacy subject
* move todo file (why was it there?)
* Update TODO.md
* Update TODO.md
* Update TODO.md
* Deleted to create pr
* Update command usage and add to the command tree
* Make api respect created privacy
* Add editing privacy through the api
* Fix pronoun privacy field in api
* Fix info leak of display name in api
* deprecate privacy field in api
* Deprecate privacy diffrently
* Update API
* Update documentation
* Update documentation
* Remove comment in yml
* Update userguide
* Update migration (fix typo in 5.sql too)
* Sanatize names
* some full stops
* Fix after merge
* update migration
* update schema version
* update edit command
* update privacy filter
* fix a dumb mistake
* clarify on what name privacy does
* make it easier on someone else
* Update docs
* Comment out unused code
* Add aliases for `member privacy all public` and `member privacy all private`
2020-06-17 21:31:39 +02:00
Ske
627f544ee8
Migrate API to ASP.NET Core Auth services + refactor
2020-06-16 01:15:59 +02:00
Ske
7fde54050a
Avoid a blank overflow page when showing paginated cards ( closes #171 )
2020-06-15 13:00:28 +02:00
Ske
5280e48b09
Properly check ShowProxyTags when printing proxy tags
2020-06-15 12:55:02 +02:00
Ske
088bc15e5e
Upgrade Autofac dependency
2020-06-15 00:52:20 +02:00
Ske
ca882dba73
Add more performance metrics
2020-06-14 22:19:12 +02:00
Ske
b9cbd241de
Migrate to type-safe model ID structs
2020-06-14 21:37:04 +02:00
Ske
e5ac5edc35
Refactor and categorize tests
2020-06-14 20:22:29 +02:00
Ske
0f041c2e3c
Add unit test project and some early tests
2020-06-14 18:56:53 +02:00
Ske
2d43c17f9e
Add pk;member list
as alias for pk;system list
2020-06-14 18:56:35 +02:00
Ske
c780781184
Remove unused imports
2020-06-13 23:12:44 +02:00
Ske
2702c45b4f
General bits of cleanup
2020-06-13 22:20:24 +02:00
Ske
4b69ef806a
Properly support KeepProxy after refactor
2020-06-13 22:16:04 +02:00
Ske
6d06474d26
Refactor sort/filter code once again
...
Now we handle sorting on the bot side, but still filter in the database
2020-06-13 21:49:31 +02:00
Ske
0bb8d2b917
Add own member checks back to the avatar mutators
2020-06-13 20:23:06 +02:00
Ske
f1b28b7fb6
Move schema migration stuff to Database
2020-06-13 19:54:16 +02:00
Ske
c927967c3b
Migrate GetSystemById
2020-06-13 19:42:04 +02:00
Ske
90ac186183
Extract Database to interface
2020-06-13 19:36:43 +02:00
Ske
1c2ebdc658
Fix proxy blacklist command
2020-06-13 19:19:13 +02:00
Ske
c875c8af9f
Various small fixes, setting guild config now works
2020-06-13 19:15:50 +02:00
Ske
2038f023a0
Move count stat collecting to raw SQL
2020-06-13 19:15:29 +02:00
Ske
e176ccbab5
Several more database-y refactors
...
- DbConnectionFactory renamed to "Database", will now be the primary entry point for DB stuff
- Created IPKConnection interface mostly containing async extensions to IDbConnection, use this going forward
- Reworked the Connection/Command wrappers (that have performance/logging extensions)
- Probably more stuff that I forgot???
2020-06-13 18:31:20 +02:00
Ske
a915ddb41c
Extract system/member guild settings and refactor DB access
...
(also refactor MemberAvatar now that I'm here)
2020-06-13 16:03:57 +02:00
Ske
ed511a6236
Refactor server config models/commands
2020-06-13 13:58:27 +02:00
Ske
729930a562
Move system tag/icon from ProxyMember to MessageContent
2020-06-12 23:30:10 +02:00
Ske
3d62a0d33c
Split message/proxy data up in MessageContext and ProxyMember
2020-06-12 23:13:21 +02:00
Ske
ba441a15cc
Too many refactors in one:
...
- Allowed adding ephemeral(ish) views and functions
- Moved message_count to a concrete database field
- Moved most proxy logic to a stored procedure
- Moved database files around and refactored schema manager
2020-06-12 20:29:50 +02:00
Ske
49acc4d9e2
Refactor proxy handling code
...
- Move reaction handlers to the ReactionAdded event instead of
ProxyService
- Split tag matching off into ProxyTagParser
- Split autoproxy matching off into Autoproxier
- General cleanup and simplification
2020-06-11 23:22:53 +02:00
Astrid
4a4d980349
Merge pull request #177 from acw0/bugfix/tag-markdown
...
Properly show tags containing markdown in system embed
2020-06-11 21:35:28 +02:00
Ske
67e55736f0
Still remove the reaction even if pings are disabled
2020-06-11 21:33:44 +02:00
Ske
ccb6ba5d30
Minor renames and rewordings
2020-06-11 21:32:04 +02:00
Lillian Berry
59af6f02e8
Add disabling reaction pings
2020-06-11 21:19:40 +02:00
Astrid
216dfffe58
Merge pull request #181 from acw0/fix-emojis
...
Fix emoji variation selector issue
2020-06-11 21:13:07 +02:00
ariel w
82886fe9e2
Move discord links to new domain ( #180 )
2020-06-11 21:12:43 +02:00
Ske
3d69a00716
Fixed exceptions when fetching webhook list "sticking" in the cache
...
This happened because we cache Task instances, not the values, and a failed task is still a *valid* task that can repeatedly be awaited. This lead to the Task being saved even if it failed, and the same exception constantly being re-thrown.
This fix invalidates the cache if it finds a failed Task, and lets it retry fetching as normal (hopefully successfully this time).
2020-06-11 16:13:18 +02:00
Ske
e7191def02
Split long short-list results up into embed fields
2020-06-07 19:52:05 +02:00
Ske
c537dc7de3
Fix quotes in collate clause
2020-06-07 19:49:43 +02:00
Ske
1db46accce
Potentially fix sort order with emojis
2020-06-07 19:31:41 +02:00
Ske
e347928c02
Merge branch 'feature/sort-filter'
2020-06-07 16:36:42 +02:00
Ske
1ac5f9518e
Mostly finished, needs to be double-checked/documented
2020-06-07 01:30:19 +02:00
acw0
5714c18668
Fix emoji variation selector issue
2020-06-05 18:34:24 -04:00
Ske
e8068cc1a9
Add avatar credit for June
2020-06-04 16:24:30 +02:00
Ske
7c85dc360b
Barebones, untested sort/filtering
2020-06-04 13:21:47 +02:00
Ske
d5c6e2baac
Don't post an error after clearing avatar
2020-06-02 02:02:07 +02:00
Ske
ae74dce2ce
Make sure we only attach shard listeners once
2020-05-31 03:19:42 +02:00
Ske
fbbbb51998
Upgrade DSharpPlus version
2020-05-23 01:59:27 +02:00
Ske
d657e9813d
Properly handle executing missing webhooks
2020-05-23 01:51:02 +02:00
acw0
f55c638f41
Properly show tags containing markdown in system embed
2020-05-15 07:32:28 -04:00
Ske
792acad50a
Don't try to parse webhook error if error isn't JSON
2020-05-12 22:19:49 +02:00
Ske
dee229b08c
Ignore weird Nginx errors from Discord
2020-05-12 22:19:33 +02:00
Ske
b9a89a1037
Fix handling lack of DM permissions when react-querying
2020-05-12 21:31:59 +02:00
Ske
8ea02dae81
Add more error reporting for Discord errors
2020-05-12 21:26:37 +02:00
Ske
60018bf69d
Don't send ping message if bot doesn't have permissions
2020-05-12 21:26:37 +02:00
Ske
65bac86ac1
Only update status if we've received a Ready
2020-05-12 21:26:37 +02:00
Ske
a3517f8663
Refactor order of shard initialization
2020-05-12 21:26:37 +02:00
Fennel
8467f4f681
Add workaround for DSP internal member cache error
2020-05-10 18:44:59 -04:00
Ske
9a761ed7e4
Add display name to long member list
2020-05-08 02:03:31 +02:00
Ske
fd65846867
Extract the explanation from the help message into a separate command
2020-05-08 02:01:57 +02:00
Ske
cb8234b272
Restructure message info embed queries
...
This fixes several long-standing issues wrt. handling of senders that are no longer on the server and deleted accounts, as well as an error handling issue caused by the DSharpPlus migration.
2020-05-08 00:57:17 +02:00
Ske
53582997f0
Ignore CloudFlare error response parsing errors
2020-05-07 23:59:05 +02:00
Ske
e9a271ef60
Skip leading spaces when command parsing
2020-05-07 23:43:17 +02:00
Ske
668d249872
Add support for more smart quote types
2020-05-07 23:43:07 +02:00
Ske
356fb76cb2
Drop consecutive duplicate messages from the gateway
2020-05-06 23:48:45 +02:00
Ske
cde495cd3a
Add another delay to double-super-ensure the log buffers are flushed
2020-05-06 23:43:37 +02:00
Ske
892601110f
Temporary workaround for https://github.com/DSharpPlus/DSharpPlus/issues/565
2020-05-05 19:10:33 +02:00
Ske
c1d17c2944
Fix member avatar in log channel message
2020-05-05 19:05:52 +02:00
Ske
ffa6faddd2
Clean up some log levels in CpuStatService
2020-05-05 18:12:45 +02:00
Ske
0b41b4f6b8
Add graceful shutdown on SIGKILL/SIGINT
2020-05-05 18:12:34 +02:00
Ske
a052c8331c
Properly pass exceptions to Sentry
2020-05-05 16:42:14 +02:00
Ske
f803b9a392
Add a character limit to avatar URLs (256 for now)
2020-05-05 16:04:17 +02:00
Ske
2579683da9
Refactor interactive event handlers
2020-05-05 16:03:46 +02:00
Ske
e298f6f652
Add support for SafetyAtLast bot
2020-05-02 20:42:42 +02:00
Ske
ee9c87a29f
Refactor permission utils to properly account for lack of channel access
2020-05-02 16:25:17 +02:00
Ske
f97ceac1fb
Refactor Sentry scope enrichment
2020-05-02 16:00:43 +02:00
Ske
f927450352
Report bot permissions to Sentry
2020-05-02 15:45:45 +02:00
Ske
3fd89c1a45
Refactor TryParseMention function to use regexes
2020-05-02 15:43:07 +02:00
Ske
cad5b71f14
Fix system lookup errors where user ID doesn't exist
2020-05-02 15:33:05 +02:00
Ske
720755844f
Rename BotHasPermission to a more descriptive name
2020-05-02 15:29:36 +02:00
Ske
ca57d10f7c
Change formatting of shard number in status
2020-05-02 14:25:28 +02:00
Astrid
c551533313
Merge pull request #167 from acw0/master
...
Add current shard ID in status message
2020-05-02 14:22:03 +02:00
Ske
999ea5f0b5
Refactor and simplify the main bot classes
2020-05-02 01:52:52 +02:00
Ske
7488ca459b
Hopefully fix shard info tracking (again)
2020-05-01 20:27:51 +02:00
acw0
08077f6426
Add current shard ID in status message
2020-05-01 14:17:30 -04:00
Ske
91b60367f0
Hopefully fix error in LogClean module
2020-05-01 19:41:15 +02:00
Ske
e7b28261b2
"Properly" handle CloudFlare errors in webhook execution
2020-05-01 19:21:02 +02:00
Ske
b927d0c2b7
Remove a few unnecessary extensions
2020-05-01 17:38:16 +02:00
Ske
48833639e2
Update shard status tracker for new library
2020-05-01 17:30:12 +02:00
Ske
d0f1aeb548
Fix member lookup in SanitizeEveryoneMaybe
2020-05-01 17:03:43 +02:00
Ske
e133bd657d
Remove log channels if they don't exist
2020-05-01 16:36:21 +02:00
Ske
7e43b75f97
Fix errors on eg. incoming link embed update events
2020-05-01 15:41:37 +02:00
Ske
e4ebd2a5fe
Merge branch 'refactor/dsharpplus'
...
It's heeeeeeeere~
2020-05-01 15:21:55 +02:00
Ske
546cb7f97a
Remove webhook rate limit cache
...
The move to DSharpPlus makes it unnecessary, as D#+ can actually do webhook invocations on its own.
2020-05-01 00:00:33 +02:00
Ske
042327d4aa
Add online user counting back (ish)
2020-04-30 23:55:12 +02:00
Ske
697a24c4fa
Remove unused assignment
2020-04-29 02:35:46 +02:00
Ske
12aef1f61d
Refactor periodic event loop
2020-04-29 01:14:49 +02:00
Ske
9fa36b78ff
Fix the garish default D#+ colors
2020-04-29 00:25:01 +02:00
Ske
86b6a90b1c
Add proper credit to MentionUtils
2020-04-29 00:06:40 +02:00
Ske
9b6f79a508
Factor DiscordConfiguration out into DI
2020-04-29 00:05:26 +02:00
Ske
35e30f481b
Fix error in stats collection task
2020-04-29 00:04:53 +02:00
Ske
607a518cb8
Fix permchecking other guilds than the one you're in
2020-04-28 22:56:43 +02:00
Fennel
66dd850504
Fix SocketErrored and Ready events
2020-04-28 22:30:11 +02:00
Fennel
adb4262237
Remove Extraneous Using Alias
2020-04-28 22:30:11 +02:00
Fennel
25ce2539bc
Remove Extraneous Comment
2020-04-28 22:30:11 +02:00
Fennel
2fd07c9ec9
Fix Periodic Methods
2020-04-28 22:30:11 +02:00
Fennel
c41f2c7c9b
Fix Proxied Message Logging
2020-04-28 22:30:11 +02:00
Fennel
bdb6019cb9
Fix MatchChannel
2020-04-28 22:30:11 +02:00
Fennel
4e988867fe
Refactor Unnecessary Enum Checks
2020-04-28 22:30:11 +02:00
Fennel
ebaded4bbd
Fix Proxied Messages Ignored
2020-04-28 22:30:11 +02:00
Fennel
949dae6561
Add Extension Methods
2020-04-28 22:30:11 +02:00
Fennel
c99784b9dc
Fix Build Errors
2020-04-28 22:30:11 +02:00
Ske
8cfb1b01ab
Hide channels from pk;permcheck if user does not have view permissions
2020-04-28 22:06:48 +02:00
Ske
5386f24b69
Fix permissions check when proxying
2020-04-22 09:27:55 +02:00
Ske
23cf06df4c
Port some things, still does not compile
2020-04-17 23:10:01 +02:00
Ske
f56c3e819f
Replace Discord.Net with DSharpPlus
...
This commit will not compile.
2020-04-17 18:38:12 +02:00
Ske
02e2c9314b
Update webhook rate limit code
2020-04-16 22:30:13 +02:00
Ske
05595329b5
Collect metrics about webhook rate limit cache size
2020-04-16 18:20:53 +02:00
Ske
93bf7c6543
Add periodic garbage collection of webhook rate limit cache
2020-04-16 18:18:08 +02:00
Ske
4701f4b56c
Add proper logging of startup errors
2020-03-27 00:02:56 +01:00
Ske
fa70df8f98
Add proper webhook rate limit support
2020-03-27 00:01:42 +01:00
Ske
12d29eba44
Fix wrong message in privacy lookup
2020-03-09 11:00:28 +01:00
Ske
0eb2e8be6f
Skip messages before current user ID is established
2020-03-08 11:10:05 +01:00
Ske
20789411f6
Cancel early when rate limited
2020-03-08 11:06:08 +01:00
Ske
f8d0fb2f4b
Properly ignore invalid server-side data when executing webhooks
2020-03-08 10:55:47 +01:00
Ske
0f8786143f
Ignore database shutting down errors
2020-03-08 10:55:33 +01:00
Ske
8b55e1364d
Properly sanitize raw member description output
2020-03-08 10:34:47 +01:00
Ske
c6e813853a
Remove "a" keyword for pk;find
2020-03-05 19:08:32 +01:00
Ske
ab8b5e3786
Fix setting proxies starting with text
2020-03-05 00:07:42 +01:00
Ske
35b0659d05
Don't ping by reaction if sender doesn't have permissions
2020-03-04 18:39:51 +01:00
Ske
e49f2850c6
Add support for Vanessa log cleaning
2020-03-04 18:32:14 +01:00
Ske
628ae6beb7
Update command list documentation
2020-03-04 18:28:13 +01:00
Ske
373423e6c5
Restructure the rest of the commands
2020-03-04 18:13:36 +01:00
Ske
1169669cf1
Restructure member description command
2020-02-28 00:23:54 +01:00
Ske
bcc9659117
Add "clear" subcommand in addition to flags
2020-02-27 18:07:05 +01:00
Ske
f03b4683f7
Restructure system proxy command
2020-02-27 18:06:13 +01:00
Ske
f291714cff
Restructure system description command
2020-02-27 17:50:52 +01:00
Ske
823b101b63
Restructure system timezone command
2020-02-27 17:50:52 +01:00
Ske
4df3be8c3a
Restructure system tag command
2020-02-27 17:50:52 +01:00
Ske
ee3ac44664
Properly handle 5xx errors from webhook calls
2020-02-26 19:47:30 +01:00
Ske
45c5e5ed42
Normalize colors to lowercase hex
2020-02-25 16:37:52 +01:00
Ske
a95d12639d
Handle send message/embed links permission erorrs gracefully
2020-02-24 09:57:16 +01:00
Ske
f97c18aed0
Ignore flags when parsing system tags
2020-02-23 00:15:53 +01:00
Ske
eefbf0630e
Fix fuzzy log clean match error with multiple messages
2020-02-22 20:08:20 +01:00
Ske
75947301f1
Properly skip flag parsing when handling proxy tags
2020-02-22 15:21:48 +01:00
Ske
8d3be79d33
Don't attempt to send log messages if the bot doesn't have permissions
2020-02-22 01:54:10 +01:00
Ske
493f7b12e5
Skip flag parsing when handling proxy tags
2020-02-20 23:53:05 +01:00
Ske
de141d629b
Fix newline rendering in embeds on iOS
2020-02-20 22:57:37 +01:00
Ske
456fe8f7af
Ignore weirdly formatted server errors too
2020-02-19 01:00:23 +01:00
Ske
2354e7fd74
Ignore timeout errors
2020-02-18 21:56:15 +01:00