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 ( import (
"context" "context"
"database/sql" "database/sql"
"encoding/json"
"errors" "errors"
"fmt" "fmt"
"html/template" "html/template"
@@ -30,13 +31,51 @@ func getenv(k, d string) string {
return d 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> const page = `<!doctype html>
<html lang="de"><head> <html lang="de"><head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"> <meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Discord Webposter (mit Subscribers)</title> <title>Discord Webposter (mit Subscribers)</title>
<style> <style>
body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;margin:2rem} 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} .grid{display:grid;gap:1rem}
.two{grid-template-columns:1fr;gap:1rem} .two{grid-template-columns:1fr;gap:1rem}
@media(min-width:900px){.two{grid-template-columns:2fr 1fr}} @media(min-width:900px){.two{grid-template-columns:2fr 1fr}}
@@ -127,6 +166,7 @@ func main() {
if token == "" || appID == "" { if token == "" || appID == "" {
log.Fatal("Bitte DISCORD_TOKEN und APPLICATION_ID setzen.") log.Fatal("Bitte DISCORD_TOKEN und APPLICATION_ID setzen.")
} }
translations, _ = loadTranslationsFromFile(getenv("TRANSLATIONS_FILE", "/tempsrc/language.json"))
httpAddr := getenv("HTTP_ADDR", ":8080") httpAddr := getenv("HTTP_ADDR", ":8080")
dbPath := getenv("DB_PATH", "./subs.db") dbPath := getenv("DB_PATH", "./subs.db")
@@ -204,8 +244,8 @@ func onGuildCreate(s *discordgo.Session, g *discordgo.GuildCreate) {
} }
embed := &discordgo.MessageEmbed{ embed := &discordgo.MessageEmbed{
Title: "👋 Willkommen!", 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.", 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, Color: 0x5865F2,
} }
@@ -214,7 +254,7 @@ func onGuildCreate(s *discordgo.Session, g *discordgo.GuildCreate) {
Components: []discordgo.MessageComponent{ Components: []discordgo.MessageComponent{
discordgo.Button{ discordgo.Button{
CustomID: "start_dm", CustomID: "start_dm",
Label: "DM starten", Label: "DM starten", //translations[getLanguage(guildID)]["response.adduser.error.user"]
Style: discordgo.PrimaryButton, Style: discordgo.PrimaryButton,
}, },
}, },