From 0b48d2e830a1a43f0d88d0e62c5099c11c9c8515 Mon Sep 17 00:00:00 2001 From: Madeline Hashcube Date: Sun, 22 Mar 2026 17:32:52 -0500 Subject: [PATCH] Everything might work --- discord/discord.go | 69 ++++++++++++++++++++++++++++++++++++++++++++-- main.go | 8 ++++++ parser/main.go | 6 ++++ parser/mute.go | 7 +++-- parser/state.go | 44 +++++++++++++++++++++++++++++ parser/unmute.go | 10 +++++-- 6 files changed, 136 insertions(+), 8 deletions(-) create mode 100644 parser/state.go diff --git a/discord/discord.go b/discord/discord.go index c3d3360..7ee2556 100644 --- a/discord/discord.go +++ b/discord/discord.go @@ -18,8 +18,7 @@ const ( var Session *discordgo.Session var MemberState [99]State var Conf cfg.Config - -var Members, err = Session.GuildMembers(Conf.GuildID, "0", 99) +var Members []*discordgo.Member func ListAllMembers() { for i := 0; i < len(Members); i++ { @@ -42,8 +41,39 @@ func ListNotInState(state State) { } func InitializeUserState() { + fmt.Println("Optimizing User List") + for i := 0; i < len(Members); i++ { + if UserOnline(i) { + SetUserState(i, Alive) + } else { + SetUserState(i, Offline) + } + } +} +func OptimizeUsers() { + fmt.Println("Optimizing User List") for i := 0; i < len(Members); i++ { - MemberState[i] = Alive + if !UserOnline(i) { + SetUserState(i, Offline) + } + } +} + +func SetUserState(id int, s State) { + if id == -1 { + ListNotInState(Offline) + fmt.Printf("Select a User |> ") + fmt.Scanln(&id) + } + MemberState[id] = s +} + +func ClearDead() { + UnmuteState(Dead) + for i := 0; i < len(Members); i++ { + if MemberState[i] == Dead { + SetUserState(i, Alive) + } } } @@ -67,3 +97,36 @@ func MuteUser(id int) { } Session.GuildMemberMute(Conf.GuildID, Members[id].User.ID, true) } + +func MuteState(s State) { + for i := 0; i < len(Members); i++ { + if MemberState[i] != Offline && (MemberState[i] == s || s == -1) { + MuteUser(i) + } + } +} + +func UnmuteUser(id int) { + if id == -1 { + ListNotInState(Offline) + fmt.Printf("Select a User |> ") + fmt.Scanln(&id) + } + Session.GuildMemberMute(Conf.GuildID, Members[id].User.ID, false) +} + +func UnmuteState(s State) { + for i := 0; i < len(Members); i++ { + if MemberState[i] != Offline && (MemberState[i] == s || s == -1) { + MuteUser(i) + } + } +} + +func UserOnline(id int) bool { + err := Session.GuildMemberDeafen(Conf.GuildID, Members[id].User.ID, false) + if err != nil { + return false + } + return true +} diff --git a/main.go b/main.go index dcd99f1..4a5f95f 100644 --- a/main.go +++ b/main.go @@ -26,6 +26,14 @@ func main() { } defer discord.Session.Close() + mems, err := discord.Session.GuildMembers(discord.Conf.GuildID, "0", 99) + + for i := 0; i < len(mems); i++ { + if !mems[i].User.Bot { + discord.Members = append(discord.Members, mems[i]) + } + } + discord.InitializeUserState() cmd := "" for cmd != "exit" { diff --git a/parser/main.go b/parser/main.go index ccaf885..ab3f722 100644 --- a/parser/main.go +++ b/parser/main.go @@ -6,5 +6,11 @@ func Parse(cmd string) { muteParser(cmd[1:]) case '1': unmuteParser(cmd[1:]) + case '7': + offlineParser(cmd[1:]) + case '8': + aliveParser(cmd[1:]) + case '9': + deadParser(cmd[1:]) } } diff --git a/parser/mute.go b/parser/mute.go index bd00994..7e233b2 100644 --- a/parser/mute.go +++ b/parser/mute.go @@ -1,14 +1,17 @@ package parser import ( - "fmt" "github.com/MattheDev53/GoMuteUs/discord" ) func muteParser(cmd string) { + if cmd == "" { + discord.MuteState(discord.Alive) + return + } switch cmd[0] { case '0': - fmt.Println("Mute Alive") + discord.MuteState(-1) case '1': discord.MuteUser(-1) } diff --git a/parser/state.go b/parser/state.go new file mode 100644 index 0000000..831ec54 --- /dev/null +++ b/parser/state.go @@ -0,0 +1,44 @@ +package parser + +import ( + "github.com/MattheDev53/GoMuteUs/discord" +) + +func aliveParser(cmd string) { + if cmd == "" { + discord.ListNotInState(discord.Offline) + return + } + switch cmd[0] { + case '0': + discord.MuteState(-1) + case '1': + discord.SetUserState(-1, discord.Alive) + } +} + +func deadParser(cmd string) { + if cmd == "" { + discord.ListInState(discord.Dead) + return + } + switch cmd[0] { + case '0': + discord.ClearDead() + case '1': + discord.SetUserState(-1, discord.Dead) + } +} + +func offlineParser(cmd string) { + if cmd == "" { + discord.ListInState(discord.Offline) + return + } + switch cmd[0] { + case '0': + discord.OptimizeUsers() + case '1': + discord.SetUserState(-1, discord.Offline) + } +} diff --git a/parser/unmute.go b/parser/unmute.go index 632d161..b08c5b2 100644 --- a/parser/unmute.go +++ b/parser/unmute.go @@ -1,14 +1,18 @@ package parser import ( - "fmt" + "github.com/MattheDev53/GoMuteUs/discord" ) func unmuteParser(cmd string) { + if cmd == "" { + discord.UnmuteState(discord.Alive) + return + } switch cmd[0] { case '0': - fmt.Println("Mute Alive") + discord.UnmuteState(-1) case '1': - fmt.Println("Mute User") + discord.UnmuteUser(-1) } } -- 2.51.2