CSS-Update
All checks were successful
release-tag / release-image (push) Successful in 2m14s

This commit is contained in:
2025-09-01 21:53:56 +02:00
parent 2ce30f02d2
commit 8520b4b5b3

48
main.go
View File

@@ -3,6 +3,7 @@ package main
import (
"context"
"database/sql"
"encoding/json"
"errors"
"fmt"
"html/template"
@@ -30,13 +31,51 @@ func getenv(k, d string) string {
return d
}
// Funktion zur Deserialisierung und Umwandlung in map[string]map[string]string
func loadTranslationsFromFile(filename string) (map[string]map[string]string, error) {
// Dateiinhalt lesen
fileData, err := os.ReadFile(filename)
if err != nil {
return nil, fmt.Errorf("fehler beim lesen der datei: %w", err)
}
var translationFile TranslationFile
// Deserialisierung des JSON in die Struktur
if err := json.Unmarshal(fileData, &translationFile); err != nil {
return nil, fmt.Errorf("fehler beim deserialisieren der json-daten: %w", err)
}
// Umwandlung der Struktur in eine Map
result := make(map[string]map[string]string)
for _, trans := range translationFile.Translations {
result[trans.Language] = trans.Messages
}
return result, nil
}
// Die Struktur für die Übersetzungen.
type TranslationsStruct struct {
Language string `json:"language"`
Messages map[string]string `json:"messages"`
}
// Temporäre Struktur zur Deserialisierung.
type TranslationFile struct {
Translations []TranslationsStruct `json:"translations"`
}
// Globale Variable für die Übersetzungen
var translations map[string]map[string]string
const page = `<!doctype html>
<html lang="de"><head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Discord Webposter (mit Subscribers)</title>
<style>
body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;margin:2rem}
.wrap{max-width:900px;margin:0 auto}
.wrap{max-width:1200px;margin:0 auto}
.grid{display:grid;gap:1rem}
.two{grid-template-columns:1fr;gap:1rem}
@media(min-width:900px){.two{grid-template-columns:2fr 1fr}}
@@ -127,6 +166,7 @@ func main() {
if token == "" || appID == "" {
log.Fatal("Bitte DISCORD_TOKEN und APPLICATION_ID setzen.")
}
translations, _ = loadTranslationsFromFile(getenv("TRANSLATIONS_FILE", "/tempsrc/language.json"))
httpAddr := getenv("HTTP_ADDR", ":8080")
dbPath := getenv("DB_PATH", "./subs.db")
@@ -204,8 +244,8 @@ func onGuildCreate(s *discordgo.Session, g *discordgo.GuildCreate) {
}
embed := &discordgo.MessageEmbed{
Title: "👋 Willkommen!",
Description: "Ich kann dir Updates per DM schicken.\n\n• Tippe `/subscribe` oder\n• klicke den Button unten, um eine DM mit mir zu starten.",
Title: "👋 Willkommen!", //translations[getLanguage(guildID)]["response.adduser.error.user"]
Description: "Ich kann dir Updates per DM schicken.\n\n• Tippe `/subscribe` oder\n• klicke den Button unten, um eine DM mit mir zu starten.", //translations[getLanguage(guildID)]["response.adduser.error.user"]
Color: 0x5865F2,
}
@@ -214,7 +254,7 @@ func onGuildCreate(s *discordgo.Session, g *discordgo.GuildCreate) {
Components: []discordgo.MessageComponent{
discordgo.Button{
CustomID: "start_dm",
Label: "DM starten",
Label: "DM starten", //translations[getLanguage(guildID)]["response.adduser.error.user"]
Style: discordgo.PrimaryButton,
},
},