Skip to main content

Proxy Integration

NestCord supports proxy configuration for all connections to the Discord API. This is useful for deployments in corporate networks or when using VPNs.

Proxy Configuration Methods​

1. Simple configuration using proxyPath​

src/app.module.ts
import { NestCordModule } from '@globalart/nestcord';
import { GatewayIntentBits } from 'discord.js';

@Module({
imports: [
NestCordModule.forRoot({
token: process.env.DISCORD_TOKEN,
intents: [GatewayIntentBits.Guilds],
proxyPath: 'http://proxy.company.com:8080',
}),
],
})
export class AppModule {}

2. Advanced configuration using proxy object​

src/app.module.ts
@Module({
imports: [
NestCordModule.forRoot({
token: process.env.DISCORD_TOKEN,
intents: [GatewayIntentBits.Guilds],
proxy: {
host: 'proxy.company.com',
port: 8080,
protocol: 'http',
auth: {
username: 'user',
password: 'password',
},
},
}),
],
})
export class AppModule {}

Configuration Parameters​

proxyPath​

  • Type: string
  • Description: Full URL of the proxy server
  • Examples:
    • 'http://proxy.company.com:8080'
    • 'https://user:pass@proxy.company.com:8080'
    • 'socks5://proxy.company.com:1080'

proxy​

  • Type: NestCordProxyOptions
  • Description: Object with detailed proxy settings

NestCordProxyOptions​

interface NestCordProxyOptions {
host: string;
port: number;
protocol?: 'http' | 'https';
auth?: {
username: string;
password: string;
};
}

How It Works​

  1. Environment Variables: When initializing the module, HTTP_PROXY and HTTPS_PROXY variables are automatically set
  2. Discord.js Client: All connections to Discord API will go through the specified proxy
  3. NestCordService: REST API requests will also use proxy settings

Usage Examples​

Corporate Network​

src/app.module.ts
NestCordModule.forRoot({
token: process.env.DISCORD_TOKEN,
intents: [GatewayIntentBits.Guilds],
proxyPath: 'http://corporate-proxy.company.com:8080',
})

Proxy with Authentication​

src/app.module.ts
NestCordModule.forRoot({
token: process.env.DISCORD_TOKEN,
intents: [GatewayIntentBits.Guilds],
proxy: {
host: 'secure-proxy.company.com',
port: 8080,
protocol: 'https',
auth: {
username: process.env.PROXY_USER,
password: process.env.PROXY_PASS,
},
},
})

SOCKS5 Proxy​

src/app.module.ts
NestCordModule.forRoot({
token: process.env.DISCORD_TOKEN,
intents: [GatewayIntentBits.Guilds],
proxyPath: 'socks5://proxy.company.com:1080',
})

Getting Proxy Information​

You can get the current proxy configuration through NestCordService:

src/my.service.ts
import { Injectable } from '@nestjs/common';
import { NestCordService } from '@globalart/nestcord';

@Injectable()
export class MyService {
constructor(private readonly nestcord: NestCordService) {}

getProxyInfo() {
const proxyConfig = this.nestcord.getProxyConfig();
console.log('Current proxy config:', proxyConfig);
}
}

Debugging​

When configuring the proxy, corresponding messages will be displayed in the logs:

[NestCordService] Proxy path configured: http://proxy.company.com:8080
[NestCordService] Proxy configured: http://proxy.company.com:8080

Notes​

  • Proxy settings are applied globally for the entire application
  • HTTP, HTTPS, and SOCKS5 proxies are supported
  • If proxy configuration fails, the application will continue to work without a proxy
  • Proxy settings affect all Discord.js connections, including WebSocket and REST API