下面是我的代码。它在第一次运行时有效,但在第二次运行时无效。
const { Client, GatewayIntentBits } = require('discord.js')
const client = new Client({
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent],
});
const axios = require('axios');
const PREFIX = "!";
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('messageCreate', async (message) => {
if (message.content.startsWith(PREFIX)) {
const [command, username] = message.content
.substring(PREFIX.length)
.split(' ');
if (command === 'id') {
try {
// Clear the cache before making the API request
client.users.cache.clear();
const lowercaseUsername = username.toLowerCase();
const response = await fetch(`https://users.roblox.com/v1/users/search? keyword=${encodeURIComponent(lowercaseUsername)}`);
const { data } = await response.json();
if (data.length === 0) {
message.channel.send(`Could not find a user with the name "${username}".`);
} else {
const { id } = data[0];
console.log(`The user "${username}" has the Roblox ID ${id}.`);
message.channel.send(`The user "${username}" has the Roblox ID ${id}.`);
}
} catch (error) {
console.error(error);
message.channel.send(`There was an error searching for the user "${username}".`);
}
}
}
});
client.login('Bot_Token');
它第一次运行成功并显示roblox用户的id,但第二次它只是给出错误。
1条答案
按热度按时间laik7k3q1#
我测试了你的代码,我认为错误是由于你在调用API之前清除该高速缓存。
因为您清除了所有用户该高速缓存,而不仅仅是您试图查找的用户,所以当您试图再次查找同一用户时,缓存仍然是空的,并且您将收到错误。
相反,你应该在第一次API调用后缓存用户数据,这里有一个修复: