我的问题是关于不和谐机器人的这些行:
client.users.get("idhere")
.send("message")
如何将其转换为一个脚本,该脚本需要一个参数并希望它是一个用户ID? (您能发送脚本吗?)
所以我可以输入[$dm (userid) (msg)]
注意:我希望漫游器通过其ID向用户发送DM
这是我当前的代码:
const Discord = require('discord.js');
const client = new Discord.Client();
client.on("ready", () => {
console.log("the bot is ready...");
client.user.setGame("prefix is $");
});
const prefix = "$";
client.on("message", (message) => {
const args = message.content.slice(prefix.length).trim().split(/ +/);
const cmdname = args.shift().toLowerCase();
mention = message.mentions.users.first();
if (cmdname == 'send') {
if (mention == null) return;
message.delete();
args.shift();
mention.send(args.join(' '));
message.channel.send("done");
}
});
client.login('token');
答案 0 :(得分:0)
您绝对应该学习js的基础知识。
因此,基本上,您可以先检查是否有提及,以及是否没有尝试通过ID获取用户。
const Discord = require('discord.js');
const client = new Discord.Client();
client.on ("ready", () => {
console.log("the bot is ready...");
client.user.setGame ("prefix is $");
});
client.on ("message", (message) => {
const args = message.content.slice(prefix.length).trim().split(/ +/);
const cmdName = args.shift().toLowerCase();
const prefix = "$";
if (cmdName == 'send') {
message.delete();
let targetChannel;
let mention = message.mentions.users.first();
if (!mention) targetChannel = client.users.get(args[0]); // if there is no mention we tring to get user from id
else targetChannel = mention;
if (!targetChannel) {
const embed = new Discord.RichEmbed()
.setColor("RANDOM")
.setDescription('You need to mention user or provide his id.')
message.channel.send(embed).then(msg => msg.delete(5000));
return;
}
let text = args.slice(1).join(' '); // removing id or mention
if (!text) {
const embed = new Discord.RichEmbed()
.setColor("RANDOM")
.setDescription('You need to provide text to send.')
message.channel.send(embed).then(msg => msg.delete(5000));
return;
}
targetChannel.send(text);
const embed = new Discord.RichEmbed()
.setColor("RANDOM")
.setDescription('Successufully sended message.')
message.channel.send(embed).then(msg => msg.delete(5000));
}
});
client.login('token');
答案 1 :(得分:0)
由于message.mentions.users.first();
返回未定义,我们可以对提及变量进行简单而快速的更改:
const mention = message.mentions.users.first() || client.users.get(args[0]);
如果未提及任何用户,您将尝试使用该用户的ID。