Commit graph

51 commits

Author SHA1 Message Date
Noi
aebc63358d Check against configuring 'everyone' role 2022-03-30 13:35:56 -07:00
Noi
c0b2b9793b Add role removal limit per run 2022-03-23 11:13:55 -07:00
Noi
f4daa63bc5 Various fixes
- Fixed roles still not applying in certain occasions
- Suppressed several error messages during role updates
2022-03-22 12:33:33 -07:00
Noi
014b5a601d Increase log threshold for AutoUserDownload 2022-03-22 12:32:42 -07:00
Noi
3d4add3581 Update service exception handling
I didn't find the bug...
2022-03-22 00:08:40 -07:00
Noi
021def4f88 Fix roles not updating
Accidentally rewrote a handful of things while I was at it. The changes are staying.

After a long search, I found that this issue only shows itself if the bot is in several servers, encountering a valid configuration while it has yet to look at more servers (that is, a situation my debug bot is not in). The loop had been quitting halfway through for reasons seemingly beyond any logic or comprehension.

I already had a hunch that the query I wrote earlier was needlessly complex, as one might expect considering it was written during a state of delirium. It was easy to simplify it. I hoped that would be it, but no change occurred. On the contrary, some checks I slipped in there in the meantime were *passing*.

Further and further investigation finally revealed that the exception handler for background services doesn't actually do what it's expected to do. It's been silently dropping the exceptions that EF had been throwing this whole time, telling me quite plainly what the problem was and why it was quitting at a seemingly random spot.

The fix: Turns out the query evaluates during the foreach loop, which conflicts with wanting to do additional queries within it. Throwing a ToList() somewhere in it seems to have solved it.

These last few hours were quite the adventure...
My head hurts. Now I'm off to take a look at the exception handler.
2022-03-21 23:52:36 -07:00
Noi
2a1478fb0b Add log message 2022-03-21 23:33:24 -07:00
Noi
c280904cb8 Update services to use EF queries 2022-03-21 12:12:18 -07:00
Noi
b1b7c60211 Update commands to use EF queries 2022-03-20 01:07:17 -07:00
Noi
578f2545f2 Various changes
-Remove webhook logging references
--Including config line. Idea is abandoned for now.
-Remove unneeded comments
-Remove diagnostic messages
--Corresponding problems were solved by moving to dedicated hardware
-Update style on all affected files
2021-12-05 18:58:10 -08:00
Noi
3741222c68 Improve performance by placing updates in transaction 2021-12-05 18:29:27 -08:00
Noi
51e241aca8 Restore "most users downloaded" checks
Workaround to deal with continued instances of inconsistent Discord.Net user downloading behavior
2021-12-05 18:25:02 -08:00
Noi
5e4d030467 Rework member cache downloading
Fill it quicker when immediately needed, removing the need for a request list and all relating to it in the corresponding background service.

Additionally, updated usings, style, nullables in all affected files.
2021-11-22 13:40:08 -08:00
Noi
f8350fed53 Increase threshold, no longer stagger DataRetention
This staggering was most likely the cause of a major amount of data lost recently, in which certain guilds never had their values updated.
The staggering was meant to attempt to reduce load on a server with limited capabilities, and testing shows that it runs on more capable hardware without this issue when run this way.
2021-11-22 11:49:55 -08:00
Noi
800bba2193 Add more information to check command
Additionally, fix up null checks in affected files
2021-10-24 18:15:46 -07:00
Noi
0c56a0859a Replace test with check command
Removes some messy code as a result of the old feature's removal.
Additionally, updated code style in ManagerCommands and fixed several nullable issues.
2021-10-22 15:41:36 -07:00
Noi
6f34fbe657 Modified all background services
-Removed a number of diagnostic messages
-Removed ConnectionStatus, connection scores, etc.
-Modified work intervals for certain background tasks
-Updated code style
2021-10-14 18:55:04 -07:00
Noi
8cff530a7c Remove semaphore in SelectiveAutoUserDownload
Also updated style for this file.
Additionally, reworded the corresponding error message to something friendlier.
2021-10-13 21:36:00 -07:00
Noi
dcb9bfdd9a Apply suggestions from code analysis 2021-10-13 20:38:52 -07:00
Noi
57a870efda Additional diagnostic information 2021-10-13 19:28:00 -07:00
Noi
88c18c4364 Fix occasional internal ObjectDisposedException when disposing 2021-06-01 21:48:26 -07:00
Noi
59afd8ce3b Move server count reporting to be handled per-shard 2021-05-30 12:00:49 -07:00
Noi
a0571ce3d7 Add some leeway regarding incomplete user cache
Implemented several workarounds to what appearto be a library bug in
which not all users will be downloaded onto the cache. User cache
checking and downloading is delegated to a new Common method and a
new BackgroundService, respectively.
This is hopefully temporary.
2021-02-01 22:48:20 -08:00
Noi
1e8b47784d Modify DataRetention behavior; simplify SQL config 2021-02-01 22:03:50 -08:00
Noi
9667820df4 Reduce background work interval 2021-02-01 22:02:29 -08:00
Noi
3c73be3ee7 Automatically identify and remove dead shards
- Manager loop updated to act on dead shards and initialize new ones
- Initialization of new shards is now staggered in case of many shards
- Now using intents
- Adding a delay and a second connection check when downloading guild
  members. This has greatly improved stability over the previously
  attempted method.
