由 bot 制作的 webhook url 不可复制
Posted
技术标签:
【中文标题】由 bot 制作的 webhook url 不可复制【英文标题】:webhook url is not copyable which is made by bot 【发布时间】:2021-10-17 04:45:27 【问题描述】:问题
我无法从不和谐客户端复制 webhook URL,这是由 bot 制作的。
Copy Webhook URL
按钮被禁用。
我想知道的
如何使机器人制作的Copy Webhook URL
按钮不被禁用
bot生成的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
的结果中获取 URL,或者通过获取 webhook 信息,但我想让使用不和谐客户端的人轻松复制 webhook URL。
我检查了什么
我试图查看 webhook 的信息,以了解人类和机器人制作的 webhook 之间的区别:
这是人为的信息
'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是由机器人还是其他人制作的。
我可以通过编辑这个选项来解决这个问题吗?
可以改吗?
【问题讨论】:
【参考方案1】:如何使机器人制作的
Copy Webhook URL
按钮不被禁用
据我所知,这不可能。在阅读了Discord Developer portal 之后,除了name
、avatar
和channel_id
之外,Discord API 似乎不允许您对 webhook 进行重大更改。
您将无法通过您的机器人创建一个普通的 webhook(人造)而不被视为自我机器人,这当然是被禁止的。
bot制作的webhook的URL不可复制的原因
它是一种特殊类型的 webhook,应用程序拥有的 webhook,由应用程序(例如您的不和谐机器人)管理。此类 webhook 的目的不是供普通用户使用。
普通 webhook 和应用程序拥有的 webhook 之间的区别之一是应用程序拥有的 webhook 允许您发送 message components。因此,除非您以此为目标,否则您应该可以使用普通的 webhook。
如果您的目标是在多个公会中自动创建 webhook 作为您的机器人功能的一部分,并且应用程序拥有的 webhook 是绝对需要的(没有其他方法)。我会做一个命令,它将向您显示当前频道中的 webhook 列表及其 URL 供您的用户使用(当然还有权限检查和隐私等)。
【讨论】:
谢谢,我明白了!我会尝试获取channel-webhook列表的列表,并让用户检查它。以上是关于由 bot 制作的 webhook url 不可复制的主要内容,如果未能解决你的问题,请参考以下文章
带有自签名证书的 Telegram bot webhook 不起作用