Хибернация Discord бот discord.js

Опитвам се да направя режим на хибернация, при който ботът не прави нищо, но остава онлайн. Написах някои неща по-долу

    let configstuffs = JSON.parse(fs.readFileSync('config.json')) //figuring out if hibernate mode is on
    if (configstuffs.hibernate === true) {
    client.user.setPresence({ status: 'idle' })
    client.user.setActivity('Bot is hibernating')
    console.log('hibernating')
    return
    } else {
        client.user.setPresence({ status: 'online' })
        client.user.setActivity('')
        console.log('no longer hibernating')
    }

Поставих това извън моя слушател на съобщения, вътре в моя bot.once('ready', () => {}, но то казва нещо като „не може да прочете свойството „setPresence“ на null.“

Моята цел е да го направя така, че когато режимът на хибернация е активен, ботът става неактивен и задава играта си като „хибернация“ или нещо подобно, след което игнорира всички съобщения или заобикаля слушателя на съобщения. Някой има ли идеи?


person johng3587    schedule 08.05.2021    source източник


Отговори (1)


Имах опция за хибернация в моя бот и това направих

let isHibernating = false; //Global (top level) variable
const Hibernate = (client) => {
    if(!client){ return(false) }
    client.user.setPresence({ //Sets detailed presence
        activity: {
            name: "Hibernating",
            type: "PLAYING"
        },
        status: "idle",
        afk: true
    });
    isHibernating = true;
}

И във вашия манипулатор на съобщения

client.on("message", message => {
    if(isHibernating){ return(false) } //Bot is Hibernating
    // other things
    if(message.content === "hibernate" && message.author.id == "Bot owner ID"){
        Hibernate(client);
    }
});
person Akio    schedule 08.05.2021
comment
Добре, ще опитам, благодаря! - person johng3587; 08.05.2021