如何在Discord.js中实现本地化且Ephemeral的交互回复?
实现本地化+Ephemeral交互回复的正确写法
直接给interaction.reply()传入包含本地化内容和ephemeral配置的对象即可,核心是把原来的字符串参数替换成配置对象,同时指定content和ephemeral属性。
完整示例代码
const { Client, Events } = require('discord.js'); const client = new Client({ intents: [] }); // 按需配置机器人权限 client.on(Events.InteractionCreate, async interaction => { const locales = { pl: 'Witaj Świecie!', de: 'Hallo Welt!', }; // 获取对应用户语言的回复内容,无匹配则用默认英文 const replyText = locales[interaction.locale] ?? 'Hello World (default is english)'; // 传入配置对象,同时实现本地化和仅用户可见 await interaction.reply({ content: replyText, ephemeral: true }); }); client.login('你的机器人Token');
关键说明
- 必须使用配置对象作为
reply()的参数:之前直接传字符串的写法无法附加ephemeral这类选项,只有传入包含content字段的对象时,才能同时配置其他回复属性。 - 记得加
async/await:interaction.reply()是异步方法,加上异步标识能避免潜在的执行顺序问题。 - 如果是后续的跟进回复(比如用
followUp),同样可以用这个逻辑:把本地化内容放到content里,同时设置ephemeral: true。
内容的提问来源于stack exchange,提问作者ViorisE
相关产品推荐
相关产品推荐

