This commit is contained in:
@@ -20,6 +20,14 @@ var postfixes = []postfix{
|
||||
Name: "1_Update_Tags_Content_Length",
|
||||
Invoke: updateTagsContentLength,
|
||||
},
|
||||
postfix{
|
||||
Name: "2_Add_Table_Roles",
|
||||
Invoke: addTableRoles,
|
||||
},
|
||||
postfix{
|
||||
Name: "3_Update_Guild_Add_Puzzle_Role",
|
||||
Invoke: updateGuildsAddPuzzleRole,
|
||||
},
|
||||
}
|
||||
|
||||
func RunPostfixes() {
|
||||
@@ -96,3 +104,41 @@ func updateTagsContentLength(revert bool) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func addTableRoles(revert bool) error {
|
||||
var queryString string
|
||||
if !revert {
|
||||
queryString = `CREATE TABLE roles(
|
||||
id varchar(30) primary key,
|
||||
guild_id varchar(30) not null references guilds(id),
|
||||
self_assignable bool not null default false,
|
||||
admin bool not null default false,
|
||||
moderator bool not null default false
|
||||
)`
|
||||
} else {
|
||||
queryString = `DROP TABLE roles`
|
||||
}
|
||||
_, err := Database.Exec(queryString)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func updateGuildsAddPuzzleRole(revert bool) error {
|
||||
var queryString string
|
||||
if !revert {
|
||||
queryString = `ALTER TABLE guilds
|
||||
ADD COLUMN puzzle_role varchar(30) references roles(id)`
|
||||
} else {
|
||||
queryString = `ALTER TABLE guilds
|
||||
DROP COLUMN puzzle_role`
|
||||
}
|
||||
_, err := Database.Exec(queryString)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
+13
-4
@@ -49,14 +49,14 @@ func ProcessPuzzleEmail(mr *mail.Reader, dg *discordgo.Session) {
|
||||
},
|
||||
}
|
||||
var guilds []Guild
|
||||
queryString := `SELECT id, puzzle_channel from guilds`
|
||||
queryString := `SELECT id, puzzle_channel, puzzle_role from guilds`
|
||||
rows, err := Database.Query(queryString)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
for rows.Next() {
|
||||
var guild Guild
|
||||
err := rows.Scan(&guild.ID, &guild.PuzzleChannel)
|
||||
err := rows.Scan(&guild.ID, &guild.PuzzleChannel, &guild.PuzzleRole)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
continue
|
||||
@@ -74,8 +74,17 @@ func ProcessPuzzleEmail(mr *mail.Reader, dg *discordgo.Session) {
|
||||
if g.PuzzleChannel == "" {
|
||||
continue
|
||||
}
|
||||
msg := discordgo.MessageSend{
|
||||
Embed: &e,
|
||||
var msg discordgo.MessageSend
|
||||
role, err := dg.State.Role(g.ID, g.PuzzleRole.String)
|
||||
if err != nil {
|
||||
msg = discordgo.MessageSend{
|
||||
Embed: &e,
|
||||
}
|
||||
} else {
|
||||
msg = discordgo.MessageSend{
|
||||
Content: role.Mention(),
|
||||
Embed: &e,
|
||||
}
|
||||
}
|
||||
m, err := dg.ChannelMessageSendComplex(g.PuzzleChannel, &msg)
|
||||
if err != nil {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package utils
|
||||
|
||||
import "database/sql"
|
||||
|
||||
type Guild struct {
|
||||
ID string
|
||||
WelcomeMessage string
|
||||
@@ -7,4 +9,5 @@ type Guild struct {
|
||||
LoggingChannel string
|
||||
WelcomeChannel string
|
||||
PuzzleChannel string
|
||||
PuzzleRole sql.NullString
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user