Commit Graph

351 Commits (5aa111e469e928002f6f4d0f524b5aa0491cdd92)

Author SHA1 Message Date
Dragory f9671c385d
Add formatters for system messages
This has backwards-compatibility-breaking changes to the signature
of thread.postSystemMessage() and thread.sendSystemMessageToUser().
2020-10-12 20:33:49 +03:00
Dragory c9e0dbf040
Handle unhandled rejections the same way as uncaught exceptions 2020-10-12 20:00:55 +03:00
Dragory f5caa80c4c
Allow plugins to access the 'threads' module for creating new threads 2020-10-12 20:00:25 +03:00
Dragory a3c1ed0a28
Include DM message in beforeNewThread hook data. Allow specifying categoryId in createNewThreadForUser(). 2020-10-12 19:59:47 +03:00
Dragory aadda31069
Add metadata field for threads
Useful for e.g. storing plugin-specific data about a thread.
2020-10-12 19:57:39 +03:00
Dragory d8c531cb4d
Add support for different plugin sources; add support for installing plugins from npm 2020-10-04 16:46:43 +03:00
Dragory 9048942ce9
Expose web server express application to plugins 2020-10-04 02:10:13 +03:00
Dragory e99352e2ac
Use Express as the web server for logs/attachments 2020-10-03 16:40:05 +03:00
Dragory 0d2202d38c
Allow log storage handlers to store data. Add shouldSave() function to log storage handlers. 2020-10-03 16:10:27 +03:00
Dragory 3937c0a838
Start expiredBlockLoop() directly, not on "ready" event
This is because the client is already ready by this point, as plugins
are only loaded after the ready event.
2020-10-03 15:18:27 +03:00
Dragory 19b9d4db61
Fix missing await when removing blocks 2020-10-03 15:17:30 +03:00
Dragory 454ab75fec
Fix !newthread failing with uncached users 2020-09-25 01:42:37 +03:00
Dragory 3a7f7ffc90
Add support for alternative log storage types 2020-09-23 03:16:26 +03:00
Dragory a7e863da6a
Move migration files within src
This means that the db folder no longer contains any code required
for the bot to run.
2020-09-23 02:34:40 +03:00
Dragory 0d29859dd8
Remove Feb 2018 legacy migrator
This is to allow other features to use the /logs folder.

