【问题标题】:My create role command creates a role with "new role" name only我的创建角色命令仅创建一个具有“新角色”名称的角色
【发布时间】:2021-07-27 18:00:24
【问题描述】:

如果我编写命令!rang moderator 4af7d4,我的机器人会发送一条消息说“创建了新角色”,它会创建一个名称为"new role" 而不是名称"moderator" 的角色(命令后的第一个参数)。

这是我当前的代码:

client.on('message', (message) =>{
    if(message.content.startsWith(`${prefix}rang`)){
    if(!message.member.hasPermission('MANAGE_ROLES'))return message.channel.send('nincs jogod ehhez!');
    var args = message.content.split(" ");
    args.shift();

    message.guild.roles.create({
        name: args[0],
        color: args[1]
    })
    .then(role =>{ 
        console.log('Rang elkészítve')
        message.channel.send(`${role.name} létrehozva`)
    })
    .catch(err => console.log(err));
    }
})

【问题讨论】:

  • 有问题吗?有什么问题吗?
  • 您能告诉我们您的问题吗?
  • 对不起我的英语,我来自匈牙利。我想创建一个创建角色的命令。您可以给角色名称和颜色。当我写这个命令(例如:!rang 主持人 4af7d4)时,机器人会发送一条消息:创建了新角色,他创建了一个角色,命名为:新角色。它没有颜色,这个名字不是版主。我不知道如何解决它。

标签: javascript node.js discord discord.js


【解决方案1】:

RoleManager#create() 接受具有两个可选属性 datareasonoptions 对象。 data 是一个RoleData,它具有namecolorpositionpermissions 等属性。

问题是您提供了一个带有两个键的对象; namecolor,但它们应该在 data 对象中,如下所示:

roles.create({
  data: {
    name: args[0],
    color: args[1],
  },
})

我对您的代码进行了一些更改,因此这是您使用 cmets 的完整代码:

client.on('message', (message) => {
  const args = message.content.slice(prefix.length).split(/ +/);
  // move the first args to a variable named command
  const command = args.shift().toLowerCase();

  // you only need to check the command now, not the prefix
  if (command === 'rang') {
    if (!message.member.hasPermission('MANAGE_ROLES'))
      return message.channel.send('Nincs jogod ehhez!');

    // send an error message if role name is not provided
    if (!args[0])
      return message.channel.send('Rang nevének megadása kötelező');

    message.guild.roles
      .create({
        data: {
          name: args[0],
          // you can add a random colour if the color is not provided
          color: args[1] || 'RANDOM',
        },
      })
      .then((role) => {
        message.channel.send(`${role} rang létrehozva`);
      })
      .catch((err) => console.log(err));
  }
});

结果如下:

【讨论】:

  • köszi szépen! :D
  • Szívesen :) 如果它回答了您的问题,请单击上面的复选标记 (✓) 接受它。干杯;)
猜你喜欢
  • 2012-10-18
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 2017-08-10
  • 2020-08-20
  • 2019-06-26
  • 2019-05-05
  • 2021-10-10
相关资源
最近更新 更多