mirror of
				https://github.com/keanuplayz/TravBot-v3.git
				synced 2024-08-15 02:33:12 +00:00 
			
		
		
		
	Added WIP info command.
This commit is contained in:
		
							parent
							
								
									01d4398b53
								
							
						
					
					
						commit
						48097b729d
					
				
					 2 changed files with 167 additions and 0 deletions
				
			
		
							
								
								
									
										122
									
								
								src/commands/info.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								src/commands/info.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,122 @@ | ||||||
|  | import { Guild, MessageEmbed } from "discord.js"; | ||||||
|  | import moment from "moment"; | ||||||
|  | import Command from "../core/command"; | ||||||
|  | import {CommonLibrary} from "../core/lib"; | ||||||
|  | import { verificationLevels, filterLevels, regions, flags } from "../defs/info"; | ||||||
|  | 
 | ||||||
|  | export default new Command({ | ||||||
|  | 	description: "Command to provide all sorts of info about the current server, a user, etc.", | ||||||
|  | 	async run($: CommonLibrary): Promise<any> | ||||||
|  | 	{ | ||||||
|  | 		$.channel.send("Please provide an argument. `.help info`") | ||||||
|  | 		console.log(verificationLevels); | ||||||
|  | 	}, | ||||||
|  | 	subcommands: | ||||||
|  | 	{ | ||||||
|  | 		avatar: new Command({ | ||||||
|  | 			description: "Shows your own, or another user's avatar.", | ||||||
|  | 			usage: "(<user>)", | ||||||
|  | 			async run($: CommonLibrary): Promise<any> | ||||||
|  | 			{ | ||||||
|  | 				$.channel.send($.author.displayAvatarURL({ dynamic: true, size: 2048 })) | ||||||
|  | 			}, | ||||||
|  | 			user: new Command({ | ||||||
|  | 				description: "Shows your own, or another user's avatar.", | ||||||
|  | 				async run($: CommonLibrary): Promise<any> | ||||||
|  | 				{ | ||||||
|  | 					$.channel.send($.args[0].displayAvatarURL({ dynamic: true, size: 2048 })) | ||||||
|  | 				} | ||||||
|  | 			}), | ||||||
|  | 		}), | ||||||
|  | 		 | ||||||
|  | 		guild: new Command({ | ||||||
|  | 			description: "Displays info about the current guild.", | ||||||
|  | 			async run($: CommonLibrary): Promise<any> | ||||||
|  | 			{ | ||||||
|  | 				if ($.guild) { | ||||||
|  | 					const roles = $.guild.roles.cache.sort((a, b) => b.position - a.position).map(role => role.toString()); | ||||||
|  | 					const members = $.guild.members.cache; | ||||||
|  | 					const channels = $.guild.channels.cache; | ||||||
|  | 					const emojis = $.guild.emojis.cache; | ||||||
|  | 					 | ||||||
|  | 					const iconURL = $.guild.iconURL({ dynamic: true }) | ||||||
|  | 					const embed = new MessageEmbed() | ||||||
|  | 						.setDescription(`**Guild information for __${$.guild.name}__**`) | ||||||
|  | 						.setColor('BLUE') | ||||||
|  | 						if (iconURL) embed.setThumbnail(iconURL) | ||||||
|  | 						.addField('General', [ | ||||||
|  | 							`**❯ Name:** ${$.guild.name}`, | ||||||
|  | 							`**❯ ID:** ${$.guild.id}`, | ||||||
|  | 							`**❯ Owner:** ${$.guild.owner?.user.tag} (${$.guild.ownerID})`, | ||||||
|  | 							`**❯ Region:** ${regions[$.guild.region]}`, | ||||||
|  | 							`**❯ Boost Tier:** ${$.guild.premiumTier ? `Tier ${$.guild.premiumTier}` : 'None'}`, | ||||||
|  | 							`**❯ Explicit Filter:** ${filterLevels[$.guild.explicitContentFilter]}`, | ||||||
|  | 							`**❯ Verification Level:** ${verificationLevels[$.guild.verificationLevel]}`, | ||||||
|  | 							`**❯ Time Created:** ${moment($.guild.createdTimestamp).format('LT')} ${moment($.guild.createdTimestamp).format('LL')} ${moment($.guild.createdTimestamp).fromNow()})`, | ||||||
|  | 							'\u200b' | ||||||
|  | 						]) | ||||||
|  | 						.addField('Statistics', [ | ||||||
|  | 							`**❯ Role Count:** ${roles.length}`, | ||||||
|  | 							`**❯ Emoji Count:** ${emojis.size}`, | ||||||
|  | 							`**❯ Regular Emoji Count:** ${emojis.filter(emoji => !emoji.animated).size}`, | ||||||
|  | 							`**❯ Animated Emoji Count:** ${emojis.filter(emoji => emoji.animated).size}`, | ||||||
|  | 							`**❯ Member Count:** ${$.guild.memberCount}`, | ||||||
|  | 							`**❯ Humans:** ${members.filter(member => !member.user.bot).size}`, | ||||||
|  | 							`**❯ Bots:** ${members.filter(member => member.user.bot).size}`, | ||||||
|  | 							`**❯ Text Channels:** ${channels.filter(channel => channel.type === 'text').size}`, | ||||||
|  | 							`**❯ Voice Channels:** ${channels.filter(channel => channel.type === 'voice').size}`, | ||||||
|  | 							`**❯ Boost Count:** ${$.guild.premiumSubscriptionCount || '0'}`, | ||||||
|  | 							`\u200b` | ||||||
|  | 						]) | ||||||
|  | 						.addField('Presence', [ | ||||||
|  | 							`**❯ Online:** ${members.filter(member => member.presence.status === 'online').size}`, | ||||||
|  | 							`**❯ Idle:** ${members.filter(member => member.presence.status === 'idle').size}`, | ||||||
|  | 							`**❯ Do Not Disturb:** ${members.filter(member => member.presence.status === 'dnd').size}`, | ||||||
|  | 							`**❯ Offline:** ${members.filter(member => member.presence.status === 'offline').size}`, | ||||||
|  | 							'\u200b' | ||||||
|  | 						]) | ||||||
|  | 						.addField(`Roles [${roles.length - 1}]`, roles.length < 10 ? roles.join(', ') : roles.length > 10 ? this.client.utils.trimArray(roles) : 'None') | ||||||
|  | 						.setTimestamp(); | ||||||
|  | 
 | ||||||
|  | 					$.channel.send(embed) | ||||||
|  | 
 | ||||||
|  | 				} else { | ||||||
|  | 					$.channel.send("Please execute this command in a guild.") | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		})		 | ||||||
|  | 	}, | ||||||
|  | 	user: new Command({ | ||||||
|  | 		description: "Displays info about mentioned user.", | ||||||
|  | 		async run($: CommonLibrary): Promise<any> | ||||||
|  | 		{ | ||||||
|  | 			const member = $.args[0] || $.args[0].mentions.members.last() || $.guild?.members.cache.get($.args[0]) || $.member; | ||||||
|  | 			const roles = member.roles.cache | ||||||
|  | 				.sort((a: { position: number; }, b: { position: number; }) => b.position - a.position) | ||||||
|  | 				.map((role: { toString: () => any; }) => role.toString()) | ||||||
|  | 				.slice(0, -1); | ||||||
|  | 			const userFlags = member.user.flags.toArray(); | ||||||
|  | 
 | ||||||
|  | 			const embed = new MessageEmbed() | ||||||
|  | 				.setThumbnail(member.user.displayAvatarURL({ dynamic: true, size: 512 })) | ||||||
|  | 				.setColor(member.displayHexColor || 'BLUE') | ||||||
|  | 				.addField('User', [ | ||||||
|  | 					`**❯ Username:** ${member.user.username}`, | ||||||
|  | 					`**❯ Discriminator:** ${member.user.discriminator}`, | ||||||
|  | 					`**❯ ID:** ${member.id}`, | ||||||
|  | 					`**❯ Flags:** ${userFlags.length ? userFlags.map((flag: string | number) => flags[flag]).join(', ') : 'None'}`, | ||||||
|  | 					`**❯ Avatar:** [Link to avatar](${member.user.displayAvatarURL({ dynamic: true })})`, | ||||||
|  | 					`**❯ Time Created:** ${moment(member.user.createdTimestamp).format('LT')} ${moment(member.user.createdTimestamp).format('LL')} ${moment(member.user.createdTimestamp).fromNow()}`, | ||||||
|  | 					`**❯ Status:** ${member.user.presence.status}`, | ||||||
|  | 					`**❯ Game:** ${member.user.presence.game || 'Not playing a game.'}` | ||||||
|  | 				]) | ||||||
|  | 				.addField('Member', [ | ||||||
|  | 					`**❯ Highest Role:** ${member.roles.highest.id === $.guild?.id ? 'None' : member.roles.highest.name}`, | ||||||
|  | 					`**❯ Server Join Date:** ${moment(member.joinedAt).format('LL LTS')}`, | ||||||
|  | 					`**❯ Hoist Role:** ${member.roles.hoist ? member.roles.hoist.name : 'None'}`, | ||||||
|  | 					`**❯ Roles:** [${roles.length}]: ${roles.length < 10 ? roles.join(', ') : roles.length > 10 ? this.client.utils.trimArray(roles) : 'None'}`, | ||||||
|  | 				]); | ||||||
|  | 			$.channel.send(embed) | ||||||
|  | 		} | ||||||
|  | 	}) | ||||||
|  | }); | ||||||
							
								
								
									
										45
									
								
								src/defs/info.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/defs/info.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,45 @@ | ||||||
|  | // Flags a user can have.
 | ||||||
|  | // They're basically your profile badges.
 | ||||||
|  | export const flags: {[index: string]:any} = { | ||||||
|  | 	DISCORD_EMPLOYEE: 'Discord Employee', | ||||||
|  | 	DISCORD_PARTNER: 'Discord Partner', | ||||||
|  | 	BUGHUNTER_LEVEL_1: 'Bug Hunter (Level 1)', | ||||||
|  | 	BUGHUNTER_LEVEL_2: 'Bug Hunter (Level 2)', | ||||||
|  | 	HYPESQUAD_EVENTS: 'HypeSquad Events', | ||||||
|  | 	HOUSE_BRAVERY: 'House of Bravery', | ||||||
|  | 	HOUSE_BRILLIANCE: 'House of Brilliance', | ||||||
|  | 	HOUSE_BALANCE: 'House of Balance', | ||||||
|  | 	EARLY_SUPPORTER: 'Early Supporter', | ||||||
|  | 	TEAM_USER: 'Team User', | ||||||
|  | 	SYSTEM: 'System', | ||||||
|  | 	VERIFIED_BOT: 'Verified Bot', | ||||||
|  | 	VERIFIED_DEVELOPER: 'Verified Bot Developer', | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export const filterLevels: {[index: string]:any} = { | ||||||
|  | 	DISABLED: 'Off', | ||||||
|  | 	MEMBERS_WITHOUT_ROLES: 'No Role', | ||||||
|  | 	ALL_MEMBERS: 'Everyone', | ||||||
|  | }; | ||||||
|  | export const verificationLevels: {[index: string]:any} = { | ||||||
|  | 	NONE: 'None', | ||||||
|  | 	LOW: 'Low', | ||||||
|  | 	MEDIUM: 'Medium', | ||||||
|  | 	HIGH: '(╯°□°)╯︵ ┻━┻', | ||||||
|  | 	VERY_HIGH: '┻━┻ ミヽ(ಠ益ಠ)ノ彡┻━┻', | ||||||
|  | }; | ||||||
|  | export const regions: {[index: string]:any} = { | ||||||
|  | 	brazil: 'Brazil', | ||||||
|  | 	europe: 'Europe', | ||||||
|  | 	hongkong: 'Hong Kong', | ||||||
|  | 	india: 'India', | ||||||
|  | 	japan: 'Japan', | ||||||
|  | 	russia: 'Russia', | ||||||
|  | 	singapore: 'Singapore', | ||||||
|  | 	southafrica: 'South Africa', | ||||||
|  | 	sydney: 'Sydney', | ||||||
|  | 	'us-central': 'US Central', | ||||||
|  | 	'us-east': 'US East', | ||||||
|  | 	'us-west': 'US West', | ||||||
|  | 	'us-south': 'US South', | ||||||
|  | }; | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue