Commit Graph

964 Commits

Author SHA1 Message Date
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
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
335f6203cc Restrict pk;random to public members 2020-01-14 12:41:28 +01:00
Ske
f10685acd4 Fix system privacy command usage 2020-01-14 12:22:33 +01:00
Ske
98613c4287 Add system and member privacy support 2020-01-11 16:51:13 +01:00
BerryCode
f0cc5c5961 Add pk;random command (#146) 2020-01-08 21:33:14 +01:00
Grey Himmel
da83f72582 Update Bot.cs
- Add note telling users to describe what happened when reporting errors
2020-01-08 20:40:32 +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
8b65754b00 Fix error when removing reactions on a deleted message 2020-01-03 14:02:25 +01:00
Ske
c89802a21c Fix matching commands with a newline instead of a space after command name 2020-01-03 13:30:50 +01:00
Ske
54aa9fb7d7 Change handling of Tupperbox per-member tags 2019-12-28 15:53:11 +01:00
Ske
c80965394d Add system avatar preview as well 2019-12-28 12:47:31 +01:00
Ske
468241c92f Add avatar preview with no arguments 2019-12-28 12:23:52 +01:00
Ske
30c0fc9b43 Update syntax error formatting 2019-12-28 12:16:26 +01:00
Ske
9ad16a98ed Throw syntax error when no argument is given to member rename 2019-12-28 12:16:08 +01:00
Ske
f610f88351 Add more aliases for enabling/disabling proxying 2019-12-28 12:12:22 +01:00
Ske
73b2631280 Optimize database queries for proxy filtering 2019-12-28 12:00:52 +01:00
Ske
18dc1664db Add another alias for servername 2019-12-27 11:43:06 +01:00
Ske
4a30e56298 Add basic database schema migration system 2019-12-26 21:43:05 +01:00
Ske
4d07886ec8 Add server-specific display names 2019-12-26 20:39:47 +01:00
Ske
cd09c9758c Fix fast reactions to yes/no prompts not registering 2019-12-26 20:27:22 +01:00
Ske
633627c30a Fix image-only proxies where the tags have trailing/leading spaces 2019-12-26 19:19:06 +01:00
Ske
441867f1cb Use culture-invariant comparisons when sorting member list 2019-12-24 01:09:48 +01:00
Ske
1c184825e3 Use fork of D.NET to potentially resolve issues 2019-12-23 18:36:56 +01:00
Ske
6a4c131d6d Upgrade every dependency to latest compatible version 2019-12-23 15:53:20 +01:00
Ske
9dd945ddd9 Let's actually not log everything. 2019-12-23 15:49:51 +01:00
Ske
5448f734d4 Try logging *literally everything* 2019-12-23 14:44:20 +01:00
Ske
5ff32ea6b4 Re-enable proxy attachments 2019-12-23 13:55:43 +01:00
Ske
58cdb04ab9 Practice better disposal hygiene 2019-12-23 01:58:10 +01:00
Ske
3fdfaeab01 Disable message attachments as a temporary fix 2019-12-23 01:53:01 +01:00
Ske
265184f4f6 Couple tweaks to potentially improve performance 2019-12-23 01:49:21 +01:00
Ske
bbbbb5a046 Fix error on empty message 2019-12-23 01:49:00 +01:00
Ske
affb42160a Oops pt. 3 2019-12-23 00:35:42 +01:00
Ske
de75752b5e Oops pt. 2 2019-12-23 00:35:25 +01:00
Ske
4a8dd7e8e3 Oops 2019-12-23 00:31:31 +01:00
Ske
05282fd167 Reuse a singleton HttpClient for proxying 2019-12-23 00:29:04 +01:00
Ske
c70556f5f9 Increase minimum thread pool size 2019-12-23 00:28:19 +01:00
Ske
b6597c79d6 Add temporary ThreadPool trace logging 2019-12-22 23:27:11 +01:00
Ske
3c95f35553 Reduce timeouts on webhook invocations 2019-12-22 22:56:18 +01:00
Ske
cb836d5f7e Remove the ping reaction afterwards 2019-12-22 14:44:14 +01:00
Ske
7bccaab20d Fix stat number displays 2019-12-22 14:37:55 +01:00
Ske
3b5ca3d62e Properly reset stat message content 2019-12-22 14:35:18 +01:00
Ske
d2205ea7e6 Update documentation with new features 2019-12-22 14:26:53 +01:00
Ske
639c813ce7 Add per-server per-system proxy enable toggle 2019-12-22 14:15:56 +01:00
Ske
857b0488b9 Add member pinging by reaction 2019-12-22 13:54:18 +01:00
Ske
bd8fb40bc7 Handle systems with (too) many linked accounts 2019-12-22 13:53:38 +01:00
Ske
992a37dd1b Lower logging level of proxy cache messages 2019-12-22 12:50:56 +01:00
Ske
b81eda47aa Expand pk;stats functionality 2019-12-22 12:50:47 +01:00
Ske
93a52ff95a Add exception logging for dropped connections 2019-12-22 12:08:52 +01:00
Ske
6a55555e48 Attempt a few memory/connection optimizations 2019-12-22 01:08:14 +01:00
Ske
9c9e48a799 Upgrade to .NET Core 3.1 2019-12-22 00:40:57 +01:00
Ske
7b55abaacd Properly register command statistics 2019-12-21 21:51:41 +01:00
Ske
3b72fa720b Add warning when setting proxy tags conflicting with another member's 2019-12-21 21:42:06 +01:00
Ske
d42dea9e9f Allow multiple proxy attachments 2019-12-21 20:07:51 +01:00
Ske
474d561c54 Execute webhooks directly rather than through D.NET 2019-12-21 18:50:28 +01:00
Ske
378cba09e5 Add channel blacklists for logging and proxying
Necessary database migrations for this commit:
    alter table servers add column log_blacklist bigint[] not null default array[]::bigint[];
    alter table servers add column blacklist bigint[] not null default array[]::bigint[];
2019-11-03 19:15:50 +01:00
Ske
0cdd99d195 Error when given an invalid image file 2019-11-03 13:56:05 +01:00
Ske
8d003da091 Remove chunk of commented-out outdated code 2019-11-03 13:37:48 +01:00
Ske
03dd91ee9e Update tag change message with more information 2019-11-03 13:37:36 +01:00
Ske
520e6f140c Fix front history lookup with very long switches 2019-11-03 00:46:38 +01:00
Ske
0226e73d88 Improve in-bot command documentation
Adds command descriptions, changes formatting on
command listings, and adds more direct command
listing commands.
2019-11-03 00:29:11 +01:00
Ske
7c3b4b9af9 Add command to delete all switches 2019-11-02 22:46:51 +01:00
Ske
6aa72f68b3 Add syntax error if pk;m proxy is missing arguments 2019-11-02 02:57:55 +01:00
Ske
6c39b7549b Fix message querying actually for real 2019-10-31 21:14:01 +01:00
Ske
0f48c6879b Attempt to fix slow/timeout-y bot startup
I've noticed the bot's CPU spiking for a few minutes as it's
just connecting, and a lot of shard connections are timing out.

I suspect it might be the overload of messages as the shards
connect and Discord sends it the entire backlog at once. So,
as an interim solution, I'm making it simply discard every
message before the socket is fully connected. Hopefully this
should help reduce the pressure.
2019-10-31 17:21:12 +01:00
Ske
f4a5b409c3 Fix message querying for real this time 2019-10-31 16:36:33 +01:00
Ske
1a79d52bfb Add importing of Tupperbox multibrackets 2019-10-30 14:11:24 +01:00
Ske
49dc25ee02 Allow keeping proxy tags when proxying messages.
Required database migration:

Closes #75.
2019-10-30 09:26:50 +01:00
Ske
acadad2a43 Add forgotten conditional to proxy tag clear disclaimer 2019-10-30 08:44:17 +01:00
Ske
b50c123ad4 Properly sort proxies before matching 2019-10-30 08:30:58 +01:00
Ske
393ee16c1b Add support for multiple proxy tags
Tangentially closes #103.
2019-10-30 08:18:59 +01:00
Ske
8f60377d63 Add support for iOS-style quotation marks 2019-10-28 20:17:20 +01:00
Ske
3c7afbfdaa Lower log level of an unnecessary webhook logging message 2019-10-28 17:03:16 +01:00
Ske
c639e9ba1e Include attachment image in message card 2019-10-28 17:02:59 +01:00
Ske
3369a06c4e Fix message querying on accounts with no roles 2019-10-28 16:50:41 +01:00
Ske
bfafdbe2bf Invalidate proxy cache when clearing proxy tags 2019-10-28 00:38:06 +01:00
Noko
eb5fe7d6a4 Allow frontpercent to accept time patterns in system timezone (#135)
The frontpercent command already accepted time patterns (e.g. 9pm), but these were always being interpreted as UTC regardless of the system's configured zone. Furthermore, the time wasn't being nudged to the previous day, so if you tried to do pk;s fp 6pm at 5pm UTC, it would complain about the date being in the future instead of just showing you since 6pm yesterday.

The system zone is now respected and nudging enabled in the same manner as pk;sw move.
2019-10-28 00:21:55 +01:00
Ske
545e8df6a7 Reduce the log level of various common events 2019-10-27 23:44:27 +01:00
Ske
823688e63d Add pk;flash command 2019-10-27 23:03:20 +01:00
Ske
fbb5dbbf5d Don't embed support server link in error message 2019-10-27 23:01:38 +01:00
Ske
46672d264c Refactor log channel storage 2019-10-27 23:01:20 +01:00
Ske
4e98a51363 Fix PermCheck permissions and no-guild invocation syntax 2019-10-27 21:58:04 +01:00
Ske
523469e5e6 Remove preemptive warning messages for unproxyable members
The member length limit is now long enough that it's unlikely to
hit the cap by accident. An error will still be displayed if you
attempt to perform a message proxy.
2019-10-27 21:57:31 +01:00
Ske
c8b4d186d8 Prioritize member lookup by name over ID 2019-10-27 20:48:48 +01:00
Ske
b19b2fbb38 Fix matching multiple consecutive quoted strings 2019-10-27 17:09:15 +01:00
Ske
7f55fca625 Make prefix matching case-insensitive 2019-10-27 15:08:33 +01:00
Ske
6538c5d054 Fix line endings in WebhookCacheService 2019-10-27 13:09:07 +01:00
Ske
aed38f37f7 Allow starting bot before all shards are up 2019-10-27 13:01:33 +01:00
Ske
6a73b3bdd6 Refactor data stores, merging the Store classes 2019-10-26 19:45:44 +02:00
Astrid
029eed3786
Merge pull request #134 from nephanim/feature/member-limit
Add members per system cap & improve import performance
2019-10-22 19:33:30 +02:00
Ske
53ae0e3d70 Improve error handling and reporting after command rewrite 2019-10-22 19:31:40 +02:00
Noko
3d21adeec9 Fix reversal of import response messages
Some of the command rewrite changes resulted in the response messages for importing a system being swapped. When importing without an existing system (ctx.System == null), we want to display the "new system" message. Otherwise, show the count added/modified.
2019-10-20 02:22:22 -05:00
Noko
397da2e1fa Added max member count to limits
A given system can now have up to 1000 members. Within 50 members of that limit, a warning will display whenever a new member is created via the bot. Once the limit is reached, a final warning will appear indicating that no additional members can be created unless members are first deleted. Attempting to create a new member at that point by any method will result in an error message indicating that the limit has been reached.

Respecting this in pk;import required some restructuring to tease apart which members already exist and which ones need to be created prior to creating any members as it seems preferable to fail early and give the user the ability to intervene rather than pushing the system to the member cap and requiring manual deletion of "lower priority" members before others can be created. One consequence of the restructure is that existing members are being read in bulk which is a performance improvement of 25-70% depending on how many switches need to be imported (the more members you have, the more noticeable this is).
2019-10-20 02:16:57 -05:00
Astrid
af4da8fd72
Merge branch 'master' into patch-2 2019-10-18 13:37:09 +02:00
Ske
c4d28f64c7 Display system/member created date in embed footer.
Closes #122.
2019-10-18 13:29:16 +02:00
Astrid
1d7a4d78db
Merge pull request #126 from xBelladonna/feature/messagecard-nickname
Display guild user nickname on message card if set
2019-10-18 13:22:48 +02:00
Ske
83c709b69d Sanitize more inputs 2019-10-18 13:14:36 +02:00
Ske
1988b29fbc Refactor command system 2019-10-05 07:41:00 +02:00
xBelladonna
658bcf1faf Display guild user nickname on message card if set 2019-09-22 02:04:20 +09:30
Ske
0ec522ca0a Display member roles in message query card 2019-09-21 15:19:38 +02:00
Ske
86d0b24758 Include event ID in Sentry dump 2019-09-02 20:37:24 +02:00
Grey Himmel
ad6624ce02
Order members regardless of name case
Add `toLower()` method to the sorting used in system lists, so members are ordered regardless of if the first letter of their name is upper or lowercase
2019-08-25 20:25:37 -04:00
Ske
9b0b8b4353 Fix Clyde, also without an attachment 2019-08-14 07:21:03 +02:00
Ske
74e0508065 Increase webhook name limit to 80 2019-08-14 07:16:48 +02:00
Ske
4e69531103 Ignore invalid colors in member card 2019-08-13 21:49:43 +02:00
Ske
4d2c843442 Handle busy indicator without permission properly 2019-08-12 18:07:29 +02:00
Ske
fb7f31d42d Invalidate proxy caches on more editing commands 2019-08-12 17:49:07 +02:00
Ske
d8503001eb Show an error when a bad import URL is given 2019-08-12 17:47:35 +02:00
Ske
8396e17a87 Attempt to fix webhook invocation errors 2019-08-12 16:38:34 +02:00
Ske
5f79aaf960 Fix API service injection 2019-08-12 06:54:28 +02:00
Ske
5728f94e00 Fix stats command 2019-08-12 06:24:37 +02:00
Ske
a48940476c Eagerly discard messages before shard init 2019-08-12 06:10:55 +02:00
Ske
7945603cdb Include invite link in error message 2019-08-12 06:03:20 +02:00
Ske
d3f821a266 Send a request ID on error 2019-08-12 05:56:05 +02:00
Ske
145ecb91ad Refactor proxy service 2019-08-12 05:47:55 +02:00
Ske
fda98bc25f Lower message cache size 2019-08-12 05:03:18 +02:00
Ske
17c8b7b765 Properly retry client creation on failure 2019-08-12 04:42:16 +02:00
Ske
5b13c1b100 Cache the entire webhook client rather than just the token 2019-08-12 04:32:01 +02:00
Ske
1b32cd8b6d Log webhook send progress 2019-08-12 04:16:17 +02:00
Ske
c68ce1bdd3 Log gateway latency to console 2019-08-12 04:05:22 +02:00
Ske
aa04d2055e Avoid deleting messages from the store if they're not webhooks 2019-08-12 03:51:54 +02:00
Ske
423d23faf7 Cache account lookup in memory when proxying 2019-08-12 03:48:08 +02:00
Ske
99ec3cd355 Instrument and log database queries 2019-08-12 02:05:30 +02:00
Ske
ea476d4051 Yield event handlers to task queue before handling 2019-08-12 01:15:55 +02:00
Ske
a689d61788 Collect webhook response time and shard latency 2019-08-12 00:57:23 +02:00
Ske
90c6869b00 Collect statistics about shard status 2019-08-12 00:35:30 +02:00
Ske
b593c32950 Add more extensive debug-level logging
- Logging of event IDs
- Logging of command invocations (at DEBUG)
2019-08-12 00:07:29 +02:00
Ske
942022d408 Track database handles over metrics 2019-08-11 22:56:20 +02:00
Bella | Nightshade
9f2faeea5a Escape markdown in proxy tags on member card (#118)
* Fix a typo

* Escape markdown in proxy tags on member card

* Whoops hhh

Added API documentation for POST to member endpoint
2019-08-09 12:55:15 +02:00
Ske
3f6a260fac Properly associate trigger events with Sentry errors 2019-08-09 12:47:46 +02:00
Ske
606f48fdb5 Add display name to member card 2019-08-09 10:39:03 +02:00
Ske
200ba6d84c Add member proxy display names 2019-08-09 10:12:38 +02:00
xBelladonna
fabf772085 Return original message ID to log channel
Logs the original (deleted) message's ID in addition to the proxied message's ID to the log channel if configured
2019-08-08 11:01:36 +02:00
Ske
cf263af44c Fix wraparound on paginated lists 2019-08-04 13:52:41 +02:00
Ske
fe22ba4f32 Truncate member profile in long system list 2019-08-04 13:52:41 +02:00
Ske
59dbc5368b Filter everyone/here pings if the proxy sender doesn't have permission 2019-07-28 15:38:41 +02:00
Ske
4eb9ee601d Add command to check channel permissions for proxying 2019-07-26 12:05:09 +02:00
Ske
a9444fa8c6 Update member creation message with website link 2019-07-26 11:20:30 +02:00
Ske
967b4f9ae0 Add redirect message for member help command 2019-07-26 11:17:42 +02:00
Ske
defbf37cfe Fall back to system avatar when no member avatar is set 2019-07-26 11:08:06 +02:00
Ske
b14666aa4f Store the ID of the trigger message in the database 2019-07-24 13:38:54 +02:00
Ske
11eabe2e3d Update D.NET version and add bulk deletion support 2019-07-21 17:16:04 +02:00
Ske
4fe80749c4 Fix compiler warnings CS1998 and CS4014 2019-07-21 16:43:28 +02:00
Ske
a078fcdf47 Add description as a field at the bottom of member and system embed 2019-07-21 16:29:48 +02:00
Ske
45f468fe21 Properly clean up after proxy operations 2019-07-21 04:27:04 +02:00
Ske
2620d2da9c Collect webhook cache statistics 2019-07-21 04:15:47 +02:00
Ske
bb6378df63 Add more complex process performance tracking 2019-07-21 00:01:02 +02:00
Ske
4f33ed84ac Disable message caching
This will potentially fix the memory leaking issues.
2019-07-20 23:10:26 +02:00
Ske
a4f2735c64 Make color set command case-insensitive 2019-07-19 14:54:40 +02:00
Ske
3d073df359 Fix avatar setting by mention 2019-07-19 14:21:16 +02:00
Ske
b85c79c57b Expand logging capability 2019-07-19 02:29:08 +02:00
Ske
52962f1b97 Bounds check proxy tags before extracting inner message 2019-07-19 02:14:46 +02:00
Ske
1577eb7041 Log channel ID rather than name 2019-07-18 17:29:09 +02:00
Ske
0b4335ccaa Add logger to API service setup 2019-07-18 17:26:06 +02:00
Ske
961bfe9094 Add basic logging framework 2019-07-18 17:13:42 +02:00
Ske
dfbb5cd2d6 Add fronter info to system card 2019-07-18 14:05:02 +02:00
Ske
1ad01703b0 Add system tag to embed card 2019-07-18 14:01:28 +02:00
Ske
63cdb43496 Put member name in code block in lookup error message 2019-07-18 14:00:30 +02:00
Ske
a188c64a0e Clean up unused imports 2019-07-17 13:38:23 +02:00
Ske
f53344cd89 Fix front percent returning negative percentages and ranges 2019-07-17 13:37:43 +02:00
Ske
02b41413b3 Add basic InfluxDB reporter 2019-07-16 23:34:22 +02:00
Ske
2d58705e85 Add basic WIP metrics system 2019-07-16 21:59:06 +02:00
Ske
d5da3bf004 Clamp frontpercent range to actual switch range 2019-07-16 21:18:46 +02:00
Ske
003f64abbd Allow setting member avatar by mention 2019-07-16 20:17:04 +02:00
Ske
51b9afddea Properly format Sentry message breadcrumbs 2019-07-16 01:32:08 +02:00
Ske
2aae92406a Remove Sentry scope setup for now 2019-07-16 01:28:55 +02:00
Ske
5599f0a4a8 Add system avatar command (which I totally forgot) 2019-07-15 23:50:32 +02:00
Ske
2f90e7c050 Show sender account in message card 2019-07-15 22:11:08 +02:00
Ske
99919ea6ea Add member color to card 2019-07-15 22:06:08 +02:00
Ske
66690423e8 Allow calling frontpercent with arguments containing spaces
Closes #113 (for real this time).
2019-07-15 21:53:55 +02:00
Ske
b6ba24d171 Show front percent for switches with no fronter
Closes #113.
2019-07-15 21:51:41 +02:00
Ske
05f7ead62e Correctly order members in front percent embed 2019-07-15 21:41:24 +02:00
Ske
206d403526 Ignore proxying messages with no content and no attachment 2019-07-15 21:37:34 +02:00
Ske
6668cd8d2d Swallow 404 when deleting proxied message 2019-07-15 21:36:12 +02:00
Ske
d47e7e7a06 Don't process messages until we're fully connected to shard zero 2019-07-15 21:29:45 +02:00
Ske
18e4d7c9ac Add preliminary Sentry support 2019-07-15 21:02:50 +02:00
Ske
3a6e061e44 Avoid making an extra request to fetch message body in webhooks 2019-07-15 17:53:01 +02:00
Ske
da307c2dc9 Display member count on system card 2019-07-15 17:36:10 +02:00
Ske
7475980bd3 Fix sharding issue hopefully for good 2019-07-15 17:23:27 +02:00
Ske
4198a493e4 Fix references to wrong client type 2019-07-15 17:17:57 +02:00
Ske
1f3b0c6de6 Properly initialize a sharded client 2019-07-15 17:16:14 +02:00
Ske
55aa90b971 Fix member info usage string 2019-07-15 15:28:32 +02:00
Ske
0a8aeebb23 Fix error showing system card with deleted linked account 2019-07-15 00:05:19 +02:00
Ske
382f533dda Pluralize 'fronter' when applicable 2019-07-14 23:49:14 +02:00
Ske
76d757cae1 Show member fronter card on separate lines 2019-07-14 23:18:51 +02:00
Ske
c6d6a728c9 Fix proxying members named 'Clyde' 2019-07-14 21:27:13 +02:00
Ske
1d35838fa4 Hint at 5-char member ID when registering multi-name member 2019-07-14 21:19:48 +02:00
Ske
d78e4c4502 Send export file in DMs 2019-07-14 21:14:16 +02:00
Ske
ebc311ecc3 Remove message query reaction AND open DB connection when obtaining one 2019-07-14 05:23:27 +02:00
Ske
a41e20a0a3 Fix importing with no existing system 2019-07-11 22:46:18 +02:00
Ske
c6905f4ca1 Allow single quotes in command arguments 2019-07-11 22:34:38 +02:00
Ske
d829630a35 Fix database connection pool contention (maybe)
Instead of acquiring a connection per service per request, we
acquire connections more often but at a more granular level, meaning
they're also disposed of more quickly instead of staying for a long time
in case of long-running commands or leaks.
2019-07-11 21:25:23 +02:00
Ske
ca56fd419b Fix various issues with proxying and webhook caching 2019-07-10 23:16:17 +02:00
Ske
8e0e37ed54 Yes. 2019-07-10 13:57:59 +02:00
Ske
31173af87d Add more command aliases 2019-07-10 13:55:48 +02:00
Ske
352940abbd Sanitize user input in response messages 2019-07-10 13:44:03 +02:00
Ske
740ccf6979 Fix sending message attachments 2019-07-10 12:52:02 +02:00
Ske
5bdb229b34 Fix errant dollar sign in log embed 2019-07-10 12:49:09 +02:00
Ske
53b3378901 Fix importing by URL 2019-07-10 12:36:51 +02:00
Ske
305d8f220e Add usage strings to all commands 2019-07-10 12:03:41 +02:00
Ske
1bd5e7e3ca Clarify datetime format in switch move error 2019-07-10 11:09:08 +02:00
Ske
942b620640 Clarify color code format in error 2019-07-10 10:03:26 +02:00
Ske
372a618cbe Bounds check color parameter validation 2019-07-10 10:02:46 +02:00
Ske
9b488d1ab5 Add more lenient prefix parsing 2019-07-10 10:01:06 +02:00
Ske
8dea58437d Add short-hand group aliases 2019-07-10 09:35:37 +02:00
Ske
de9554810a Disallow switching to member in another system 2019-07-10 00:25:47 +02:00
Ske
9a5152a74c Add member routes to API 2019-07-10 00:19:18 +02:00
Ske
4874879979 Add basic API, only with system endpoints 2019-07-09 20:39:29 +02:00
Ske
ce999895c8 Add basic help command 2019-07-01 17:57:43 +02:00
Ske
b5c9793578 Add config file loading 2019-07-01 00:55:41 +02:00
Ske
42147fd9cc Add front percent command 2019-06-30 23:41:01 +02:00
Ske
7eeaea39fe Proxy messages with a mention before tags 2019-06-27 10:38:45 +02:00
Ske
53037f7d52 Add message querying by ? reaction 2019-06-21 14:13:56 +02:00
Ske
93fff14053 Fix skipping proxying of members with no tags 2019-06-21 13:53:19 +02:00
Ske
6e7950722d Fix log channel clearing 2019-06-21 13:52:34 +02:00
Ske
2c3c46002a Add message lookup and log channel setting commands 2019-06-21 13:49:58 +02:00
Ske
06edc9d61e Add API token commands 2019-06-20 21:15:57 +02:00
Ske
5dafc4fbd4 Add front history command 2019-06-15 12:43:35 +02:00
Ske
f4a53ce815 Refactor date/time format constants 2019-06-15 12:33:24 +02:00
Ske
fa5a616716 Add system fronter command 2019-06-15 12:19:44 +02:00
Ske
5d15a973f1 Add customization of invite link client ID. Closes #77. 2019-06-15 12:03:07 +02:00
Ske
e66c815295 Remove unused function 2019-06-15 11:55:40 +02:00
Ske
1e1ef4495f Add Tupperbox importing support 2019-06-15 11:55:11 +02:00
Ske
652afffb8c Add importing and exporting function 2019-06-14 22:48:19 +02:00
Ske
cd9a3e0abd Expand system time selection logic 2019-06-13 23:42:39 +02:00
Ske
72cb838ad7 Add system time zone command 2019-06-13 20:33:17 +02:00
Ske
6cfa4cb2e5 Add usage strings to switch commands 2019-06-13 17:07:49 +02:00
Ske
d109ca7b57 Add switch deletion command 2019-06-13 17:05:50 +02:00
Ske
7e9b7dcc98 Add switch commands for adding and moving 2019-06-13 16:53:04 +02:00
Ske
4c6790432b Add system linking commands 2019-05-21 23:40:26 +02:00
Ske
8b8ec80944 Move database/mapper setup code to Core 2019-05-19 22:03:45 +02:00
Ske
08afa2543b Add member avatar edit command
This also refactors a large portion of the DI toolchain, since
I discovered that you shouldn't be reusing IDbConnection objects.

Instead, most services and stores are now declared transient, and
the webhook cache has been moved to a database-independent storage
singleton by itself.
2019-05-17 01:23:09 +02:00
Ske
1824bfd6bb bot: fix proxy service testing members with no tags set 2019-05-13 23:12:58 +02:00
Ske
72a2fadff8 bot: add member deletion command 2019-05-13 23:08:44 +02:00
Ske
5fc91d895c bot: add proxy tag edit command 2019-05-13 22:56:22 +02:00
Ske
62dc2ce78e bot: add birthday command 2019-05-13 22:44:49 +02:00
Ske
b42e052fee bot: add member lookup command 2019-05-12 00:44:02 +02:00
Ske
c63e20ca50 bot: fix command dispatch 2019-05-12 00:22:48 +02:00
Ske
cf2598baa5 bot: add color change command 2019-05-11 23:56:56 +02:00
Ske
495edc3c5e bot: use MemberStore in member type reader 2019-05-08 20:53:01 +02:00
Ske
9b49f22048 bot: enable .NET configuration management 2019-05-08 20:08:56 +02:00
Ske
c5d2b7c251 refactor project structure 2019-05-08 00:06:27 +02:00