Feature Reaction Role Logs. Adds logging functionality for reaction roles. This helps track when users add or remove reaction roles.
This commit is contained in:
@@ -4,6 +4,8 @@
|
||||
import {opendiscord, api, utilities} from "../index"
|
||||
import * as discord from "discord.js"
|
||||
|
||||
const generalConfig = opendiscord.configs.get("opendiscord:general")
|
||||
|
||||
export const registerActions = async () => {
|
||||
opendiscord.actions.add(new api.ODAction("opendiscord:reaction-role"))
|
||||
opendiscord.actions.get("opendiscord:reaction-role").workers.add([
|
||||
@@ -79,6 +81,11 @@ export const registerActions = async () => {
|
||||
|
||||
//update instance & finish event
|
||||
instance.result = result
|
||||
|
||||
if (generalConfig.data.system.logs.enabled && generalConfig.data.system.messages.roleAdding.logs){
|
||||
const logChannel = opendiscord.posts.get("opendiscord:logs")
|
||||
if (logChannel) { logChannel.send( await opendiscord.builders.messages.getSafe("opendiscord:reaction-role-logs").build(source,{guild,user,role,result}))}}
|
||||
|
||||
await opendiscord.events.get("afterRolesUpdated").emit([user,role])
|
||||
}),
|
||||
new api.ODWorker("opendiscord:logs",0,(instance,params,source,cancel) => {
|
||||
|
||||
@@ -1107,8 +1107,45 @@ const roleEmbeds = () => {
|
||||
else instance.setDescription(lang.getTranslation("actions.descriptions.rolesEmpty"))
|
||||
})
|
||||
)
|
||||
|
||||
//REACTION ROLE LOGS
|
||||
embeds.add(new api.ODEmbed("opendiscord:reaction-role-logs"))
|
||||
embeds.get("opendiscord:reaction-role-logs")!.workers.add(
|
||||
new api.ODWorker("opendiscord:reaction-role-logs",0,async (instance,params,source) => {
|
||||
const {user,result} = params
|
||||
|
||||
const newResult = result
|
||||
.filter(r => r.action != null && r.role?.id)
|
||||
.sort((a, b) => {
|
||||
if (a.action === "added" && b.action === "removed") return -1;
|
||||
if (a.action === "removed" && b.action === "added") return 1;
|
||||
return 0;
|
||||
})
|
||||
.map(r => {
|
||||
return (r.action === "added")
|
||||
? `🟢${lang.getTranslation("params.uppercase.added")} ${discord.roleMention(r.role.id)}`
|
||||
: `🔴 ${lang.getTranslation("params.uppercase.removed")} ${discord.roleMention(r.role.id)}`
|
||||
})
|
||||
|
||||
let baseDescription = lang.getTranslationWithParams("actions.logs.roleLog", [discord.userMention(user.id)])
|
||||
if (!baseDescription || baseDescription === "null") {
|
||||
baseDescription = `Roles updated for ${discord.userMention(user.id)}`
|
||||
}
|
||||
|
||||
const fullDescription = (newResult.length > 0) ? `${baseDescription}\n\n${newResult.join("\n")}` : `${baseDescription}\n\n${lang.getTranslation("actions.descriptions.rolesEmpty")}`
|
||||
|
||||
instance.setColor(generalConfig.data.mainColor)
|
||||
instance.setTitle(utilities.emojiTitle("📋", lang.getTranslation("actions.titles.roles")))
|
||||
instance.setThumbnail(user.displayAvatarURL())
|
||||
instance.setAuthor(user.displayName, user.displayAvatarURL())
|
||||
instance.setTimestamp(new Date())
|
||||
instance.setDescription(fullDescription)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
export default roleEmbeds
|
||||
|
||||
const clearEmbeds = () => {
|
||||
//CLEAR VERIFY MESSAGE
|
||||
embeds.add(new api.ODEmbed("opendiscord:clear-verify-message"))
|
||||
|
||||
@@ -964,6 +964,16 @@ const roleMessages = () => {
|
||||
instance.setEphemeral(true)
|
||||
})
|
||||
)
|
||||
|
||||
//REACTION ROLE LOGS
|
||||
messages.add(new api.ODMessage("opendiscord:reaction-role-logs"))
|
||||
messages.get("opendiscord:reaction-role-logs")!.workers.add(
|
||||
new api.ODWorker("opendiscord:reaction-role-logs",0,async(instance,params,source) => {
|
||||
const {guild,user,role,result} = params
|
||||
const embed = await embeds.getSafe("opendiscord:reaction-role-logs").build(source,{guild,user,role,result})
|
||||
instance.addEmbed(embed)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
const clearMessages = () => {
|
||||
|
||||
Reference in New Issue
Block a user