最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Refreshing Discord events - Stack Overflow

programmeradmin4浏览0评论

Hello so I wanted to refresh my events, I thought i knew how but i guess i didn't. It enters the forEach loop although it errors out at the part where it deletes the require cache

const fs = require('fs');
const path = require('path');

function reloadEvent() {
    try {
        const modelsPath = path.join(__dirname, '../src/events');
        const modelFiles = fs.readdirSync(modelsPath).filter(file => file.endsWith('.js'));

        modelFiles.forEach((file) => {
            try {
                console.log("Entered for each");
                const filePath = path.join(modelsPath, file);
                delete require.cache[require.resolve(filePath)];
                console.log(`Deleting cache for: ${file}`);
                const newEvent = require(filePath);
                console.log(`Requiring event: ${file}`);
                if (newEvent.once) {
                    client.once(newEvent.name, (...args) => newEvent.execute(...args));
                } else {
                    client.on(newEvent.name, (...args) => newEvent.execute(...args));
                }
                console.log(`Reloaded event: ${newEvent.name}`);
            } catch (error) {
                console.error(`Failed to reload event: ${file}`, error);
                
            }
        })

        console.log('events reloaded');
    } catch (error) {
        console.error(`Error refreshing events: ${error}`);
    }
}

module.exports = reloadEvent;

Hello so I wanted to refresh my events, I thought i knew how but i guess i didn't. It enters the forEach loop although it errors out at the part where it deletes the require cache

const fs = require('fs');
const path = require('path');

function reloadEvent() {
    try {
        const modelsPath = path.join(__dirname, '../src/events');
        const modelFiles = fs.readdirSync(modelsPath).filter(file => file.endsWith('.js'));

        modelFiles.forEach((file) => {
            try {
                console.log("Entered for each");
                const filePath = path.join(modelsPath, file);
                delete require.cache[require.resolve(filePath)];
                console.log(`Deleting cache for: ${file}`);
                const newEvent = require(filePath);
                console.log(`Requiring event: ${file}`);
                if (newEvent.once) {
                    client.once(newEvent.name, (...args) => newEvent.execute(...args));
                } else {
                    client.on(newEvent.name, (...args) => newEvent.execute(...args));
                }
                console.log(`Reloaded event: ${newEvent.name}`);
            } catch (error) {
                console.error(`Failed to reload event: ${file}`, error);
                
            }
        })

        console.log('events reloaded');
    } catch (error) {
        console.error(`Error refreshing events: ${error}`);
    }
}

module.exports = reloadEvent;

If there is an actual way of refreshing discord events, please tell me. I haven't seen anything in the guides

Share Improve this question asked Mar 17 at 19:27 2milliongunguy2milliongunguy 212 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

You can try for loop instead of forEach:

 for (const file of modelFiles) {
   const filePath = path.join(modelsPath, file);
   delete require.cache[require.resolve(filePath)];
   console.log(`Deleting cache for: ${file}`);
   const newEvent = require(filePath);
   if (newEvent.once) {
    client.once(newEvent.name, (...args) => 
    newEvent.execute(...args));
   } else {
    client.on(newEvent.name, (...args) => newEvent.execute(...args));
   }
 }
发布评论

评论列表(0)

  1. 暂无评论