设置欢迎频道 Discord.js?

时间:2021-04-15 19:03:01

标签: node.js discord.js

现在有很多关于设置欢迎消息的教程,一旦成员加入公会就发送,但它们只针对自定义服务器,因为看:

const applyText = (canvas, text) => {
    const ctx = canvas.getContext('2d');
    let fontSize = 70;

    do {
        ctx.font = `${fontSize -= 10}px sans-serif`;
    } while (ctx.measureText(text).width > canvas.width - 300);

    return ctx.font;
};

client.on('guildMemberAdd', async member => {
    const channel = member.guild.channels.cache.find(ch => ch.name === '?welcome');
    if (!channel) return;

    const canvas = Canvas.createCanvas(700, 250);
    const ctx = canvas.getContext('2d');

    const background = await Canvas.loadImage('./GANG.jpg');
    ctx.drawImage(background, 0, 0, canvas.width, canvas.height);

    ctx.strokeStyle = '#74037b';
    ctx.strokeRect(0, 0, canvas.width, canvas.height);

    ctx.font = '45px Masked Hero Demo';
    ctx.fillStyle = '#000000';
    ctx.fillText('WELCOME,', canvas.width / 2.4, canvas.height / 3.5);

    ctx.font = '45px Masked Hero Demo';
    ctx.fillStyle = '#ffffff';
    ctx.fillText('WELCOME,', canvas.width / 2.37, canvas.height / 3.6);

    ctx.font = applyText(canvas, `${member.displayName}!`);
    ctx.fillStyle = '#000000';
    ctx.fillText(`${member.displayName}!`, canvas.width / 2.5, canvas.height / 1.57);


    ctx.font = applyText(canvas, `${member.displayName}!`);
    ctx.fillStyle = '#ffffff';
    ctx.fillText(`${member.displayName}!`, canvas.width / 2.47, canvas.height / 1.6);       


    ctx.beginPath();
    ctx.arc(125, 125, 100, 0, Math.PI * 2, true);
    ctx.closePath();
    ctx.clip();

    const avatar = await Canvas.loadImage(member.user.displayAvatarURL({ format: 'jpg' }));
    ctx.drawImage(avatar, 25, 25, 200, 200);

    const attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'GANG.jpg');

    channel.send(`Welcome to the server, ${member}! Make sure to check info at <#743160115833864263>`, attachment);
});

在它说 ?welcome 的部分,这意味着任何与该名称匹配的频道都是消息将发送到的地方。

但这只能使用自定义机器人才能工作,而且由于我希望每个人都使用它,这取决于他们不会使用 ?welcome 作为他们的欢迎频道名称。如何让用户设置欢迎频道,然后将欢迎消息发送到那里?

抱歉,英语是我的第二语言。

1 个答案:

答案 0 :(得分:0)

您可以简单地设置一个变量(例如 welcomeChannel),等于用户希望他们的欢迎频道是什么,并将其替换为您的 ?welcome 部分。

例如。 let welcomeChannel = "welcome" 然后稍后替换

const channel = member.guild.channels.cache.find(ch => ch.name === '?welcome');

const channel = member.guild.channels.cache.find(ch => ch.name === welcomeChannel);

其他一切都会正常工作。如果你想创建一个命令让机器人通过消息提示它,那将需要一个 messageCollector。我不确定这是否是您要问的。