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",
 | 
								Name:        "resetvanity",
 | 
				
			||||||
			Description: "Reset a user's HWID by username or UID",
 | 
								Description: "Reset a user's HWID for Vanity by username or UID",
 | 
				
			||||||
			Options: []*discordgo.ApplicationCommandOption{
 | 
								Options: []*discordgo.ApplicationCommandOption{
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					Type:        discordgo.ApplicationCommandOptionString,
 | 
										Type:        discordgo.ApplicationCommandOptionString,
 | 
				
			||||||
@@ -154,15 +154,17 @@ var (
 | 
				
			|||||||
					Description: "Username or UID",
 | 
										Description: "Username or UID",
 | 
				
			||||||
					Required:    true,
 | 
										Required:    true,
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								Name:        "resetmesa",
 | 
				
			||||||
 | 
								Description: "Reset a user's HWID for Mesa by username or UID",
 | 
				
			||||||
 | 
								Options: []*discordgo.ApplicationCommandOption{
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					Type:        discordgo.ApplicationCommandOptionString,
 | 
										Type:        discordgo.ApplicationCommandOptionString,
 | 
				
			||||||
					Name:        "cheat_type",
 | 
										Name:        "identifier",
 | 
				
			||||||
					Description: "Type of cheat (mesa or vanity)",
 | 
										Description: "Username or UID",
 | 
				
			||||||
					Required:    true,
 | 
										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)
 | 
									log.Println("Error sending interaction response:", err)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"reset": func(client *discordgo.Session, i *discordgo.InteractionCreate) {
 | 
							"resetvanity": func(client *discordgo.Session, i *discordgo.InteractionCreate) {
 | 
				
			||||||
			hasAdminPermission := false
 | 
								resetCommandHandler(client, i, "vanity")
 | 
				
			||||||
			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,
 | 
					 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
				})
 | 
							"resetmesa": func(client *discordgo.Session, i *discordgo.InteractionCreate) {
 | 
				
			||||||
				if err != nil {
 | 
								resetCommandHandler(client, i, "mesa")
 | 
				
			||||||
					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)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -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 {
 | 
					func canCreateTicket(userName, softwareType string) bool {
 | 
				
			||||||
	guildChannels, err := client.GuildChannels(config.Discord.GuildID)
 | 
						guildChannels, err := client.GuildChannels(config.Discord.GuildID)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user