我正在尝试构建自己的 Discord 机器人,这非常有趣,但很难构建自己的小数组来设置多条欢迎消息,因此当有人加入时,他们会随机收到其中一条消息。
>这是我当前的代码:
final result = myMap.entries
.map((entry) => [
sensationList
.firstWhere((element) => element.code == entry.key)
.title,
entry.value
])
.toList();
print(result);
// ([Tremori, 5], [Nausea, 5], [Dolore al petto, 6], ..., [Sensazione di soffocamento, 1], [Sudorazione intensa, 1])
这是我收到的错误消息:
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]);
});
我一直在帮助我的朋友说尝试将第一行 (member) 更改为 (client, member),当我这样做时,我只会收到此错误消息:
/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)
可以理解,该数组可能完全编码错误,消除了错误,但不幸的是,我没有能够自行修复它的高级知识,因此我决定在这里提问!
机器人可以写/发布到那个房间等,我正在尝试对其进行测试,所以我知道它没有权限,而且我确实有一条欢迎消息工作得很好,我只想尝试一个数组多条欢迎信息,加入时他们会随机收到一条我决定要发送的信息。
任何帮助都将不胜感激,即使它只是一个指导更好地理解构建数组的链接。
亲切的问候。
詹姆斯。
答案 0 :(得分:2)
正如您在第一行中看到的那样,您的第一个错误出现在第 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]);