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.
RemovePeriodPlugin.plugin.js
/**
* @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