Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFC] 新功能请求 adapter-discord #193

Closed
16 tasks done
dragon-fish opened this issue Mar 30, 2021 · 12 comments · Fixed by #204
Closed
16 tasks done

[RFC] 新功能请求 adapter-discord #193

dragon-fish opened this issue Mar 30, 2021 · 12 comments · Fixed by #204
Assignees

Comments

@dragon-fish
Copy link
Member

dragon-fish commented Mar 30, 2021

以下为我对 adapter-discord 的功能需求,有一些可能已经实现但是我不知道,如果有空的话希望能够补一个平台特殊 API 的文档。

大部分需求均为平台限定操作。我不太清楚 discord 平台开放了哪些接口,有一些操作可能无法实现,这也没关系,我只是先把能想到的都提出来。

信息获取

  • 在 session.author 中标注发件者是否为 bot (有蓝色 bot 牌牌的人)
  • 在 session.author 中标注发件者是否为伺服器助力者 (server boost)
  • 在 session.author 中标注发件者的身份组 提供接口, 用户自行处理
  • 在 session.author 中标注发件者的颜色 提供接口, 用户自行处理

数据获取

  • 获取伺服器用户列表
    • 获取伺服器在线用户列表 无相关API
  • 获取伺服器身份组列表
    • 包括角色名称、角色颜色、权限
  • 获取伺服器用户组成员列表
  • 获取频道名称、主题 (顶栏的那一行小字)

伺服器管理

  • 设定用户昵称
  • 增删伺服器身份组,设定成员的身份组
  • 修改伺服器设置,创建与修改类别,创建与修改频道
    • 设置伺服器图标、名称
    • 设定单频道名称、主题、权限 (例如针对某一用户组进行禁言)
    • 增删频道 webhook
@XxLittleCxX
Copy link
Member

在 session.author 中标注发件者是否为伺服器助力者 (server boost)
在 session.author 中标注发件者的身份组
在 session.author 中标注发件者的颜色

看了下相关api, 不能直接在message event中直接实现(除非你能忍受每条message请求多个api的速度)

https://discord.com/developers/docs/resources/channel#message-object

https://discord.com/developers/docs/resources/guild#guild-member-object

考虑下别的实现方法?

@XxLittleCxX
Copy link
Member

获取伺服器在线用户列表

这个好像api没给

@XxLittleCxX
Copy link
Member

XxLittleCxX commented Apr 2, 2021

@XxLittleCxX
Copy link
Member

获取频道名称、主题

https://discord.com/developers/docs/resources/channel#get-channel

@XxLittleCxX
Copy link
Member

伺服器管理那一块,我不知道在没有权限,但填写intent的情况下,gateway会不会拒绝连接,有待实验,但写个api应该挺简单

@shigma
Copy link
Member

shigma commented Apr 2, 2021

  1. 在 session.author 中标注发件者是否为 bot (有蓝色 bot 牌牌的人)
  2. 在 session.author 中标注发件者是否为伺服器助力者 (server boost)
  3. 在 session.author 中标注发件者的身份组
  4. 在 session.author 中标注发件者的颜色
  • 1 可以直接实装到 core 的 typings 中,我觉得挺合理的
  • 2, 4 的话比较 platform-specific,但是介于不太可能与其他平台冲突所以也不是不能做,但是需要先商议一下属性名称
  • 3 的话需求客观存在,但是由于各平台实现不一,建议单独讨论一套具备兼容性的方案

@shigma shigma added the plan future works label Apr 2, 2021
@XxLittleCxX
Copy link
Member

@shigma 但是要2/4做的话要单独请求api,但这个功能又基本不会用到,做了有点浪费资源。

也许可以adapter设置里加一个选项,但是也不够灵活

@shigma
Copy link
Member

shigma commented Apr 2, 2021

@XxLittleCxX 我的主张是,除非是少数情况,否则获取信息的时候不做任何主动请求。如果接受的数据包中不含 2, 4 那就不要实装成为 session 的一部分,可以单独做接口。

@XxLittleCxX
Copy link
Member

gateway发来的实际上是没有的,就单独做接口吧

@dragon-fish
Copy link
Member Author

dragon-fish commented Apr 2, 2021

在 session.author 中标注发件者是否为伺服器助力者 (server boost)
在 session.author 中标注发件者的身份组
在 session.author 中标注发件者的颜色

看了下相关api, 不能直接在message event中直接实现(除非你能忍受每条message请求多个api的速度)

https://discord.com/developers/docs/resources/channel#message-object

https://discord.com/developers/docs/resources/guild#guild-member-object

考虑下别的实现方法?

如果获取用户各项信息需要数个请求才能实现,那么我觉得确实不应该塞进session。

将获取各个信息的 endpoint 分别封装为 api,然后让使用者自己处理业务逻辑会更合理。

@dragon-fish
Copy link
Member Author

获取伺服器在线用户列表

这个好像api没给

这个目前不是刚需,毕竟大部分情况下无需考虑用户是否在线

@dragon-fish
Copy link
Member Author

伺服器管理那一块,我不知道在没有权限,但填写intent的情况下,gateway会不会拒绝连接,有待实验,但写个api应该挺简单

伺服器管理不是刚需,频道管理的需求更大。例如设置频道禁言这个在QQ互联时可能会用到。

试想一个场景,QQ群设置了全员禁言,结果互联 bot 是群管理员,用户实际上可以跑去 discord 发言绕过群禁言…

@XxLittleCxX XxLittleCxX linked a pull request Apr 3, 2021 that will close this issue
@shigma shigma closed this as completed in aae8a25 Apr 4, 2021
@shigma shigma removed the plan future works label Feb 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants