private async Task OnRoleDelete(RoleDeleteEventArgs eventArgs) { await cacheHandler.Roles.DeleteAsync(new DiscordRolePacket { Id = eventArgs.RoleId, GuildId = eventArgs.GuildId }); }
private async Task OnMessageAsync(object ch, BasicDeliverEventArgs ea) { try { var payload = Encoding.UTF8.GetString(ea.Body); ShardPacket body = JsonConvert.DeserializeObject <ShardPacket>(payload); Log.Trace("packet with the op-code '" + body.opcode + "' received."); switch (body.opcode) { case Opcode.MessageCreate: { if (MessageCreate != null) { await MessageCreate( body.Data.ToObject <DiscordMessagePacket>() ); } } break; case Opcode.GuildCreate: { if (GuildCreate != null) { var guild = body.Data.ToObject <DiscordGuildPacket>(); await GuildCreate( guild ); } } break; case Opcode.ChannelCreate: { if (GuildCreate != null) { var channel = body.Data.ToObject <DiscordChannelPacket>(); await ChannelCreate( channel ); } } break; case Opcode.GuildMemberRemove: { if (GuildMemberRemove != null) { var packet = body.Data.ToObject <GuildIdUserArgs>(); await GuildMemberRemove( packet.guildId, packet.user ); } } break; case Opcode.GuildMemberAdd: { DiscordGuildMemberPacket guildMember = body.Data.ToObject <DiscordGuildMemberPacket>(); if (GuildMemberAdd != null) { await GuildMemberAdd(guildMember); } } break; case Opcode.GuildMemberUpdate: { GuildMemberUpdateEventArgs guildMember = body.Data.ToObject <GuildMemberUpdateEventArgs>(); if (GuildMemberUpdate != null) { await GuildMemberUpdate( guildMember ); } } break; case Opcode.GuildRoleCreate: { RoleEventArgs role = body.Data.ToObject <RoleEventArgs>(); if (GuildRoleCreate != null) { await GuildRoleCreate( role.GuildId, role.Role ); } } break; case Opcode.GuildRoleDelete: { if (GuildRoleDelete != null) { RoleDeleteEventArgs role = body.Data.ToObject <RoleDeleteEventArgs>(); await GuildRoleDelete( role.GuildId, role.RoleId ); } } break; case Opcode.GuildRoleUpdate: { RoleEventArgs role = body.Data.ToObject <RoleEventArgs>(); if (GuildRoleUpdate != null) { await GuildRoleUpdate( role.GuildId, role.Role ); } } break; case Opcode.ChannelDelete: { if (ChannelDelete != null) { await ChannelDelete( body.Data.ToObject <DiscordChannelPacket>() ); } } break; case Opcode.ChannelUpdate: { if (ChannelUpdate != null) { await ChannelUpdate( body.Data.ToObject <DiscordChannelPacket>() ); } } break; case Opcode.GuildBanAdd: { if (GuildBanAdd != null) { var packet = body.Data.ToObject <GuildIdUserArgs>(); await GuildBanAdd( packet.guildId, packet.user ); } } break; case Opcode.GuildBanRemove: { if (GuildBanRemove != null) { var packet = body.Data.ToObject <GuildIdUserArgs>(); await GuildBanRemove( packet.guildId, packet.user ); } } break; case Opcode.GuildDelete: { if (GuildDelete != null) { var packet = body.Data.ToObject <DiscordGuildUnavailablePacket>(); await GuildDelete( packet ); } } break; case Opcode.GuildEmojiUpdate: { } break; case Opcode.GuildIntegrationsUpdate: { } break; case Opcode.GuildMembersChunk: { } break; case Opcode.GuildUpdate: { if (GuildUpdate != null) { await GuildUpdate( body.Data.ToObject <DiscordGuildPacket>() ); } } break; case Opcode.MessageDelete: { if (MessageDelete != null) { await MessageDelete( body.Data.ToObject <MessageDeleteArgs>() ); } } break; case Opcode.MessageDeleteBulk: { } break; case Opcode.MessageUpdate: { if (MessageUpdate != null) { await MessageUpdate( body.Data.ToObject <DiscordMessagePacket>() ); } } break; case Opcode.PresenceUpdate: { } break; case Opcode.Ready: { } break; case Opcode.Resumed: { } break; case Opcode.TypingStart: { } break; case Opcode.UserUpdate: { if (UserUpdate != null) { await UserUpdate( body.Data.ToObject <DiscordUserPacket>() ); } } break; case Opcode.VoiceServerUpdate: { } break; case Opcode.VoiceStateUpdate: { } break; } channel.BasicAck(ea.DeliveryTag, false); } catch (Exception e) { Log.Error(e); } }