Commit Graph

592 Commits

Author SHA1 Message Date
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
Ske
55671b45d6 Add support for UnbelievaBoat 2020-02-15 14:17:25 +01:00
Ske
ccf81b0826 Add support for Pancake 2020-02-15 14:17:25 +01:00
Ske
e9cc8ed424 Add logger bot cleanup support 2020-02-15 14:17:25 +01:00
Ske
2268a33600 Correct word in member find title 2020-02-15 14:14:27 +01:00
Ske
e70236b9c0 Send member card on proxy query 2020-02-15 00:12:46 +01:00
Ske
268eabb047 Properly target system find 2020-02-13 20:25:00 +01:00
Ske
a76d7a6777 Add member find/search command 2020-02-13 16:49:45 +01:00
Ske
883796de16 Refactor system list command 2020-02-13 16:35:50 +01:00
Ske
48342a2890 Fix spurious empty-string-description errors 2020-02-12 23:18:31 +01:00
Ske
7a1aaf6dbd Add basic flag parsing support 2020-02-12 21:40:02 +01:00
Ske
dc10a8411a Disable autoproxy retriggering on edit 2020-02-12 17:44:24 +01:00
Ske
d0d3579b17 Add server-specific member avatars 2020-02-12 17:42:12 +01:00
Ske
6d5004bf54 Large refactor and project restructuring 2020-02-12 15:16:19 +01:00
Ske
b68e221fc6 Track current shard in Sentry reports 2020-02-12 14:37:11 +01:00
Ske
1d3acb2392 Fix error when trying to DM a user with DMs disabled 2020-02-12 14:22:15 +01:00
Ske
1386e6743b Proxy edited messages if the message is the last one in the channel, and the edit introduces proxy tags where there were none previously 2020-02-12 14:21:48 +01:00
Ske
9394b14a38 Fix link in system created message 2020-02-09 22:35:16 +01:00
Ske
466aea439e Add getting started steps back 2020-02-09 15:30:19 +01:00
Ske
9d0af7f22a Fix image proxying with empty messages 2020-02-09 15:27:52 +01:00
Ske
e6ba9ffb51 Add space to short list footer 2020-02-09 14:26:09 +01:00
BeeFox-sys
9e47f98a23
Improve Docs (#151)
* Added configurable command prefix

* Added getting started, renamed files

* Add nav order, add assests, add system example

* Added a lot

* Update Emojis

* Add guide links to bot

* Added Images
2020-02-09 14:17:26 +01:00
Ske
f618bc2403 Fix pk;msg with message link 2020-02-07 22:24:03 +01:00
Ske
4c1a03bb00 Special case "private" and "public" as setters rather than togglers 2020-02-07 22:20:40 +01:00
Ske
594bcc5b7b Replace error with warning on legacy proxy command 2020-02-05 23:44:03 +01:00
Ske
3ce1078dc6 Add different text for systems with no members 2020-02-05 23:43:30 +01:00
Ske
565d166c68 Add more aliases to proxy add/remove 2020-02-04 18:16:45 +01:00
Ske
f27e864731 Fix autoproxying someone else's bare tags 2020-02-03 16:10:43 +01:00
Ske
5334975ab7 PROPERLY handle example proxy "text" 2020-02-03 15:11:35 +01:00
Ske
a7e071eb24 Fix permission check for reactions 2020-02-03 13:41:16 +01:00
Ske
f172123190 Fix setting proxy tags starting with "text" 2020-02-01 23:08:33 +01:00
Ske
6863da9462 Disable Discord member caching entirely 2020-02-01 15:00:36 +01:00
Ske
82dfe43d5a Rework caching
This does a *lot* of things. Essentially, it replaces the existing
individual proxy- and autoproxy caches on the bot end with a
global cache (in Core) that handles all the caching at once, and
automatically invalidates the cache once something changes in the
datastore.

This allows us to do proxying and autoproxying with *zero database
queries* (best-case).
2020-02-01 14:40:57 +01:00
Ske
125ea81ec3 Move command functions around 2020-02-01 13:03:44 +01:00
Ske
a5f0d7ac13 Handle proxy tag length overflow in short member list 2020-01-31 11:43:53 +01:00
Ske
5caf040bbc Properly handle setting empty proxy tags 2020-01-30 10:20:47 +01:00
Ske
3b2167e16f Shuffle dependencies around 2020-01-26 01:30:39 +01:00
Ske
1ea0526ef8 Migrate DI container to Autofac 2020-01-26 01:27:45 +01:00
Ske
4311cb3ad1 Fix unlinking deleted accounts 2020-01-25 18:08:35 +01:00
Ske
3ba6a115f0 Correct autoproxy escape character 2020-01-25 17:40:41 +01:00
Astrid
eb44c8fda2
Merge pull request #150 from xSke/feature/autoproxy
Implement autoproxy. Closes #149.
2020-01-25 16:35:31 +01:00
Ske
0abd64b354 Fix punctuation error 2020-01-25 00:58:25 +01:00
Ske
83cfb3eb46 Add autoproxy functionality 2020-01-24 20:28:48 +01:00
Ske
b4439ba872 Add another alias to member privacy 2020-01-23 21:21:52 +01:00
Ske
57bc576de6 Add autoproxy management commands 2020-01-23 21:20:22 +01:00