我知道我并不是最擅长的东西,并且我仍在学习,但是任何人都可以帮助我解决我的错误,我知道这与我的“ let role =
”有关,并且与“ { {1}}'标志,我不确定将其更改为什么。
=
当前错误是
if (!message.member.hasPermission('MANAGE_CHANNELS')) return message.reply(Embed3)
if (!args[0]) return message.reply(Embed2)
if (!message.mentions.channels.first()) return message.reply(Embed1)
let role = message.guild.roles.cache.find(r => r.name = args[1]); //const role = message.mentions.roles.first
if (!role) return message.reply(Embed4);
我正在关注this guide,但仍然不确定该怎么做。
我们非常感谢您的帮助,谢谢,祝您生活愉快! :)
TypeError: Cannot read property 'first' of undefined
在我的index.js中,我有这个
-
EDIT 1
client.on('message', message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
let args = message.content.substring(prefix.length).split(" ");
const command = args.shift().toLowerCase();
if (command === 'lock') {
client.commands.get('lock').execute(message, args)
} else if (command === 'unlock') {
client.commands.get('unlock').execute(message, args)
}
})
在此行之后停止打印
EDIT 2
答案 0 :(得分:0)
因此,根据我在不和谐文档中的阅读内容
https://discord.js.org/#/docs/main/stable/class/Message?scrollTo=mentions https://discord.js.org/#/docs/main/stable/class/MessageMentions?scrollTo=channels
以及我在您的代码中看到的内容:
如果在不同渠道中没有提及,则提及可能没有设置channels
属性。因此,您可能需要检查以下内容:
if (message.mentions.channels || !message.mentions.channels.first()) return message.reply(Embed1)
您使用的发现也很奇怪:
let role = message.guild.roles.cache.find(r => r.name = args[1]);
filter方法中的此语句将始终将高速缓存的名称设置为args [1]并返回该值。如果args [1]是真实的,则它将返回第一个缓存对象。 您需要在这里进行比较
let role = message.guild.roles.cache.find(r => r.name == args[1]); // does not check type
or
let role = message.guild.roles.cache.find(r => r.name === args[1]); // checks type
编辑2:
您可能还需要检查访问channel.first()
道具的方式。 channel.first()
是一种方法。如果您希望此方法的结果一定要调用它。
并使用then
方法正确处理承诺。由于setName会发出承诺,因此您需要接受它!
https://discord.js.org/#/docs/main/stable/class/GuildChannel?scrollTo=setName
message.mentions.channels.first().setName(`?${channel.name}`).then((result) => { // If channel name is not changed it's being rate limited.
try {
await channel.updateOverwrite(role, {
SEND_MESSAGES: false
});
message.channel.send(Embed6);
} catch (err) {
console.log(err);
message.channel.send(Embed7);
}
});
还应确保完全内联代码并检查控件结构。如果您使用的是VScode,请使用格式方法:How do you format code in Visual Studio Code (VSCode)
请尝试阅读现代JS中的async / await语句。 https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/async_function
如果要在此处使用await语句,请将其包装在异步函数中,或使用then
方法在处理后继续执行。
答案 1 :(得分:-1)
我相信您的错误可能是试图在频道中找到第一个提到的用户。您可能需要为此使用<div class="ansicht">
<div class="b_dotted" group="1" id="argumente1" draggable="true" ondragstart="drag(event)">Was ist mit</div>
<div class="b_dotted" group="2" id="argumente2" draggable="true" ondragstart="drag(event)">Individualismus</div>
<div class="b_dotted" group="3" id="argumente3" draggable="true" ondragstart="drag(event)">Der Trittbettfahrer-Vorwand</div>
<div class="b_dotted" group="4" id="argumente4" draggable="true" ondragstart="drag(event)">Technologischer Optimismus </div>
<div class="b_dotted" group="1" id="argumente5" draggable="true" ondragstart="drag(event)">Alles Gerede, wenig Handlung</div>
<div class="b_dotted" group="2" id="argumente6" draggable="true" ondragstart="drag(event)">Lösungskonzept Fossile Energieträger</div>
<div class="b_dotted" group="3" id="argumente7" draggable="true" ondragstart="drag(event)">Keine Peitsche, nur Zuckerbrot </div>
<div class="b_dotted" group="4" id="argumente8" draggable="true" ondragstart="drag(event)">Berufung auf Soziale Gerechtigkeit </div>
<div class="b_dotted" group="1" id="argumente9" draggable="true" ondragstart="drag(event)">Perfektionismus</div>
<div class="b_dotted" group="2" id="argumente10" draggable="true" ondragstart="drag(event)">Berufung auf Wohlstand </div>
<div class="b_dotted" group="3" id="argumente11" draggable="true" ondragstart="drag(event)">Der Untergang</div>
<div class="b_dotted" group="4" id="argumente12" draggable="true" ondragstart="drag(event)">Veränderung ist unmöglich</div>
</div>
<div id="grenze">
<img class="dropzone" group="1" id="wolke1" ondrop="drop(event)" ondragover="allowDrop(event)" src="img/wolke1.png">
<img class="dropzone" group="2" id="wolke2" ondrop="drop(event)" ondragover="allowDrop(event)" src="img/wolke2.png">
<img class="dropzone" group="3" id="wolke3" ondrop="drop(event)" ondragover="allowDrop(event)" src="img/wolke3.png">
<img class="dropzone" group="4" id="wolke4" ondrop="drop(event)" ondragover="allowDrop(event)" src="img/wolke4.png">
</div>
。如果您使用异步,请确保遵守诺言!
如果这不是您想要的,而您只是想找到运行该命令的消息中提到的第一个用户,则需要使用:
.fetch()