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