Пример #1
0
        private async Task OnGuildRoleDelete(ulong guildId, ulong roleId)
        {
            try
            {
                var cache = _cacheClient.Get;

                DiscordGuildPacket guild = await _discordClient.GetGuildAsync(guildId);

                if (guild == null)
                {
                    Console.WriteLine("OnGuildRoleDelete: Cache miss: guild was not found.");
                }

                if (guild.Roles != null)
                {
                    int index = guild.Roles.FindIndex(x => x.Id == roleId);

                    if (index != -1)
                    {
                        guild.Roles.RemoveAt(index);
                    }

                    await cache.UpsertAsync($"discord:guild:{guildId}", guild);
                }

                await cache.RemoveAsync($"discord:guild:{guildId}:role:{roleId}");
            }
            catch (Exception e)
            {
                Log.Trace(e.ToString());
            }
        }
Пример #2
0
        private async Task OnGuildRoleCreate(ulong guildId, DiscordRolePacket arg2)
        {
            try
            {
                DiscordGuildPacket guild = await _discordClient.GetGuildAsync(guildId);

                if (guild.Roles == null)
                {
                    guild.Roles = new List <DiscordRolePacket>();
                }

                int index = guild.Roles.FindIndex(x => x.Id == guildId);

                if (index == -1)
                {
                    guild.Roles.Add(arg2);
                }
                else
                {
                    guild.Roles[index] = arg2;
                }

                var cache = _cacheClient.Get;

                await cache.UpsertAsync($"discord:guild:{guildId}:role:{arg2.Id}", arg2);

                await cache.UpsertAsync($"discord:guild:{guildId}", guild);
            }
            catch (Exception e)
            {
                Log.Trace(e.ToString());
            }
        }
Пример #3
0
        private async Task OnGuildMemberAdd(DiscordGuildMemberPacket arg)
        {
            try
            {
                DiscordGuildPacket guild = await _discordClient.GetGuildAsync(arg.GuildId);

                if (guild.Members == null)
                {
                    guild.Members = new List <DiscordGuildMemberPacket>();
                }

                int index = guild.Members.FindIndex(x => x.UserId == arg.UserId);

                if (index != -1)
                {
                    guild.Members.RemoveAt(index);
                }

                guild.Members.Add(
                    await _discordClient.GetGuildUserAsync(arg.UserId, arg.GuildId)
                    );

                var cache = _cacheClient.Get;

                await cache.UpsertAsync($"discord:guild:{arg.GuildId}:user:{arg.UserId}", arg);

                await cache.UpsertAsync($"discord:guild:{arg.GuildId}", guild);
            }
            catch (Exception e)
            {
                Log.Trace(e.ToString());
            }
        }
Пример #4
0
        private Task OnGuildCreate(DiscordGuildPacket guild)
        {
            guild.Members.RemoveAll(x => x == null);

            return(Task.WhenAll(
                       cacheHandler.Guilds.AddAsync(guild).AsTask(),
                       cacheHandler.Channels.AddAsync(
                           guild.Channels.Select(x =>
            {
                x.GuildId = guild.Id;
                return x;
            })).AsTask(),
                       cacheHandler.Members.AddAsync(
                           guild.Members.Select(x =>
            {
                x.GuildId = guild.Id;
                return x;
            })).AsTask(),
                       cacheHandler.Roles.AddAsync(
                           guild.Roles.Select(x =>
            {
                x.GuildId = guild.Id;
                return x;
            })).AsTask(),
                       cacheHandler.Users.AddAsync(
                           guild.Members.Select(x => x.User)).AsTask()));
        }
Пример #5
0
        private async Task OnGuildMemberRemove(ulong guildId, DiscordUserPacket arg2)
        {
            DiscordGuildPacket guild = await _discordClient.GetGuildAsync(guildId);

            if (guild == null)
            {
                Log.Error($"Guild '{guildId}' not found");
                return;
            }

            if (guild.Members == null)
            {
                guild.Members = new List <DiscordGuildMemberPacket>();
            }
            else
            {
                int index = guild.Members.FindIndex(x => x.UserId == arg2.Id);

                if (index != -1)
                {
                    guild.Members.RemoveAt(index);
                }
            }

            await _cacheClient.RemoveAsync($"discord:guild:{guildId}:user:{arg2.Id}");

            await _cacheClient.AddAsync($"discord:guild:{guildId}", guild);
        }
        public async ValueTask OnGuildCreate(DiscordGuildPacket packet)
        {
            await InsertGuildCacheAsync(packet);

            var guild = new DiscordGuild(packet, Client);

            await EventHandler.OnGuildJoin(guild);
        }
        public async ValueTask OnGuildUpdate(DiscordGuildPacket packet)
        {
            var updatedPacket = await UpdateGuildCacheAsync(packet);

            var guild = new DiscordGuild(updatedPacket, Client);

            await EventHandler.OnGuildUpdate(guild);
        }
Пример #8
0
        private async Task OnGuildUpdate(DiscordGuildPacket arg1)
        {
            var guild = await cacheHandler.Guilds.GetAsync(arg1.Id) ?? arg1;

            guild.OverwriteContext(arg1);

            await cacheHandler.Guilds.EditAsync(guild);
        }
Пример #9
0
        public async Task <List <DiscordRolePacket> > GetRolesAsync(ulong guildId)
        {
            DiscordGuildPacket guild = await GetGuildAsync(guildId);

            if (guild != null)
            {
                return(guild.Roles);
            }
            return(null);
        }
