【问题标题】:Cant get my random welcome messages to work in discord无法让我的随机欢迎消息不和谐地工作
【发布时间】:2021-02-18 08:38:29
【问题描述】:

我正在尝试构建自己的不和谐机器人,这很有趣,但是很难构建自己的小数组来设置多个欢迎消息,因此当有人加入时,他们会随机收到其中一条消息。

这是我当前的代码:

module.exports = ('guildMemberAdd', (member) => {
    const channel = member.guild.channels.cache.find(ch => ch.name === 'bot-testing');

    if (!channel) return;

    var messages = [
        "Welcome to Take My Sword '${member}', test 1",
        "Welcome to Take My Sword '${member}', test 2",
        "Welcome to Take My Sword '${member}', test 3",
        "Welcome to Take My Sword '${member}', test 4",
        "Welcome to Take My Sword '${member}', test 5"
    ];

    var messages = Math.floor(Math.random() * messages.length);
    
    channel.send(messageArray[rando]); 
});

这是错误消息,我收到了:

/home/discord-bot/events/member/guildMemberAdd.js:2
        const channel = member.guild.channels.cache.find(ch => ch.name === 'bot-testing');
                                     ^

TypeError: Cannot read property 'channels' of undefined
    at module.exports (/home/discord-bot/events/member/guildMemberAdd.js:2:31)
    at Client.emit (events.js:315:20)
    at Object.module.exports [as GUILD_MEMBER_ADD] (/home/discord-bot/node_modules/discord.js/src/client/websocket/handlers/GUILD_MEMBER_ADD.js:16:14)
    at WebSocketManager.handlePacket (/home/discord-bot/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (/home/discord-bot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (/home/discord-bot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
    at WebSocket.onMessage (/home/discord-bot/node_modules/ws/lib/event-target.js:132:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (/home/discord-bot/node_modules/ws/lib/websocket.js:825:20)
    at Receiver.emit (events.js:315:20)

一直在帮助我的朋友说尝试将第一行(成员)更改为(客户,成员),当我这样做时,我只是收到以下错误消息:

/home/discord-bot/events/member/guildMemberAdd.js:16
        channel.send(messageArray[rando]);
                     ^

ReferenceError: messageArray is not defined
    at module.exports (/home/discord-bot/events/member/guildMemberAdd.js:16:15)
    at Client.emit (events.js:315:20)
    at Object.module.exports [as GUILD_MEMBER_ADD] (/home/discord-bot/node_modules/discord.js/src/client/websocket/handlers/GUILD_MEMBER_ADD.js:16:14)
    at WebSocketManager.handlePacket (/home/discord-bot/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (/home/discord-bot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (/home/discord-bot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
    at WebSocket.onMessage (/home/discord-bot/node_modules/ws/lib/event-target.js:132:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (/home/discord-bot/node_modules/ws/lib/websocket.js:825:20)
    at Receiver.emit (events.js:315:20)
[nodemon] app crashed - waiting for file changes before starting...

可以理解,该数组可能完全编码错误,出现错误,但不幸的是我没有高级知识能够自己修复它,所以这就是我决定在这里提问的原因!

机器人可以写/发布到那个房间等,我正在尝试对其进行测试,所以我知道它没有权限,而且我确实有一条欢迎消息工作得很好,我只想尝试一个 Array多条欢迎信息,在加入时,他们会随机获得我决定制作多少条。

任何帮助都将不胜感激,即使它只是一个指导链接以更好地理解构建数组。

亲切的问候。

詹姆斯。

【问题讨论】:

    标签: javascript discord


    【解决方案1】:

    您的第一个错误出现在第 2 行,正如您在第一行中看到的那样:

    /home/discord-bot/events/member/guildMemberAdd.js:2
    

    你已经修好了那个,所以现在不用担心。

    您的第二个错误在第 16 行,并提到未定义名为 messageArray 的变量。看看你的代码是真的。您声明了两次名为 messages 的变量,因此首先将第二个变量重命名为 rando。这样,您将拥有一个包含所有消息的变量和一个带有随机数的变量来选择消息。

    一旦你修复了第 16 行以使用正确的变量名,那就是消息和随机数。

    应该是这样的:

    var messages = [
        "Welcome to Take My Sword '${member}', test 1",
        "Welcome to Take My Sword '${member}', test 2",
        "Welcome to Take My Sword '${member}', test 3",
        "Welcome to Take My Sword '${member}', test 4",
        "Welcome to Take My Sword '${member}', test 5"
    ];
    
    var rando = Math.floor(Math.random() * messages.length);
    
    channel.send(messages[rando]); 
    

    【讨论】:

    • 非常感谢您的帮助 :) 它确实有效,但它确实会重复测试欢迎消息。我原来的问题已经整理好了,非常感谢!!!
    • 重启了我的服务器,现在一切似乎都正常了。所以重复是由于 nodejs 上的进程管理器运行以及 nodemon 运行编辑版本,所以它仍然在下午....哈哈亲爱的我!再次感谢您的帮助。
    猜你喜欢
    • 2021-04-27
    • 2021-02-12
    • 2021-03-31
    • 2021-08-17
    • 2021-09-04
    • 2021-01-29
    • 2020-11-25
    • 2022-01-23
    • 2021-04-08
    相关资源
    最近更新 更多