Refactor message prefix handling, lessen reliance on member caching, fix adding guilds in postgresql

This commit is contained in:
Essem 2022-10-23 20:27:32 -05:00
parent a78df6fce7
commit 3662a2e51d
No known key found for this signature in database
GPG key ID: 7D497397CC3A2A8C
21 changed files with 87 additions and 103 deletions

View file

@ -147,11 +147,11 @@ export async function addGuild(guild) {
const query = await this.getGuild(guild);
if (query) return query;
try {
await sql`INSERT INTO guilds ${sql({ guild_id: guild.id, prefix: process.env.PREFIX, disabled: [], disabled_commands: [] })}`;
await sql`INSERT INTO guilds ${sql({ guild_id: guild, prefix: process.env.PREFIX, disabled: [], disabled_commands: [] })}`;
} catch (e) {
logger.error(`Failed to register guild ${guild.id}: ${e}`);
logger.error(`Failed to register guild ${guild}: ${e}`);
}
return await this.getGuild(guild.id);
return await this.getGuild(guild);
}
export async function fixGuild(guild) {

View file

@ -113,34 +113,28 @@ export function getServers(bot) {
}
// copied from eris
export function cleanMessage(message) {
let cleanContent = message.content && message.content.replace(/<a?(:\w+:)[0-9]+>/g, "$1") || "";
export function cleanMessage(message, content) {
let cleanContent = content && content.replace(/<a?(:\w+:)[0-9]+>/g, "$1") || "";
let authorName = message.author.username;
if (message.guildID) {
const member = message.guild.members.get(message.author.id);
if (member && member.nick) {
authorName = member.nick;
}
if (message.member?.nick) {
authorName = message.member.nick;
}
cleanContent = cleanContent.replace(new RegExp(`<@!?${message.author.id}>`, "g"), `@\u200b${authorName}`);
cleanContent = cleanContent.replace(new RegExp(`<@!?${message.author.id}>`, "g"), `@${authorName}`);
if (message.mentions) {
for (const mention of message.mentions.members) {
if (message.guildID) {
const member = message.guild.members.get(mention.id);
if (member && member.nick) {
cleanContent = cleanContent.replace(new RegExp(`<@!?${mention.id}>`, "g"), `@\u200b${member.nick}`);
}
if (mention.nick) {
cleanContent = cleanContent.replace(new RegExp(`<@!?${mention.id}>`, "g"), `@${mention.nick}`);
}
cleanContent = cleanContent.replace(new RegExp(`<@!?${mention.id}>`, "g"), `@\u200b${mention.username}`);
cleanContent = cleanContent.replace(new RegExp(`<@!?${mention.id}>`, "g"), `@${mention.username}`);
}
if (message.guildID && message.mentions.roles) {
for (const roleID of message.mentions.roles) {
const role = message.guild.roles.get(roleID);
const roleName = role ? role.name : "deleted-role";
cleanContent = cleanContent.replace(new RegExp(`<@&${roleID}>`, "g"), `@\u200b${roleName}`);
cleanContent = cleanContent.replace(new RegExp(`<@&${roleID}>`, "g"), `@${roleName}`);
}
}
@ -152,5 +146,5 @@ export function cleanMessage(message) {
}
}
return cleanContent.replace(/@everyone/g, "@\u200beveryone").replace(/@here/g, "@\u200bhere");
return textEncode(cleanContent);
}