Commit graph

108 commits

Author SHA1 Message Date
Noi
1149f2800d Reorganized project
Moved modules into the assembly itself to simplify development of
further features and reduce complexity in building this project.

Additionally, many small adjustments were made, including:
- Add documentation to most public methods that had it missing
- Minor style updates
- Updated readme to reflect near-completion of this rewrite
- Remove any last remaining references to old project name Kerobot
- Update dependencies
2022-07-20 18:55:08 -07:00
Noi
53e0301edd Add ModCommands module 2022-07-18 16:44:31 -07:00
Noi
681bb1c345 Capitalize default FilterList keys 2022-07-18 16:18:05 -07:00
Noi
dc61e93a7f Fix ping-like query failing; other small changes 2022-07-12 23:45:18 -07:00
Noi
9e09800bff Remove unused, confusing property 2022-07-09 13:25:52 -07:00
Noi
a16354e425 Change exception handling to null checking 2022-07-09 13:25:52 -07:00
Noi
2f823a3730 Reorganize commonly used code 2022-07-09 13:25:52 -07:00
Noi
f8fe48766b Add ModLogs module
Very similar in function to legacy's ModLogs, but with far cleaner code.
Additionally fixes some EC issues regarding the message update delegate.
2022-07-08 12:03:15 -07:00
Noi
08afc224ed Port VoiceRoleSync from legacy
Since it was recently rewritten, the code was copied over nearly as-is from
the legacy branch without any other major changes considered.
2022-07-05 21:53:00 -07:00
Noi
2dafdf07db Replace redundant code with new common function 2022-07-05 21:01:30 -07:00
Noi
ffaae04bc6 Rewrite RegexModerator 2022-07-05 20:59:19 -07:00
Noi
13324999cc Updates and changes to project files
- Set up vscode tasks
- Update Readme and License
- Minor style and documentation changes
2022-06-18 00:05:12 -07:00
Noi
2160b0fa4e Have AutoResponder use similar config format to RegexModerator 2022-06-18 00:05:12 -07:00
Noi
6032e4d37b Shorter message in notification if no reason given 2022-06-18 00:05:12 -07:00
Noi
6afa6dc2c6 Fix several database issues
- Specify default value
- Cache all guild users on initial download
- Fix foreign key constraint issues
2022-06-18 00:05:12 -07:00
Noi
da31ce3e0d Add common incoming message check, fix auto role entry 2022-06-18 00:04:11 -07:00
Noi
94d4a27e85 Change build settings, fix minor problems 2022-06-18 00:01:42 -07:00
Noi
e1a39f964f Simplified logging, added logging to file 2022-06-18 00:01:42 -07:00
Noi
8d081ed637 Fix database issues; create initial EF migration 2022-06-18 00:01:42 -07:00
Noi
5671b7b48c Add message caching subservice
Partially implements legacy's ModLogs module on the bot side, with the remainder to be implemented as a proper module.
2022-06-18 00:01:42 -07:00
Noi
4f773e2573 Begin module rewrites and ports 2022-06-18 00:01:13 -07:00
Noikoio
02f91947f3 Add Entity Framework, update services
Add EF; port EventLoggingService to it

Update CommonFunctions: new style, some tweaks

Update user caching subservice

Update GuildStateService

- File-based only. Removed incomplete database support.
- Removed hooks within client; ModuleBase has direct access now
- Removed checks based on time-based staleness
- Code and style updates on all affected files

Style and nullable updates

And some minor structural changes here and there

Rewrite LoggingService

- Remove database-backed instance log
- Make logging methods synchronous
- Change instance reporting to webhook-based

Update ModuleStateService and related code
2022-06-18 00:00:43 -07:00
Noikoio
a7de9132ed Abandoning old plans, project will continue as RegexBot 3.0 2022-06-17 23:53:27 -07:00
Noikoio
6b83735d6b Rename LoggingService to EventLoggingService
Renamed to differentiate between upcoming UserLoggingService.
2019-06-22 17:12:05 -07:00
Noikoio
ffa5b5754b Several fixes after a round of testing
Fixed the following compilation errors:
-Moderators collection not initialized
-Outdated method signatures for ban and kick in ModuleBase
-Update author name in manifests
-Fixed incorrect method signature in AutoScriptResponder

Minor improvements:
-Updated external dependencies
-Remove unused variables in ConfDefinition of RegexModerator
-Improve parallel execution of matches?
-Send exception message on logging failure to reporting channel
-Slightly change ModuleLoader logging output
-Add Discord.Net unhandled exception output to logging
-Updated link to Github
-Changed GuildState exception handling message for conciseness

