Discord石头剪刀布机器人随机表情重复问题求助
石头剪刀布Discord机器人随机表情问题解决
问题1:随机值仅初始化一次
你把randomemoji定义在全局作用域,程序启动时只会计算一次随机表情,后续所有按钮点击都会复用这个固定值。问题2:条件判断逻辑错误
interaction.customId === "Pierre" || "Papier" || "Ciseaux"的写法不符合语法规则,这个表达式永远返回true(非空字符串属于真值),会导致所有按钮点击都触发回复。
修正后的完整代码:
const emoji = [ "✊", "✋", "✌" ]; client.on("interactionCreate", async interaction => { if(interaction.isButton()){ // 用数组includes方法简化条件判断,精准匹配指定按钮ID if(["Pierre", "Papier", "Ciseaux"].includes(interaction.customId)){ // 每次点击按钮时重新生成随机表情 const randomemoji = emoji[Math.floor(Math.random() * emoji.length)]; await interaction.reply(randomemoji); } } });
核心修改说明:
- 将随机表情的生成逻辑移到按钮交互的回调函数内部,确保每次用户点击按钮时,都会重新执行随机计算,生成新的表情。
- 替换错误的条件判断写法,用
Array.includes()准确匹配目标按钮ID,避免无效触发。
内容的提问来源于stack exchange,提问作者FireFenrir
相关产品推荐
相关产品推荐