Going forward, updating from a pre-Feb 2018 version of the bot
will require first updating the bot to version v2.30.1 and running it
once. After that, updating to newer versions is possible.
2020-09-23 02:30:17 +03:00
Dragory 5c6df913bf
beforeNewThread hook type fixes 2020-09-23 02:29:09 +03:00
Dragory f5b6e46040
Add afterThreadClose plugin hook 2020-09-23 02:28:41 +03:00
Dragory 9be6b2aa1f
Don't allow opening threads with bots with !newthread, fixes #452 2020-09-23 01:04:40 +03:00
Dragory 0c9302b41b
Add statusType option 2020-09-23 00:58:18 +03:00
Dragory 4ea5650289
Consider an empty value for mentionRole as 'none' 2020-09-23 00:39:56 +03:00
Dragory bf47fb7406
Add 'none' option for mentionRole 2020-09-23 00:38:46 +03:00
Dragory 180f936bc4
Update config jsdoc 2020-09-23 00:26:36 +03:00
Dragory 171ad403d9
Add updateNotificationsForBetaVersions option 2020-09-23 00:25:50 +03:00
Dragory f46d719f4c
Code clean-up 2020-09-23 00:21:44 +03:00
Nils 96e8eae188
Fully functioning built-in plugin to send system messages on join/leave (#437)
Co-authored-by: Miikka <2606411+Dragory@users.noreply.github.com>
2020-09-23 00:19:34 +03:00
funkyhippo 3af5a67c1b Added anonymizeChannelName configuration option. 2020-09-23 00:17:31 +03:00
Dragory 8d151c1800
Fix null values in entity getSQLProps()
Fixes 'null' role name when staff member has no hoisted roles
2020-09-22 23:47:04 +03:00
Dragory aea216f289
Fix crash when using newThreadCategoryId without categoryAutomation 2020-08-24 19:35:01 +03:00
Dragory 8930e5dde8
Fix crash when greetingMessage is used instead of serverGreetings 2020-08-24 19:31:53 +03:00
Dragory b992b49c5c
Clean up bot mention notification styles 2020-08-21 05:16:23 +03:00
Dragory 581b09a8ae
Fix thread header ping not working, utilize allowed_mentions 2020-08-21 05:13:24 +03:00
Dragory fdabf65882
Fix thread alert_id being limited to 20 chars on MySQL 2020-08-18 22:43:08 +03:00
Dragory 47125fd7fd
Fix rare crash in typingProxy 2020-08-18 21:43:30 +03:00
Dragory 883d8adf93
Fix crash when a user sends an attachment
Also added an eslint rule to catch similar errors caused by shadowed
variables in the future.
2020-08-17 11:26:06 +03:00
Dragory 958db5135d
Use releases instead of tags in update check, ignore prereleases/drafts 2020-08-17 02:07:03 +03:00
Dragory 4d42656c24
Delete command message after !edit/!delete
Consistency with !reply
2020-08-17 02:02:22 +03:00
Dragory aff119549e
Removed some leftover brackets around message numbers 2020-08-17 01:58:20 +03:00
Dragory adc54909fa
Tidy up edit/deletion styles 2020-08-17 01:53:21 +03:00
Dragory 6a8ecfed8a
Small extra tweak to thread message numbers 2020-08-17 01:46:51 +03:00
Dragory 3aa74f2cbf
Hide message numbers from non-verbose logs 2020-08-17 01:45:45 +03:00
Dragory c7b49b5484
Tweaks to default message number formatting 2020-08-17 01:43:36 +03:00
Dragory ac2548b6cc
Request GUILD_MEMBERS intent for server greetings. Emphasize new intent requirement in the changelog. 2020-08-17 01:24:30 +03:00
Dragory 4fbf2a1769
Rename guildGreetings to serverGreetings
The original name (guildGreetings) is now an alias for the new option
name, so old configs will still work after this change.
2020-08-17 01:21:07 +03:00
Dragory 900a14d8a1
Rename categoryAutomation.newThreadFromGuild to categoryAutomation.newThreadFromServer
The original name (categoryAutomation.newThreadFromGuild) is now
an alias for the new option name, so old configs still work after
this change.
2020-08-17 01:04:05 +03:00
Dragory c177be8920
Fix categoryAutomation type 2020-08-17 00:55:18 +03:00
Dragory 099b5f9616
Enable !edit and !delete by default 2020-08-17 00:55:05 +03:00
Dragory d85a2dad5d
Add !message 2020-08-17 00:39:39 +03:00
Dragory 16a3af07ef
Hide ajv warning about ignored keywords
This was showing up when using $ref with $comment in the JSON Schema
2020-08-17 00:20:43 +03:00
Dragory a327160ed9
Improve CLI feedback for 'Waiting for servers', always continue after a delay 2020-08-17 00:19:51 +03:00
Dragory be7f172b62
Rename mainGuildId to mainServerId, mailGuildId to inboxServerId
The original names (mainGuildId, mailGuildId) are now aliases for
the new option names, so old configs still work after this change.
2020-08-16 23:53:35 +03:00
Dragory d5219556a7
Add full JSDocs for the plugin API 2020-08-16 23:26:04 +03:00
Dragory f61b1cc397
Require new text arg in !edit_snippet. Fixes #413 2020-08-16 22:14:49 +03:00
Dragory 034a9172c4
Update config JSDoc 2020-08-16 19:22:50 +03:00
Dragory cb6a9c2703
Merge #373 2020-08-16 18:58:25 +03:00
Dragory 0540ac3b90
Merge #358 2020-08-16 18:51:20 +03:00
Dragory 7a671eab1f
Ignore errors from adding a reaction with reactOnSeen 2020-08-16 18:45:11 +03:00
Dragory 51df75e641
Set dm_channel_id directly from the message object
Allows us to set the channel id correctly for non-DM messages,
such as mentions that create a thread with createThreadOnMention
where the initial message is forwarded to the thread.
2020-08-16 18:42:22 +03:00
Dragory c7bf059220
When creating a new thread from a mention, include a note and the initial message in the thread 2020-08-16 18:41:58 +03:00
Dragory 78a1cc34be
threadOnMention -> createThreadOnMention 2020-08-16 18:36:51 +03:00
Dragory e0aa3a73ae
Merge #397 2020-08-16 18:34:51 +03:00
Dragory 041e095950
Merge #398 2020-08-16 18:27:51 +03:00
Dragory 25998fa8a2
Show a small note if a user messages the bot with e.g. a Spotify invite 2020-08-16 18:18:32 +03:00
Dragory 31a5fb55b8
Remove debug console.log 2020-08-14 01:23:49 +03:00
Dragory 7c96d71efe
Tweak edit/delete formatting 2020-08-14 01:19:01 +03:00
Dragory a4c7b84616
Add next_message_number to threads, use it for reply numbers 2020-08-14 01:18:45 +03:00
Dragory 538a14338c
Update mysqlOptions schema 2020-08-14 01:01:40 +03:00
Dragory 296d1304a7
Reproducible formatters, add full log formatter
Format-specific parts of replies, including the role name and
attachments, are now stored in separate columns. This allows us to
store only one version of the actual message body and, by keeping
format-specific data separate, reproduce formatter results regardless
of when they are called. This cleans up code around message formats
significantly and was required to support !edit/!delete properly.
2020-08-14 00:42:32 +03:00
Dragory 77cb19e70c
Fix inconsistency between knexfile and runtime knex config 2020-08-13 23:55:29 +03:00
Dragory 8ba25d9504
Update Node.js version ranges in package.json and index.js 2020-08-13 03:40:34 +03:00
Dragory 98b8a05d5c
Remove several deprecated config options 2020-08-13 03:32:04 +03:00
Dragory ab6b84e6de
Add official MySQL support. Simplify database options. 2020-08-13 03:31:48 +03:00
Dragory 1f5faaab5b
Fix unnecessary warning about migrations from knex 2020-08-13 02:44:42 +03:00
Dragory 37c523cd04
Band-aid fix for import in move.js 2020-08-13 02:36:52 +03:00
Dragory 6d16daea0d
Add new attachment storage option: "original" 2020-08-13 02:36:15 +03:00
Dragory ff89ab557c
Remove debug process.exit() 2020-08-13 00:26:54 +03:00
Dragory b30e615200
Use gateway intents, add extraIntents config option 2020-08-13 00:23:59 +03:00
Dragory 2beadbe924
Disable getAllUsers from the client
We can lazy-load members instead.
2020-08-13 00:18:11 +03:00
Dragory 86a060410f
Apply code style from .eslintrc 2020-08-13 00:08:37 +03:00
Dragory bd8dcc6129
Fixes and tweaks to new config validation 2020-08-13 00:03:01 +03:00
Dragory f7b8a312f9
Coerce arrays of strings to arrays automatically 2020-08-12 23:24:17 +03:00
Dragory d03903ce80
Move beforeNewThread hook after validations, fix a couple bugs 2020-08-12 23:19:11 +03:00
Dragory 468d1fc037
Use JSON Schema via AJV for config schema + validation 2020-08-12 23:18:42 +03:00
Dragory ce8ebbfc2f
Propagate staff reply edits/deletions to the DB 2020-07-19 14:28:32 +03:00
Dragory e74363a55c
Show staff reply numbers in threads/logs 2020-07-19 14:24:24 +03:00
Dragory 3002473905
Add !edit and !delete with options (disabled by default) 2020-07-19 14:20:45 +03:00
Dragory 4e9e347b04
Add internal support for editing/deleting staff replies 2020-07-19 14:11:38 +03:00
Dragory 6b8c7e1bdf
Rename config.js to cfg.js
So people don't accidentally edit the config source file rather than
their own config file.
2020-07-19 13:36:07 +03:00
Dragory 3723bf788b
Add 'source' to beforeNewThread hooks, call hooks in threads.createNewThreadForUser() 2020-07-15 23:50:30 +03:00
Dragory 75b2920777
Use explicit parameters for Thread#postSystemMessage, Thread#sendSystemMessageToUser, Thread#postNonLogMessage 2020-07-14 01:38:35 +03:00
Dragory ec3a2455e0
Add more safeguards when using Thread#_postToThreadChannel() 2020-07-14 01:35:26 +03:00
Dragory 662c6b0c21
Allow message formatters to return full message content objects as well as strings 2020-07-14 01:31:50 +03:00
Dragory 8a975d7da4
Add message formatters. Expose message formatters to plugins. 2020-07-14 01:11:48 +03:00
Dragory 0c25afaec2
Add support for async plugin load functions 2020-07-14 00:17:31 +03:00
Dragory 815825de94
Add hooks to plugin API 2020-07-14 00:14:31 +03:00
Dragory 3c0352ff09
Add support for hooks. Add beforeNewThread hook. Allow overriding new thread category id in createNewThreadForUser(). 2020-07-14 00:13:32 +03:00
Dragory 3fc3905628
Update node-sqlite3 to v5. Update Node.js version requirements accordingly. 2020-07-09 04:05:28 +03:00
eegras@eegrasstudios.com b566be85fe Implement reactOnSeen 2020-06-05 13:11:56 -05:00
Dragory 1538b25ee5
Fix error when receiving a reply to a thread that has had its channel deleted 2020-06-05 17:06:15 +03:00
DopeGhoti cd17fdbaed Slight refactor of existing thread check 2020-06-04 20:43:01 -07:00
DopeGhoti edd2ceb1ab Add optional automatic thread creation on mention
Add an option to have the bot automatically open a
new thread when a user @s the bot in a monitored
channel.  Modify configuration parser to handle the
new settings; add a stanza to the configuration
documentiaion for it.
2020-06-04 20:27:01 -07:00