/** * @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; } } };