- No longer sends guild counts to external sites until fully connected
2020-10-29 00:44:48 -07:00
Noi
a631f55a37 Change exception type thrown by semaphore 2020-10-25 13:44:35 -07:00
Noi
b6551eec2e Modify shard reporting to be compact, informative 2020-10-24 22:43:20 -07:00
Noi
651de4e78a Configure all the awaits 2020-10-10 00:28:11 -07:00
Noi
9ef164bac1 Update DataRetention service
Renamed from StaleDataCleaner.
Modified to run only once concurrently, to not put extra load on the
database connection pool.
2020-10-09 23:57:30 -07:00
Noi
7ce04997f9 Modify background task settings
Solves an issue in which the bot lags on all input when the bot has
been fully initialized.
2020-10-08 21:56:44 -07:00
Noi
6ee0ad939e Improve comments, remove redundant code 2020-10-08 21:46:36 -07:00
Noi
2f0fe8641a Implement own sharding system
The BirthdayBot class has been split up into ShardInstance and
ShardManager. Several other things have been reorganized so that shards
may act independently.

The overall goal of these changes made is to limit failures to sections
that can easily be discarded and replaced.
2020-10-04 21:40:38 -07:00
Noi
21d5c5b082 Add status update message 2020-09-25 17:25:08 -07:00
Noi
c77163cab3 Merge branch 'noguildcache' 2020-08-05 19:49:57 -07:00
Noi
f1e7bd8c67 Removed disconnected server count
Made redundant by per-shard status on every birthday update
2020-07-27 22:40:09 -07:00
Noi
657181ec3e Less async birthday updates; download users on connect
From testing, it appears DownloadUsersAsync hangs forever and has other
consequences if its corresponding server is not fully connected, or is
struggling to connect. This is despite all attempts to mitigate it and
detect any disconnections shortly before attempting it.
Additionally, birthday updates are now run asynchronously per shard, but
synchronously per guild in an attempt to keep rare instances of rate
limiting under control.
2020-07-27 22:30:15 -07:00
Noi
8f84b09b21 Reduce amount of automatic processing
These changes make the bot skip over needlessly collecting information
for guilds in which it is unnecessary, in most cases guilds that have
invited the bot but have not yet invoked any bot command.
2020-07-22 19:43:45 -07:00
Noi
ffbffdd9b4 Remove async multiple updates 2020-07-22 17:06:35 -07:00
Noi
b6c201d5a5 Fix user last_seen not updating properly
Also now displays basic statistics on how many records are updated in
each pass whenever StaleDataCleaner does its work.
2020-07-19 20:54:18 -07:00
Noi
608ab37aec Update background services to remove guild cache references
Possibly optimized StaleDataCleaner as well by making certain database
updates asynchronous
2020-07-18 00:01:14 -07:00
Noi
0bd9b79e50 Replace OperationStatus with test command 2020-07-14 11:59:14 -07:00
Noi
f839890b73 Fix StaleDataCleaner not working 2020-06-03 00:17:54 -07:00
Noi
75924cc096 Revert GuildStatistics to previous behavior
Sending in reports per shard is currently unnecessary.
Added GuildCache number display for further information. It may be worth
considering removing -that- in the future and load all database
information as needed.
2020-05-22 00:21:40 -07:00
Noi
2a15fc21c8 Implement per-shard reporting 2020-05-21 23:54:05 -07:00
Noi
c78276b6d5 Fix announcement formatting 2020-05-21 21:18:15 -07:00
Noi
0d93936bc8 Make corresponding changes from VB-based project 2020-05-19 19:15:54 -07:00
Noi
0b6f2c45a4 Add StaleDataCleaner and related changes 2020-04-10 00:20:47 -07:00
Noi
4a052e4394 Various improvements
Reorganized ProgressGuildAsync to better show its process instead of
having pieces of it scattered. Also improves performance by performing a
check before doing birthday processing.
Additionally, other parts of the file were condensed slightly.
2020-04-03 21:19:29 -07:00
Noi
c5cab92899 Slightly improve birthday update task handling 2020-04-03 20:58:02 -07:00