@WayneWayne

Как правильно задать проверку существования канала в discord.js?

Итак, пишу бота-сапорта, с функцией тикетов. Испробовал многие способы, но так и не нашел нужного для того, чтобы запретить боту создание канала, если человек уже задавал вопрос.
Исходный код:
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 с различными значениями =, !=, но бот не выдает нужный результат.
  • Вопрос задан
  • 979 просмотров
Решения вопроса 1
@WayneWayne Автор вопроса
Собственно, ответа не дождался, испробовав несколько десятков вариантов нашел решение.
Может быть кому-нибудь понадобится:
let channela = guild.channels.find(c => c.name == 'ticket')
            if(channela)
            sbs.delete({ timeout: 0 })
            .then(() => {
                return sbs.channel.send("<@" + sbs.author.id + ">, Вы уже задавали вопрос, ожидайте проверки.");
            });
            console.log("Канал найден.");
            if(!channela) {
                console.log("Канал не найден.");
            }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
29 нояб. 2024, в 07:44
20000 руб./за проект
29 нояб. 2024, в 04:45
5000 руб./за проект
29 нояб. 2024, в 04:42
5000 руб./за проект