added embed for rules/welcome message

This commit is contained in:
kageru 2018-05-26 04:23:10 +02:00
parent 1b877ce117
commit becf7556fc
Signed by untrusted user: kageru
GPG Key ID: 8282A2BEA4ADA3D2
2 changed files with 107 additions and 17 deletions

View File

@ -1,5 +1,18 @@
{
"Token": "put your token here",
"Welcome": "Welcome to the server, <@%s>.",
"WelcomeChannel": "channel id (as string)"
"Token": "Your login token",
"AdminID": "Your user ID",
"ServerID": "Server ID",
"LockedRoleID": "Locked role ID (TODO: write readme to explain this)",
"WelcomeChannel": "welcome channel ID",
"WelcomeEmbed": {
"Message": "Willkommen in Selphys Harem, verlorene Seele. Wir hoffen, du genießt deinen Aufenthalt, denn du wirst diesen Ort nie wieder verlassen.\n\nBitte lies dir die Regeln sorgfältig durch und schreibe anschließend !accept in diesen Channel, um Zugriff auf den Server zu erhalten.",
"RulesTitle": "__Regeln__",
"RulesText": "1) Sei kein Arsch. Es darf geflucht werden, solange es nicht an/gegen jemanden gerichtet ist. Nimm Rücksicht auf die Menschen um dich herum (zumindest auf diesem Server).\n\n2) Kommt es zu einem Streit mit jemandem, gehe respektvoll mit der Person/den Personen um und versuche zu verstehen, dass die Meinungen, Werte und Ansichten anderer sich von deinen unterscheiden können.\n\n3) Poste keine Daten, die zu privat sind, und frage auch nicht andere danach. Solche Daten beinhalten Adressen, Telefon- und Handynummern, etc.\n\n4) NSFW Bilder, Themen, Videos, GIFs, etc. gehört in die NSFW-Channel. Hierfür gibt es drei Kategorien. <#326403479390388224>, <#248885675246485523> und <#429226334267637760>. Lies dir die jeweiligen Channel-Beschreibungen durch, bevor du Content postest.",
"RulesText2": "5) Spam ist (mit Ausnahme von <#299129359904538625>) in jedem Channel untersagt.\n\n6) Bei Fragen, Wünschen und Anregungen darf sich gerne an das Personal oder direkt an mich gewendet werden.\n\n7) Keine Werbung. Dazu zählen Livestreams, egal auf welcher Plattform, und Clips, welche nicht in Bezug zu Selphys Community stehen.\n\n8) Alle Usernamen müssen leserlich und leicht zu taggen sein. Sollte dies auf (d)einen Usernamen nicht zutreffen, steht es den Maids frei, diesen zu ändern",
"QuestionsTitle": "__Fragen und Anregungen__",
"QuestionsText": "Bei Fragen wende dich einfach an die Mods. Die aktuell anwesenden Moderatoren werden rechts mit dem Rang „Maid“ oder höher angezeigt.",
"BugsTitle": "__Bugs__",
"BugsText": "Mit Problemen, Fehlern und Vorschlägen zum Bot wende dich bitte an <#%s>.",
"Image": "https://static-cdn.jtvnw.net/emoticons/v1/970966/3.0"
}
}

105
main.go
View File

