现在有很多关于设置欢迎消息的教程,一旦成员加入公会就发送,但它们只针对自定义服务器,因为看:
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 作为他们的欢迎频道名称。如何让用户设置欢迎频道,然后将欢迎消息发送到那里?
抱歉,英语是我的第二语言。
答案 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。我不确定这是否是您要问的。