我为我的不和谐机器人准备了这套代码,如果您知道这是什么,那么它们应该可以通过说或拥抱或亲吻命令来工作。
问题是它可以工作一次,然后由于显示名称未定义而崩溃?
这是我的代码:
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(Logged in as ${client.user.tag}!);
});
client.on('message', message => {
let personTagged = message.mentions.members.first();
message.channel.send(message.author.username + ' has shelled ' + personTagged.displayName + ' ' + doshellAction());
});
function doshellAction() {
var rand = [
'https://media.discordapp.net/attachments/690130408276230195/712567336971927582/ku-xlarge_2.gif',
'https://media.discordapp.net/attachments/690127154742165504/712574767357493248/giphy_1.gif',
'https://media.discordapp.net/attachments/690130408276230195/712586095908487168/SizzlingFrailItaliangreyhound-size_restricted.gif',
'https://media.discordapp.net/attachments/690130408276230195/712586190418608149/NegligibleColorfulAfricanrockpython-size_restricted.gif',
'https://media.discordapp.net/attachments/690130408276230195/712586220907003944/BruisedSparseButterfly-max-1mb.gif'
];
return rand[Math.floor(Math.random() * rand.length)];
}
client.login('removed for privacy');
答案 0 :(得分:0)
您无需检查任何前缀,因此您的代码被机器人看到的任何消息触发,而这些消息并不总是提及某人。您可以采取的应对措施是在运行代码之前添加检查,以确保用户确实打算与您的机器人进行交互:
client.on('message', message => {
if (!message.content.startsWith('shell')) return;
let personTagged = message.mentions.members.first();
message.channel.send(message.author.username + ' has shelled ' + personTagged.displayName + ' ' + doshellAction())
});
在上面的示例中,我们检查消息是否以shell
开头,如果不是,则返回。要触发您的代码,用户应将shell @someone
发布到漫游器可以看到的任何频道。