我最近在我的discord机器人上玩了很多本地化游戏,我在想一些事情.

使用本地化时,您可以根据用户的语言设置创建使用不同语言的回复.

如代码here所示:

client.on(Events.InteractionCreate, interaction => {
    const locales = {
        pl: 'Witaj Świecie!',
        de: 'Hallo Welt!',
    };
    interaction.reply(locales[interaction.locale] ?? 'Hello World (default is english)');
});

我的问题是,我想做同样的事情,除了使用临时性参数,如下所示:

await interaction.followUp({ content: 'Pong !', ephemeral: true });

但当我试图将两者混合在一起时:

async execute(interaction) {
    const locales = {
        pl: 'Witaj Świecie!',
    de: 'Hallo Welt!',
    };
    await interaction.reply(locales[interaction.locale] ?? 'Hello World!', ephemeral: true);
});

这是行不通的,因为你应该写一个简短的答案是这样的:

await interaction.followUp({ content: 'Pong again!', ephemeral: true });

所以我想知道有没有人有 idea ,关于如何使回复本地化和短暂,并可能更改我的代码,使其工作.

那就太有帮助了,谢谢!

推荐答案

非常接近,您只需将您的内容添加为值content即可:

await interaction.reply({
  content: locales[interaction.locale] ?? 'Hello World!',
  ephemeral: true,
});

您的第一个示例之所以有效,是因为reply接受字符串作为消息内容.

// ✅ works
interaction.reply(locales[interaction.locale] ?? 'Hello World (default is English)');

第二种方法不起作用,因为您仍然传递一个字符串作为第一个参数,但如果您想使用临时消息,则需要传递一个对象,而不是带有contentephemeral键的字符串.

// ⛔️ doesn't work
await interaction.reply(
  locales[interaction.locale] ?? 'Hello World!',
  ephemeral: true
);

// ✅ works
await interaction.reply({
  content: locales[interaction.locale] ?? 'Hello World!',
  ephemeral: true,
});

Javascript相关问答推荐

Phaser框架-将子对象附加到Actor

在页面上滚动 timeshift 动垂直滚动条

了解Node.js中的EventEums和浏览器中的addEventEums之间的关系

成功完成Reducers后不更新状态

为什么Mutations 观察器用微任务队列而不是macrotask队列处理?

对网格项目进行垂直排序不起作用

try 使用javascript隐藏下拉 Select

用JS从平面文件构建树形 struct 的JSON

当输入字段无效时,我的应用程序不会返回错误

使用VUE和SCSS的数字滚动动画(&;内容生成)

如何使用TypeScrip设置唯一属性?

使用auth.js保护API路由的Next.JS,FETCH()不起作用

当我在Reaction中创建一个输入列表时,我的输入行为异常

Reaction-SWR-无更新组件

从逗号和破折号分隔的给定字符串中查找所有有效的星期几

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

更改agGRID/Reaction中的单元格格式

React Refs不与高阶组件(HOC)中的动态生成组件一起工作

MongoDB通过数字或字符串过滤列表

JavaScript:多个图像错误处理程序