Fixes:
-SQL index creation in LoggingService
-SQL view creation in UserCacheService
-Add casts from ulong to long in SQL inserts
-External modules no longer loaded twice
-Non-Info messages from Discord.Net will now be reported
-User data had not been recorded at proper times
-Some modules had been returning null instead of Task with null
-Guild state exception handling should not have handled config errors
2019-06-21 15:05:58 -07:00
Noikoio
2319c91fc7 Switch to file-based configuration 2019-06-21 14:32:20 -07:00
Noikoio
c1e8f6699a Moved EntryRole to self-hosted
As it's currently implemented, it may cause problems for larger guilds
if any error is encountered. Additionally, it requires that the bot keep
tabs on all users on entry which may bring unnecessary extra load on the
host.

Additionally, added some error handling.
2019-06-20 17:35:50 -07:00
Noikoio
90feeb47b0 Ported RegexModerator from RegexBot
Changes:
-Renamed from AutoMod
-Some options have been simplified to reduce complexity
-Response exectution has been totally reworked to accomodate new and
upcoming features

Currently untested.
2019-06-16 22:37:11 -07:00
Noikoio
e87a985067 Finish adding entity finder helper methods 2019-06-16 21:59:17 -07:00
Noikoio
9c334f2e48 Removed custom DM notification on common kick/ban 2019-04-24 13:43:46 -07:00
Noikoio
77b6aa891b Add support for moderator list in GuildStateService
Completely forgot.
2019-04-24 13:41:10 -07:00
Noikoio
4de1e25230 Update packages 2019-04-24 13:38:51 -07:00
Noikoio
403703773b Improved documentation 2019-03-16 17:07:57 -07:00
Noikoio
c843104e3c Various changes
-Add Guild ID parameter to guild state setup method
-Add EntityCache support to ban and kick methods in ModuleBase
-EntryRole waiting list now preserved between state reloads
2019-03-16 17:07:18 -07:00
Noikoio
6f7ffda63b Ported EntryAutoRole from RegexBot
Untested and missing some error handling at the moment.
2019-02-17 15:59:02 -08:00
Noikoio
9efb35a046 Added EntityCache - UserCache component 2019-02-15 16:49:54 -08:00
Noikoio
47a738ddbc Remove per-guild schema
All guild data will now be stored within the same table, instead of
a new schema being created for each guild. This avoids issues with
missing schemas.
This likely wasn't a good idea to begin with.
2018-12-18 16:21:35 -08:00
Noikoio
de8660d913 Add missing documentation and initialization 2018-12-06 20:14:26 -08:00
Noikoio
47cc8425b2 Added CommonFunctionsService
Experimental feature. An attempt to standardize some common functions
to ensure consistent execution of those functions, and also to notify
services ahead of time that the events they may raise originated from
within the bot.

This is the initial commit. Implementation may change later.
2018-12-04 19:41:42 -08:00
Noikoio
530a4ae1b6 Add AutoScriptResponder
I'm not particularly proud of this.
2018-11-04 20:40:57 -08:00
Noikoio
81e9e6f959 Add debugger step through 2018-11-04 19:38:36 -08:00
Noikoio
367427938c Added equivalent modification from RegexBot 2018-11-04 19:37:52 -08:00
Noikoio
8bee71a863 Ported AutoResponder from RegexBot
Changes:
-Renamed from AutoRespond
-Rate limiting class is now generic in case it may be needed
-Multiple responses can be specified per definition
--One response is randomly chosen to be sent out
2018-09-21 21:31:07 -07:00
Noikoio
7ce2788594 Fix improper parsing; add null check 2018-09-21 20:39:36 -07:00
Noikoio
d8cb46113a Disable debug info generation on release builds 2018-09-21 20:38:34 -07:00
Noikoio
749ba169c0 Add exception handling when making new guild state 2018-09-20 19:43:27 -07:00
Noikoio
ee94cfd961 Add null check 2018-09-20 19:42:32 -07:00
Noikoio
1fbc9bca7f Reimplemented EntityList, FilterList
Based on similar classes from RegexBot.

-EntityList no longer separates by entity type.
-Both types allow caching their respective EntityName ID values.
-FilterList supports loading from custom field names.
2018-09-01 21:33:02 -07:00
Noikoio
9b6104030d Ported EntityName from RegexBot
Changes:
-Includes a method to make resolving a name into an ID much easier
-Leading prefix is now properly handled; no need to strip it first
2018-06-13 16:02:09 -07:00
Noikoio
9bd9a21531 Minor improvements throughout 2018-06-06 16:01:54 -07:00