我使用discord.js库和node.js来创建一个促进扑克的Discord机器人。除了向所有人展示双手外,它是有用的,我需要循环播放玩家并用手向他们发送DM。
bot.on("message", message => {
message.channel.sendMessage("string");
});
这是在任何用户发送消息时向消息发送消息的代码。我需要机器人在私人频道回复;我看过dmChannel
,但我不明白如何使用它。我有要向其发送消息的成员的用户名。
一个例子将不胜感激。
编辑:
在寻找用户对象之后,我发现我可以使用客户端(bot)的.users
属性来获取所有用户。我会尽快尝试使用user.sendMessage("string")
方法。
答案 0 :(得分:16)
为了让机器人发送消息,您需要<client>.send()
,client
是机器人将消息发送到的地方(A通道,服务器中的任何位置或PM)。由于您希望机器人对特定用户进行PM,因此您可以使用message.author
作为client
。 (您可以在消息或其他内容中替换author
提及的用户,等等)
因此,答案是:message.author.send("Your message here.")
我建议您在遇到卡片时查找有关某个对象属性的Discord.js文档,您可能会发现可以作为解决方案的特定功能。
答案 1 :(得分:3)
现在是 v12 的仅供参考
client.users.fetch('487904509670337509', false).then((user) => {
user.send('heloo');
});
其中 '487904509670337509'
是 ID 号。
答案 2 :(得分:2)
上述答案也可以正常使用,但我发现您通常只能使用message.author.send("blah blah")
代替message.author.sendMessage("blah blah")
。
.send往往比.sendMessage更好地为我工作,它有时遇到问题。 希望有点儿帮忙!
答案 3 :(得分:1)
如果您希望键入消息,然后您的机器人将其发送给用户,则代码如下。它也有角色限制:)
case 'dm':
mentiondm = message.mentions.users.first();
message.channel.bulkDelete(1);
if (!message.member.roles.cache.some(role => role.name === "Owner")) return message.channel.send('Beep Boing: This command is way too powerful for you to use!');
if (mentiondm == null) return message.reply('Beep Boing: No user to send message to!');
mentionMessage = message.content.slice(3);
mentiondm.send(mentionMessage);
console.log('Message Sent!')
break;
答案 4 :(得分:0)
让代码说出if (msg.content === ('trigger') msg.author.send('text')}
答案 5 :(得分:0)
这很简单,这里是一个例子
在此处添加命令代码,例如:
if(cmd === `!dm`){
let dUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]);
if (!dUser) return message.channel.send("Can't find user!")
if(!message.member.hasPermission("ADMINISTRATOR")) return message.reply("You can't you that command!")
let dMessage = args.join(" ").slice(22);
if(dMessage.length < 1) return message.reply('You must supply a message!')
dUser.send(`${dUser} A moderator from WP Coding Club sent you: ${dMessage}`)
message.author.send(`${message.author} You have sent your message to ${dUser}`)
}
答案 6 :(得分:0)
target.send('string')应该起作用
答案 7 :(得分:0)
如果要将消息发送给预定的人(例如您自己),则可以对其进行设置,以使消息传递到的通道将是他们(您自己)的用户ID。因此,例如,如果您使用的是Digital Trends的Discord机器人教程,其中说“ to:”,您将继续使用其(或您的)用户ID。例如,使用特定代码的设置方式,您可以执行“ to:userID”,它会向该人发送消息。或者,如果您希望机器人在有人使用特定命令的任何时间向您发送消息,则可以执行“至:'12345678890'”,这些数字将填充实际的用户ID。希望这会有所帮助!
答案 8 :(得分:0)
要向用户发送消息,您首先需要一个User
实例,代表您要将消息发送给的用户。
User
实例
做message.autor
User
从用户ID获得一个client.fetchUser
实例获得用户实例后,您可以使用.send
发送消息client.on('message', msg => {
if(!msg.author.bot) msg.author.send("ok " + msg.author.id)
})
client.fetchUser("487904509670337509",false).then(user => {
user.send("heloo",)
})
答案 9 :(得分:-1)
一种简单的方法是执行以下操作:
const channel = client.channels.cache.get("CHANNEL_ID");
channel.send("Hello");
const channel = client.channels.cache.get((channel) => channel.name == "CHANNEL_NAME");
channel.send("Hello");
const channel = client.channels.cache.get((channel) => channel.id == "CHANNEL_ID");
channel.send("Hello");