【问题标题】:Discord.JS Avatar Command using User ID使用用户 ID 的 Discord.JS 头像命令
【发布时间】:2021-06-25 08:37:30
【问题描述】:

我想通过用户 ID/提及来使用头像命令。我可以使用提及,但是我无法使用用户 ID。

这是我当前的代码:

const Discord = require('discord.js');

module.exports = {
    name: 'avatar',
    description: 'avatar',
    aliases: ['av'],
    cooldown: 5,
    async execute(message, args) {
       let member = message.mentions.users.first() || message.guild.members.cache.get(args[0]) || message.author;
       let avatar = member.displayAvatarURL({ size: 1024, dynamic: true });

       const embed = new Discord.MessageEmbed()
        .setAuthor(avatar, message.username)
        .setTitle(`Avatar`)
        .setImage(avatar)
        .setColor("BLACK")
        .setAuthor(member.username, avatar, avatar);
        message.channel.send(embed);
    },
};

每当我运行此代码时,我都会收到此错误:

Test Bot v1 ready!
(node:835) UnhandledPromiseRejectionWarning: TypeError: member.displayAvatarURL is not a function
    at Object.execute (/home/runner/no/commands/ping.js:13:28)
    at Client.<anonymous> (/home/runner/no/index.js:106:13)
    at Client.emit (events.js:314:20)
    at Client.EventEmitter.emit (domain.js:483:12)
    at MessageCreateAction.handle (/home/runner/no/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (/home/runner/no/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (/home/runner/no/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (/home/runner/no/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (/home/runner/no/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
    at WebSocket.onMessage (/home/runner/no/node_modules/ws/lib/event-target.js:132:16)
(node:835) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:835) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    displayAvatarURL() 方法仅适用于Users。这意味着它适用于message.mentions.users.first()message.author,因为它们返回User,但不适用于message.guild.members.cache.get(args[0]),因为它返回GuildMember

    如果有 args[0] 并且 members.cache.get 返回 GuildMember,请获取其 user 属性,以便您以后也可以获取其头像。

    以下工作正常:

    let user = message.mentions.users.first() 
      || message.guild.members.cache.get(args[0])?.user
      || message.author;
    
    let avatar = user.displayAvatarURL({size: 1024, dynamic: true})
    

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 2021-07-08
      • 1970-01-01
      • 2021-11-13
      • 2019-08-02
      • 1970-01-01
      • 2021-08-04
      • 2021-05-04
      • 1970-01-01
      相关资源
      最近更新 更多