public async Task TrackUser(DiscordGuild g, ulong discordID, string uplayNickname, string relevantChannelName) { try { // SocketGuildUser trackedPerson = g.GetSingleUser(discordID); string queryR6ID = await _data.QueryMapping(discordID); if (queryR6ID != null) { await g.ReplyToUser("Vas discord ucet uz sledujeme. / We are already tracking your Discord account.", relevantChannelName, discordID); return; } string r6TabId = await TRNHttpProvider.GetID(uplayNickname); if (r6TabId == null) { await g.ReplyToUser("Nepodarilo se nam najit vas Uplay ucet. / We failed to find your Uplay account data.", relevantChannelName, discordID); return; } await _data.InsertIntoMapping(discordID, r6TabId); await g.ReplyToUser($"Nove sledujeme vase uspechy pod prezdivkou {uplayNickname} na platforme PC. / We now track you as {uplayNickname} on PC.", relevantChannelName, discordID); // Update the newly added user. bool ret = await Bot.Instance.UpdateOne(discordID); if (ret) { // Print user's rank too. Rank r = await TRNHttpProvider.GetCurrentRank(r6TabId); if (r.Digits()) { await g.ReplyToUser($"Aktualne vidime vas rank jako {r.FullPrint()}", relevantChannelName, discordID); } else { await g.ReplyToUser($"Aktualne vidime vas rank jako {r.CompactFullPrint()}", relevantChannelName, discordID); } } else { await g.ReplyToUser("Stala se chyba pri nastaven noveho ranku.", relevantChannelName, discordID); } } catch (RankParsingException e) { await g.ReplyToUser("Communication to the R6Tab server failed. Please try again or contact the local Discord admins.", relevantChannelName, discordID); await g.Reply("Pro admina: " + e.Message, relevantChannelName); } }