首页 > 解决方案 > 修复不和谐 !avatar 命令的代码

问题描述

我正在尝试制作一个机器人,它的一个命令将图像放入嵌入中,到目前为止,它的唯一工作时间是当我执行 !avatar 但我希望它能够执行 !avatar @the specified user 然后它放该用户个人资料图片链接。这是它当前拥有的代码。

bot.on('message', message => {
    if (message.content.startsWith('!embed')) {
      const embed = new Discord.RichEmbed()
        .setDescription(message.content)
        .setFooter('Cloudzy')
      message.channel.send({ embed })
    }

标签: javascriptvisual-studio-code

解决方案


对于任何感兴趣的人,这里有一个示例机器人,它可以发布带有用户头像的丰富嵌入。

您所要做的就是将以下命令发送到服务器。

!avatar @username#0000

机器人 - index.js

const config = require('./config.json');
const { token } = require('./auth.json');
const { Client, RichEmbed } = require('discord.js');
const logger = require('winston');

const client = new Client();

// Configure logger settings
logger.remove(logger.transports.Console);
logger.add(new logger.transports.Console, { colorize: true });
logger.level = 'debug';

client.on('ready', (evt) => {
    logger.info('Connected');
    logger.info('Logged in as: ' + client.user.username + ' - (' + client.user.id + ')');
  });

  client.on('message', (message) => {
    if (!message.content.startsWith(config.prefix)) return; // Not listening...
    const withoutPrefix = message.content.slice(config.prefix.length).trim();
    let args = withoutPrefix.split(/\s+/g);
    let command = args.shift();

    switch (command) {
        case 'avatar':
            // Credit: PLASMA chicken - https://stackoverflow.com/a/55611445/1762224
            const user = message.mentions.users.first() || message.author;
            const avatarEmbed = new RichEmbed()
                .setColor(0x333333)
                .setAuthor(user.username)
                .setImage(user.avatarURL);
            message.channel.send(avatarEmbed);
    }
});

client.login(token);

配置 - config.json

{
    "prefix" : "!",
    "inviteLink" : "<INVITE LINK HERE>"
}

授权 - auth.json

{
    "token": "<AUTH TOKEN HERE>"
}

推荐阅读