如何使用 Discord API 代表用户添加对消息的反应?

Posted

技术标签:

【中文标题】如何使用 Discord API 代表用户添加对消息的反应?【英文标题】:How to add a reaction to a message on user behalf using Discord API? 【发布时间】:2020-02-16 06:08:17 【问题描述】:

我正在尝试使用对特殊消息的反应来创建角色分配机器人。棘手的部分是保持反应一致。我想在创建消息时使用已经拥有角色的用户预先填充角色。我还想防止用户在不选择另一个角色的情况下删除他们对一个角色的反应。我见过这样的机器人:当我试图消除对我的角色的反应时,机器人为我重新添加了它。但是我找不到任何允许代表某人添加反应的 API。我也找不到任何方法来阻止用户删除他们对消息的反应。它是怎么做到的?我错过了什么吗?还是它是一个未记录的 API 功能?

【问题讨论】:

【参考方案1】:

据我所知,您不能以用户身份强制添加反应。如果您仍然知道执行此操作的机器人的名称是什么,请告诉我,我会尽力弄清楚。

您唯一能做的就是删除用户的反应

您也不能阻止用户添加/删除反应。您只能阻止他们使用新表情符号添加反应(具有Send Messages 权限的用户可以将新表情符号添加到反应中。因此,如果一条消息只有 2 个表情符号作为反应,他可以添加第三个,但如果他没有没有该权限,他只能添加已经存在的表情符号的反应)

【讨论】:

看起来这样做的机器人是 yagpdb.xyz。我还可以防止用户添加不相关的反应:我的机器人检测到添加并删除列表中没有的任何反应。这样一来,大多数用户都有权添加反应,但不能针对此特定消息添加反应。 YAGPDB.xyz 可以重置角色菜单上的反应。 docs.yagpdb.xyz/commands/all-commands#rolemenu-resetreactions 但 Discord API 似乎不支持代表 user.id 创建反应。 discord.com/developers/docs/resources/channel#create-reaction

以上是关于如何使用 Discord API 代表用户添加对消息的反应?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JDA 在 Discord 服务器(不是用户/机器人 DM)中创建私人频道:Java Discord API

如何使用 JDA 在 Discord 中创建文本通道:Java Discord Api

你如何从和 api 获取信息并发送 discord.py

使用 Discord API 和 cURL 发送 Discord DM

Discord API - 使用 public_flags 获取用户的徽章

如何使用 discord.py 获取不和谐用户的用户 ID