标题说明了一切。我正在node.js中制作一个Discord机器人,而我想添加的一部分是.setup
命令,以使该机器人更少依赖于手动更改client.channels.get().send()
的值,从而允许以便将来更容易设置。
无论如何,就我而言,我试图让用户回复带有频道提及的消息(例如#welcome),并让漫游器返回该ID并将其保存到变量中。
目前,我有这个:
function setupChannel() {
client.channels.get(setupChannelID).send('Alright. What channel would you like me to send my reminders to?');
client.on('message', message => {
checkChannel = message.mentions.channels.first().id;
client.channels.get(setupChannelID).send('Ok. I\'ll send my reminders to that channel.');
});
}
message.mentions.channels
返回未定义。
我知道message.mentions.channels.first().id
位在用户而不是频道时起作用,是否有其他方法可以在消息中提及频道?
答案 0 :(得分:0)
我只想从消息中删除所有非整数,因为这使得ID和提及都易于使用,并且它将为您返回ID,因为提及的只是带有<#和>的ID在他们旁边。为此,您将使用
message.content.replace(/\D/g,'')
有了这个,您的代码将如下所示:
function setupChannel() {
client.channels.get(setupChannelID).send('Alright. What channel would you like me to send my reminders to?');
client.on('message', message => {
checkChannel = message.content.replace(/\D/g,'');
client.channels.get(setupChannelID).send('Ok. I\'ll send my reminders to <#' + checkChannel + '>.');
});
}
由此您将始终获得一个ID。而且我们可以将ID包围起来以进行提及。
答案 1 :(得分:0)
这是我发现的最简单易懂的方法:
message.guild.channels.cache.get(args[0].replace('<#','').replace('>',''))
但这并不是我们想要的,我们可以使用<#####9874829874##><<<547372>>
,它将起作用。所以我想通了:
message.guild.channels.cache.get(args[0].substring(2).substring(0,18))