当机器人托管在 heroku 上时如何制作 discord.js 图像搜索命令
Posted
技术标签:
【中文标题】当机器人托管在 heroku 上时如何制作 discord.js 图像搜索命令【英文标题】:How to make a discord.js image search command when the bot is hosted on heroku 【发布时间】:2021-08-10 06:39:16 【问题描述】:我的 Discord.js 机器人中有一个命令应该从 dogpile 中获取图片并发布,但自从我开始在 Heroku 上托管我的机器人(我免费使用它)它就完全停止工作了,我没有收到任何错误,这是代码:
var cheerio = require("cheerio");
var request = require("request");
const Discord = require('discord.js');
module.exports =
name: 'image',
description: 'sends an image based on your search query',
execute(message, args)
image(message, args);
function image(message, parts)
var search = parts.slice(0).join(" ");
var options =
url: "http://results.dogpile.com/serp?qc=images&q=" + search,
method: "GET",
headers:
"Accept": "text/html",
"User-Agent": "Chrome"
;
request(options, function(error, response, responseBody)
if (error)
return;
$ = cheerio.load(responseBody);
var links = $(".image a.link");
var urls = new Array(links.length).fill(0).map((v, i) => links.eq(i).attr("href"));
console.log(urls);
if(!urls.length)
return;
const embed = new Discord.MessageEmbed()
.setTitle("Image of a(n) " + search)
.setImage(urls[Math.floor(Math.random() * urls.length)])
.setFooter('Searched by ' + message.author.username)
.setColor("#43B581");
message.channel.send(embed)
)
这也可能有帮助,但我不确定:Heroku Dyno Information
【问题讨论】:
一定有什么东西会导致你的机器人崩溃,然后尝试将你的代码包装在try...catch(e)...
中,然后如果没有发现错误。如果过度使用或导致 dyno 停止的原因,请查看 dyno 日志
我没有收到任何错误,但我注意到它记录了一个空白数组,通常它会充满图像链接
添加更多调试日志并添加 Heroku 日志。您可能会看到一些您认为不相关但实际上相关的内容。
【参考方案1】:
可能是因为您从 repl.it 转移到 Heroku,因为 repl.it 会自动安装任何缺少的模块,而 Heroku 不会,因此请确保您已安装 Cheerio
模块。
【讨论】:
以上是关于当机器人托管在 heroku 上时如何制作 discord.js 图像搜索命令的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Heroku 上安装 discord.py-rewrite 依赖项以进行 Discord 机器人托管?
在 Heroku 中使用静态 IP 来托管 Discord 机器人