global command self delete react
This commit is contained in:
parent
542070b33b
commit
73590257c8
2 changed files with 76 additions and 59 deletions
98
src/index.js
98
src/index.js
|
@ -1,7 +1,7 @@
|
||||||
const Dysnomia = require("@projectdysnomia/dysnomia");
|
const Dysnomia = require("@projectdysnomia/dysnomia");
|
||||||
const logger = require("./lib/logger.js");
|
const logger = require("./lib/logger.js");
|
||||||
const fs = require("fs");
|
const fs = require("node:fs");
|
||||||
const {resolve} = require("path");
|
const {resolve} = require("node:path");
|
||||||
const sqlite3 = require("sqlite3");
|
const sqlite3 = require("sqlite3");
|
||||||
const {instead, before} = require("spitroast");
|
const {instead, before} = require("spitroast");
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ const bot = new Dysnomia.Client(config.token, {
|
||||||
gateway: {
|
gateway: {
|
||||||
intents: Object.values(Dysnomia.Constants.Intents),
|
intents: Object.values(Dysnomia.Constants.Intents),
|
||||||
},
|
},
|
||||||
|
restMode: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
const commands = new Dysnomia.Collection();
|
const commands = new Dysnomia.Collection();
|
||||||
|
@ -56,29 +57,82 @@ for (const file of fs.readdirSync(resolve(__dirname, "modules"))) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bot.on("messageCreate", async (msg) => {
|
bot.on("messageCreate", async (msg) => {
|
||||||
// fix DMs cause of gateway v8 changes
|
try {
|
||||||
if (
|
// fix DMs cause of gateway v8 changes
|
||||||
!(msg.channel instanceof Dysnomia.Channel) &&
|
if (
|
||||||
msg.author.id != bot.user.id &&
|
!(msg.channel instanceof Dysnomia.Channel) &&
|
||||||
!msg.guildID
|
msg.author.id != bot.user.id &&
|
||||||
) {
|
!msg.guildID
|
||||||
const newChannel = await bot.getDMChannel(msg.author.id);
|
) {
|
||||||
if (msg.channel.id == newChannel.id) msg.channel = newChannel;
|
const newChannel = await bot.getDMChannel(msg.author.id);
|
||||||
|
if (msg.channel.id == newChannel.id) msg.channel = newChannel;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(msg.channel instanceof Dysnomia.Channel)) return;
|
||||||
|
|
||||||
|
await CommandDispatcher(msg);
|
||||||
|
} catch (err) {
|
||||||
|
const stack = (err?.stack ?? err.message).split("\n");
|
||||||
|
const error = stack.shift();
|
||||||
|
logger.error(
|
||||||
|
"hf:main",
|
||||||
|
`Failed to dispatch command: ${error}\n\t${stack.join("\n\t")}`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(msg.channel instanceof Dysnomia.Channel)) return;
|
|
||||||
|
|
||||||
await CommandDispatcher(msg);
|
|
||||||
});
|
});
|
||||||
bot.on("messageUpdate", (msg, oldMsg) => {
|
bot.on("messageUpdate", (msg, oldMsg) => {
|
||||||
const oneDay = Date.now() - 86400000;
|
try {
|
||||||
if (
|
const oneDay = Date.now() - 86400000;
|
||||||
msg.timestamp > oneDay &&
|
if (
|
||||||
!msg.hasRan &&
|
msg.timestamp > oneDay &&
|
||||||
oldMsg &&
|
!msg.hasRan &&
|
||||||
oldMsg.content !== msg.content
|
oldMsg &&
|
||||||
) {
|
oldMsg.content !== msg.content
|
||||||
CommandDispatcher(msg);
|
) {
|
||||||
|
CommandDispatcher(msg);
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
const stack = (err?.stack ?? err.message).split("\n");
|
||||||
|
const error = stack.shift();
|
||||||
|
logger.error(
|
||||||
|
"hf:main",
|
||||||
|
`Failed to dispatch command update: ${error}\n\t${stack.join("\n\t")}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
bot.on("messageReactionAdd", async (msg, reaction, reactor) => {
|
||||||
|
if (msg.author.id !== bot.user.id) return;
|
||||||
|
if (reaction.name !== "\u274c") return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
let channel = msg.channel;
|
||||||
|
if (!(channel instanceof Dysnomia.Channel)) {
|
||||||
|
const newChannel = hf.bot.getChannel(channel.id);
|
||||||
|
if (newChannel) {
|
||||||
|
channel = newChannel;
|
||||||
|
} else {
|
||||||
|
channel = await hf.bot.getRESTChannel(channel.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!msg.messageReference) {
|
||||||
|
msg = await channel.getMessage(msg.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!msg.messageReference) return;
|
||||||
|
|
||||||
|
const ref = await channel.getMessage(msg.messageReference.messageID);
|
||||||
|
if (!ref) return;
|
||||||
|
if (ref.author.id !== reactor.id) return;
|
||||||
|
|
||||||
|
await msg.delete("Command sender requested output deletion.");
|
||||||
|
} catch (err) {
|
||||||
|
const stack = (err?.stack ?? err.message).split("\n");
|
||||||
|
const error = stack.shift();
|
||||||
|
logger.error(
|
||||||
|
"hf:main",
|
||||||
|
`Failed to self-delete message: ${error}\n\t${stack.join("\n\t")}`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -155,40 +155,3 @@ events.add("messageCreate", "codePreviews", async function (msg) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: maybe all command outputs should have this ability
|
|
||||||
events.add(
|
|
||||||
"messageReactionAdd",
|
|
||||||
"codePreviews",
|
|
||||||
async function (msg, reaction, reactor) {
|
|
||||||
if (!msg.guildID) return;
|
|
||||||
if (!(await hasFlag(msg.guildID, "codePreviews"))) return;
|
|
||||||
if (reaction.name != "\u274c") return;
|
|
||||||
|
|
||||||
let channel = msg.channel;
|
|
||||||
if (!channel.name) {
|
|
||||||
channel = hf.bot.getChannel(channel.id);
|
|
||||||
}
|
|
||||||
if (!msg.messageReference) {
|
|
||||||
msg = await channel.getMessage(msg.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!msg.messageReference) return;
|
|
||||||
|
|
||||||
const ref = await channel.getMessage(msg.messageReference.messageID);
|
|
||||||
if (!ref) return;
|
|
||||||
if (
|
|
||||||
ref.author.id != reactor.id &&
|
|
||||||
!channel.permissionsOf(reactor.id).has("manageMessages")
|
|
||||||
)
|
|
||||||
return;
|
|
||||||
if (
|
|
||||||
!REGEX_GITHUB.test(ref.content) &&
|
|
||||||
!REGEX_GITLAB.test(ref.content) &&
|
|
||||||
!REGEX_GITEA.test(ref.content)
|
|
||||||
)
|
|
||||||
return;
|
|
||||||
|
|
||||||
await msg.delete("Author requested code preview deletion");
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
Loading…
Reference in a new issue