为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Discord.JS v12 中查看用户正在玩哪个游戏

如何在 Discord.JS v12 中查看用户正在玩哪个游戏

呼唤远方 2023-11-11 15:58:38
我正在通过在线指南的帮助开发一个不和谐的机器人。问题是,指南主要是 Discord.JS v11 指南,而我使用的是 Discord.JS v12。所以它对我帮助不大。我想了解如何获取用户正在使用 !userinfo 命令玩的游戏的名称。除“游戏”字段外,所有字段均显示正确的内容。我已经在开发者门户中启用了显示状态功能。它总是显示“无”,尽管可能是因为它不是经过验证的游戏名称或类似 Zoom Classes(XD) 或未经验证的名称。你能告诉我修复方法吗?代码:            case "userinfo":                commandsrun = commandsrun + 1;                let user;                if (message.mentions.users.first()) {                    user = message.mentions.users.first();                    useralso = message.mentions.users.first();                } else {                    user = message.author;                    useralso = message.member;                    //i made useralso so it shows nickname correctly                }                const userStatus = {                    online: "Online",                    idle: "Idle/Inactive",                    dnd: "Busy/Do Not Disturb",                    offline: "Unavailable/Offline"                }                const mememb = message.guild.member(user)                Promise.resolve(mememb).then(function () {                    const memberemb = message.guild.members.fetch(user);                    Promise.resolve(memberemb).then(function (info) {                        var roles = info.roles.cache.map(roles => `${roles}`).join(', ');                        roles = roles.slice(0, -9);                        const embed = new Discord.MessageEmbed()                            .setColor("GREEN")                            .setThumbnail(message.author.avatarURL)                            .addField(`${user.tag}`, `${user}`, true)                    });                });                break;请告诉我修复方法并在您的答案中发送修复代码。谢谢。
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

您好,您已经告诉过您正在使用discord.js v12,您需要使用类activities中的属性Presence。这是你必须做的 -

user.presence.activities[0].name // this will output the game or any other activity

但是,如果用户使用自定义状态,那么您可能会得到Name未定义的状态,要解决这个问题,我们需要过滤数组!

var presence = user.presence.activities.filter(x=>x.type === "PLAYING") //outputs the presence which the user is playingpresence[0].name // will give the name of the game

你的最终输出应该是 -

            case "userinfo":

                commandsrun = commandsrun + 1;

                let user;

                if (message.mentions.users.first()) {

                    user = message.mentions.users.first();

                    useralso = message.mentions.users.first();

                } else {

                    user = message.author;

                    useralso = message.member;

                    //i made useralso so it shows nickname correctly

                }

                const userStatus = {

                    online: "Online",

                    idle: "Idle/Inactive",

                    dnd: "Busy/Do Not Disturb",

                    offline: "Unavailable/Offline"

                }

                const mememb = message.guild.member(user)

                Promise.resolve(mememb).then(function () {

                   var presence = user.presence.activities.length ?user.presence.activities.filter(x=>x.type === "PLAYING") : null;

                    const memberemb = message.guild.members.fetch(user);

                    Promise.resolve(memberemb).then(function (info) {

                        var roles = info.roles.cache.map(roles => `${roles}`).join(', ');

                        roles = roles.slice(0, -9);

                        const embed = new Discord.MessageEmbed()

                            .setColor("GREEN")

                            .setThumbnail(message.author.avatarURL)

                            .addField(`${user.tag}`, `${user}`, true)

                            .addField("ID:", `${user.id}`, true)

                            .addField("Nickname:", `${useralso.nickname ? `${useralso.nickname}` : 'None'}`, true)

                            .addField("Status:", `${userStatus[user.presence.status]}`, true)

                            .addField("Game:", `${presence && presence.length ? presence[0].name : 'None'}`, true)

                            .addField("Joined The Server On:", `${moment.utc(mememb.joinedAt).format("dddd, MMMM Do YYYY")}`, true)

                            .addField("Account Created On:", `${moment.utc(user.createdAt).format("dddd, MMMM Do YYYY")}`, true)

                            .addField("Roles:", info.roles.cache ? roles : "None", true)

                            .setFooter(`Replying to ${message.author.username}#${message.author.discriminator}`)

                        message.channel.send({ embed });

                    });

                });

                break;


查看完整回答
反对 回复 2023-11-11
  • 1 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信