diff --git a/.gitignore b/.gitignore index ce7987f..172b195 100644 --- a/.gitignore +++ b/.gitignore @@ -108,6 +108,4 @@ fabric.properties # CUSTOM -config.toml -bloater.db - +data/ diff --git a/TODO.md b/TODO.md index c9af091..6b2ab7b 100644 --- a/TODO.md +++ b/TODO.md @@ -1,4 +1,4 @@ -## ;todolist +//TODO - Improve logging - differentiate between debug and non-debug logs diff --git a/bot.go b/bot.go index 9c46354..9f61d7b 100644 --- a/bot.go +++ b/bot.go @@ -2,30 +2,42 @@ package main import ( "time" - "watn3y/bloaterbot/botIO" - "watn3y/bloaterbot/commands" - "watn3y/bloaterbot/commands/notify" - "watn3y/bloaterbot/text" + "github.com/rs/zerolog/log" + "watn3y.de/bloaterbot/botIO" + "watn3y.de/bloaterbot/commands" + "watn3y.de/bloaterbot/commands/notify" + "watn3y.de/bloaterbot/inline/nenefoot" + "watn3y.de/bloaterbot/text" ) func bot() { updates, bot := botIO.Authenticate() + go notify.NotifyHandler(bot) - now := time.Now().UTC() + for update := range updates { - if update.Message == nil || update.Message.Time().UTC().Unix() < now.UTC().Unix() { + log.Debug().Interface("update", update).Msg("Recieved update") + + if update.InlineQuery != nil && update.Message == nil { + nenefoot.Nenefoot(update, bot) continue } - log.Info().Int64("user", update.Message.From.ID).Int64("chat", update.Message.Chat.ID).Str("msg", update.Message.Text).Msg("Recieved update:") - log.Debug().Interface("update", update).Msg("") + if update.Message != nil { + if update.Message.Time().UTC().Unix() < time.Now().UTC().Unix() { + continue + } + if update.Message.IsCommand() { + commands.Commands(update, bot) + } else { + text.Matcher(update, bot) + continue + } - if update.Message.IsCommand() { - commands.Commands(update, bot) - } else { - text.Matcher(update, bot) } + log.Info().Interface("update", update).Msg("Unable to parse update") + } } diff --git a/botIO/authenticate.go b/botIO/authenticate.go index 80db0bc..eb502b8 100644 --- a/botIO/authenticate.go +++ b/botIO/authenticate.go @@ -1,9 +1,9 @@ package botIO import ( - "watn3y/bloaterbot/config" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" "github.com/rs/zerolog/log" + "watn3y.de/bloaterbot/config" ) func Authenticate() (tgbotapi.UpdatesChannel, *tgbotapi.BotAPI) { diff --git a/commands/commands.go b/commands/commands.go index 727d12e..0e25ce0 100644 --- a/commands/commands.go +++ b/commands/commands.go @@ -5,11 +5,12 @@ import ( "strconv" "strings" "time" - "watn3y/bloaterbot/botIO" - "watn3y/bloaterbot/commands/download" - "watn3y/bloaterbot/commands/gaypoints" - "watn3y/bloaterbot/commands/notify" - "watn3y/bloaterbot/config" + + "watn3y.de/bloaterbot/botIO" + "watn3y.de/bloaterbot/commands/download" + "watn3y.de/bloaterbot/commands/gaypoints" + "watn3y.de/bloaterbot/commands/notify" + "watn3y.de/bloaterbot/config" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" "github.com/rs/zerolog/log" @@ -25,25 +26,35 @@ func Commands(update tgbotapi.Update, bot *tgbotapi.BotAPI) { switch cmd { case "shutup": - shutup(update, bot) + go shutup(update, bot) + break case "shut": - shutup(update, bot) + go shutup(update, bot) + break case "gp": gaypoints.GetGP(update, bot) + break case "addgp": gaypoints.SetGP(update, bot) + break case "subtractgp": gaypoints.SetGP(update, bot) + break case "remindme": notify.Reminder(update, bot) + break case "download": go download.Download(update, bot) + break case "dl": go download.Download(update, bot) + break case "help": help(update, bot) + break case "info": info(update, bot) + break } } @@ -82,7 +93,8 @@ func info(update tgbotapi.Update, bot *tgbotapi.BotAPI) { if commit == "" { commit = "not available" } - info, _ := os.Stat("./bloater.db") + //TODO calculate total size + info, _ := os.Stat("data/db/gaypoints.db") dbSizeInKiloBytes := info.Size() / 1000 textInfo := "" + me.FirstName + "" + "\n\n" + diff --git a/commands/download/download.go b/commands/download/download.go index 453815f..290e603 100644 --- a/commands/download/download.go +++ b/commands/download/download.go @@ -14,9 +14,10 @@ import ( "strconv" "strings" "time" - "watn3y/bloaterbot/botIO" - "watn3y/bloaterbot/commonlogic" - "watn3y/bloaterbot/config" + + "watn3y.de/bloaterbot/botIO" + "watn3y.de/bloaterbot/commonlogic" + "watn3y.de/bloaterbot/config" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" "github.com/rs/zerolog/log" @@ -61,7 +62,7 @@ func Download(update tgbotapi.Update, bot *tgbotapi.BotAPI) { return } - files, err := os.ReadDir("./videos/" + downloadTarget) + files, err := os.ReadDir("data/videos/" + downloadTarget) if err != nil { log.Error().Err(err).Msg("failed to download. unable to read target directory") @@ -112,7 +113,7 @@ func randomString(n int) string { func runYTDL(URL string, targetDir string) (success bool) { - cmd := exec.Command("yt-dlp", "-f", "bv*[ext=mp4]+ba[ext=m4a] / bv*+ba/b", "--no-playlist", "-o", "videos/"+targetDir+"/"+"%(title)s.%(ext)s", "--write-thumbnail", "--convert-thumbnails", "jpg", "-o", "thumbnail:videos/"+targetDir+"thumb"+"/"+"%(title)s.%(ext)s", URL) + cmd := exec.Command("yt-dlp", "-f", "bv*[ext=mp4]+ba[ext=m4a] / bv*+ba/b", "--no-playlist", "-o", "data/videos/"+targetDir+"/"+"%(title)s.%(ext)s", "--write-thumbnail", "--convert-thumbnails", "jpg", "-o", "thumbnail:data/videos/"+targetDir+"thumb"+"/"+"%(title)s.%(ext)s", URL) out, err := cmd.CombinedOutput() var ( @@ -181,8 +182,8 @@ func shortURL(URL string) (shorturl string) { } func serveMedia(update tgbotapi.Update, bot *tgbotapi.BotAPI, randomNoise string, file string) { - fsPath := "./videos/" + randomNoise + "/" + file - fsThumbPath := "./videos/" + randomNoise + "thumb" + "/" + strings.TrimSuffix(file, "mp4") + "jpg" + fsPath := "data/videos/" + randomNoise + "/" + file + fsThumbPath := "data/videos/" + randomNoise + "thumb" + "/" + strings.TrimSuffix(file, "mp4") + "jpg" fExt := filepath.Ext(fsPath) imageTypes := []string{".jpg", ".jpeg", ".png"} diff --git a/commands/gaypoints/gaypoints.go b/commands/gaypoints/gaypoints.go index e67c126..0737acd 100644 --- a/commands/gaypoints/gaypoints.go +++ b/commands/gaypoints/gaypoints.go @@ -3,14 +3,16 @@ package gaypoints import ( "strconv" "strings" - "watn3y/bloaterbot/botIO" - "watn3y/bloaterbot/commonlogic" - "watn3y/bloaterbot/config" + + "watn3y.de/bloaterbot/botIO" + "watn3y.de/bloaterbot/commonlogic" + "watn3y.de/bloaterbot/config" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" "github.com/rs/zerolog/log" ) -//TODO logging + +// TODO logging func GetGP(update tgbotapi.Update, bot *tgbotapi.BotAPI) { log.Debug().Int64("chat", update.Message.Chat.ID).Int64("user", update.Message.From.ID).Msg("getting gaypoints") @@ -97,7 +99,7 @@ func SetGP(update tgbotapi.Update, bot *tgbotapi.BotAPI) { log.Debug().Int64("chat", update.Message.Chat.ID).Ints64("enabledChats", config.BotConfig.GayPoints.ModifyUsers).Msg("not setting gaypoints, user not authorised") sticker := tgbotapi.StickerConfig{BaseFile: tgbotapi.BaseFile{ BaseChat: tgbotapi.BaseChat{ChatID: update.Message.Chat.ID, ReplyToMessageID: update.Message.MessageID}, - File: tgbotapi.FilePath("bloater.webp"), + File: tgbotapi.FilePath("data/bloater.webp"), }} botIO.SendSticker(sticker, bot) diff --git a/commands/gaypoints/sql.go b/commands/gaypoints/sql.go index e86aee5..74c2747 100644 --- a/commands/gaypoints/sql.go +++ b/commands/gaypoints/sql.go @@ -2,7 +2,7 @@ package gaypoints import ( "database/sql" - _ "github.com/mattn/go-sqlite3" + _ "modernc.org/sqlite" "github.com/rs/zerolog/log" ) @@ -68,9 +68,9 @@ func sqlSetGP(chatid int64, userid int64, gaypoints int64) { } func InitDB() { - const dbPath string = "./bloater.db" + const dbPath string = "data/db/gaypoints.db" log.Info().Str("dbpath", dbPath).Msg("init database") - db, err := sql.Open("sqlite3", dbPath) + db, err := sql.Open("sqlite", dbPath) if err != nil { log.Panic().Err(err).Msg("failed to open sqlite database") } diff --git a/commands/notify/notify.go b/commands/notify/notify.go index 1240385..37de4dd 100644 --- a/commands/notify/notify.go +++ b/commands/notify/notify.go @@ -5,11 +5,13 @@ import ( "strconv" "strings" "time" - "watn3y/bloaterbot/botIO" + + "watn3y.de/bloaterbot/botIO" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" "github.com/rs/zerolog/log" ) + //TODO logging func Reminder(update tgbotapi.Update, bot *tgbotapi.BotAPI) { diff --git a/commands/notify/sql.go b/commands/notify/sql.go index 707a162..5b5100e 100644 --- a/commands/notify/sql.go +++ b/commands/notify/sql.go @@ -3,6 +3,7 @@ package notify import ( "database/sql" "github.com/rs/zerolog/log" + _ "modernc.org/sqlite" ) var notifySetReminder *sql.Stmt @@ -12,9 +13,9 @@ var notifyDeleteReminder *sql.Stmt //TODO logging //TODO switch to SQL func InitDB() { - const dbPath string = "./bloater.db" + const dbPath string = "data/db/notify.db" log.Info().Str("dbpath", dbPath).Msg("init database") - db, err := sql.Open("sqlite3", dbPath) + db, err := sql.Open("sqlite", dbPath) if err != nil { log.Panic().Err(err).Msg("failed to open sqlite database") } diff --git a/config/config.go b/config/config.go index 1a996be..034d3bd 100644 --- a/config/config.go +++ b/config/config.go @@ -38,14 +38,14 @@ var BotConfig config func LoadConfig() { - configFile, err := os.ReadFile("config.toml") + configFile, err := os.ReadFile("data/config.toml") if err != nil { - log.Panic().Err(err).Msg("error opening config file") + log.Panic().Err(err).Msg("error opening data/config.toml") } _, err = toml.Decode(string(configFile), &BotConfig) if err != nil { - log.Panic().Err(err).Msg("error decoding config file") + log.Panic().Err(err).Msg("error decoding data/config.toml") } BotConfig.Shutup = make(map[int64]time.Time) @@ -102,18 +102,18 @@ func EncodeToml() { }, } - f, err := os.Create("config.toml.example") + f, err := os.Create("data/config.toml.example") if err != nil { - log.Panic().Err(err).Msg("error encoding config file. Cannot open config.toml.example") + log.Panic().Err(err).Msg("error encoding config file. Cannot open data/config.toml.example") } if err := toml.NewEncoder(f).Encode(exampleConfig); err != nil { log.Panic().Err(err).Msg("error encoding config file") } if err := f.Close(); err != nil { - log.Panic().Err(err).Msg("error encoding config file. Cannot close config.toml.example") + log.Panic().Err(err).Msg("error encoding config file. Cannot close data/config.toml.example") } - log.Info().Msg("Wrote example config to config.toml.example. Bye Bye") + log.Info().Msg("Wrote example config to data/config.toml.example. Bye Bye") } diff --git a/data/204.jpg b/data/204.jpg new file mode 100644 index 0000000..424deb5 Binary files /dev/null and b/data/204.jpg differ diff --git a/bloater.webp b/data/bloater.webp similarity index 100% rename from bloater.webp rename to data/bloater.webp diff --git a/config.toml.example b/data/config.toml.example similarity index 100% rename from config.toml.example rename to data/config.toml.example diff --git a/data/db/placeholder b/data/db/placeholder new file mode 100644 index 0000000..e69de29 diff --git a/data/nenefoot/placeholder b/data/nenefoot/placeholder new file mode 100644 index 0000000..e69de29 diff --git a/data/videos/placeholder b/data/videos/placeholder new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yaml b/docker-compose.yaml index 63fb407..9dcd8eb 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -5,8 +5,7 @@ services: container_name: bloaterbot restart: unless-stopped volumes: - - /opt/bloaterbot/config.toml:/app/config.toml - - /opt/bloaterbot/bloater.db:/app/bloater.db + - /opt/bloaterbot/data:/app/data networks: - expose networks: diff --git a/go.mod b/go.mod index a58c5b6..7865c7e 100644 --- a/go.mod +++ b/go.mod @@ -1,16 +1,33 @@ -module watn3y/bloaterbot +module watn3y.de/bloaterbot go 1.21 require ( github.com/BurntSushi/toml v1.3.2 github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 - github.com/mattn/go-sqlite3 v1.14.19 github.com/rs/zerolog v1.31.0 + modernc.org/sqlite v1.28.0 ) +require github.com/mattn/go-sqlite3 v1.14.19 // indirect + require ( + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/google/uuid v1.5.0 // indirect + github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + golang.org/x/mod v0.14.0 // indirect golang.org/x/sys v0.15.0 // indirect + golang.org/x/tools v0.16.1 // indirect + lukechampine.com/uint128 v1.3.0 // indirect + modernc.org/cc/v3 v3.41.0 // indirect + modernc.org/ccgo/v3 v3.16.15 // indirect + modernc.org/libc v1.38.0 // indirect + modernc.org/mathutil v1.6.0 // indirect + modernc.org/memory v1.7.2 // indirect + modernc.org/opt v0.1.3 // indirect + modernc.org/strutil v1.2.0 // indirect + modernc.org/token v1.1.0 // indirect ) diff --git a/go.sum b/go.sum index 6b041ee..8773c6e 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,19 @@ github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 h1:wG8n/XJQ07TmjbITcGiUaOtXxdrINDz1b0J1w0SzqDc= github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1/go.mod h1:A2S0CWkNylc2phvKXWBBdD3K0iGnDBGbzRpISP2zBl8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= +github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= +github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -13,11 +23,49 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/mattn/go-sqlite3 v1.14.19 h1:fhGleo2h1p8tVChob4I9HpmVFIAkKGpiukdrgQbWfGI= github.com/mattn/go-sqlite3 v1.14.19/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A= github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= +golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +lukechampine.com/uint128 v1.3.0 h1:cDdUVfRwDUDovz610ABgFD17nXD4/uDgVHl2sC3+sbo= +lukechampine.com/uint128 v1.3.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.41.0 h1:QoR1Sn3YWlmA1T4vLaKZfawdVtSiGx8H+cEojbC7v1Q= +modernc.org/cc/v3 v3.41.0/go.mod h1:Ni4zjJYJ04CDOhG7dn640WGfwBzfE0ecX8TyMB0Fv0Y= +modernc.org/ccgo/v3 v3.16.15 h1:KbDR3ZAVU+wiLyMESPtbtE/Add4elztFyfsWoNTgxS0= +modernc.org/ccgo/v3 v3.16.15/go.mod h1:yT7B+/E2m43tmMOT51GMoM98/MtHIcQQSleGnddkUNI= +modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v1.38.0 h1:o4Lpk0zNDSdsjfEXnF1FGXWQ9PDi1NOdWcLP5n13FGo= +modernc.org/libc v1.38.0/go.mod h1:YAXkAZ8ktnkCKaN9sw/UDeUVkGYJ/YquGO4FTi5nmHE= +modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= +modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= +modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= +modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= +modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.28.0 h1:Zx+LyDDmXczNnEQdvPuEfcFVA2ZPyaD7UCZDjef3BHQ= +modernc.org/sqlite v1.28.0/go.mod h1:Qxpazz0zH8Z1xCFyi5GSL3FzbtZ3fvbjmywNogldEW0= +modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= +modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= +modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY= +modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c= +modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY= +modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE= diff --git a/inline/nenefoot/nenefoot.go b/inline/nenefoot/nenefoot.go new file mode 100644 index 0000000..3e3ce20 --- /dev/null +++ b/inline/nenefoot/nenefoot.go @@ -0,0 +1,29 @@ +package nenefoot + +import ( + //"watn3y.de/bloaterbot/botIO" + //"watn3y.de/bloaterbot/config" + "fmt" + + tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" + //"github.com/rs/zerolog/log" +) + +func Nenefoot(update tgbotapi.Update, bot *tgbotapi.BotAPI) { + + msg3 := tgbotapi.NewInlineQueryResultVideo("hihi", "https://bloater.watn3y.de/5r5NJELyDKYSdPsX6fzK/7000%20Dollars%20for%20this%20car%2C%20but%20i%20got%20a%20slight%20dent.mp4") + msg3.MimeType = "video/mp4" + msg3.Title = "Rat Pencilcase" + msg3.ThumbURL = "https://i.imgur.com/XjCWMco.jpeg" + + inline := tgbotapi.InlineConfig{ + InlineQueryID: update.InlineQuery.ID, + Results: []interface{}{msg3}, + CacheTime: 0, + } + + if _, err := bot.Request(inline); err != nil { + fmt.Println(err) + } + +} diff --git a/inline/nenefoot/sql.go b/inline/nenefoot/sql.go new file mode 100644 index 0000000..9105cb7 --- /dev/null +++ b/inline/nenefoot/sql.go @@ -0,0 +1,47 @@ +package nenefoot + +import ( + "database/sql" + _ "modernc.org/sqlite" + "github.com/rs/zerolog/log" +) + +var gpSelectUser *sql.Stmt + +var gpSelectChat *sql.Stmt + +var gpSet *sql.Stmt + +func InitDB() { + const dbPath string = "data/db/nenefoot.db" + log.Info().Str("dbpath", dbPath).Msg("init database") + db, err := sql.Open("sqlite", dbPath) + if err != nil { + log.Panic().Err(err).Msg("failed to open sqlite database") + } + + _, err = db.Exec("CREATE TABLE IF NOT EXISTS nenefoot (title string, type string, ID string, URL string, UNIQUE(title), UNIQUE(ID), UNIQUE(URL))") + if err != nil { + log.Panic().Err(err).Msg("failed to create table") + } + + gpSelectUser, err = db.Prepare("SELECT gaypoints FROM gaypoints WHERE chatid = ? AND userid = ?") + + if err != nil { + log.Panic().Err(err).Msg("failed to create sql statement") + } + + gpSelectChat, err = db.Prepare("SELECT userid,gaypoints FROM gaypoints WHERE chatid = ? ORDER BY gaypoints DESC") + + if err != nil { + log.Panic().Err(err).Msg("failed to create sql statement") + } + + gpSet, err = db.Prepare("INSERT OR REPLACE INTO gaypoints (chatid, userid, gaypoints) values (?,?,?)") + + if err != nil { + log.Panic().Err(err).Msg("failed to create sql statement") + } + + log.Info().Msg("init database: done") +} diff --git a/main.go b/main.go index 5ffb58c..a18e1a5 100644 --- a/main.go +++ b/main.go @@ -5,10 +5,11 @@ import ( "fmt" "os" "time" - "watn3y/bloaterbot/commands/gaypoints" - "watn3y/bloaterbot/commands/notify" - "watn3y/bloaterbot/config" - "watn3y/bloaterbot/webserver" + + "watn3y.de/bloaterbot/commands/gaypoints" + "watn3y.de/bloaterbot/commands/notify" + "watn3y.de/bloaterbot/config" + "watn3y.de/bloaterbot/webserver" "github.com/rs/zerolog" "github.com/rs/zerolog/log" diff --git a/text/balonlyl/balonlyl.go b/text/balonlyl/balonlyl.go index b13cd83..862a2ba 100644 --- a/text/balonlyl/balonlyl.go +++ b/text/balonlyl/balonlyl.go @@ -1,11 +1,12 @@ package balonlyl import ( - "watn3y/bloaterbot/botIO" - "watn3y/bloaterbot/config" + "watn3y.de/bloaterbot/botIO" + "watn3y.de/bloaterbot/config" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" ) + //TODO logging func Balonlyl(update tgbotapi.Update, bot *tgbotapi.BotAPI) { diff --git a/text/matcher.go b/text/matcher.go index baea18c..29f1644 100644 --- a/text/matcher.go +++ b/text/matcher.go @@ -3,14 +3,16 @@ package text import ( "strings" "time" - "watn3y/bloaterbot/commonlogic" - "watn3y/bloaterbot/config" - "watn3y/bloaterbot/text/balonlyl" + + "watn3y.de/bloaterbot/commonlogic" + "watn3y.de/bloaterbot/config" + "watn3y.de/bloaterbot/text/balonlyl" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" "github.com/rs/zerolog/log" ) -//TODO logging + +// TODO logging func Matcher(update tgbotapi.Update, bot *tgbotapi.BotAPI) { log.Debug().Str("text", update.Message.Text).Int64("chat", update.Message.Chat.ID).Msg("Starting text matcher") diff --git a/videos/index.html b/videos/index.html deleted file mode 100644 index c7060ad..0000000 --- a/videos/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - bloaterbot - - - - -

