فهرست منبع

REFACT: general

Drn 2 سال پیش
والد
کامیت
dcbe2f1578
7فایلهای تغییر یافته به همراه66 افزوده شده و 52 حذف شده
  1. 5 5
      commands.go
  2. 13 3
      common.go
  3. 8 1
      config.go
  4. 4 0
      discord.go
  5. 5 5
      history.go
  6. 16 14
      main.go
  7. 15 24
      vars.go

+ 5 - 5
commands.go

@@ -453,8 +453,8 @@ func handleCommands() *exrouter.Route {
 						if all {
 							myDB.Close()
 							time.Sleep(1 * time.Second)
-							if _, err := os.Stat(databasePath); err == nil {
-								err = os.RemoveAll(databasePath)
+							if _, err := os.Stat(pathDatabase); err == nil {
+								err = os.RemoveAll(pathDatabase)
 								if err != nil {
 									log.Println(lg("Command", "History", color.HiRedString,
 										"Encountered error deleting database folder:\t%s", err))
@@ -476,8 +476,8 @@ func handleCommands() *exrouter.Route {
 					}
 					if shouldWipeCache {
 						if all {
-							if _, err := os.Stat(historyCachePath); err == nil {
-								err = os.RemoveAll(historyCachePath)
+							if _, err := os.Stat(pathCacheHistory); err == nil {
+								err = os.RemoveAll(pathCacheHistory)
 								if err != nil {
 									log.Println(lg("Command", "History", color.HiRedString,
 										"Encountered error deleting database folder:\t%s", err))
@@ -491,7 +491,7 @@ func handleCommands() *exrouter.Route {
 									"Cache folder inaccessible:\t%s", err))
 							}
 						} else {
-							fp := historyCachePath + string(os.PathSeparator) + channel + ".json"
+							fp := pathCacheHistory + string(os.PathSeparator) + channel + ".json"
 							if _, err := os.Stat(fp); err == nil {
 								err = os.RemoveAll(fp)
 								if err != nil {

+ 13 - 3
common.go

@@ -205,11 +205,21 @@ type githubReleaseApiObject struct {
 	TagName string `json:"tag_name"`
 }
 
-func isLatestGithubRelease() bool {
+var latestGithubRelease string
+
+func getLatestGithubRelease() string {
 	githubReleaseApiObject := new(githubReleaseApiObject)
-	err := getJSON(projectReleaseApiURL, githubReleaseApiObject)
+	err := getJSON("https://api.github.com/repos/"+projectRepoBase+"/releases/latest", githubReleaseApiObject)
 	if err != nil {
 		log.Println(lg("API", "Github", color.RedString, "Error fetching current Release JSON: %s", err))
+		return ""
+	}
+	return githubReleaseApiObject.TagName
+}
+
+func isLatestGithubRelease() bool {
+	latestGithubRelease = getLatestGithubRelease()
+	if latestGithubRelease == "" {
 		return true
 	}
 
@@ -219,7 +229,7 @@ func isLatestGithubRelease() bool {
 		return true
 	}
 
-	latestVersion, err := version.NewVersion(githubReleaseApiObject.TagName)
+	latestVersion, err := version.NewVersion(latestGithubRelease)
 	if err != nil {
 		log.Println(lg("API", "Github", color.RedString, "Error parsing latest version: %s", err))
 		return true

+ 8 - 1
config.go

@@ -425,6 +425,13 @@ type configurationAdminChannel struct {
 	LogStatus      *bool     `json:"logStatus,omitempty"`      // optional, defaults
 	LogErrors      *bool     `json:"logErrors,omitempty"`      // optional, defaults
 	UnlockCommands *bool     `json:"unlockCommands,omitempty"` // optional, defaults
+	/* IDEAS / TODO:
+
+	LogMessages *bool `json:"logMessages,omitempty"` // optional, defaults
+	LogLinks    *bool `json:"logLinks,omitempty"`    // optional, defaults
+	LogFiles	*bool `json:"logFiles,omitempty"`    // optional, defaults
+
+	*/
 }
 
 //#endregion
@@ -821,7 +828,7 @@ func createConfig() {
 			log.Println(lg("Settings", "create", color.MagentaString,
 				"You DO NOT NEED token *AND* email/password, just one OR the other."))
 			log.Println(lg("Settings", "create", color.MagentaString,
-				"THERE ARE MANY HIDDEN SETTINGS AVAILABLE, SEE THE GITHUB README github.com/"+projectRepo))
+				"THERE ARE MANY HIDDEN SETTINGS AVAILABLE, SEE THE GITHUB README github.com/"+projectRepoBase))
 		}
 	}
 }

+ 4 - 0
discord.go

@@ -38,6 +38,10 @@ import (
 	return &discordgo.Guild{}
 }*/
 
+const (
+	fmtBotSendPerm = "Bot does not have permission to send messages in %s"
+)
+
 func getChannelGuildID(channelID string) string {
 	sourceChannel, _ := bot.State.Channel(channelID)
 	if sourceChannel != nil {

+ 5 - 5
history.go

@@ -177,7 +177,7 @@ func handleHistory(commandingMessage *discordgo.Message, subjectChannelID string
 	//#region Cache Files
 
 	openHistoryCache := func(channel string) historyCache {
-		if f, err := os.ReadFile(historyCachePath + string(os.PathSeparator) + channel + ".json"); err == nil {
+		if f, err := os.ReadFile(pathCacheHistory + string(os.PathSeparator) + channel + ".json"); err == nil {
 			var ret historyCache
 			if err = json.Unmarshal(f, &ret); err != nil {
 				log.Println(lg("Debug", "History", color.RedString,
@@ -195,12 +195,12 @@ func handleHistory(commandingMessage *discordgo.Message, subjectChannelID string
 			log.Println(lg("Debug", "History", color.RedString,
 				logPrefix+"Failed to format cache into json:\t%s", err))
 		} else {
-			if err := os.MkdirAll(historyCachePath, 0755); err != nil {
+			if err := os.MkdirAll(pathCacheHistory, 0755); err != nil {
 				log.Println(lg("Debug", "History", color.HiRedString,
-					logPrefix+"Error while creating history cache folder \"%s\": %s", historyCachePath, err))
+					logPrefix+"Error while creating history cache folder \"%s\": %s", pathCacheHistory, err))
 			}
 			f, err := os.OpenFile(
-				historyCachePath+string(os.PathSeparator)+channel+".json",
+				pathCacheHistory+string(os.PathSeparator)+channel+".json",
 				os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
 			if err != nil {
 				log.Println(lg("Debug", "History", color.RedString,
@@ -218,7 +218,7 @@ func handleHistory(commandingMessage *discordgo.Message, subjectChannelID string
 	}
 
 	deleteHistoryCache := func(channel string) {
-		fp := historyCachePath + string(os.PathSeparator) + channel + ".json"
+		fp := pathCacheHistory + string(os.PathSeparator) + channel + ".json"
 		if _, err := os.Stat(fp); err == nil {
 			err = os.Remove(fp)
 			if err != nil {

+ 16 - 14
main.go

@@ -79,14 +79,15 @@ func versions(multiline bool) string {
 }
 
 func init() {
+	// Initialize Logging
 	log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
 	log.SetOutput(color.Output)
 	log.Println(color.HiCyanString(wrapHyphensW(fmt.Sprintf("Welcome to %s v%s", projectName, projectVersion))))
 
+	// Initialize Variables
 	loop = make(chan os.Signal, 1)
 	startTime = time.Now()
 	historyJobs = orderedmap.New[string, historyJob]()
-
 	if len(os.Args) > 1 {
 		configFileBase = os.Args[1]
 	}
@@ -97,7 +98,10 @@ func init() {
 	if config.GithubUpdateChecking {
 		if !isLatestGithubRelease() {
 			log.Println(lg("Version", "UPDATE", color.HiCyanString, "***\tUPDATE AVAILABLE\t***"))
-			log.Println(lg("Version", "UPDATE", color.CyanString, projectReleaseURL))
+			log.Println(lg("Version", "UPDATE", color.CyanString, projectRepoURL+"/releases/latest"))
+			log.Println(lg("Version", "UPDATE", color.HiCyanString,
+				fmt.Sprintf("You are on v%s, latest is %s", projectVersion, latestGithubRelease),
+			))
 			log.Println(lg("Version", "UPDATE", color.HiCyanString, "*** See changelog for information ***"))
 			log.Println(lg("Version", "UPDATE", color.HiCyanString, "CHECK ALL CHANGELOGS SINCE YOUR LAST UPDATE"))
 			log.Println(lg("Version", "UPDATE", color.HiCyanString, "SOME SETTINGS MAY NEED TO BE UPDATED"))
@@ -428,9 +432,9 @@ func main() {
 		}
 	}
 	//--- Save constants
-	os.MkdirAll(cachePath, 0755)
-	if _, err := os.Stat(constantsPath); err == nil {
-		err = os.Remove(constantsPath)
+	os.MkdirAll(pathCache, 0755)
+	if _, err := os.Stat(pathConstants); err == nil {
+		err = os.Remove(pathConstants)
 		if err != nil {
 			log.Println(lg("Constants", "", color.HiRedString, "Encountered error deleting cache file:\t%s", err))
 		}
@@ -441,7 +445,7 @@ func main() {
 	if err != nil {
 		log.Println(lg("Constants", "", color.HiRedString, "Failed to format constants...\t%s", err))
 	} else {
-		err := os.WriteFile(constantsPath, newJson, 0644)
+		err := os.WriteFile(pathConstants, newJson, 0644)
 		if err != nil {
 			log.Println(lg("Constants", "", color.HiRedString, "Failed to save new constants file...\t%s", err))
 		}
@@ -460,6 +464,7 @@ func main() {
 
 	sendStatusMessage(sendStatusExit) // not goroutine because we want to wait to send this before logout
 
+	// Log out of twitter if authenticated.
 	if twitterScraper.IsLoggedIn() {
 		twitterScraper.Logout()
 	}
@@ -477,7 +482,7 @@ func main() {
 func openDatabase() {
 	// Database
 	log.Println(lg("Database", "", color.YellowString, "Opening database...\t(this can take a second...)"))
-	myDB, err = db.OpenDB(databasePath)
+	myDB, err = db.OpenDB(pathDatabase)
 	if err != nil {
 		log.Println(lg("Database", "", color.HiRedString, "Unable to open database: %s", err))
 		return
@@ -511,9 +516,9 @@ func openDatabase() {
 	// Duplo
 	if config.Duplo || sourceHasDuplo {
 		duploCatalog = duplo.New()
-		if _, err := os.Stat(duploCatalogPath); err == nil {
+		if _, err := os.Stat(pathCacheDuplo); err == nil {
 			log.Println(lg("Duplo", "", color.YellowString, "Opening duplo image catalog..."))
-			storeFile, err := ioutil.ReadFile(duploCatalogPath)
+			storeFile, err := ioutil.ReadFile(pathCacheDuplo)
 			if err != nil {
 				log.Println(lg("Duplo", "", color.HiRedString, "Error opening duplo catalog:\t%s", err))
 			} else {
@@ -565,9 +570,6 @@ func botLoadAPIs() {
 					twitterLoggedIn = true
 				}
 			}
-		} else {
-			log.Println(lg("API", "Twitter", color.MagentaString,
-				"Twitter login missing, the bot won't use the Twitter library."))
 		}
 	}()
 
@@ -584,7 +586,7 @@ func botLoadAPIs() {
 			if instagramLoginCount > 1 {
 				time.Sleep(3 * time.Second)
 			}
-			if instagramClient, err = goinsta.Import(instagramCachePath); err != nil {
+			if instagramClient, err = goinsta.Import(pathCacheInstagram); err != nil {
 				instagramClient = goinsta.New(config.Credentials.InstagramUsername, config.Credentials.InstagramPassword)
 				if err := instagramClient.Login(); err != nil {
 					log.Println(lg("API", "Instagram", color.HiRedString, "Login Error: %s", err.Error()))
@@ -598,7 +600,7 @@ func botLoadAPIs() {
 					log.Println(lg("API", "Instagram", color.HiMagentaString,
 						"Connected to API @%s via new login", instagramClient.Account.Username))
 					instagramConnected = true
-					defer instagramClient.Export(instagramCachePath)
+					defer instagramClient.Export(pathCacheInstagram)
 				}
 			} else {
 				log.Println(lg("API", "Instagram", color.HiMagentaString,

+ 15 - 24
vars.go

@@ -5,26 +5,21 @@ import (
 )
 
 const (
-	projectName    = "discord-downloader-go"
-	projectLabel   = "Discord Downloader GO"
-	projectVersion = "2.1.0-dev" // follows Semantic Versioning, (http://semver.org/)
-	projectIcon    = "https://cdn.discordapp.com/icons/780985109608005703/9dc25f1b91e6d92664590254e0797fad.webp?size=256"
-
-	projectRepo          = "get-got/discord-downloader-go"
-	projectRepoURL       = "https://github.com/" + projectRepo
-	projectReleaseURL    = projectRepoURL + "/releases/latest"
-	projectReleaseApiURL = "https://api.github.com/repos/" + projectRepo + "/releases/latest"
-
-	databasePath = "database"
-
-	cachePath          = "cache"
-	historyCachePath   = cachePath + string(os.PathSeparator) + "history"
-	duploCatalogPath   = cachePath + string(os.PathSeparator) + ".duplo"
-	instagramCachePath = cachePath + string(os.PathSeparator) + "instagram.json"
-	constantsPath      = cachePath + string(os.PathSeparator) + "constants.json"
-
-	defaultReact = "✅"
-
+	projectName     = "discord-downloader-go"
+	projectLabel    = "Discord Downloader GO"
+	projectRepoBase = "get-got/discord-downloader-go"
+	projectRepoURL  = "https://github.com/" + projectRepoBase
+	projectIcon     = "https://cdn.discordapp.com/icons/780985109608005703/9dc25f1b91e6d92664590254e0797fad.webp?size=256"
+	projectVersion  = "2.1.0-dev" // follows Semantic Versioning, (http://semver.org/)
+
+	pathCache          = "cache"
+	pathCacheHistory   = pathCache + string(os.PathSeparator) + "history"
+	pathCacheDuplo     = pathCache + string(os.PathSeparator) + ".duplo"
+	pathCacheInstagram = pathCache + string(os.PathSeparator) + "instagram.json"
+	pathConstants      = pathCache + string(os.PathSeparator) + "constants.json"
+	pathDatabase       = "database"
+
+	defaultReact   = "✅"
 	limitMsg       = 2000
 	limitEmbedDesc = 4096
 )
@@ -34,7 +29,3 @@ var (
 	configFile     string
 	configFileC    bool
 )
-
-const (
-	fmtBotSendPerm = "Bot does not have permission to send messages in %s"
-)