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

如何获取加入服务器的新成员及其邀请人的User ID?

服务器邀请积分系统实现方案

核心流程逻辑

  • 监听新成员加入服务器的触发事件,拉取本次加入的关联邀请链路数据,提取两个核心字段:新加入成员的User ID、对应邀请人的User ID
  • 执行积分发放前置校验:查询永久存储的已发放标记库,确认当前新成员的User ID未被标记过,避免该用户退服后重新加入重复发放积分
  • 校验通过后同步执行两个操作:① 给对应邀请人的账户增加1个货币积分;② 将该新成员的User ID写入已发放标记库,永久生效不再触发重复发放

存储结构设计

建议设置两个独立的存储集合:

  • 积分账户表:核心字段为 user_id(用户ID,主键)、point_balance(货币积分余额)
  • 已发放标记表:核心字段为 new_user_id(已发放过积分的新成员ID,主键)、inviter_user_id(对应邀请人ID,留作数据溯源)、grant_time(发放时间戳)

核心逻辑伪代码示例

// 新成员加入事件回调
async function handleNewMemberJoin(newMemberInfo) {
  // 1. 获取本次加入对应的邀请人ID
  const inviterUserId = await getRelatedInviterId(newMemberInfo.id);
  // 无对应邀请人(如官方渠道加入)直接跳过流程
  if (!inviterUserId) return;

  // 2. 校验该新成员是否已经发放过积分
  const hasGranted = await queryGrantedList(newMemberInfo.id);
  if (hasGranted) return;

  // 3. 给邀请人发放1个货币积分
  await updateUserPoint(inviterUserId, 1);

  // 4. 标记该新成员已完成积分发放,永久生效
  await addToGrantedList(newMemberInfo.id, inviterUserId);
}

边界注意事项

  • 已发放标记库需做持久化存储,不要使用临时缓存、会话存储承载,避免数据清空后出现重复发放的问题
  • 若多个邀请链路同时关联到同一个新成员,可按「最早生效的邀请」规则匹配邀请人即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:24:10