【问题标题】:Discord: Reading messages from one channel in a (non-admin perm) server, and posting it to another (with admin perms)Discord:从(非管理员权限)服务器中的一个频道读取消息,并将其发布到另一个(使用管理员权限)
【发布时间】:2021-09-07 20:27:00
【问题描述】:

我是 Discord API 框架的新手。

ServerFROM 是我受邀访问的公共服务器(非管理员权限)。因此我不能在那里添加机器人。但是我可以查看ChannelFROM中的内容(ServerFROM中的文字频道)

我有自己的ServerTO(其中我有管理员权限,所以可以做任何事情)。其中,我有目标ChannelTO

我想在ChannelFROM 上部署一个监听器,例如当ChannelFROM 中有新消息(公告)时,我希望它被阅读并转发到ChannelTO。 类似于this Stackoverflow issue 中所做的事情,除了我不能让某些脚本在我的机器上 24x7 本地运行。也许使用 Github Actions 或类似的东西?

我该怎么做呢?任何想法表示赞赏。也许是某种形式的服务器,或者只是一个自定义的 Discord 机器人
并提前致谢。

【问题讨论】:

  • 如果ChannelFROMannouncement 频道,您可以简单地使用Follow 选项将其消息发布到ChannelTO。如果没有,您唯一的选择是将机器人添加到ServerFROM,并为您传输消息。但是,Discord 打算在 2022 年 4 月之前限制机器人仅阅读此类消息,这意味着如果您确实走这条路,那么它只能在那之前可行。
  • 我不认为它是一个公告频道(虽然名字是这样说的)如果 ChannelTO 与 ChannelFROM 位于不同的服务器中,你确定那会吗?
  • 考虑要求服务器所有者将频道设为公告频道(如果这是它的用途)

标签: discord hosting


【解决方案1】:

您可以为此使用自定义机器人。我不知道其他方式

我是这样做的

1st : 我们获取您想收听的频道的 ID 第二:我们做一个输出或机器人从哪里复制消息并发送它 3rd : Bot 需要权限才能查看频道和发送消息

或简而言之(如果我不善于解释,请见谅)

client.on("messageCreate", message => {
if(message.author.bot) return;

if(message.channel.id === ID_HERE) // ChannelFROM in ID_HERE
{
  let MSG = message.content
  let Author = message.member.displayName

  let Avatar = message.author.displayAvatarURL({dynamic: true})
  
  const Embed = new MessageEmbed()
  .setAuthor(Author , Avatar )
  .setDescription(MSG)
  .setColor("RANDOM")
  
  
  client.channels.cache.get(ID_HERE).send({ embeds: [Embed] }) // SendTo in ID_HERE
   
}
})


您可以删除if(message.author.bot) return;,如果您希望它还阅读该特定频道上的其他机器人消息

【讨论】:

  • 但是运行它的机器人只在 ServerTO 上,而不是在 ServerFROM 上。那么它真的可以从 ServerFROM(client.on("messageCreate", message => ... 部分)读取消息吗?
  • 这就是使用自定义机器人的问题,如果机器人不在 ServerFrom 中,我不确定如何让它读取 ServeFrom 通道。
  • 机器人无法从它不属于@TempoRary 的服务器访问消息
猜你喜欢
  • 1970-01-01
  • 2014-04-18
  • 2022-01-05
  • 1970-01-01
  • 2014-05-18
  • 2021-10-24
  • 2014-02-04
  • 2011-01-02
相关资源
最近更新 更多