DiscordJS 入门:如何将响应逻辑拆分到独立JS文件并调用?
拆分DiscordJS代码到独立文件的方法
方法一:单独拆分响应列表
- 创建响应文件:在项目目录下新建
responses.js文件,把响应数组导出:
// responses.js module.exports = [ "Response 1", "Response 2", "Response 3", "Response 4", // 后续新增响应直接在这里添加即可 ];
- 在index.js中导入并使用:
替换原代码里硬编码的响应数组,改用导入的内容:
// index.js // 导入外部响应列表 const responses = require('./responses.js'); client.on("messageCreate", async (message) => { let args = message.content.trim().split(" "); if (message.author.id === "1234567890") { const member = await message.guild.members.fetch(message.author.id); const reply = responses[Math.floor(Math.random() * responses.length)]; if (Math.random() < 0.15) { message.reply(`${reply}`); } } });
方法二:把逻辑也封装成模块(更规整)
如果后续逻辑会变复杂,可以把随机回复的逻辑也拆出去:
- 创建回复模块文件:新建
randomReply.js
// randomReply.js const responses = [ "Response 1", "Response 2", "Response 3", "Response 4", ]; // 导出生成随机回复的函数 module.exports = function getRandomReply() { return responses[Math.floor(Math.random() * responses.length)]; };
- 在index.js中调用函数:
// index.js const getRandomReply = require('./randomReply.js'); client.on("messageCreate", async (message) => { let args = message.content.trim().split(" "); if (message.author.id === "1234567890") { const member = await message.guild.members.fetch(message.author.id); const reply = getRandomReply(); if (Math.random() < 0.15) { message.reply(`${reply}`); } } });
额外说明
- 如果你的项目启用了ES模块(package.json中包含
"type": "module"),需要把require换成import,导出用export default:// responses.js(ES模块格式) export default [ "Response 1", "Response 2", ]; // index.js(ES模块格式) import responses from './responses.js'; - 注意文件路径要正确,
./responses.js表示和index.js同目录的文件,若文件在子文件夹中,比如./data/responses.js,要写全路径。
内容的提问来源于stack exchange,提问作者PestFromTheWest
相关产品推荐
相关产品推荐

