javascript - 怎么发DM消息给作者的反应?
问题描述
如何让机器人向点击反应的用户发送 DM 消息?
client.on("message", (msg) => {
if (msg.guild && msg.content.startsWith("!test")) {
client.channels.cache.get("813782841187631126").send("Test-1")
.then((sentMessage) => {
sentMessage.react('811140592762486805')
const filter = (r) => r.emoji.id == '811140592762486805';
const collector = sentMessage.createReactionCollector(filter, {time: 60000});
collector.on('collect', (r) => {
reaction.author.send("Test-2");
});
});
}
});
解决方案
ReactionCollector 上的 collect 事件有两个参数;reaction
和user
。您可以简单地使用用户send()
上的方法向他们发送 DM。
此外,您不应该收集机器人的反应。您需要更新您的filter
并添加&& !user.bot
,因此您不会尝试向机器人发送消息。
const filter = (reaction, user) =>
reaction.emoji.id === '811140592762486805' && !user.bot;
const collector = sentMessage.createReactionCollector(filter, {
time: 60000,
});
collector.on('collect', (reaction, user) => {
user.send('Test-2');
});
推荐阅读
- php - 使用 smsapi 发送短信时出现错误代码 14
- javascript - 如何解决奇数作为 HTML-canvas 大小的问题?
- regex - 匹配字符块之间的所有空格
- javascript - 努力通过从 ElasticSearch 返回的 JSON 进行映射
- graphql - 如何在 GraphQL 突变中获取 RDS Aurora 中最后插入行的 id
- excel - 从动态范围中删除空白
- asp.net-core - 使用客户端凭据流重定向 URI
- c++ - 如何在静态 const char 中设置变量?
- excel - 在 Excel VBA 中用于访问的 SaveAs
- php - 文件上传验证PHP的问题