我正在编写一个不和谐的bot,并且在其中一个主要功能(欢迎消息)中遇到问题。
我尝试了几种方法,但除一种方法外,其他方法均无效:the one that needs a channel ID
。
我不想使用该方法,因为我想在多台服务器上使用我的机器人,这意味着我必须为其中每台服务器更改代码,而我真的不想这么做。
client.on('guildMemberAdd', function(message) {
member.guild.channels.cache.get('MY CHANNEL ID').send('welcome dadadadada');
});
此代码有效(实际上,我只是试过了,但是没有,但确实如此。类似这样)。现在,我正在尝试进行更多的“高级”编码,以告知该机器人自动从#general获取频道ID(为此,我做了npm install long
)
const getDefaultChannel = (guild) => {
if(guild.channel.has(guild.id))
return guild.channels.get(guild.id)
const generalChannel = guild.channels.find(channel => channel.name === 'general');
if (generalChannel)
return generalChannel;
return guild.channels
.filter(c => c.type === 'text' &&
c.permissionsFor(guild.client.user).has('SEND_MESSAGES'))
.sort((a, b) => a.position - b.position) ||
Long.fromString(a.id).sub(Long.fromString(b.id)).toNumber()
.first();
}
client.on("guildMemberAdd", member => {
const channel = getDefaultChannel(member.guild);
channel.send(`Welcome ${member} to the server, wooh!`);
});
我没有发现任何有用的东西,也不知道该怎么办。另外,英语不是我的母语。
我还能尝试什么?谢谢。
答案 0 :(得分:0)
我认为这可以帮助您!
guildMemberAdd 监听器可以发送消息
client.on('guildMemberAdd', function(member, message) => {
let generalChannelName = message.guild.channels.find(channel => channel.name === 'general');
let generalChannel = generalChannel.id;
generalChannel.send(`Welcome ${member.tag} to the server!`);
});
很难在此处插入过滤条件,这对您有帮助吗?