Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 你能在Discord JS中声明你自己的函数吗?_Javascript_Node.js_Function_Discord_Discord.js - Fatal编程技术网

Javascript 你能在Discord JS中声明你自己的函数吗?

Javascript 你能在Discord JS中声明你自己的函数吗?,javascript,node.js,function,discord,discord.js,Javascript,Node.js,Function,Discord,Discord.js,通常我只是简单地添加到命令文件或索引文件,但它开始看起来很混乱。最近我让这个调平系统工作了 if (!levels[message.author.id]) { levels[message.author.id] = { level: 1, exp: 0 } } // Gives random EXP let randomExp = Math.floor(Math.random() *

通常我只是简单地添加到命令文件或索引文件,但它开始看起来很混乱。最近我让这个调平系统工作了

if (!levels[message.author.id]) {
        levels[message.author.id] = {
            level: 1,
            exp: 0
        }   
    }

    // Gives random EXP
    let randomExp = Math.floor(Math.random() * 5 + 5);

    // Adds the random EXP to their current EXP
    levels[message.author.id].exp += randomExp;

    // Checks their EXP and changes their level
    for (x = 0; x < expLevels.length; x++) {
        if (levels[message.author.id].exp > expLevels[x]) {
            levels[message.author.id].level = x + 1;
            message.channel.reply(`congratulations! You reached level ${levels[message.author.id].level + 1}!`);
        }
    }
    
    fs.writeFile('./levels.json', JSON.stringify(levels), err => {
        if (err) console.error(err);
    });
    
    if (levels[authorMessage.author.id].level >= 10) {
        message.member.roles.remove('720109209479413761');
        message.member.roles.add('719058151940292659');
    }
if(!levels[message.author.id]){
级别[message.author.id]={
级别:1,
经验:0
}   
}
//给出随机经验
设randomExp=Math.floor(Math.random()*5+5);
//将随机经验添加到其当前经验
级别[message.author.id].exp+=randomExp;
//检查其EXP并更改其级别
对于(x=0;xexpLevels[x]){
级别[message.author.id]。级别=x+1;
message.channel.reply(`恭喜!您达到了级别${levels[message.author.id].level+1}!`);
}
}
fs.writeFile('./levels.json',json.stringify(levels),err=>{
if(err)控制台错误(err);
});
如果(级别[authorMessage.author.id]。级别>=10){
message.member.roles.remove('720109209479413761');
message.member.roles.add('719058151940292659');
}
我希望能够将其放入自己的函数中,然后在每次有人发送消息时在“消息”部分调用它。这可能吗?或者没有,因为我需要访问“message”变量


我习惯了C++,其中的函数更容易处理。有人知道是否可以在C++中编码一个机器人或者没有支持吗?如果有一种方法,如果有人可以告诉我正确的方向开始,请让我知道。否则我可以轻松地和JS保持联系。

< P>我不确定是否存在C++的不协调框架,可能我不确定。 当然,您可以在某处定义一个函数,并在
onMessage
事件中调用它

有两种方法可以做到这一点

  • 在同一个文件中
  • 在另一个文件中
同一文件中的函数。

您可以声明一个函数,然后将参数传递给该函数。您不需要声明此处传递的参数类型

一旦你有了一个函数,你可以这样调用它

leveling(message); // here we pass the values we need to the function
在不同的文件中运行。

概念是相同的,但是我们需要导出函数以便在其他地方使用它。有两种方法可以做到这一点,要么只导出一个函数,要么导出所有函数,在专用函数文件的情况下,这是更简单的选择

注意:在本例中,我将文件命名为
functions.js
,并将其放置在与所需文件相同的目录中

调用函数。

要使用此函数,我们需要在要使用它的文件中
require
它。这里我们还有两个选择

或者需要整个文件并从中获取函数

const myfunctions = require('./functions.js'); // this is the relative path to the file
// get the function via the new constant
myfunctions.leveling(message);
或用于仅从导出的函数中获取所需内容

const { leveling } = require('./functions.js');

leveling(message);

这两种选择都有优点和缺点,但最终都是一样的。

非常详细,非常感谢。我假设我做错了什么,因为我最初在同一个文件的底部声明了函数。我将其声明为“函数级系统(authorMessage)”,并传递了“消息”。不幸的是,这给了我一个错误,因为authorMessage什么都不是。我将尝试作为一个单独的文件。好的,我创建了一个单独的文件,但仍然得到message.channel.reply不是一个函数,因为它只是在“message”事件中真正建立的。尝试使用
message
而不是
authorMessage
声明函数,然后简单地将现有代码粘贴到函数中。关于
message.channel.reply
不工作。这是因为您在回复时不使用频道。您只需要在
发送时使用它。示例:
message.reply()
message.channel.send()
啊,对了,我知道那里有奇怪的东西。再次感谢您的帮助是的,现在可以了。我只需要确定当有人升级时如何显示。这是我现在最不想做的事情,LoLuy可以用C++来制作一个不和谐的机器人。
const myfunctions = require('./functions.js'); // this is the relative path to the file
// get the function via the new constant
myfunctions.leveling(message);
const { leveling } = require('./functions.js');

leveling(message);