Итак, пишу бота-сапорта, с функцией тикетов. Испробовал многие способы, но так и не нашел нужного для того, чтобы запретить боту создание канала, если человек уже задавал вопрос.
Исходный код:
client.on('message', async sbs => {
const userMessageDict ={};
let guild = client.guilds.get("703566530201518110");
let role = guild.roles.find(r => r.name === "@everyone")
let channel = guild.channels.find(c => c.type === 'category' && c.name === 'ticket')
if (!sbs.channel.name.startsWith('support')) return;
if (sbs.content.toLowerCase() === `${config.prefix}sob`) {
var userDiscriminator = sbs.author.discriminator; // начинается
let zapret = guild.channels.find(c => c.type === 'text' && c.name === 'ticket-' + userDiscriminator)
if (typeof zapret !== "undefined") {
return sbs.channel.send("<@" + sbs.author.id + ">, Вы уже задавали вопрос, ожидайте ответа.")
} // заканчивается
var userDiscriminator = sbs.author.discriminator;
let newchannel = await guild.createChannel('ticket-' + userDiscriminator, {
type: 'text',
permissionOverwrites: [{
id: sbs.author.id,
deny: ['MANAGE_MESSAGES'],
allow: ['SEND_MESSAGES']
}, {
id: role.id,
deny: ['VIEW_CHANNEL']
}]
});
userMessageDict[sbs.author.id] = null;
newchannel.setParent(channel.id)
sbs.delete({ timeout: 0 })
.then(() => {
return sbs.channel.send("<@" + sbs.author.id + ">, перейдите в текстовый канал <#" + newchannel.id + ">");
});
setTimeout(() => {
newchannel.delete();
console.log('Канал <#' + newchannel.id + '> был удален по истечению срока действия.')
}, 30000);
}
});
Со строки 8 по 12 (включительно) я пытался сделать проверку на существование канала и сделать оповещение о том, что человек уже задал вопрос. Дело в том, что при
if (typeof zapret !== "undefined")
(что значит не не найден=найден) бот все равно не создает канал, хоть канала и нет. Перепробовал различные варианты
typeof
, значения
undefined
,
defined
с различными значениями
=
,
!=
, но бот не выдает нужный результат.