Пример #10
0
        private async Task OnGuildCreate(DiscordGuildPacket guild)
        {
            var managedGuild = new DiscordGuild(guild, client);

            guildCreate.OnNext(managedGuild);
            if (!await cacheHandler.HasGuildAsync(guild.Id) &&
                !(guild.Unavailable ?? true))
            {
                guildJoin.OnNext(managedGuild);
            }
            else
            {
                guildAvailable.OnNext(managedGuild);
            }
        }
Пример #11
0
        private async Task OnGuildMemberUpdate(GuildMemberUpdateEventArgs arg)
        {
            try
            {
                DiscordGuildPacket guild = await _discordClient.GetGuildAsync(arg.GuildId);

                if (guild.Members == null)
                {
                    guild.Members = new List <DiscordGuildMemberPacket>();
                }

                int index = guild.Members.FindIndex(x => x.UserId == arg.User.Id);

                DiscordGuildMemberPacket packet;

                if (index == -1)
                {
                    packet = new DiscordGuildMemberPacket
                    {
                        User     = arg.User,
                        Roles    = arg.RoleIds.ToList(),
                        Nickname = arg.Nickname,
                        UserId   = arg.User.Id,
                        GuildId  = arg.GuildId,
                    };

                    guild.Members.Add(packet);
                }
                else
                {
                    guild.Members[index].Nickname = arg.Nickname;
                    guild.Members[index].Roles    = arg.RoleIds.ToList();
                    guild.Members[index].User     = arg.User;

                    packet = guild.Members[index];
                }

                var cache = _cacheClient.Get;

                await cache.UpsertAsync($"discord:guild:{arg.GuildId}:user:{arg.User.Id}", packet);

                await cache.UpsertAsync($"discord:guild:{arg.GuildId}", guild);
            }
            catch (Exception e)
            {
                Log.Trace(e.ToString());
            }
        }
Пример #12
0
        private async Task OnGuildRoleDelete(ulong guildId, ulong roleId)
        {
            DiscordGuildPacket guild = await _discordClient.GetGuildAsync(guildId);

            if (guild == null)
            {
                Console.WriteLine("OnGuildRoleDelete: Cache miss: guild was not found.");
            }

            if (guild.Roles != null)
            {
                int index = guild.Roles.FindIndex(x => x.Id == roleId);

                if (index != -1)
                {
                    guild.Roles.RemoveAt(index);
                }

                await _cacheClient.AddAsync($"discord:guild:{guildId}", guild);
            }

            await _cacheClient.RemoveAsync($"discord:guild:{guildId}:role:{roleId}");
        }
Пример #13
0
        private async Task OnGuildMemberRemove(ulong guildId, DiscordUserPacket arg2)
        {
            try
            {
                DiscordGuildPacket guild = await _discordClient.GetGuildAsync(guildId);

                if (guild == null)
                {
                    Log.Error($"Guild '{guildId}' not found");
                    return;
                }

                if (guild.Members == null)
                {
                    guild.Members = new List <DiscordGuildMemberPacket>();
                }
                else
                {
                    int index = guild.Members.FindIndex(x => x.UserId == arg2.Id);

                    if (index != -1)
                    {
                        guild.Members.RemoveAt(index);
                    }
                }

                var cache = _cacheClient.Get;

                await cache.RemoveAsync($"discord:guild:{guildId}:user:{arg2.Id}");

                await cache.UpsertAsync($"discord:guild:{guildId}", guild);
            }
            catch (Exception e)
            {
                Log.Trace(e.ToString());
            }
        }
Пример #14
0
        private async Task OnGuildRoleCreate(ulong guildId, DiscordRolePacket arg2)
        {
            DiscordGuildPacket guild = await _discordClient.GetGuildAsync(guildId);

            if (guild.Roles == null)
            {
                guild.Roles = new List <DiscordRolePacket>();
            }

            int index = guild.Roles.FindIndex(x => x.Id == guildId);

            if (index == -1)
            {
                guild.Roles.Add(arg2);
            }
            else
            {
                guild.Roles[index] = arg2;
            }

            await _cacheClient.AddAsync($"discord:guild:{guildId}:role:{arg2.Id}", arg2);

            await _cacheClient.AddAsync($"discord:guild:{guildId}", guild);
        }
Пример #15
0
        private async Task OnGuildMemberAdd(DiscordGuildMemberPacket arg)
        {
            DiscordGuildPacket guild = await _discordClient.GetGuildAsync(arg.GuildId);

            if (guild.Members == null)
            {
                guild.Members = new List <DiscordGuildMemberPacket>();
            }

            int index = guild.Members.FindIndex(x => x.UserId == arg.UserId);

            if (index != -1)
            {
                guild.Members.RemoveAt(index);
            }

            guild.Members.Add(
                await _discordClient.GetGuildUserAsync(arg.UserId, arg.GuildId)
                );

            await _cacheClient.AddAsync($"discord:guild:{arg.GuildId}:user:{arg.UserId}", arg);

            await _cacheClient.AddAsync($"discord:guild:{arg.GuildId}", guild);
        }
Пример #16
0
 private async Task OnGuildCreate(DiscordGuildPacket arg)
 {
     await _cacheClient.AddAsync($"discord:guild:{arg.Id}", arg);
 }
Пример #17
0
 public DiscordGuild(DiscordGuildPacket packet, IDiscordClient client)
 {
     _packet = packet;
     _client = client;
 }
Пример #18
0
        private async Task OnGuildCreate(DiscordGuildPacket arg)
        {
            var cache = _cacheClient.Get;

            await cache.UpsertAsync($"discord:guild:{arg.Id}", arg);
        }
Пример #19
0
 public DiscordGuild(DiscordGuildPacket packet, IDiscordClient client)
 {
     this.packet = packet;
     this.client = client;
 }
Пример #20
0
 private static bool ValidateCache(DiscordGuildPacket p) => !string.IsNullOrEmpty(p.Name);