public async Task GetOrRefreshCredential() { if (Credential == null) { using (var stream = new FileStream(Utils.GetDataStoreFolder() + @"client_id.json", FileMode.Open, FileAccess.Read)) { Credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets, Const.Scope, Const.User, CancellationToken.None, new FileDataStore(Const.Folder)); await Credential.RefreshTokenAsync(CancellationToken.None); await GetGooglePlusUserData(Credential.Token.AccessToken); OnUserUpdate?.Invoke(_userData); StartRefreshTimer(); } } else { await Credential.RefreshTokenAsync(CancellationToken.None); } }
private AchievementManager(Bot bot) { this.bot = bot; AccountManager.Instance.OnGlobalLevelUp += async(u, c, l) => { LevelPacket p = new LevelPacket() { discordUser = await c.Guild.GetUserAsync(u.Id.FromDbLong()), discordChannel = c, account = u, level = l, }; await OnLevelGained?.Invoke(p); }; AccountManager.Instance.OnTransactionMade += async(msg, u1, u2, amount) => { TransactionPacket p = new TransactionPacket() { discordUser = msg.Author, discordChannel = msg.Channel, giver = u1, receiver = u2, amount = amount }; await OnTransaction?.Invoke(p); }; bot.Client.MessageReceived += async(e) => { if (OnMessageReceived == null) { return; } MessageEventPacket p = new MessageEventPacket() { message = new RuntimeMessage(e), discordUser = new RuntimeUser(e.Author), discordChannel = new RuntimeMessageChannel(e.Channel) }; await OnMessageReceived?.Invoke(p); }; bot.Client.UserUpdated += async(ub, ua) => { UserUpdatePacket p = new UserUpdatePacket() { discordUser = new RuntimeUser(ub), userNew = new RuntimeUser(ua) }; await OnUserUpdate?.Invoke(p); }; bot.Events.AddCommandDoneEvent(x => { x.Name = "--achievement-manager-command"; x.processEvent = async(m, e, s) => { CommandPacket p = new CommandPacket() { discordUser = m.Author, discordChannel = m.Channel, message = m, command = e, success = s }; await OnCommandUsed?.Invoke(p); }; }); }
public void UpdateProcess() { OnUserUpdate updateCallback = users => { OnlineUsers = users.ToString().Split(';').ToArray(); }; StartGetOnlineUsers(updateCallback); }
static extern void StartGetOnlineUsers(OnUserUpdate callback);