简体   繁体   English

我如何定义公会(discord.js)

[英]How can I define guild(discord.js)

I am trying to make a discord bot that when you type !mute @user it gives them the muted role and if there is no muted role it makes one and adds it to the user.我正在尝试制作一个不和谐的机器人,当您输入 !mute @user 时,它会给他们静音角色,如果没有静音角色,它会创建一个并将其添加到用户。 Here is my code: else if (message.content.startsWith( ${prefix}mute )) {这是我的代码: else if (message.content.startsWith( ${prefix}mute )) {

let role = message.guild.roles.cache.find(x => x.name == 'mute');
if(!role) {
    guild.roles.create({
        data: {
          name: 'mute haha',
          color: 'GRAY',
        },
        reason: 'you probably spammed',
      })
        .then(console.log)
        .catch(console.error);
    }
const user = message.mentions.users.first();
if (user) {
    const member = message.guild.members.resolve(user);
    if (member) {
        let mute = message.guild.roles.cache.find(role => role.name === "mute");
        member.addRole(mute);
    } else {
        message.channel.send("That user isn't in this server");
    }
} else {
    message.channel.send("You didn't mention the user to kick");
}

and this is the error that i get when i try to run it:这是我尝试运行它时遇到的错误:

C:\Users\COOKIE\Desktop\bot\main.js:157
                        guild.roles.create({
                              ^

TypeError: Cannot read properties of undefined (reading 'roles')
    at Client.<anonymous> (C:\Users\COOKIE\Desktop\bot\main.js:157:10)
    at Client.emit (node:events:390:28)
    at MessageCreateAction.handle (C:\Users\COOKIE\Desktop\bot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:18)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\COOKIE\Desktop\bot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\COOKIE\Desktop\bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:350:31)
    at WebSocketShard.onPacket (C:\Users\COOKIE\Desktop\bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:443:22)
    at WebSocketShard.onMessage (C:\Users\COOKIE\Desktop\bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:300:10)
    at WebSocket.onMessage (C:\Users\COOKIE\Desktop\bot\node_modules\ws\lib\event-target.js:199:18)
    at WebSocket.emit (node:events:390:28)
    at Receiver.receiverOnMessage (C:\Users\COOKIE\Desktop\bot\node_modules\ws\lib\websocket.js:1022:20)

The error states that guild is not defined, that is because guild is actually a property of the message object, so you should be doing错误指出guild未定义,那是因为guild实际上是消息对象的一个​​属性,所以你应该这样做

message.guild.roles.create()

And make sure you check that the command is being run in a guild and not inside the user's DM, otherwise guild will be undefined并确保您检查该命令是在公会中运行而不是在用户的 DM 内运行,否则公会将是未定义的

if (!message.guild) return console.log('command is being run outside a server');
message.guild.roles.create(/* do ur stuff*/);
// rest of the code

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM