当有人 DM 机器人时,我如何让我的机器人向特定频道发送消息?我在考虑 webhook,但我不确定这是否是正确的方法。
问问题
3475 次
1 回答
2
是的你可以。
现在怎么办?
您必须首先获得 dm 消息。Message
具有表示接收消息的通道的channel
属性。该属性可以是 3 种不同的类型,所有类型都扩展自Channel
具有type
属性。
该type
属性可以有 6 个值:
- dm - DM 频道
- group - 组 DM 频道
- text - 公会文本频道
- voice - 公会语音频道
- 类别 - 公会类别频道
- 新闻 - 公会新闻频道
- store - 公会商店频道
并且从属性Message.channel
上有这样的迹象:
类型:
TextChannel
或DMChannel
或GroupDMChannel
所以这里我们有 3 个可能的结果message.channel.type
:"dm"
, "text"
, "group"
。
一旦您检查了该消息是否为 dm,您必须将其复制到您的服务器。同样,该Message
类型对我们来说具有有趣的属性:content
和attachments
.
处理附件的方式比内容本身要复杂一些。您必须查找类型MessageAttachment
并使用其属性,如url
.
但是因为content
它真的很容易,它只是一个字符串。所以我们只需要获取我们的频道并发送消息。
在下面的示例中,我使用他们的 ID 获取公会和服务器。您可以对它们进行硬编码,将它们放入 json 文件、数据库中,或者在您的消息中获取它们并将 dm 设置为命令,例如:
+send ID a message with many words
.
let channelID = "X";
let guildID = "X";
client.on('message', (message) => {
if(message.channel.type === 'dm'){
let embed = new Discord.RichEmbed()
.setAuthor(client.guilds.get(guildID).members.get(message.author.id).displayName, message.author.displayAvatarURL)
.setColor('#FAA')
.setDescription(message.content);
client.channels.get(channelID).send(embed);
}
});
于 2020-02-03T14:02:26.457 回答