main.js 928 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. require('dotenv').config();
  2. const {ShardingManager} = require('discord.js');
  3. const manager = new ShardingManager( './main.js', {
  4. execArgv: ['--icu-data-dir=node_modules/full-icu'],
  5. shardArgs: ( process.argv[2] === 'debug' ? ['debug'] : [] ),
  6. totalShards:2,
  7. token: process.env.token
  8. } );
  9. manager.on( 'shardCreate', shard => {
  10. console.log( `\n- Shard[${shard.id}]: Launched` );
  11. shard.on( 'spawn', message => {
  12. console.log( `- Shard[${shard.id}]: Spawned` );
  13. shard.send( {
  14. shard: {
  15. id: shard.id
  16. }
  17. } );
  18. } );
  19. shard.on( 'message', message => {
  20. if ( message === 'SIGKILL' ) {
  21. console.log( '\n- Killing all shards!\n\n' );
  22. manager.shards.forEach( shard => shard.kill() );
  23. }
  24. } );
  25. } );
  26. manager.spawn();
  27. async function graceful(signal) {
  28. console.log( '- ' + signal + ': Disabling respawn...' );
  29. manager.respawn = false;
  30. }
  31. process.once( 'SIGINT', graceful );
  32. process.once( 'SIGTERM', graceful );