added autojoinroles without permissioncheck
This commit is contained in:
@@ -34,13 +34,18 @@ var autojoinroles_command Command = Command{
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
Interact: func(s *discordgo.Session, i *discordgo.InteractionCreate) {
|
Interact: func(s *discordgo.Session, i *discordgo.InteractionCreate) {
|
||||||
|
var role string
|
||||||
option := i.ApplicationCommandData().Options[0].Name
|
option := i.ApplicationCommandData().Options[0].Name
|
||||||
role := i.ApplicationCommandData().Options[0].Options[0].RoleValue(s, i.GuildID).ID
|
|
||||||
var content string
|
var content string
|
||||||
|
if len(i.ApplicationCommandData().Options[0].Options) == 1 {
|
||||||
|
role = i.ApplicationCommandData().Options[0].Options[0].RoleValue(s, i.GuildID).ID
|
||||||
if setAutoJoinRole(i.GuildID, option, role) {
|
if setAutoJoinRole(i.GuildID, option, role) {
|
||||||
content = "Setup auto join role for " + option + "s as <@&" + role + ">"
|
|
||||||
} else {
|
|
||||||
content = "Updated auto join role for " + option + "s as <@&" + role + ">"
|
content = "Updated auto join role for " + option + "s as <@&" + role + ">"
|
||||||
|
} else {
|
||||||
|
content = "Setup auto join role for " + option + "s as <@&" + role + ">"
|
||||||
|
}
|
||||||
|
} else if setAutoJoinRole(i.GuildID, option, role) {
|
||||||
|
content = "Deleted auto join role for " + option + "s"
|
||||||
}
|
}
|
||||||
s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{
|
||||||
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
Type: discordgo.InteractionResponseChannelMessageWithSource,
|
||||||
@@ -49,6 +54,6 @@ var autojoinroles_command Command = Command{
|
|||||||
Flags: discordgo.MessageFlagsEphemeral,
|
Flags: discordgo.MessageFlagsEphemeral,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
purgeUnusedAutoJoinRoles(i.GuildID)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/bwmarrin/discordgo"
|
|
||||||
)
|
|
||||||
|
|
||||||
func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
|
|
||||||
if len(m.Embeds) == 0 || m.Embeds[0].Footer == nil || m.Embeds[0].Footer.Text != "📌 Sticky message" {
|
|
||||||
if hasSticky(m.GuildID, m.ChannelID) {
|
|
||||||
s.ChannelMessageDelete(m.ChannelID, getStickyMessageID(m.GuildID, m.ChannelID))
|
|
||||||
stickyMessage, _ := s.ChannelMessageSendEmbed(m.ChannelID, &discordgo.MessageEmbed{
|
|
||||||
Type: discordgo.EmbedTypeArticle,
|
|
||||||
Footer: &discordgo.MessageEmbedFooter{
|
|
||||||
Text: "📌 Sticky message",
|
|
||||||
},
|
|
||||||
Color: hexToDecimal(color["primary"]),
|
|
||||||
Description: getStickyMessageContent(m.GuildID, m.ChannelID),
|
|
||||||
})
|
|
||||||
updateStickyMessageID(m.GuildID, m.ChannelID, stickyMessage.ID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"slices"
|
"slices"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -106,3 +107,27 @@ func removeOldCommandFromAllGuilds(s *discordgo.Session) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
|
||||||
|
if len(m.Embeds) == 0 || m.Embeds[0].Footer == nil || m.Embeds[0].Footer.Text != "📌 Sticky message" {
|
||||||
|
if hasSticky(m.GuildID, m.ChannelID) {
|
||||||
|
s.ChannelMessageDelete(m.ChannelID, getStickyMessageID(m.GuildID, m.ChannelID))
|
||||||
|
stickyMessage, _ := s.ChannelMessageSendEmbed(m.ChannelID, &discordgo.MessageEmbed{
|
||||||
|
Type: discordgo.EmbedTypeArticle,
|
||||||
|
Footer: &discordgo.MessageEmbedFooter{
|
||||||
|
Text: "📌 Sticky message",
|
||||||
|
},
|
||||||
|
Color: hexToDecimal(color["primary"]),
|
||||||
|
Description: getStickyMessageContent(m.GuildID, m.ChannelID),
|
||||||
|
})
|
||||||
|
updateStickyMessageID(m.GuildID, m.ChannelID, stickyMessage.ID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func guildMemberJoin(s *discordgo.Session, m *discordgo.GuildMemberAdd) {
|
||||||
|
err := s.GuildMemberRoleAdd(m.GuildID, m.User.ID, getAutoJoinRole(m.GuildID, m.User.Bot))
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
3
main.go
3
main.go
@@ -38,10 +38,11 @@ func main() {
|
|||||||
} else {
|
} else {
|
||||||
fmt.Println("Discord session created")
|
fmt.Println("Discord session created")
|
||||||
}
|
}
|
||||||
discord.Identify.Intents = discordgo.IntentsGuildMessages | discordgo.IntentsGuilds | discordgo.IntentMessageContent
|
discord.Identify.Intents = discordgo.IntentsGuildMessages | discordgo.IntentsGuilds | discordgo.IntentMessageContent | discordgo.IntentGuildMembers
|
||||||
discord.AddHandler(ready)
|
discord.AddHandler(ready)
|
||||||
discord.AddHandler(interactionCreate)
|
discord.AddHandler(interactionCreate)
|
||||||
discord.AddHandler(messageCreate)
|
discord.AddHandler(messageCreate)
|
||||||
|
discord.AddHandler(guildMemberJoin)
|
||||||
err = discord.Open()
|
err = discord.Open()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("error opening connection,", err)
|
fmt.Println("error opening connection,", err)
|
||||||
|
|||||||
@@ -237,12 +237,17 @@ func getFormType(formManageID string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func setAutoJoinRole(guildID string, option string, roleID string) bool {
|
func setAutoJoinRole(guildID string, option string, roleID string) bool {
|
||||||
var exists bool
|
var role_exists bool
|
||||||
err := db.QueryRow("SELECT EXISTS (SELECT 1 FROM autojoinroles WHERE guild_id = $1)", guildID).Scan(&exists)
|
var autojoinroles_exists bool
|
||||||
|
err := db.QueryRow("SELECT EXISTS (SELECT 1 FROM autojoinroles WHERE guild_id = $1)", guildID).Scan(&autojoinroles_exists)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
if exists {
|
err = db.QueryRow("SELECT EXISTS (SELECT 1 FROM autojoinroles WHERE guild_id = $1 AND "+option+"_role IS NOT NULL AND "+option+"_role != '')", guildID).Scan(&role_exists)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
if autojoinroles_exists {
|
||||||
_, err = db.Exec("UPDATE autojoinroles SET "+option+"_role = $1 WHERE guild_id = $2", roleID, guildID)
|
_, err = db.Exec("UPDATE autojoinroles SET "+option+"_role = $1 WHERE guild_id = $2", roleID, guildID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
@@ -253,5 +258,27 @@ func setAutoJoinRole(guildID string, option string, roleID string) bool {
|
|||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return exists
|
return role_exists
|
||||||
|
}
|
||||||
|
|
||||||
|
func purgeUnusedAutoJoinRoles(guildID string) {
|
||||||
|
_, err := db.Exec("DELETE FROM autojoinroles WHERE guild_id = $1 AND user_role = '' OR user_role IS NULL AND bot_role = '' OR bot_role IS NULL", guildID)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getAutoJoinRole(guildID string, isBot bool) string {
|
||||||
|
var isBotString string
|
||||||
|
var role string
|
||||||
|
if isBot {
|
||||||
|
isBotString = "bot"
|
||||||
|
} else {
|
||||||
|
isBotString = "user"
|
||||||
|
}
|
||||||
|
err := db.QueryRow("SELECT "+isBotString+"_role FROM autojoinroles WHERE guild_id = $1", guildID).Scan(&role)
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err, guildID)
|
||||||
|
}
|
||||||
|
return role
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user