Commit Graph

354 Commits

Author SHA1 Message Date
spiral
66e483be6f
Fix NullReferenceError when HasValue is true but Value is null 2021-03-25 18:02:44 +00:00
spiral
0acadee803
don't cache the full message 2021-03-22 07:17:10 +00:00
spiral
a7189fab8c
Fix handling replies in edited messages 2021-03-22 07:07:33 +00:00
Ske
4ee0c13d62 Fix error on @ everyone 2021-03-18 11:34:35 +01:00
Spectralitree
9d80b7b141 Add group front percentages
Also add a title to the system frontpercent embed, and tweak the footer
2021-02-09 23:36:43 +01:00
Ske
557ec4234e Fix fetching messages we can't access 2021-01-31 17:56:33 +01:00
Ske
80c572f594 Fix various bugs and regressions 2021-01-31 16:02:34 +01:00
Ske
b48a77df8d Convert periodic stat collector 2021-01-31 14:59:45 +01:00
Ske
d56e878c28 Converted shard and logclean service 2021-01-30 01:07:43 +01:00
Ske
da9d84a197 Get rid of more D#+ references 2021-01-15 11:29:43 +01:00
Ske
9079f1c59c Port the DM stuff 2020-12-25 13:58:45 +01:00
Ske
f6fb8204bb Add embed builder, some more ported classes 2020-12-23 02:19:02 +01:00
Ske
05334f0d25 Converted enough to send the system card 2020-12-22 16:55:13 +01:00
Ske
a6fbd869be Initial commit, basic proxying working 2020-12-22 13:15:26 +01:00
Ske
df243d4220 Add info embed to proxied replies 2020-12-20 11:38:26 +01:00
Astrid
07cd753247
Merge pull request #255 from dev-kittens/feat/group-random
Add random command for groups
2020-12-08 12:20:45 +01:00
spiral
51278532d1
Add support for GiselleBot log cleanup 2020-11-24 00:02:36 -05:00
spiral
45b87bd132
Move group card embed to EmbedService 2020-11-22 11:57:54 -05:00
Ske
e24b5e3529 Add logging/metrics for error *messages* 2020-11-16 10:07:57 +01:00
Ske
c0c4871f0b Fix cache error using log channel 2020-11-15 15:07:20 +01:00
Ske
27c9e54f17 Delete proxied message if the trigger message gets deleted by other means 2020-11-15 14:34:49 +01:00
Ske
634173e205 Update to D#+ 4.0.0-rc1 2020-11-15 13:53:31 +01:00
Astrid
d844f41059
Merge pull request #244 from dev-kittens/patch-2
[accessibility] add newline between linked accounts in system card
2020-11-15 13:13:23 +01:00
Ske
ce25a56d7a Support multiple 'Clyde's in a webhook name 2020-11-15 13:12:30 +01:00
Ske
537783dd96 Fix permission check for log channels 2020-11-08 18:52:50 +01:00
spiral
ac679271f2
add newline between linked accounts in system card 2020-11-08 02:00:06 +01:00
Ske
108dbb9cc6 Actually set the proper command message retention >.> 2020-10-23 12:20:53 +02:00
Ske
b6dbc82abe Clean up imports 2020-10-23 12:20:44 +02:00
Ske
81cd5496d5 Refactor command message deletion 2020-10-23 12:18:28 +02:00
Ske
1e8470e77f Potential quick fix for... something 2020-09-25 23:28:06 +02:00
Ske
4f6c98db48 (Add the actual service file, shh) 2020-09-20 22:36:04 +02:00
kittens
42b70cde9a
Add -all flag on system and group cards (#216)
* Show group count on stats card

* Add -all flag on system and group cards
Shows full count, including private members.

* fix stuff broken by merging conflicts
2020-09-13 00:10:37 +02:00
Ske
7b59040da2 Truncate roles list if it gets too long 2020-09-12 19:30:03 +02:00
Ske
47bdc34142 Optimize DB access for LogClean 2020-09-09 22:20:52 +02:00
Ske
a1da3e1386 Sort groups on the member card alphabetically 2020-08-30 17:03:28 +02:00
Ske
c7612df37e Major database refactor (again) 2020-08-29 13:46:27 +02:00
Ske
9955dc29f9 Add Elastic-bound logging of (almost) all database update events 2020-08-27 21:28:36 +02:00
Ske
203dbc65a1 Replace most "code-escaped" literals with properly-escaping helpers 2020-08-25 22:44:52 +02:00
Ske
10d6968734 Add metrics for group count 2020-08-25 18:26:52 +02:00
Ske
8688f4d0bf Merge branch 'main' into feature/groups 2020-08-21 18:31:49 +02:00
Ske
1bb5d203df Various additional tweaks/additions to groups 2020-08-20 21:43:17 +02:00
Ske
9e251352c7 Various fixes and improvements 2020-08-16 12:10:54 +02:00
Ske
bed43379cf Add additional (debug) logging to (proxy) logger 2020-08-12 21:52:42 +02:00
Ske
62cdb8a9b8 Check for avatar whitespace instead of null.
This may be relevant for #206, although unsure if this is actually a fix.
2020-07-28 19:35:34 +02:00
Ske
5e28e0aba1 Add group privacy command/structures 2020-07-28 19:17:01 +02:00
Ske
f47d366c8d Show member groups on member card 2020-07-28 19:17:01 +02:00
acw0
88c28c18c7 Fix pk;msg erroring between shards 2020-07-22 04:07:35 -04:00
Ske
5d3e159f54 Properly block pinging normally unmentionable roles 2020-07-22 01:06:25 +02:00
Ske
66f7a664c8 Add special check for pronouns being an empty string
I'm unsure when this happens in practice, but thought I'd guard against it just in case (since it's caused a couple errors already).
2020-07-18 13:07:16 +02:00
Ske
59bbbab621 Handle cases where the channel webhook limit is already hit 2020-07-05 13:38:18 +02:00
BeeFox-sys
55ea314b42
Fix: Escape Backticks (#192) 2020-07-05 12:55:21 +02:00
Ske
c87e67245d Create GetXXX utils wrapping try blocks 2020-07-02 18:29:04 +02:00
Ske
467ce78522 Retire more IDataStore methods 2020-06-29 14:54:11 +02:00
Ske
472e556ef0 Pass proper allowed_mentions when sending webhook messages 2020-06-28 20:26:14 +02:00
Ske
3207fcff1b Fix guild ID row name in query 2020-06-26 15:07:51 +02:00
Ske
bb75519f6b Properly handle unauthorized log channel access 2020-06-25 09:14:05 +02: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
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
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
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
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
ca882dba73 Add more performance metrics 2020-06-14 22:19:12 +02:00
Ske
c780781184 Remove unused imports 2020-06-13 23:12:44 +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
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
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
acw0
5714c18668 Fix emoji variation selector issue 2020-06-05 18:34:24 -04:00
Ske
ae74dce2ce Make sure we only attach shard listeners once 2020-05-31 03:19:42 +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
b9a89a1037 Fix handling lack of DM permissions when react-querying 2020-05-12 21:31:59 +02:00
Ske
60018bf69d Don't send ping message if bot doesn't have permissions 2020-05-12 21:26:37 +02:00
Ske
a3517f8663 Refactor order of shard initialization 2020-05-12 21:26:37 +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
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
e298f6f652 Add support for SafetyAtLast bot 2020-05-02 20:42:42 +02:00
Ske
720755844f Rename BotHasPermission to a more descriptive name 2020-05-02 15:29:36 +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
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
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
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
9fa36b78ff Fix the garish default D#+ colors 2020-04-29 00:25:01 +02:00
Ske
35e30f481b Fix error in stats collection task 2020-04-29 00:04:53 +02:00
Fennel
ebaded4bbd Fix Proxied Messages Ignored 2020-04-28 22:30:11 +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
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
fa70df8f98 Add proper webhook rate limit support 2020-03-27 00:01:42 +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
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
ee3ac44664 Properly handle 5xx errors from webhook calls 2020-02-26 19:47:30 +01:00
Ske
eefbf0630e Fix fuzzy log clean match error with multiple messages 2020-02-22 20:08:20 +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
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
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
e70236b9c0 Send member card on proxy query 2020-02-15 00:12:46 +01:00
Ske
48342a2890 Fix spurious empty-string-description errors 2020-02-12 23:18:31 +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
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
9d0af7f22a Fix image proxying with empty messages 2020-02-09 15:27:52 +01:00
Ske
3ce1078dc6 Add different text for systems with no members 2020-02-05 23:43:30 +01:00
Ske
f27e864731 Fix autoproxying someone else's bare tags 2020-02-03 16:10:43 +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
3ba6a115f0 Correct autoproxy escape character 2020-01-25 17:40:41 +01:00
Ske
83cfb3eb46 Add autoproxy functionality 2020-01-24 20:28:48 +01:00
Ske
b347d2d557 Add front history pagination; upgrade more store methods 2020-01-18 00:58:35 +01:00
Ske
8a689ac0f2 Upgrade various store methods to IAsyncEnumerable 2020-01-18 00:02:17 +01:00
Ske
98613c4287 Add system and member privacy support 2020-01-11 16:51:13 +01:00
Ske
cb1c44a27f Bail early if we don't have send message permission when proxying 2020-01-08 12:16:27 +01:00
Ske
73b2631280 Optimize database queries for proxy filtering 2019-12-28 12:00:52 +01:00
Ske
4d07886ec8 Add server-specific display names 2019-12-26 20:39:47 +01:00