discord.js - 如何让不和谐机器人将您通过 dm 发送给它的图片发送到某个频道
问题描述
所以我一直在想这段代码。其背后的逻辑是“您通过 DM(直接消息)向机器人发送屏幕截图,并且机器人应该拍摄该照片并将其放入某个服务器中存在的某个频道(可能带有 id)。问题开始于我告诉它发送文件,它只是停止而控制台上没有发生错误,有时它显示答案“你成功发送了屏幕截图”有时它没有。我很清楚意识到我有问题我猜是发送图片而不是纯文本?
在这一点上,我有点卡住了没有多少选择。(顺便说一句,这段代码附加在一个“事件”上)
client.on("message", message => {
message.author.send("Please send a screenshot");
const collector = new Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, {});
console.log(collector)
collector.on('collect', message => {
if (message.attachments.size > 0) {
message.channel.send("You successfully sent a screenshot")
console.log(`Collected ${message.content}`)
client.channels.get(`628607857662623745`).send(message.content);
} else if (message.attachments.size < 0) {
message.channel.send("you did not");
}
})
该机器人只需要将您通过 DM 发送的图片发送到不和谐的某个频道。
解决方案
1.您在错误的频道上收集消息
Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, {});
将收集message.channel
,这是发送初始“触发”消息的通道,而不是 DMChannel。要在 DMChannel 上收集,您需要执行以下操作:
if (initial_trigger) {
message.author.createDM().then(dmc => {
const collector = new Discord.MessageCollector(
dmc,
m => m.author.id === message.author.id,
{}
);
[...]
});
}
2. 你发回了错误的内容
client.channels.get(`628607857662623745`).send(message.content);
只会发送message.content()
which,当您发送没有任何评论的文件时,它是空的。要发回文件而不是内容,您需要.sendFile()
像这样使用:
console.log(`Collected ${message.attachments.size} screenshots`);
client.channels
.get(`628607857662623745`)
.send({files:[message.attachments.first().url]});
推荐阅读
- javascript - 我收到 E11000 重复键错误集合:restauracja.tables 索引:reservations.user.email_1 dup key: { : null }
- sql - 将表格列转为行
- javascript - 未捕获的 ReferenceError:在 chrome 编码时未定义绘制
- postgresql - PostgreSQL 无法连接到在 root 下运行的远程服务器
- c# - 从调用 PowerShell 脚本的 C# 启动的进程无法运行 Postgres 数据库查询
- ruby-on-rails - ruby on the rails rake 中止 invalid_date
- database - 数据库规范化 - 4NF
- python - 如何在opencv python中掩盖一种最大的对象
- javascript - 使用css和js在html中显示带有onClick事件的隐藏内容
- javascript - 当调用对象已经使用“this”时,如何从静态方法中引用包含类?