mirror of
				https://github.com/keanuplayz/TravBot-v3.git
				synced 2024-08-15 02:33:12 +00:00 
			
		
		
		
	introduce the terrible hack for reducing memory usage
This commit is contained in:
		
							parent
							
								
									303e81cc37
								
							
						
					
					
						commit
						e22250b3f1
					
				
					 1 changed files with 30 additions and 2 deletions
				
			
		
							
								
								
									
										32
									
								
								src/index.ts
									
										
									
									
									
								
							
							
						
						
									
										32
									
								
								src/index.ts
									
										
									
									
									
								
							|  | @ -1,4 +1,4 @@ | ||||||
| import {Client} from "discord.js"; | import * as discord from "discord.js"; | ||||||
| import setup from "./setup"; | import setup from "./setup"; | ||||||
| import {Config} from "./core/structures"; | import {Config} from "./core/structures"; | ||||||
| import {loadCommands} from "./core/command"; | import {loadCommands} from "./core/command"; | ||||||
|  | @ -6,9 +6,37 @@ import {loadEvents} from "./core/event"; | ||||||
| import "discord.js-lavalink-lib"; | import "discord.js-lavalink-lib"; | ||||||
| import LavalinkMusic from "discord.js-lavalink-lib"; | import LavalinkMusic from "discord.js-lavalink-lib"; | ||||||
| 
 | 
 | ||||||
|  | declare module "discord.js" { | ||||||
|  |     interface Presence { | ||||||
|  |         patch(data: any): void; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // The terrible hacks were written by none other than The Noble Programmer On The White PC.
 | ||||||
|  | 
 | ||||||
|  | // NOTE: Terrible hack ahead!!! In order to reduce the memory usage of the bot
 | ||||||
|  | // we only store the information from presences that we actually end up using,
 | ||||||
|  | // which currently is only the (online/idle/dnd/offline/...) status (see
 | ||||||
|  | // `src/commands/info.ts`). What data is retrieved from the `data` object
 | ||||||
|  | // (which contains the data received from the Gateway) and how can be seen
 | ||||||
|  | // here:
 | ||||||
|  | // <https://github.com/discordjs/discord.js/blob/cee6cf70ce76e9b06dc7f25bfd77498e18d7c8d4/src/structures/Presence.js#L81-L110>.
 | ||||||
|  | const oldPresencePatch = discord.Presence.prototype.patch; | ||||||
|  | discord.Presence.prototype.patch = function patch(data: any) { | ||||||
|  |     oldPresencePatch.call(this, {status: data.status}); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| // This is here in order to make it much less of a headache to access the client from other files.
 | // This is here in order to make it much less of a headache to access the client from other files.
 | ||||||
| // This of course won't actually do anything until the setup process is complete and it logs in.
 | // This of course won't actually do anything until the setup process is complete and it logs in.
 | ||||||
| export const client = new Client(); | export const client = new discord.Client(); | ||||||
|  | 
 | ||||||
|  | // NOTE: Terrible hack continued!!! Unfortunately we can't receive the presence
 | ||||||
|  | // data at all when the GUILD_PRESENCES intent is disabled, so while we do
 | ||||||
|  | // waste network bandwidth and the CPU time for decoding the incoming packets,
 | ||||||
|  | // the function which handles those packets is NOP-ed out, which, among other
 | ||||||
|  | // things, skips the code which caches the referenced users in the packet. See
 | ||||||
|  | // <https://github.com/discordjs/discord.js/blob/cee6cf70ce76e9b06dc7f25bfd77498e18d7c8d4/src/client/actions/PresenceUpdate.js#L7-L41>.
 | ||||||
|  | (client["actions"] as any)["PresenceUpdate"].handle = () => {}; | ||||||
| 
 | 
 | ||||||
| (client as any).music = LavalinkMusic(client, { | (client as any).music = LavalinkMusic(client, { | ||||||
|     lavalink: { |     lavalink: { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue