Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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 多个args.split().join(";)discord.js_Javascript_Discord.js_Args - Fatal编程技术网

Javascript 多个args.split().join(";)discord.js

Javascript 多个args.split().join(";)discord.js,javascript,discord.js,args,Javascript,Discord.js,Args,因此,我正在使用discord.js制作一个discord机器人。在bot中,有一个命令,您可以在其中执行赠品ping,bot将发送一个包含赞助商、奖品和消息的嵌入。但是我需要所有这些不同的参数才能有args.slice().join(“”) const Discord=require('Discord.js'); module.exports={ 名称:“赠品”, 描述:“赠品嵌入”, 执行(消息,参数){ if(!message.member.hasPermission(“提及所有人”))

因此,我正在使用discord.js制作一个discord机器人。在bot中,有一个命令,您可以在其中执行赠品ping,bot将发送一个包含赞助商、奖品和消息的嵌入。但是我需要所有这些不同的参数才能有args.slice().join(“”)


const Discord=require('Discord.js');
module.exports={
名称:“赠品”,
描述:“赠品嵌入”,
执行(消息,参数){
if(!message.member.hasPermission(“提及所有人”))返回message.channel.send('您没有执行此操作的权限!');
让赞助商=args[0];
如果(!发起人){
赞助商=‘我’;
}
让prize=args.slice(1).split('/').join(“”);
if(!prize)返回message.reply('您需要为赠品放置奖品!`-giveway`');
让userMessage=args.slice(2.join)(“”)
如果(!userMessage){
userMessage='none';
}
const giveawayingembed=new Discord.MessageEmbed()
.setTitle(':tada:giveway:tada:')
.setDescription(`shandor:${shandor}\n大小:${prize}\n消息:${userMessage}`)
},
};

您可以使用迭代消息收集器填写表单,因为在您的情况下,很难确定一条消息何时停止,另一条消息何时开始

让输入=[];//将输入声明为空数组
让setupQ=[“赞助商:”、“奖金”、“消息”];
异步函数giveway(){
对于(i=0;i<3;i++){
message.channel.send(setupQ[i]);
常量过滤器=(用户)=>{
return user.author.id===message.author.id//仅从发送命令的用户收集消息
};
试一试{
let collected=await message.channel.await messages(过滤器,{max:1,时间:15000,错误:['time']});
input[i]=collected.first().content;//接受用户输入并保存
}
捕获(e)
{
return message.channel.send(`:x:Setup cancelled-0封邮件已在时间限制内收集,请重试`)。然后(m=>m.delete({timeout:4000}));
};              
};
};
赠品()//调用async函数以启动赠品表单
此代码将以增量方式发送
inputQ
问题,并将回答保存到
input
数组中。如果您不熟悉
async/await
,请查看


请查看消息收集器语法和函数,以了解其他方法,如下所示:

var X=args.join(“”)//X是您的消息参数-根据您运行它们的方式进行更改
if(!X)返回message.channel.send(“错误-无参数”);
var赞助商=X.replace(新的RegExp('.'+“赞助商:”),''//使用正则表达式删除单词“赞助商:”后的文本:
var prize=consort.replace(新的RegExp('.'+“prize:”),'');
var messageUser=sandor.replace(新的RegExp('.'+'消息:),'';
赞助商=赞助商。替换(奖品“”)。替换(“奖品“,”)
prize=prize.replace(messageUser,“”)。replace(“message:”,“”)//删除不需要的部分
message.channel.send(赞助商);
message.channel.send(奖品);
message.channel.send(messageUser);
请注意,我没有输入验证

语法必须是
赞助商:奖品:消息:

e、 g:


请更具体地说明这个问题。什么东西不起作用?你想要什么?例子?你能再举一个用法的例子吗?当您在discord中编写命令时,该命令看起来如何?这将有助于确定事情应该如何被分割,来看看StackOverflow!请阅读,当你执行命令时,机器人会发送以下信息:@giveway ping赞助商:奖品:消息:因此,我需要做的是为每个变量使用多个单词Hey Joe Moore,感谢你在这方面的帮助。但是,唯一的问题是我需要把它全部写在一句话里。因此,如果有办法做到这一点,我将非常感激。除此之外,它工作得非常好@NoReflection不幸的是,您遇到了一个问题,即很难确定消息中的参数从何处开始和结束,例如,机器人如何知道奖金从何处结束,赞助商从何处开始?除了在消息中添加物理单词外,我想不出任何其他方法,例如
!赠品赞助商:@user prize:example message:example
——但这样做既笨重又缓慢。我的方式可能是最好的方式。是的,你的方式绝对是最好的方式。“只是他们”用户打算用机器人来主持一个赠品,然后一次性发送该命令。@n参考资料我可以用我描述的方式来做,但用上面的方式会慢得多,容易得多,但请让我知道是的,我想知道如何做,以备将来参考。顺便说一句,谢谢你早些时候的帮助!嗨,当我在这里粘贴代码并运行它时,它说X没有定义。我忘记了一个重要的部分,抱歉^!谢谢你的帮助!再次感谢你的帮助。。。因此,如果我想将它再次用于另一个命令,我将如何更改您传入的参数。例如,而不是现在!赠品赞助商:@user-prize:epic-prize-message:epic-message可能是用户名和建议之类的其他内容。有两个变量,用户名和建议,保持X不变。在RegExp中将其更改为username,而不是
“赞助商:”
。对suggestion变量执行相同的操作。然后,将其改为
username=username.replace(“建议”),而不是
sandor=sandor.replace(prize,”).replace(prize:”).replace(“prize:”)

    const Discord = require('discord.js');
    module.exports = {
        name: 'giveaway',
        description: 'giveaway embed',
        execute(message, args) {

            if(!message.member.hasPermission("MENTION_EVERYONE")) return message.channel.send('You do not have permission to do this!');
        
            let sponsor = args[0];
            if(!sponsor) {
                sponsor = 'Me';
            }

            let prize = args.slice(1).split('/').join(" ");
            if(!prize) return message.reply('You need to put a prize for the giveaway! `-giveaway <sponsor> <prize> <message>`');

            let userMessage = args.slice(2).join(' ')
            if(!userMessage) {
                userMessage = 'none';
            }
                const giveawayPingEmbed = new Discord.MessageEmbed()
                .setTitle(':tada: GIVEAWAY :tada:')
                .setDescription(`Sponsor: ${sponsor} \nPrize: ${prize} \nMessage: ${userMessage}`)

                
            
        },
    };

!giveaway sponsor: @user prize: epic prize message: epic message