我一直在寻找答案,但似乎没有任何效果。也许有人可以帮我吗?
“!imprison1 @user垃圾邮件”应导致漫游器发送一条消息“用户已因垃圾邮件而被监禁”,并向该用户添加一个名为“囚犯”的角色。
const Discord = require('discord.js');
const config = require('./config.json');
const client = new Discord.Client();
client.once('ready', () => {
console.log('Ready!');
});
function getUserFromMention(mention) {
if (!mention) return;
if (mention.startsWith('<@') && mention.endsWith('>')) {
mention = mention.slice(2, -1);
if (mention.startsWith('!')) {
mention = mention.slice(1);
}
return client.users.cache.get(mention);
}
}
function getUserFromMentionRegEx(mention) {
const matches = mention.match(/^<@!?(\d+)>$/);
const id = matches[1];
return client.users.cache.get(id);
}
client.on('message', (message) => {
if (!message.content.startsWith(config.prefix)) return;
const withoutPrefix = message.content.slice(config.prefix.length);
const split = withoutPrefix.split(/ +/);
const command = split[0];
const args = split.slice(1);
if (command === 'imprison1') {
if (args[0]) {
let user = getUserFromMention(args[0]);
if (!user) {
return message.reply('Invalid user.');
}
return message.channel.send(
`${user.username} has been imprisoned for ${args[1]}`
);
user.roles.add('749291623170572428');
}
return message.channel.send(`Add @mention to imprison a user.`);
}
});
答案 0 :(得分:0)
由于您的函数,<span data-reactid="36">At close: 3:30PM IST</span>
返回一个getUserFromMention
对象,而不是User
对象。
更改:
GuildMember
使用:
return client.users.cache.get(mention);
// Remember to pass the message as the second parameter, as the message is undefined currently.
return message.guild.members.cache.get(mention);