如何使Discord机器人通过DM将您发送的图片发送到某个频道

时间:2019-10-01 17:59:00

标签: discord.js

所以我一直在思考这段代码。其背后的逻辑是“您通过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 个答案:

答案 0 :(得分:1)

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(),当您发送不带任何注释的文件时,该文件为空。要发回文件而不发送内容,您将需要像这样使用.sendFile()

console.log(`Collected ${message.attachments.size} screenshots`);
    client.channels
                .get(`628607857662623745`)
                .send({files:[message.attachments.first().url]});