#javascript #node.js #discord #discord.js #ticket-system
#JavaScript #node.js #Discord #discord.js #Система тикетов
Вопрос:
Я пытаюсь создать систему тикетов, но есть проблема. Я хочу сделать это, когда кто-то открывает тикет, подождите, пока тикет не закроется, а затем дайте им снова отреагировать.
Вот мой код:
const Discord = require('discord.js');
const client = new Discord.Client({
partials: ['MESSAGE', 'USER', 'REACTION'],
});
const enmap = require('enmap');
const { token, prefix } = require('./config.json');
const settings = new enmap({
name: 'settings',
autoFetch: true,
cloneLevel: 'deep',
fetchAll: true,
});
client.on('ready', () => {
console.log('Ticket System');
client.user.setActivity(`Community`, { type: 'WATCHING' });
});
client.on('message', async (message) => {
if (message.author.bot) return;
if (message.content.indexOf(prefix) !== 0) return;
const args = message.content
.slice(prefix.length)
.trim()
.split(/ /g);
const command = args.shift().toLowerCase();
if (command == 'ticket-setup') {
if (message.author == '409327435188928526') {
let channel = message.mentions.channels.first();
if (!channel) return message.reply('Usage: `!ticket-setup`');
let sent = await channel.send(
new Discord.MessageEmbed()
.setTitle('Ticket System')
.setDescription(
'If you want to buy something from us,n react with 🎫 to open a ticket'
)
.setFooter(
'Community',
''
)
.setColor('00f8ff')
);
sent.react('🎫');
settings.set(`${message.guild.id}-ticket`, sent.id);
message.channel.send('Ticket System Setup Done!');
}
}
if (command == 'close') {
if (!message.channel.name.includes('ticket-'))
return message.channel.send('You cannot use that here!');
message.channel.delete();
}
});
client.on('messageReactionAdd', async (reaction, user) => {
if (user.partial) await user.fetch();
if (reaction.partial) await reaction.fetch();
if (reaction.message.partial) await reaction.message.fetch();
if (user.bot) return;
let ticketid = await settings.get(`${reaction.message.guild.id}-ticket`);
if (!ticketid) return;
if (reaction.message.id == ticketid amp;amp; reaction.emoji.name == '🎫') {
reaction.users.remove(user);
reaction.message.guild.channels
.create(`ticket-${user.username}`, {
permissionOverwrites: [
{
id: user.id,
allow: ['SEND_MESSAGES', 'VIEW_CHANNEL'],
},
{
id: reaction.message.guild.roles.everyone,
deny: ['VIEW_CHANNEL'],
},
],
type: 'text',
})
.then(async (channel) => {
channel.send(
`<@${user.id}> Welcome!`,
new Discord.MessageEmbed()
.setDescription(
'Support will be with you shortly.n n !close to close the ticket.'
)
.setColor('00f8ff')
.setFooter(
'Community',
''
)
.setTimestamp()
);
});
}
});
client.login(token);
Кроме того, вместо того, чтобы использовать команду для закрытия тикета, я хочу, чтобы бот добавил ответ «да» и «нет» на сообщение и спросил меня, хочу ли я его закрыть.
Комментарии:
1. «Я хочу что-то сделать» — это не проблема. Проблема в том, что «я пытался что-то сделать, и это не сработало». Мы не можем написать код для вас; StackOverflow — это сайт вопросов и ответов.
2. Вам нужно будет сохранить пользователей, у которых в настоящее время открыт тикет, в переменной (или базе данных)
3. как я могу сделать это Giuliopime?