Discord.js新版本下如何通过OAuth2添加成员至服务器
问题:Discord.js更新后OAuth2添加服务器成员的方法问题
我希望通过Discord OAuth2系统将成员添加到服务器,但Discord.js更新后相关方法发生了变化,搜索后未找到解决方案。我的旧代码如下:
await client.api.guilds(guildId).members(client.users.resolveId(interaction.member.id)).put({ data: { access_token: data.access_token, roles: (user?.[0]?.roles == "") ? [] : userRoles } }) .then(async () => {...
其中guildId为Guild.id,access_token是OAuth2生成的访问令牌(旧版本可用),user是从数据库解析的对象。我尝试使用Guild.addMember但失败(提示addMember不是函数)。
编辑:我自己找到答案了……(见下方我的回答)
解决方案
在Discord.js v13及后续版本中,原有的client.api底层调用和Guild.addMember方法已被废弃,需使用GuildMemberManager.add()方法实现OAuth2添加成员的功能。替换后的代码如下:
await guild.members.add(interaction.member.id, { accessToken: data.access_token, roles: user?.[0]?.roles === "" ? [] : userRoles });
说明
- 需确保已获取目标服务器的
Guild实例(即代码中的guild) guild.members.add()第一个参数为要添加的用户ID- 第二个参数是配置对象,其中
accessToken为OAuth2流程中获取的有效访问令牌,roles为要赋予用户的角色ID数组
内容的提问来源于stack exchange,提问作者Kodeur_Kubik
相关产品推荐
相关产品推荐

