webhook url 不可复制,由 bot 制作

webhook url is not copyable which is made by bot

问题

我无法从 discord 客户端复制 webhook URL,这是由机器人制作的。 Copy Webhook URL 按钮被禁用。

我想知道的

发生了什么事

我通过以下代码使用 discord.js 创建了一个 webhook:

const target: TextChannel = client.channels.cache.get('CHANNEL_ID') as TextChannel;
const result = await target.createWebhook('webhook made by bot')

并且 webhook 已正确创建,但我无法从 discord 客户端复制 URL。 准确地说,我不能点击 Copy Webhook URL 按钮。已禁用。

当然,我可以从 createWebhook 的结果或通过获取 webhook 信息获取 URL,但我想让使用 discord 客户端的人轻松复制 webhook URL .

我检查了什么

我试图查看 webhooks 的信息,以了解人工和机器人制作的 webhooks 之间的区别:

这是人工制作的信息

'webhook made by my hand' => Webhook {
  name: 'Spidey Bot',
  avatar: null,
  id: 'id',
  type: 'Incoming',
  guildID: 'guildid',
  channelID: 'channelid',
  owner: undefined
}

这是来自机器人

'webhook made by bot' => Webhook {
  name: 'webhook made by bot',
  avatar: null,
  id: 'id',
  type: 'Incoming',
  guildID: 'guildid',
  channelID: 'channelid',
  owner: ClientUser {
    id: 'id_of_bot',
    system: null,
    locale: null,
    flags: null,
    username: 'botbotbot',
    bot: true,
    discriminator: 'XXXX',
    avatar: null,
    lastMessageID: null,
    lastMessageChannelID: null,
    verified: true,
    mfaEnabled: false,
    _typing: Map(0) {}
  }
}

看起来有标志 bot 来识别 webhook 是由 bot 还是其他人制作的。 我可以通过编辑这个选项来解决这个问题吗? 我可以改变它吗?

How to make the Copy Webhook URL button not disabled which is made by bot

据我所知,这不可能。通读 Discord Developer portal 后,Discord API 似乎不允许您对 Webhook 进行重大更改,除了 nameavatarchannel_id .

你将无法通过你的机器人创建一个正常的 webhook(人为的),除非它被认为是自我机器人,这当然是被禁止的。

The reason if the URL of webhook is not copyable which is made by bot

它是一种特殊类型的 webhook,应用程序拥有的 webhook,由应用程序(例如您的 discord 机器人)管理。普通用户不使用此类 webhook 的目的。

普通 webhook 和应用程序拥有的 webhook 之间的一个区别是应用程序拥有的 webhook 允许您发送 message components。因此,除非您以此为目标,否则您应该可以使用普通的 webhook。

如果您的目标是在多个公会中自动创建 webhook 作为机器人功能的一部分,并且应用程序拥有的 webhook 是绝对需要的(没有其他方法)。我会发出一个命令,它会向您显示当前频道中的 webhook 列表及其 URL 供您的用户使用(当然还有权限检查和隐私等)。