You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js:如何获取用户关联账户并实现Riot与Faceit用户名比对?

可行解决方案

核心限制说明

Discord官方API确实不直接提供用户关联的Riot Games账户信息,这是出于用户隐私和平台数据权限的限制,直接通过Discord API获取此信息的路径走不通。

替代实现方案

1. 引导用户主动授权或提供信息并验证

  • 让用户通过Riot的OAuth2授权流程,主动授权你的机器人获取其Riot账户信息:这是最可靠的方式,授权后可通过Riot API直接拿到用户的官方用户名。
  • 若不想走OAuth,可让用户手动输入Riot用户名+Tag,再调用Riot的用户查询API(比如Valorant的/riot/account/v1/accounts/by-riot-id/{gameName}/{tagLine}接口)验证信息真实性,确认后绑定到用户的Discord ID上。

2. 借助Faceit API反向提取关联Riot账户

  • 既然你能获取用户的Faceit链接,先通过Faceit API解析出用户的Faceit ID,再调用Faceit的玩家游戏关联接口,提取该Faceit账户绑定的Riot用户名:
    • 需要先申请Faceit API密钥,然后通过接口查询用户的关联游戏账户数据。
    • 拿到Riot用户名后,可引导用户确认该账户是否属于自己的Discord账号,完成比对。

3. 搭建自定义关联验证系统

  • 在机器人内构建独立的关联数据库,记录Discord用户ID与Riot用户名的对应关系:
    • 提供指令(如!bind-riot [游戏名] [Tag])让用户提交信息。
    • 增加验证环节:比如要求用户在Riot游戏内将昵称临时修改为包含Discord用户ID的内容,机器人通过Riot API查询确认后完成绑定;或要求用户上传带有Discord ID的游戏内截图,由管理员人工审核(适合小范围使用的机器人)。

代码示例(Faceit API获取关联Riot账户)

const fetch = require('node-fetch');

async function fetchRiotFromFaceit(faceitUserId, faceitApiKey) {
  const res = await fetch(`https://open.faceit.com/data/v4/players/${faceitUserId}/games`, {
    headers: {
      'Authorization': `Bearer ${faceitApiKey}`
    }
  });
  const playerGames = await res.json();
  // 以Valorant为例,如需其他Riot游戏可替换为lol等
  const riotAccount = playerGames.games?.valorant;
  return riotAccount ? riotAccount.nickname : null;
}

内容的提问来源于stack exchange,提问作者Grkm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:52:20