Skip to content

Instantly share code, notes, and snippets.

@kyeshmz
Created October 4, 2024 15:16
Show Gist options
  • Save kyeshmz/a1439b10f1d659831941ee0d2d6e8953 to your computer and use it in GitHub Desktop.
Save kyeshmz/a1439b10f1d659831941ee0d2d6e8953 to your computer and use it in GitHub Desktop.

Revisions

  1. kyeshmz renamed this gist Oct 4, 2024. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. kyeshmz created this gist Oct 4, 2024.
    80 changes: 80 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,80 @@

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