【问题标题】:Discord Rich Prescence timestamp & nameDiscord Rich Presence 时间戳和名称
【发布时间】:2022-01-08 13:40:08
【问题描述】:

我正在 JS 中制作一个不和谐的机器人,当调用命令时会显示“用户已经玩了几个小时的 GameName”。如果提到的用户正在玩一个缺乏丰富的存在支持的游戏,我的代码目前可以工作,但是如果像英雄联盟这样的游戏与用户一起被调用,我会收到错误TypeError: Cannot read property 'presence' of undefined。虽然我知道这意味着什么,但这是我引用以下代码中提到的用户存在的方式。

const { Client, Intents } = require('discord.js');

module.exports = {
    name: 'test',
    aliases: [],
    category: 'test',
    utilisation: '',

    execute(client, message, presence, guild) {
        let msgMention = message.mentions.members.first()

        let mp = msgMention.presence.activities[0]

        if (msgMention.presence.activities[0].name == "Spotify"){
            var imgvar = mp.assets.largeImage
            var imgvar = imgvar.replace('spotify:','')
            message.channel.send({
                embed: {
                    color: '1DB954',
                    title: `${msgMention.displayName} is listening to ${mp.assets.largeText} for some reason`,
                    image: {
                        url: `https://i.scdn.co/image/${imgvar}`
                    },
                },
            });
        } else if (mp.name == "League of Legends") {
            const n = new Date();
            console.log(n)
            const g = mp.timestamps.start;
            if (g <= 0) {
                return;
            }
            const hours = Math.abs(n - g) / 36e5;
            const minutes = hours.toFixed(2)
            message.channel.send(`${msgMention.displayName} has been wasting his life playing ${mp.name} for ${minutes} hours`);
        } else {
            const n = new Date();
            console.log(n)
            const g = mp.timestamps.start;
            if (g <= 0) {
                return;
            }
            const hours = Math.abs(n - g) / 36e5;
            const minutes = hours.toFixed(2)
            message.channel.send(`${msgMention.displayName} has been playing ${mp.name} for ${minutes} hours`);
        }
    },
};

数学可以计算时间,单独的 spotify 命令也可以工作,但是英雄联盟由于它具有丰富的存在支持而根本无法工作,我该如何修复此错误以将其用于正常的非丰富存在游戏而丰富的前世游戏仍然抢夺活动的名称

【问题讨论】:

  • 你在消息中提到过任何成员吗?
  • 是的,该命令完全适用于任何不丰富的存在
  • 这个错误似乎是由于msgMention未定义的原因,指出消息中没有提到任何人,你能登录msgMention吗?
  • 我有并且它做同样的事情,就像我说丰富的存在是一个独特的场景,我 100% 提到某人并且它与非丰富的存在游戏或 Spotify 一起工作。
  • Finbar,存在也会在 guildCreate 上发送,所以没有存在的问题

标签: javascript node.js discord discord.js bots


【解决方案1】:

用户活动

  let member = message.mentions.members.first() || message.guild.members.cache.get(args[1]) || message.guild.member(message.author)
  const embed = new Discord.MessageEmbed()

if (!member.presence.activities || member.presence.activities.length == 0) {
    embed.addField('⚽️ Activity:', 'Not playing anything')
} else {
    const activity = member.presence.activities[0];
    embed.addField('⚽️ Activity:', `${activity.type} ${activity.name}\n${activity.details}\n${activity.state}`);
}

【讨论】:

    猜你喜欢
    • 2021-03-05
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 2021-10-29
    • 2018-04-16
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多