NO.

- - diff --git a/webserver/webserver.go b/webserver/webserver.go index 24424d3..7a7029c 100644 --- a/webserver/webserver.go +++ b/webserver/webserver.go @@ -2,16 +2,21 @@ package webserver import ( "net/http" - "watn3y/bloaterbot/config" + "watn3y.de/bloaterbot/config" "github.com/rs/zerolog/log" ) func RunServer() { - fs := http.FileServer(http.Dir("./videos")) - http.Handle("/", fs) + //http.HandleFunc("/", handle204) - log.Info().Str("port", config.BotConfig.Webserver.Port).Str("path", "./videos").Msg("Starting webserver") + videos := http.FileServer(http.Dir("data/videos")) + nenefoot := http.FileServer(http.Dir("data/nenefoot")) + + http.Handle("/", videos) + http.Handle("/nenefoot/", nenefoot) + + log.Info().Str("port", config.BotConfig.Webserver.Port).Msg("Starting webserver") err := http.ListenAndServe(":"+config.BotConfig.Webserver.Port, nil) @@ -20,3 +25,16 @@ func RunServer() { } } + +/*func handle204(w http.ResponseWriter, r *http.Request) { + + buf, err := os.ReadFile("data/204.jpg") + if err != nil { + log.Err(err).Msg("failed to open data/204.jpg") + } + w.Header().Set("Content-Type", "image/jpeg") + w.Write(buf) + return + +} +*/ \ No newline at end of file