Discord.js 如何修复';提供的参数既不是用户也不是角色;

Discord.js 如何修复';提供的参数既不是用户也不是角色;,discord.js,commando,Discord.js,Commando,我试图让机器人扮演角色并转到命令参数中的指定通道。 代码将使bot转到指定的通道,并为bot刚刚创建的角色添加权限,这就是问题所在。 VSC中的控制台表示“未指定角色/用户”,它跳过了这一点 我已尝试将arole更改为var,并将arole(message.arole)设置为arole.id,但仍然无法工作。胡闹和更改设置根本不起作用 let woaID=message.indications.channels.first(); if(!woaID)返回message.channel.send(

我试图让机器人扮演角色并转到命令参数中的指定通道。
代码将使bot转到指定的通道,并为bot刚刚创建的角色添加权限,这就是问题所在。
VSC中的控制台表示“未指定角色/用户”,它跳过了这一点

我已尝试将
arole
更改为var,并将
arole
message.arole
)设置为
arole.id
,但仍然无法工作。胡闹和更改设置根本不起作用

let woaID=message.indications.channels.first();
if(!woaID)返回message.channel.send(“通道不存在或命令格式不正确。请执行s!woa#(channelname)”);
让specifiedchannel=message.guild.channels.find(t=>t.id==woaID.id);
var arole=message.guild.createRole({
名称:`A marker v1.0`,
颜色:0xCC3B3B3B,
举倾机构:错误,
可提及:错误,
权限:['SEND_MESSAGES']
}).catch(控制台错误);
message.channel.send(“已创建角色…”);
message.channel.send(“角色设置…”);
/*const sbwrID=message.guild.roles.find(`null v1.0`);
让specifiedrole=message.guild.roles.find(r=>r.id==sbwrID.id)*/
message.channel.send('Modified');
指定的频道覆盖权限(message.arole{
查看频道:正确,
发送消息:false
})
.then(updated=>console.log(updated.permissionOverwrites.get(arole.id)))
.catch(控制台错误);
我希望bot能够访问args中指定的通道,并为该通道创建角色和覆盖角色权限


实际输出是bot做得很好,但是角色没有频道的特殊权限。

您的代码有两个主要问题:

  • 不同步返回
    角色
    :它返回
    承诺
    ,因此实际上您没有提供角色作为
    .overwritePermissions()的参数
  • 创建角色后(如果将其正确存储在
    arole
    ),您将无法以
    message.arole
    的形式访问该角色
您可以使用
async/await
或使用
.then()
promise方法来完成此操作。
如果您对承诺或异步代码没有信心,您应该尝试了解一些关于它的信息,这非常有用:签出、MDN的文档和文档

下面是一个例子:

message.guild.createRole({
名称:`A marker v1.0`,
颜色:0xCC3B3B3B,
举倾机构:错误,
可提及:错误,
权限:['SEND_MESSAGES']
}).然后(异步arole=>{
let updated=等待指定的通道。覆盖权限(arole{
查看频道:正确,
发送消息:false
});
log(updated.permissionOverwrites.get(arole.id));
}).catch(控制台错误);

您的代码有两个主要问题:

  • 不同步返回
    角色
    :它返回
    承诺
    ,因此实际上您没有提供角色作为
    .overwritePermissions()的参数
  • 创建角色后(如果将其正确存储在
    arole
    ),您将无法以
    message.arole
    的形式访问该角色
您可以使用
async/await
或使用
.then()
promise方法来完成此操作。
如果您对承诺或异步代码没有信心,您应该尝试了解一些关于它的信息,这非常有用:签出、MDN的文档和文档

下面是一个例子:

message.guild.createRole({
名称:`A marker v1.0`,
颜色:0xCC3B3B3B,
举倾机构:错误,
可提及:错误,
权限:['SEND_MESSAGES']
}).然后(异步arole=>{
let updated=等待指定的通道。覆盖权限(arole{
查看频道:正确,
发送消息:false
});
log(updated.permissionOverwrites.get(arole.id));
}).catch(控制台错误);