diff --git a/src/Discord.Net.Rest/Extensions/ServiceCollectionExtensions.cs b/src/Discord.Net.Rest/Extensions/ServiceCollectionExtensions.cs
new file mode 100644
index 000000000..8cf85e118
--- /dev/null
+++ b/src/Discord.Net.Rest/Extensions/ServiceCollectionExtensions.cs
@@ -0,0 +1,69 @@
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Net.Http;
+using System.Net;
+using Discord.Net.Rest;
+using Discord.Rest.Net;
+
+namespace Discord.Rest.Extensions
+{
+ ///
+ /// Here you will find all the extensions to be able to add a Discord Client to an IServiceCollection
+ ///
+ public static class ServiceCollectionExtensions
+ {
+ public static IServiceCollection AddScopedDiscordRestClient(this IServiceCollection services, bool useProxy = false)
+ {
+ services.AddHttpClient("HttpFactoryRestClientProvider")
+ .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
+ {
+ AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip,
+ UseCookies = false,
+ UseProxy = useProxy,
+ });
+
+
+
+ services.AddTransient(provider => new HttpFactoryRestClientProvider(provider.GetRequiredService()));
+ services.AddScoped(provider =>
+ {
+ var config = new DiscordRestConfig
+ {
+ RestClientProvider = provider.GetRequiredService().Instance
+ };
+ return new DiscordRestClient(config);
+ });
+
+ return services;
+ }
+
+ public static IServiceCollection AddTransientDiscordRestClient(this IServiceCollection services, bool useProxy = false) //where should we put this useProxy options, I haven't fully understood where the original code takes this from.
+ {
+ services.AddHttpClient("HttpFactoryRestClientProvider")
+ .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
+ {
+ AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip,
+ UseCookies = false,
+ UseProxy = useProxy,
+ });
+
+
+
+ services.AddTransient(provider => new HttpFactoryRestClientProvider(provider.GetRequiredService()));
+ services.AddTransient(provider =>
+ {
+ var config = new DiscordRestConfig
+ {
+ RestClientProvider = provider.GetRequiredService().Instance
+ };
+ return new DiscordRestClient(config);
+ });
+
+ return services;
+ }
+ }
+}