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);
            }
        }
Exemple #2
0
        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);