Split command in seperate for vanity and mesa
This commit is contained in:
		
							
								
								
									
										214
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										214
									
								
								main.go
									
									
									
									
									
								
							@@ -145,8 +145,8 @@ var (
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			Name:        "reset",
 | 
			
		||||
			Description: "Reset a user's HWID by username or UID",
 | 
			
		||||
			Name:        "resetvanity",
 | 
			
		||||
			Description: "Reset a user's HWID for Vanity by username or UID",
 | 
			
		||||
			Options: []*discordgo.ApplicationCommandOption{
 | 
			
		||||
				{
 | 
			
		||||
					Type:        discordgo.ApplicationCommandOptionString,
 | 
			
		||||
@@ -154,15 +154,17 @@ var (
 | 
			
		||||
					Description: "Username or UID",
 | 
			
		||||
					Required:    true,
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			Name:        "resetmesa",
 | 
			
		||||
			Description: "Reset a user's HWID for Mesa by username or UID",
 | 
			
		||||
			Options: []*discordgo.ApplicationCommandOption{
 | 
			
		||||
				{
 | 
			
		||||
					Type:        discordgo.ApplicationCommandOptionString,
 | 
			
		||||
					Name:        "cheat_type",
 | 
			
		||||
					Description: "Type of cheat (mesa or vanity)",
 | 
			
		||||
					Name:        "identifier",
 | 
			
		||||
					Description: "Username or UID",
 | 
			
		||||
					Required:    true,
 | 
			
		||||
					Choices: []*discordgo.ApplicationCommandOptionChoice{
 | 
			
		||||
						{Name: "mesa", Value: "mesa"},
 | 
			
		||||
						{Name: "vanity", Value: "vanity"},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
@@ -231,100 +233,11 @@ var (
 | 
			
		||||
				log.Println("Error sending interaction response:", err)
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		"reset": func(client *discordgo.Session, i *discordgo.InteractionCreate) {
 | 
			
		||||
			hasAdminPermission := false
 | 
			
		||||
			for _, roleID := range config.Discord.AdminRoles {
 | 
			
		||||
				member, err := client.GuildMember(i.GuildID, i.Member.User.ID)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					log.Println("Error fetching member info:", err)
 | 
			
		||||
					return
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				for _, role := range member.Roles {
 | 
			
		||||
					if role == roleID {
 | 
			
		||||
						hasAdminPermission = true
 | 
			
		||||
						break
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				if hasAdminPermission {
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if !hasAdminPermission {
 | 
			
		||||
				err := client.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
 | 
			
		||||
					Type: discordgo.InteractionResponseChannelMessageWithSource,
 | 
			
		||||
					Data: &discordgo.InteractionResponseData{
 | 
			
		||||
						Content: "You do not have permission to run this command.",
 | 
			
		||||
						Flags:   discordgo.MessageFlagsEphemeral,
 | 
			
		||||
		"resetvanity": func(client *discordgo.Session, i *discordgo.InteractionCreate) {
 | 
			
		||||
			resetCommandHandler(client, i, "vanity")
 | 
			
		||||
		},
 | 
			
		||||
				})
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					log.Println("Error sending interaction response:", err)
 | 
			
		||||
				}
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			identifier := i.ApplicationCommandData().Options[0].StringValue()
 | 
			
		||||
			cheatType := i.ApplicationCommandData().Options[1].StringValue()
 | 
			
		||||
			var userName string
 | 
			
		||||
			var userUID int
 | 
			
		||||
 | 
			
		||||
			if uid, err := strconv.Atoi(identifier); err == nil {
 | 
			
		||||
				userUID = uid
 | 
			
		||||
			} else {
 | 
			
		||||
				userName = identifier
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			var tableName string
 | 
			
		||||
			var baseURL string
 | 
			
		||||
			var err error
 | 
			
		||||
 | 
			
		||||
			if userName != "" {
 | 
			
		||||
				_, baseURL = getTableNameAndBaseURL(cheatType)
 | 
			
		||||
				userUID, err = fetchUserID(userName, baseURL)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					log.Println("Error fetching user ID:", err)
 | 
			
		||||
					err = client.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
 | 
			
		||||
						Type: discordgo.InteractionResponseChannelMessageWithSource,
 | 
			
		||||
						Data: &discordgo.InteractionResponseData{
 | 
			
		||||
							Content: "Error fetching user ID.",
 | 
			
		||||
							Flags:   discordgo.MessageFlagsEphemeral,
 | 
			
		||||
						},
 | 
			
		||||
					})
 | 
			
		||||
					if err != nil {
 | 
			
		||||
						log.Println("Error sending interaction response:", err)
 | 
			
		||||
					}
 | 
			
		||||
					return
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			tableName, _ = getTableNameAndBaseURL(cheatType)
 | 
			
		||||
			success, err := resetAndVerify(tableName, userUID)
 | 
			
		||||
			if err != nil || !success {
 | 
			
		||||
				log.Println("Error resetting user:", err)
 | 
			
		||||
				err = client.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
 | 
			
		||||
					Type: discordgo.InteractionResponseChannelMessageWithSource,
 | 
			
		||||
					Data: &discordgo.InteractionResponseData{
 | 
			
		||||
						Content: "Error resetting user.",
 | 
			
		||||
						Flags:   discordgo.MessageFlagsEphemeral,
 | 
			
		||||
					},
 | 
			
		||||
				})
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					log.Println("Error sending interaction response:", err)
 | 
			
		||||
				}
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			err = client.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
 | 
			
		||||
				Type: discordgo.InteractionResponseChannelMessageWithSource,
 | 
			
		||||
				Data: &discordgo.InteractionResponseData{
 | 
			
		||||
					Content: fmt.Sprintf("Successfully reset %s's HWID.", identifier),
 | 
			
		||||
					Flags:   discordgo.MessageFlagsEphemeral,
 | 
			
		||||
				},
 | 
			
		||||
			})
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				log.Println("Error sending interaction response:", err)
 | 
			
		||||
			}
 | 
			
		||||
		"resetmesa": func(client *discordgo.Session, i *discordgo.InteractionCreate) {
 | 
			
		||||
			resetCommandHandler(client, i, "mesa")
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -564,6 +477,105 @@ var (
 | 
			
		||||
	}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func resetCommandHandler(client *discordgo.Session, i *discordgo.InteractionCreate, softwareType string) {
 | 
			
		||||
	hasAdminPermission := false
 | 
			
		||||
 | 
			
		||||
	var userName string
 | 
			
		||||
	var userUID int
 | 
			
		||||
	var err error
 | 
			
		||||
	var tableName string
 | 
			
		||||
	var baseURL string
 | 
			
		||||
 | 
			
		||||
	for _, roleID := range config.Discord.AdminRoles {
 | 
			
		||||
		member, err := client.GuildMember(i.GuildID, i.Member.User.ID)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Println("Error fetching member info:", err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		for _, role := range member.Roles {
 | 
			
		||||
			if role == roleID {
 | 
			
		||||
				hasAdminPermission = true
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if hasAdminPermission {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if !hasAdminPermission {
 | 
			
		||||
		err := client.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
 | 
			
		||||
			Type: discordgo.InteractionResponseChannelMessageWithSource,
 | 
			
		||||
			Data: &discordgo.InteractionResponseData{
 | 
			
		||||
				Content: "You do not have permission to run this command.",
 | 
			
		||||
				Flags:   discordgo.MessageFlagsEphemeral,
 | 
			
		||||
			},
 | 
			
		||||
		})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Println("Error sending interaction response:", err)
 | 
			
		||||
		}
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	identifier := i.ApplicationCommandData().Options[0].StringValue()
 | 
			
		||||
 | 
			
		||||
	if uid, err := strconv.Atoi(identifier); err == nil {
 | 
			
		||||
		userUID = uid
 | 
			
		||||
	} else {
 | 
			
		||||
		userName = identifier
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if userName != "" {
 | 
			
		||||
		_, baseURL = getTableNameAndBaseURL(softwareType)
 | 
			
		||||
		userUID, err = fetchUserID(userName, baseURL)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Println("Error fetching user ID:", err)
 | 
			
		||||
			err = client.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
 | 
			
		||||
				Type: discordgo.InteractionResponseChannelMessageWithSource,
 | 
			
		||||
				Data: &discordgo.InteractionResponseData{
 | 
			
		||||
					Content: "Error fetching user ID.",
 | 
			
		||||
					Flags:   discordgo.MessageFlagsEphemeral,
 | 
			
		||||
				},
 | 
			
		||||
			})
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				log.Println("Error sending interaction response:", err)
 | 
			
		||||
			}
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tableName, _ = getTableNameAndBaseURL(softwareType)
 | 
			
		||||
	success, err := resetAndVerify(tableName, userUID)
 | 
			
		||||
	if err != nil || !success {
 | 
			
		||||
		log.Println("Error resetting user:", err)
 | 
			
		||||
		err = client.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
 | 
			
		||||
			Type: discordgo.InteractionResponseChannelMessageWithSource,
 | 
			
		||||
			Data: &discordgo.InteractionResponseData{
 | 
			
		||||
				Content: "Error resetting user.",
 | 
			
		||||
				Flags:   discordgo.MessageFlagsEphemeral,
 | 
			
		||||
			},
 | 
			
		||||
		})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Println("Error sending interaction response:", err)
 | 
			
		||||
		}
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	log.Printf("Reset the HWID of user %s with UID %d for %s", userName, userUID, softwareType)
 | 
			
		||||
 | 
			
		||||
	err = client.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
 | 
			
		||||
		Type: discordgo.InteractionResponseChannelMessageWithSource,
 | 
			
		||||
		Data: &discordgo.InteractionResponseData{
 | 
			
		||||
			Content: fmt.Sprintf("Successfully reset %s's HWID.", identifier),
 | 
			
		||||
			Flags:   discordgo.MessageFlagsEphemeral,
 | 
			
		||||
		},
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Println("Error sending interaction response:", err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func canCreateTicket(userName, softwareType string) bool {
 | 
			
		||||
	guildChannels, err := client.GuildChannels(config.Discord.GuildID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user