【问题标题】:Get User ID from Unique DIscord Invite Link or Invite with Extra Parameters从唯一的 DIScord 邀请链接或带有额外参数的邀请中获取用户 ID
【发布时间】:2022-01-06 03:58:10
【问题描述】:

我有一个网站,用户可以在其中填写一些信息,并且可以在执行某些任务/游戏时获得积分,我想在将我的不和谐服务器加入我的网站数据库中的个人资料时将他们的不和谐用户匹配,这样我就可以给予一些奖励取决于 Discord 上的某些内容。我一直在尝试找到一种简单的方法来跟踪谁加入了服务器,但我找不到任何明确的信息。 我知道我只需使用 1 次就可以生成唯一链接,并让我的机器人在变化时检查,但如果我有多个人同时加入,这会带来一些问题(至少在我的脑海中)。

我现在的解决方法是使用我的机器人向每个加入的人发送一条消息,每个人都通过一个唯一链接加入我的网络上的端点,我以这种方式匹配双方的数据,但这不是最好的方法。

new Event("guildMemberAdd", (client, member) => {
    const channel = client.channels.cache.get(IDofTheChannel);
    if (!channel) return;
    const embed = new Discord.MessageEmbed();

    embed
        .//My embedded message functionality with the link and so on;

     channel.send({
        embeds: [embed]
    });
});

有没有更好的方法来跟踪这个或从邀请本身检索信息或发送带有额外参数的邀请?

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    简答


    不,但是是的。不,因为您看不到某个 GuildMember 加入了哪个邀请。
    但是有一个解决方法是跟踪邀请数据。

    长答案


    无法知道某个公会成员是否加入了哪个邀请,因为不发送或跟踪此信息。
    到目前为止,我能想到的唯一解决方法是跟踪邀请使用
    让我们直接找到解决方案

    • 您需要通过设置 MapCollection 并将所有邀请码设置为键和使用值来缓存公会中的所有邀请。
    • 收听guildMemberAdd 事件,您需要在内部循环所有邀请以查看哪些邀请数据发生了变化。
    • 将您的数据存储在某处并增加邀请使用的次数。
    • 除此之外,您还必须检测添加或删除了哪个邀请,以便设置和取消设置值。
      这可以通过收听 inviteCreateinviteDelete 事件来实现。

    ...你有它!


    您刚刚创建了一个邀请跟踪器,恭喜。 如果您需要更多解释,请随时使用评论部分。

    【讨论】:

    • 感谢您的回复!该功能是我正在谈论的 1 使用链接(我更喜欢 1 使用链接而不是多次使用的想法,服务器不公开),但我认为如果我有 2 人同时加入,我会结束联合国交叉数据,这在这种情况下是危险的,因为涉及到好处。如果几天后没有人回复更好的选择,我会接受它作为答案:)
    • 您好,guildMemberAdd 不能同时发出,Javascript 是单线程的。无论如何,API 无论如何都不会同时发送它们。这是最好的方法,也是迄今为止我看到的所有机器人所做的。
    • 但我的数据库不是,所以我可以添加 3 个链接,而不和谐机器人只检测到 1 个人,因为用户介于两者之间(我认为(?))。同时,计划是让它增长很多,因此必须检查和匹配一个包含 50k 条目比较值的表听起来不太好。但看起来没有那么多选择了。谢谢
    • 嗯。你的缓存呢,你可以只使用缓存的计数来写入数据库吗?因为它会在有人加入后立即更新。数据库可能会多次重写数据,但至少它可以工作。这可能不是一个好习惯。但是几乎没有其他选择了。
    • 我想这可能会奏效......但这听起来比我现在做的风险更大。感谢您的帮助!
    【解决方案2】:

    我也有同样的头痛,我发现这个问题的最佳解决方案是:

    您需要使用 discord OAuth2 API 服务让用户授权您访问临时令牌,这将使您能够使用 Discord API 将用户的id 和其他信息获取到您的 Web 应用程序中。然后,您可以将用户 ID 传递给您的机器人,它可以侦听异步服务器或数据库添加/更改触发器以将该角色授予用户。

    参考:https://discord.com/developers/docs/topics/oauth2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 2020-10-17
      • 1970-01-01
      相关资源
      最近更新 更多