@ -11,10 +11,25 @@ import (
"github.com/bwmarrin/discordgo"
)
type Embed struct {
Message string
RulesTitle string
RulesText string
RulesText2 string
QuestionsTitle string
QuestionsText string
BugsTitle string
BugsText string
Image string
}
type Config struct {
AdminID string
ServerID string
LockedRoleID string
Token string
Welcome string
WelcomeChannel string
WelcomeEmbed Embed
}
var config = readConfig()
@ -52,12 +67,33 @@ func main() {
dg.Close()
}
func onJoin(s *discordgo.Session, member *discordgo.GuildMemberAdd) {
if !member.User.Bot {
s.GuildMemberRoleAdd(config.ServerID, member.User.ID, config.LockedRoleID)
}
}
func unlockUser(s *discordgo.Session, id string) {
s.GuildMemberRoleRemove(config.ServerID, id, config.LockedRoleID)
}
func genericReply(s *discordgo.Session, m *discordgo.MessageCreate) {
if m.Author.ID == s.State.User.ID {
return
}
winks, _ := regexp.MatchString("([()|DoO];|;[()|DoOpP])", m.Content)
if m.Author.ID == config.AdminID {
replyGodmode(s, m)
} else if m.ChannelID == config.WelcomeChannel {
s.ChannelMessageDelete(m.ChannelID, m.ID)
if m.Content == "!accept" {
unlockUser(s, m.Author.ID)
}
return
}
// In case this doesn’t work with your font: the last character is a winking emoji.
winks, _ := regexp.MatchString("([()|DoO];|;[()|DoOpP]|:wink:|😉)", m.Content)
if winks {
s.ChannelMessageSend(m.ChannelID, fmt.Sprintf("<@%s> faggot", m.Author.ID))
s.ChannelMessageDelete(m.ChannelID, m.ID)
@ -70,18 +106,59 @@ func genericReply(s *discordgo.Session, m *discordgo.MessageCreate) {
} else if m.Content == "o/" {
s.ChannelMessageSend(m.ChannelID, "\\o")
}
if m.Content == "test_welcome()" {
s.ChannelMessageSend(m.ChannelID, fmt.Sprintf(config.Welcome, m.Author.ID))
}
// Admin stuff down here. This is very server-specific
func replyGodmode(s *discordgo.Session, m *discordgo.MessageCreate) {
if m.Content == "print_rules()" {
embedColor := 0xffb90f // kageru gold
embed := &discordgo.MessageEmbed{
Author: &discordgo.MessageEmbedAuthor{},
Color: embedColor,
Description: config.WelcomeEmbed.Message,
Fields: []*discordgo.MessageEmbedField{
&discordgo.MessageEmbedField{
Name: config.WelcomeEmbed.QuestionsTitle,
Value: config.WelcomeEmbed.QuestionsText,
Inline: true,
},
&discordgo.MessageEmbedField{
Name: config.WelcomeEmbed.BugsTitle,
Value: fmt.Sprintf(config.WelcomeEmbed.BugsText, config.AdminID),
Inline: true,
},
},
Thumbnail: &discordgo.MessageEmbedThumbnail{
URL: config.WelcomeEmbed.Image,
},
}
s.ChannelMessageSendEmbed(m.ChannelID, embed)
embed = &discordgo.MessageEmbed{
Author: &discordgo.MessageEmbedAuthor{},
Color: embedColor,
Fields: []*discordgo.MessageEmbedField{
&discordgo.MessageEmbedField{
Name: config.WelcomeEmbed.RulesTitle,
Value: config.WelcomeEmbed.RulesText,
Inline: true,
},
},
}
s.ChannelMessageSendEmbed(m.ChannelID, embed)
embed = &discordgo.MessageEmbed{
Author: &discordgo.MessageEmbedAuthor{},
Color: embedColor,
Fields: []*discordgo.MessageEmbedField{
&discordgo.MessageEmbedField{
Name: config.WelcomeEmbed.RulesTitle,
Value: config.WelcomeEmbed.RulesText2,
Inline: true,
},
},
}
s.ChannelMessageSendEmbed(m.ChannelID, embed)
}
}
func onJoin(s *discordgo.Session, member *discordgo.GuildMemberAdd) {
fmt.Println("user joined")
fmt.Println(member.User.Bot)
if !member.User.Bot {
s.ChannelMessageSend(config.WelcomeChannel, fmt.Sprintf(config.Welcome, member.User.ID))
}
fmt.Println(fmt.Sprintf(config.Welcome, member.User.ID))
}