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(控制台错误);