Discord.js实现GIF命令时如何让Tenor API同关键词返回不同结果
问题原因
你当前代码每次查询仅向Tenor API请求1条结果,默认返回的是对应关键词热度最高的第一条内容,因此同关键词查询结果永远一致。
优化方案
- 调整API请求参数,单次请求拉取10~30条结果,兼顾随机性和请求效率
- 从返回的结果数组中生成随机下标,抽取对应GIF返回
- 可额外增加无结果的兜底提示,优化使用体验
修改后代码
const Tenor = require("tenorjs").client({ "Key": "Ihaveakeyjustnotshowingit", "Filter": "off", // "off", "low", "medium", "high", 不区分大小写 "Locale": "en_US", // 可替换为你需要的地区编码 "MediaFilter": "minimal", // 可选minimal或basic,不区分大小写 "DateFormat": "MM/D/YYYY - H:mm:ss A" // 可根据需求修改日期格式 }); const fs = require('fs'); const discord = require('discord.js'); module.exports = { name: 'gif', aliases: ['tenor', 'gifsearch', 'gf'], category: 'Funny', utilisation: '{prefix}gif', execute(client, message, args) { const msgArgs = message.content.slice(this.name.length + 1) // 单次请求20条结果,可根据自身需求调整数量 Tenor.Search.Query(msgArgs, "20").then(Results => { if (!Results || Results.length === 0) { return message.channel.send("未找到对应关键词的GIF结果") } // 随机抽取一条结果返回 const randomIndex = Math.floor(Math.random() * Results.length) message.channel.send(Results[randomIndex].itemurl) }).catch(console.error); }, };
内容的提问来源于stack exchange,提问作者Tachanks
相关产品推荐
相关产品推荐

