Created
October 4, 2024 15:16
-
-
Save kyeshmz/a1439b10f1d659831941ee0d2d6e8953 to your computer and use it in GitHub Desktop.
RemovePeriodPlugin.plugin.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * @name RemovePeriodPlugin | |
| * @version 2.0.0 | |
| * @description Removes periods at the end of sentences from incoming and historical Discord messages. | |
| * @author Kye Shimizu | |
| */ | |
| module.exports = class RemovePeriodPlugin { | |
| // Called when the plugin is enabled | |
| start() { | |
| this.modifyIncomingMessages(); | |
| this.modifyMessageHistory(); | |
| } | |
| // Called when the plugin is disabled | |
| stop() { | |
| this.removeIncomingMessageModification(); | |
| this.removeMessageHistoryModification(); | |
| } | |
| // Hook into incoming messages | |
| modifyIncomingMessages() { | |
| const messageModule = BdApi.findModuleByProps("getMessages"); | |
| const originalAddMessage = messageModule.__proto__.addMessage; | |
| const modifyMessageContent = (message) => { | |
| if (message.content.endsWith(".")) { | |
| message.content = message.content.slice(0, -1); | |
| } | |
| return message; | |
| }; | |
| messageModule.__proto__.addMessage = function (channelId, message) { | |
| message = modifyMessageContent(message); | |
| return originalAddMessage.apply(this, arguments); | |
| }; | |
| this._originalAddMessage = originalAddMessage; | |
| } | |
| // Restore original functionality for incoming messages when the plugin is stopped | |
| removeIncomingMessageModification() { | |
| const messageModule = BdApi.findModuleByProps("getMessages"); | |
| if (this._originalAddMessage) { | |
| messageModule.__proto__.addMessage = this._originalAddMessage; | |
| } | |
| } | |
| // Hook into message history (already loaded messages) | |
| modifyMessageHistory() { | |
| const messageModule = BdApi.findModuleByProps("getMessages"); | |
| const originalGetMessages = messageModule.__proto__.getMessages; | |
| const modifyMessageHistoryContent = (messages) => { | |
| messages._array.forEach((message) => { | |
| if (message.content.endsWith(".")) { | |
| message.content = message.content.slice(0, -1); | |
| } | |
| }); | |
| return messages; | |
| }; | |
| messageModule.__proto__.getMessages = function (channelId) { | |
| const messages = originalGetMessages.apply(this, arguments); | |
| return modifyMessageHistoryContent(messages); | |
| }; | |
| this._originalGetMessages = originalGetMessages; | |
| } | |
| // Restore original functionality for message history when the plugin is stopped | |
| removeMessageHistoryModification() { | |
| const messageModule = BdApi.findModuleByProps("getMessages"); | |
| if (this._originalGetMessages) { | |
| messageModule.__proto__.getMessages = this._originalGetMessages; | |
| } | |
| } | |
| }; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment