Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我如何在disordjs中下载并重新加载图像?_Javascript_Node.js_Bots_Discord_Discord.js - Fatal编程技术网

Javascript 我如何在disordjs中下载并重新加载图像?

Javascript 我如何在disordjs中下载并重新加载图像?,javascript,node.js,bots,discord,discord.js,Javascript,Node.js,Bots,Discord,Discord.js,我试图从另一个bot的消息中重新发布内容,同时以相同的方式重新发布,除了用缩略图替换图像,但是当我删除原始消息时,bot没有时间获取图像并发布它自己。现在添加延迟是一个不错的替代,但我不希望原始消息停留。我听说Jimp被用来编辑图像,那么我应该如何以及在哪里将其应用到这段代码中呢?我可以简单地编辑图片mildy的对比度来重新发布它。这是密码 if (message.author.id == botid && message.guild.id == guild4) {

我试图从另一个bot的消息中重新发布内容,同时以相同的方式重新发布,除了用缩略图替换图像,但是当我删除原始消息时,bot没有时间获取图像并发布它自己。现在添加延迟是一个不错的替代,但我不希望原始消息停留。我听说Jimp被用来编辑图像,那么我应该如何以及在哪里将其应用到这段代码中呢?我可以简单地编辑图片mildy的对比度来重新发布它。这是密码

    if (message.author.id == botid && message.guild.id == guild4) {
      message.embeds.forEach((e) => {
        if (e.title !== undefined && e.title.startsWith("The Dungeon ")) {
          if (e.image) {
            
            let url = e.image.url;
            let desc = e.description;
            request(url, async function(err, res, body) {
              if (err !== null) return;
            
              imghash
                .hash(body)
               .then(async (hash) => {
                  let rareresult = raresdb[hash];
                  //message.delete(e)
                  if (rareresult === undefined) {
                    let result = db[hash];
                    if (result === undefined) {
                      embed
                        .setThumbnail(url)
                        .setDescription(desc)
                      await delay(666);
                      message.delete(e)
                      return message.channel.send(embed)
                    }

我目前正在使用
等待延迟(666)
试图缓解这个问题,但我希望
url
是自定义的,我的bot可以自己发布,而不必担心前一条消息会保留多长时间。我希望我的问题很清楚


我的问题是我定义的
e.image.url
url
。如果我删除原始邮件,只需重新发布
url
,因为缩略图不够好,因为没有足够的时间加载它,所以我希望上传我自己版本的图像,并将其用于.set缩略图(url)。如何在此代码上下文中上载和重新发布discord.s中的图像?

根据您的操作方式,您有一些选择。你可以下载并重新上传图片。或者您只需保存URL并使用该URL重新上传。()

因此,要发送图像,您需要运行

message.channel.send({
档案:[{
附件:“”
}]
});
例如,以下代码允许我使用这两种方法发送2张图像:

const Discord=require(“Discord.js”);
const client=new Discord.client();
常数fs=要求(“fs”);
client.on(“ready”),()=>console.log(“ready”);
client.on(“message”,函数(msg){
如果(msg.content==“发送照片”){
msg.channel.send({
档案:[{
附件:fs.readFileSync(“./DownVote.png”),
名称:“DownVote.png”
},{
附件:“https://cdn.discordapp.com/attachments/679433940615823385/708433102900559933/brave_YnGjgGYqTr.png",
名称:“screenie.png”
}]
});
}
});
client.login(“令牌”);
选择哪种方法取决于您。不过,我建议您使用URL,因为这意味着您不会因为下载图像而占用空间和安全问题

不要使用
delay(666)
Discord.js在
消息上返回一个承诺。发送
只需发送消息,然后删除原始消息

message.send({embed}).then(function(){originalMessage.delete()});

您缺少很多作用域,因此很难判断哪个作用域何时结束,因此请在我添加的编辑中添加结束括号。我不知道你是不是这个意思。代码的其余部分基本上是在不同的条件下做相同的事情。比如,如果rarresult=以这种方式发布它。但我的问题与我定义的
e.image.url
url
差不多。简单地重新发布该url是不够好的,因为如果我删除原始消息,没有足够的时间加载它,所以我希望上传我自己版本的该图像并将其用于
。set缩略图(url)
您只添加了一个结束括号,如果我复制代码锁并将其输入IDE,它将给出许多错误(不包括变量名错误,这很好)。在
message.author.id==botid&&message.guild.id==guild4)
e.title!==未定义&e.title.startsWith(“地下城”)
但这对我的问题是必要的吗?我的问题是使用
e.image.url
这是嵌入的图像,并将其作为缩略图发布到我自己的消息中,这是
.set缩略图(url)
。但问题是,如果我不添加延迟,那么图像根本不会加载,或者它会无限加载。所以我想看看我是否能以某种方式重新上传这张图片,并重新发布我自己的版本。我听说Jimp被用来编辑图像,我也看到了一些代码,但我不知道如何将其应用于此谢谢你的帮助,但我还是很困惑。
e.image.url
是每次有东西“生成”时都会发生变化的东西,所以我不知道如何在上面写附件。你能给我一个关于如何做的例子吗?
e.image.url
只是图像的url,所以你可以:
message.channel.send({files:[{附件:e.image.url}]),它会将图像重新发送到频道。它说
rm Body embed.缩略图.url:无法解释“{'files':[{'attachment':”https://cdn.discordapp.com/attachments/720151626588881007/724842359044571186/Spawn.png%27%7D]%7D“作为字符串。
当我尝试执行
.set缩略图([{附件:e.image.url}]})时
啊,这是因为如果你检查文档,你使用的是
.set缩略图
它接受的是字符串,而不是对象。所以对于
.set缩略图
你只需要做:
.set缩略图(e.image.url);
当你通过
message.channel.send发送嵌入的消息时,你只需要
[{附件:e.image.url}]
({embeddes:[]});
再次感谢您的帮助,但我的问题是,我不能简单地重用现有的e.image.url,因为当我删除原始邮件时,我自己的bot中的图像将不再加载。因此我需要一种方法,以某种方式下载或编辑原始url,并使用完全相同的图片上载一个全新的url。