在 discord.js v14 中,setPresence 活动类型只能设置为 "PLAYING"。

6

当我尝试设置机器人的状态时,我不知道类型,基本上有4种方式:PLAYINGWATCHINGLISTENINGSTREAMING。但是我不能设置其他任何东西,我只能使用默认的PLAYING

我是粗心还是在更新的版本中真的无法如此设置?

client.user.setPresence({ activities: [{ name: `discord.js v14`, type: `WATCHING` }], status: 'dnd' })

看文档,我认为你可能需要使用 ActivityType 枚举。PresenceData -> 数组<ActivitiesOptions> -> 类型:ActivityType - undefined
1个回答

14
在v14中,您需要使用ActivityType枚举或数字。您可以从discord.js导入它。
const { Client, GatewayIntentBits, ActivityType } = require('discord.js');

并像这样使用它:

client.user.setPresence({
  activities: [{ name: `discord.js v14`, type: ActivityType.Watching }],
  status: 'dnd',
});

ActivityType的列表:

v13 v14 v14 value
"COMPETING" ActivityType.Competing 5
"CUSTOM" ActivityType.Custom 4
"LISTENING" ActivityType.Listening 2
"PLAYING" ActivityType.Playing 0
"STREAMING" ActivityType.Streaming 1
"WATCHING" ActivityType.Watching 3

我会尝试使用子命令来实现,但即使我将类型变量转换为字符串,如果我在ActivityType后面写它,它也不起作用:const type = interaction.options.getString('type') client.user.setPresence({ activities: [{ name: name, type: ActivityType.type }] }); - user19579748
这跟这个类似吗?那么我会将ActivityTypes作为选项的value。例如:{ label: `Competing`, description: `参赛`, value: ActivityTypes.Competing }, { label: `Watching`, description: `观看`, value: ActivityTypes.Watching }等等,然后getString('type')就是正确的值,所以你可以像这样使用它:client.user.setPresence({ activities: [{ name, type }] });。至少,我是这么认为的 :) - Zsolt Meszaros
不确定我是否能理解那个名称有什么问题。 - Zsolt Meszaros
好的,我会先尝试那个。 - Zsolt Meszaros
我该如何将状态名称附加到它上面? - user19579748
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接