有没有办法让我的机器人检查 DM 并将它们发布到我服务器的频道中?
Posted
技术标签:
【中文标题】有没有办法让我的机器人检查 DM 并将它们发布到我服务器的频道中?【英文标题】:Is there a way to allow my bot to check DMs and post them in a channel in my server? 【发布时间】:2020-05-17 16:26:03 【问题描述】:当有人向机器人发送消息时,我如何让我的机器人将消息发送到特定频道?我在考虑 webhook,但我不确定这是否是正确的方法。
【问题讨论】:
您的意思是在 discord 上接收 dm 并将其发送到您的 discord 服务器之一? 我希望它接收 DM,并将其发送到我服务器中的频道。 您想从哪里接收 DM? 来自机器人 DM。 你检查过 webhook 吗? 【参考方案1】:是的,你可以。 现在怎么办?
你必须先得到 dm 消息。 Message
具有属性 channel
,它表示接收消息的通道。该属性可以是 3 种不同的类型,均从具有 type
属性的 Channel
扩展而来。
这个type
属性可以有 6 个值:
从属性Message.channel
有这样的迹象:
类型:
TextChannel
或DMChannel
或GroupDMChannel
因此,对于message.channel.type
,我们有 3 个可能的结果:"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);
);
【讨论】:
以上是关于有没有办法让我的机器人检查 DM 并将它们发布到我服务器的频道中?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用maven插件将jar解压到我的项目文件夹并将它们作为java文件获取[关闭]
有没有办法将“%”符号添加到我在 Oracle SQL 中的透视结果中并将它们转换为 to_char