【问题标题】:Using values of an array as a value in a discord embed使用数组的值作为不和谐嵌入中的值
【发布时间】:2020-08-28 06:57:15
【问题描述】:

我正在尝试制作一个机器人,该机器人会列出加入突袭队列的玩家列表。当您键入 !join 时,它应该将您添加到 playerlist 数组中(按预期工作)。然后,我想将分配给该数组的值作为不和谐消息嵌入中的字段传递。当您输入 !fireteam 时,它应该显示嵌入显示输入 !join 的每个人的用户名。它几乎可以按预期工作,我唯一的问题是,每次有人键入 join 命令时,它都会再次添加整个数组,而不是最新添加到数组中。

const Discord = require('discord.js');
const { prefix, token } = require('./config.json');
const { default: Collection } = require('@discordjs/collection');

const client = new Discord.Client();

const playerlist = [];


const pListEmbed = new Discord.MessageEmbed()
.setColor('#3CB371')
.setTitle('RAID')
.addFields(
    {name: 'Fireteam', value: "Players who have joined: ", inline: true}
)


function joinpug(message) {
    if(playerlist.length <= 5){
    playerlist.push(message.author.username)
    console.log(playerlist);

    pListEmbed.addFields({name: "Player", value: `**${playerlist}**` + " ", inline: true})

    }else{
        message.channel.send(pListEmbed)}
}


client.once('ready', () => {
    console.log('Ready!');
});


client.on('message', message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).split(/ +/);
    const command = args.shift().toLowerCase();

    if (command === 'join') {
        joinpug(message);
    } else if(command=== `fireteam`){
        message.channel.send(pListEmbed);
    }

});


client.login('');

对不起,如果这是一个简单的问题,我对 JS 很陌生。

【问题讨论】:

  • This 是嵌入的图片,如果有帮助的话

标签: javascript discord discord.js


【解决方案1】:

好吧,如果我没记错的话,您的问题是重复值,快速解决此问题的方法是在您的 joinpug 上使用 Set

function joinpug(message) {
    if(playerlist.length <= 5){
    playerlist = playerlis.push(message.author.username)
    playerlist = [...new Set(playerlist)] ;
    console.log(playerlist);

    pListEmbed.addFields({name: "Player", value: `**${playerlist}**` + " ", inline: true})

    }else{
        message.channel.send(pListEmbed)}
}

【讨论】:

  • 您好,感谢您的回答。当我尝试你的答案时,它给了我一个错误,上面写着playerlist = playerlist.push(message.author.username) TypeError: Assignment to constant variable.(如果你有更多关于如何解决这个问题的想法,我将不胜感激)
  • 只需确保将const playerlist 更改为let playerlist
【解决方案2】:

每次创建一个新字段时,您都会添加 playerlist 作为字段的值,因此它会添加整个数组,而不是您应该像这样添加作者的姓名

pListEmbed.addFields({name: "Player", value: `**${message.author.name}**` + " ", inline: true})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-14
    • 2020-09-27
    • 2022-01-14
    • 2021-06-26
    • 2021-12-20
    • 2022-01-14
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多