Permissions are a crucial part of Discord guilds. They're what decides what a member can and cannot do. Behind the scenes, permissions are a number comprised of multiple values OR'd. The DiscordPermission maps the values, so just doing the bitwise operations yourself works, although there are some extension methods available to make your life easier.
Manual bitwise operations
DiscordPermission perms = DiscordPermission.None;// create empty set
perms |= DiscordPermission.KickMembers;// add a permission
perms &=~DiscordPermission.KickMembers;// remove the permission
Multiple permissions can, in multiple examples, be checked for / added / removed in a single call.
Discord allows overwriting of members/roles in the scope of a singular (or more because of synchronized permissions) channel. A GuildChannel's permission overwrites are located at .PermissionOverwrites.
GuildMember.GetPermissions() has an overload accepting an IEnumerable<DiscordPermissionOverwrite>. Example:
Discord have recently removed the ability for user accounts to request members the same way bot accounts do. Anarchy has methods for both, so make sure to use the right one!
Bots can use the .GetGuildMembers() method, whilst users can only use .GetGuildChannelMembers(). The method for users works like Discord's Member List, meaning that it only gets members that have access to it. Both methods return an IReadOnlyList<GuildMember> and are available for gateway clients only.
There are 2 types of webhooks: incoming webhooks, which send messages and are authenticated using a token, and channel followers that crosspost messages from news channels. Anarchy has extensive functionality for both of them.