javascript - Discord.js 中的欢迎消息
问题描述
我正在编写一个不和谐的机器人,但我在其中一个主要功能上遇到了问题——欢迎信息。
我尝试了几种方法,但没有一种方法有效,除了一种: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!`);
});
我没有发现任何有用的东西,我不知道该怎么办。另外,英语不是我的第一语言。
我还能尝试什么?谢谢你。
解决方案
我想这可以帮助你!
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!`);
});
很难在此处插入过滤器,这对您有帮助吗?
推荐阅读
- c++ - 使用 CMake 分发 Qt5 控制台应用程序
- c - 标记化后如何使字符串包含分隔符?
- javascript - 应该将 body.appendChild 片段(helpcrunch 聊天)添加到 Vue 单页应用程序的什么位置?
- xamarin.forms - 找不到 Xamarin Forms WatchOS 主 iOS 应用程序
- symfony - What does "expose"=true mean in symfony?
- google-apps-script - Unable to use DriveApp.getFileById(id).getLastUpdated();
- php - 从 URL 中提取一些字符串
- c++ - 尝试创建链表时出现错误“写访问冲突。this->tail was nullptr”
- gremlin - Cosmos DB gremlin API 中的选择和选项步骤
- spring-boot - 不可解析的导入POM:找不到org.springframework.cloud:spring-cloud-dependencies:pom:${spring-cloud.version}