mirror of
https://github.com/Hessenuk/DiscordTickets.git
synced 2024-12-23 00:03:09 +02:00
Make /tag
and auto tag replies work
(very cool)
This commit is contained in:
parent
90c0521e35
commit
59c6ab3537
@ -8,5 +8,28 @@ module.exports = class TagCompleter extends Autocompleter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async run(value, comamnd, interaction) { }
|
/**
|
||||||
|
* @param {string} value
|
||||||
|
* @param {*} command
|
||||||
|
* @param {import("discord.js").AutocompleteInteraction} interaction
|
||||||
|
*/
|
||||||
|
async run(value, command, interaction) {
|
||||||
|
/** @type {import("client")} */
|
||||||
|
const client = this.client;
|
||||||
|
|
||||||
|
const tags = await client.prisma.tag.findMany({ where: { guildId: interaction.guild.id } });
|
||||||
|
const options = value ? tags.filter(tag =>
|
||||||
|
tag.name.match(new RegExp(value, 'i')) ||
|
||||||
|
tag.content.match(new RegExp(value, 'i')) ||
|
||||||
|
tag.regex?.match(new RegExp(value, 'i')),
|
||||||
|
) : tags;
|
||||||
|
await interaction.respond(
|
||||||
|
options
|
||||||
|
.slice(0, 25)
|
||||||
|
.map(tag => ({
|
||||||
|
name: tag.name,
|
||||||
|
value: tag.id,
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
}
|
||||||
};
|
};
|
@ -1,5 +1,6 @@
|
|||||||
const { SlashCommand } = require('@eartharoid/dbf');
|
const { SlashCommand } = require('@eartharoid/dbf');
|
||||||
const { ApplicationCommandOptionType } = require('discord.js');
|
const { ApplicationCommandOptionType } = require('discord.js');
|
||||||
|
const ExtendedEmbedBuilder = require('../../lib/embed');
|
||||||
|
|
||||||
module.exports = class TagSlashCommand extends SlashCommand {
|
module.exports = class TagSlashCommand extends SlashCommand {
|
||||||
constructor(client, options) {
|
constructor(client, options) {
|
||||||
@ -14,7 +15,7 @@ module.exports = class TagSlashCommand extends SlashCommand {
|
|||||||
autocomplete: true,
|
autocomplete: true,
|
||||||
name: 'tag',
|
name: 'tag',
|
||||||
required: true,
|
required: true,
|
||||||
type: ApplicationCommandOptionType.String,
|
type: ApplicationCommandOptionType.Integer,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'for',
|
name: 'for',
|
||||||
@ -48,5 +49,28 @@ module.exports = class TagSlashCommand extends SlashCommand {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async run(interaction) { }
|
/**
|
||||||
|
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||||
|
*/
|
||||||
|
async run(interaction) {
|
||||||
|
/** @type {import("client")} */
|
||||||
|
const client = this.client;
|
||||||
|
|
||||||
|
const user = interaction.options.getUser('for', false);
|
||||||
|
await interaction.deferReply({ ephemeral: !user });
|
||||||
|
const tag = await client.prisma.tag.findUnique({
|
||||||
|
include: { guild: true },
|
||||||
|
where: { id: interaction.options.getInteger('tag', true) },
|
||||||
|
});
|
||||||
|
|
||||||
|
await interaction.editReply({
|
||||||
|
allowedMentions: { users: user ? [user.id]: [] },
|
||||||
|
content: user?.toString(),
|
||||||
|
embeds: [
|
||||||
|
new ExtendedEmbedBuilder()
|
||||||
|
.setColor(tag.guild.primaryColour)
|
||||||
|
.setDescription(tag.content),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
@ -179,13 +179,11 @@ module.exports = class extends Listener {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let ticket = await client.prisma.ticket.findUnique({
|
const settings = await client.prisma.guild.findUnique({ where: { id:message.guild.id } });
|
||||||
include: { guild: true },
|
let ticket = await client.prisma.ticket.findUnique({ where: { id: message.channel.id } });
|
||||||
where: { id: message.channel.id },
|
|
||||||
});
|
|
||||||
|
|
||||||
if (ticket) {
|
if (ticket) {
|
||||||
if (ticket.guild.archive) {
|
if (settings.archive) {
|
||||||
try {
|
try {
|
||||||
await client.tickets.archiver.saveMessage(ticket.id, message);
|
await client.tickets.archiver.saveMessage(ticket.id, message);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@ -218,8 +216,26 @@ module.exports = class extends Listener {
|
|||||||
// TODO: if (!message.author.bot) staff status alert, working hours alerts
|
// TODO: if (!message.author.bot) staff status alert, working hours alerts
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: if (!message.author.bot) auto tag
|
if (!message.author.bot) {
|
||||||
|
const enabled =
|
||||||
|
(settings.autoTag === 'all') ||
|
||||||
|
(settings.autoTag === 'ticket' && ticket) ||
|
||||||
|
(settings.autoTag === '!ticket' && !ticket) ||
|
||||||
|
(settings.autoTag.includes(message.channel.id));
|
||||||
|
if (enabled) {
|
||||||
|
const tags = await client.prisma.tag.findMany({ where: { guildId: message.guild.id } });
|
||||||
|
const tag = tags.find(tag => message.content.match(new RegExp(tag.regex, 'mi')));
|
||||||
|
if (tag) {
|
||||||
|
await message.reply({
|
||||||
|
embeds: [
|
||||||
|
new EmbedBuilder()
|
||||||
|
.setColor(settings.primaryColour)
|
||||||
|
.setDescription(tag.content),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user