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

Discord.js 嵌入个人资料图片命令并提及

Discord.js 嵌入个人资料图片命令并提及

红糖糍粑 2023-06-29 22:26:55
我正在使用 Visual Studio Code 应用程序在discord.js 中创建一个机器人。我正在尝试为个人资料图片创建一个命令,这样当您输入 -pfp 时,它会显示您的个人资料图片,当您输入 -pfp @user 时,它会显示您提到的人的个人资料图片。(- 是前缀)。尽管机器人只发送消息,但没有嵌入图片部分。当我提到其他人时,它会做同样的事情,但提到的是我而不是用户。这就是我所拥有的:    if (!message.content.startsWith(prefix) || message.author.bot) return;        if (message.content.startsWith(prefix + 'pfp')) {            message.channel.send('Here is <@'+ message.author.id+ ">'s pfp :)")            const avatarEmbed = new Discord.MessageEmbed()                .setColor('#446580')                .setAuthor('user.username')                .setImage(message.author.displayAvatarURL());        } else if (message.content.startsWith(prefix+ 'pfp'+ message.mentions.users)) {            message.channel.send('Here is <@'+ message.user.id+ ">'s pfp :)")            const avatarEmbed = new Discord.MessageEmbed()                .setColor('#446580')                .setAuthor('user.username')                .setImage(message.user.displayAvatarURL());        }});
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

这里有两个部分。


首先,机器人仅发送消息而不是嵌入,因为您只发送消息。您需要一行单独的代码来发送嵌入内容。


message.channel.send(avatarEmbed);

其次,机器人只会因此而标记您message.content.startsWith(prefix + 'pfp')。您区分作者和其他人的方式意味着它将始终匹配第一个案例,这意味着消息始终以开头,prefix + pfp无论您之后是否标记某人。


现在你有几种方法可以解决这个问题,但我会这样做。


首先,您定义一个新变量,我们将其命名为pfpMember,然后将其分配给您标记的第一个人或消息的作者。


var pfpMember = message.mentions.members.first() || message.member;

现在我们有了一个固定成员,它要么是被标记的人,要么是作者,我们可以将函数分配displayAvatarURL给该成员。


.setImage(pfpMember.user.displayAvatarURL());

所以你的整个命令应该看起来像这样。


if (message.content.startsWith(prefix + 'pfp')) {

    var pfpMember = message.mentions.members.first() || message.member;

    // we can just put the member object into the string here, that will tag the person

    message.channel.send(`Here is ${pfpMember}'s pfp :)`);


    const avatarEmbed = new Discord.MessageEmbed()

        .setColor('#446580')

        .setAuthor(pfpMemer.user.username)

        .setImage(pfpMember.user.displayAvatarURL());

    

    message.channel.send(avatarEmbed);

}


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

添加回答

举报

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