向用户发送私信
Sending private messages to user
我正在使用 discord.js 库和 node.js 创建一个促进扑克的 Discord 机器人。它是功能性的,除了向所有人展示手,我需要遍历玩家并用他们的手向他们发送 DM。
bot.on("message", message => {
message.channel.sendMessage("string");
});
这是任何用户发送消息时向频道发送消息的代码。我需要机器人在私人频道回复;我看过 dmChannel
,但我不明白如何使用它。我有要向其发送消息的成员的用户名。
一个例子将不胜感激。
编辑:
在四处寻找用户对象后,我发现我可以使用客户端(bot)的 .users
属性 获取所有用户。我会尽快尝试使用 user.sendMessage("string")
方法。
为了让机器人发送消息,您需要 <client>.send()
,client
是机器人将消息发送到的地方(一个频道,在服务器的任何地方,或者一个 PM ).由于您希望机器人向某个用户发送 PM,因此您可以使用 message.author
作为您的 client
。 (您可以将 author
替换为消息中提到的用户等)
因此,答案是:message.author.send("Your message here.")
我建议您在遇到问题时查看有关特定对象属性的 Discord.js 文档,您可能会找到可以作为解决方案的特定函数。
以上答案也很有效,但我发现您通常可以只使用 message.author.send("blah blah")
而不是 message.author.sendMessage("blah blah")
。
-编辑-:这是因为 sendMessage 命令在 Discord Js 的 v12 中已经过时
.send 通常比 .sendMessage 更适合我,后者有时会遇到问题。
希望对您有所帮助!
让代码说 if (msg.content === ('trigger') msg.author.send('text')}
这很简单,这是一个例子
在此处添加您的命令代码,例如:
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}`
);
}
如果您想将消息发送给预定的人,例如您自己,您可以将其设置为接收消息的频道是他们(您的)自己的用户 ID。因此,例如,如果您正在使用 Digital Trends 的 discord bot 教程,其中显示 "to: ",您将继续使用他们(或您的)用户 ID。例如,根据特定代码的设置方式,您可以执行 "to: userID",它会向该人发送消息。或者,如果您希望机器人在有人使用特定命令时随时向您发送消息,您可以执行 "to: '12345678890'",数字是实际用户 ID 的填充符。希望这对您有所帮助!
要向用户发送消息,您首先需要获得一个 User
实例。
获取用户实例
- 使用用户发送的消息的
message.author
属性。
- 用用户的 id
调用 client.users.fetch
获得用户实例后,您可以使用 .send
发送消息
例子
client.on('message', (msg) => {
if (!msg.author.bot) msg.author.send('ok ' + msg.author.id);
});
client.users.fetch('487904509670337509', false).then((user) => {
user.send('hello world');
});
如果您希望键入消息,然后您的机器人会将其发送给用户,请使用此处的代码。它也有角色限制:)
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;
现在仅供参考 v12
client.users.fetch('487904509670337509', false).then((user) => {
user.send('heloo');
});
其中 '487904509670337509'
是身份证号码。
我正在使用 discord.js 库和 node.js 创建一个促进扑克的 Discord 机器人。它是功能性的,除了向所有人展示手,我需要遍历玩家并用他们的手向他们发送 DM。
bot.on("message", message => {
message.channel.sendMessage("string");
});
这是任何用户发送消息时向频道发送消息的代码。我需要机器人在私人频道回复;我看过 dmChannel
,但我不明白如何使用它。我有要向其发送消息的成员的用户名。
一个例子将不胜感激。
编辑:
在四处寻找用户对象后,我发现我可以使用客户端(bot)的 .users
属性 获取所有用户。我会尽快尝试使用 user.sendMessage("string")
方法。
为了让机器人发送消息,您需要 <client>.send()
,client
是机器人将消息发送到的地方(一个频道,在服务器的任何地方,或者一个 PM ).由于您希望机器人向某个用户发送 PM,因此您可以使用 message.author
作为您的 client
。 (您可以将 author
替换为消息中提到的用户等)
因此,答案是:message.author.send("Your message here.")
我建议您在遇到问题时查看有关特定对象属性的 Discord.js 文档,您可能会找到可以作为解决方案的特定函数。
以上答案也很有效,但我发现您通常可以只使用 message.author.send("blah blah")
而不是 message.author.sendMessage("blah blah")
。
-编辑-:这是因为 sendMessage 命令在 Discord Js 的 v12 中已经过时
.send 通常比 .sendMessage 更适合我,后者有时会遇到问题。 希望对您有所帮助!
让代码说 if (msg.content === ('trigger') msg.author.send('text')}
这很简单,这是一个例子
在此处添加您的命令代码,例如:
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}`
);
}
如果您想将消息发送给预定的人,例如您自己,您可以将其设置为接收消息的频道是他们(您的)自己的用户 ID。因此,例如,如果您正在使用 Digital Trends 的 discord bot 教程,其中显示 "to: ",您将继续使用他们(或您的)用户 ID。例如,根据特定代码的设置方式,您可以执行 "to: userID",它会向该人发送消息。或者,如果您希望机器人在有人使用特定命令时随时向您发送消息,您可以执行 "to: '12345678890'",数字是实际用户 ID 的填充符。希望这对您有所帮助!
要向用户发送消息,您首先需要获得一个 User
实例。
获取用户实例
- 使用用户发送的消息的
message.author
属性。 - 用用户的 id 调用
client.users.fetch
获得用户实例后,您可以使用 .send
发送消息例子
client.on('message', (msg) => {
if (!msg.author.bot) msg.author.send('ok ' + msg.author.id);
});
client.users.fetch('487904509670337509', false).then((user) => {
user.send('hello world');
});
如果您希望键入消息,然后您的机器人会将其发送给用户,请使用此处的代码。它也有角色限制:)
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;
现在仅供参考 v12
client.users.fetch('487904509670337509', false).then((user) => {
user.send('heloo');
});
其中 '487904509670337509'
是身份证号码。