我的 Discord Bot 在触发时不断发送相同的图像
Posted
技术标签:
【中文标题】我的 Discord Bot 在触发时不断发送相同的图像【英文标题】:My Discord Bot keeps sending the same image upon trigger 【发布时间】:2021-04-03 10:11:34 【问题描述】:我正在使用 NodeJS 开发我的第一个 Discord 机器人,该机器人的目的是每当用户在 Discord 中使用触发词时,使用从 Imgur
API 获取的随机图像来响应 Discord 中的消息。我有以下代码:
request(options, function (error, response)
if (error) throw new Error(error);
const randomNumber = Math.floor(Math.random() * 73) + 1;
arr = JSON.parse(response.body);
var randomImage = arr.data[randomNumber].link;
console.log(randomImage)
bot.on("message", (msg) =>
if (msg.content === trigger)
msg.channel.startTyping();
msg.channel.send(randomImage);
);
);
bot.login(TOKEN);
bot.on("ready", () =>
console.info(`Logged in as $bot.user.tag!`);
);
从Imgur
获取随机图像有效,并且在 Discord 中使用触发词来获取该图像也有效,但是问题是,例如,当我在 Discord 中向触发词发送垃圾邮件 3 次时,机器人将返回相同的图像 3 次。所需的功能是在每个触发词上发送不同的图像。每当我重新启动服务器时,都会从 Imgur
API 获取新图像。
但是问题仍然存在,当我在 Discord 中使用触发词 x 次时,相同的图像将显示 x 次。希望有人可以让我找到正确的方向来解决这个问题。
【问题讨论】:
您似乎只生成了这个随机图像一次。何时以及多久调用一次request
函数?
@MatthewLin 我想每当我启动服务器时,这是唯一一次被调用。这将在控制台中输出一个随机图像,一旦在 Discord 中使用了触发词,就会在 Discord 中发布该图像。
在这种情况下,给定的答案似乎是正确的
【参考方案1】:
我相信request
只被调用一次。因此,您只生成一次随机图像,并将其用于所有未来的消息。要在收到新消息时生成随机图像,请尝试将随机图像生成放入事件处理程序中,如下所示:
request(options, function (error, response)
if (error) throw new Error(error);
arr = JSON.parse(response.body);
bot.on("message", (msg) =>
if (msg.content === trigger)
const randomNumber = Math.floor(Math.random() * 73) + 1;
var randomImage = arr.data[randomNumber].link;
console.log(randomImage)
msg.channel.startTyping();
msg.channel.send(randomImage);
);
);
【讨论】:
它正在工作!非常感谢,我学到了一些新东西。以上是关于我的 Discord Bot 在触发时不断发送相同的图像的主要内容,如果未能解决你的问题,请参考以下文章