Исправлена команда friday, а также паника при сравнении команды со значениями, добавлена команда fuck

This commit is contained in:
eleksir
2022-11-27 21:22:03 +03:00
parent 8a568d45a1
commit 461ec78a7b

View File

@@ -11,6 +11,7 @@ import (
"math/rand" "math/rand"
"os" "os"
"os/signal" "os/signal"
"regexp"
"strconv" "strconv"
"strings" "strings"
"syscall" "syscall"
@@ -242,6 +243,8 @@ func friday() string {
dayNum := int(time.Now().Weekday()) dayNum := int(time.Now().Weekday())
switch dayNum { switch dayNum {
case 0:
phrase, err = FetchRandomV(pebbleDB.sunday.db, pebbleDB.sunday.name)
case 1: case 1:
phrase, err = FetchRandomV(pebbleDB.monday.db, pebbleDB.monday.name) phrase, err = FetchRandomV(pebbleDB.monday.db, pebbleDB.monday.name)
case 2: case 2:
@@ -254,8 +257,6 @@ func friday() string {
phrase, err = FetchRandomV(pebbleDB.friday.db, pebbleDB.friday.name) phrase, err = FetchRandomV(pebbleDB.friday.db, pebbleDB.friday.name)
case 6: case 6:
phrase, err = FetchRandomV(pebbleDB.saturday.db, pebbleDB.saturday.name) phrase, err = FetchRandomV(pebbleDB.saturday.db, pebbleDB.saturday.name)
case 7:
phrase, err = FetchRandomV(pebbleDB.sunday.db, pebbleDB.sunday.name)
} }
if err != nil { if err != nil {
@@ -375,54 +376,46 @@ func msgParser(ctx context.Context, msg string) {
msgLen := len(j.Message) msgLen := len(j.Message)
if j.Message[0:len(j.Misc.CSign)] == j.Misc.CSign { //nolint:gocritic if j.Message[0:len(j.Misc.CSign)] == j.Misc.CSign { //nolint:gocritic
switch cmd := j.Message[len(j.Misc.CSign):]; { cmd := j.Message[len(j.Misc.CSign):]
case cmd == "friday" || cmd == "пятница":
if cmd == "friday" || cmd == "пятница" {
j.Message = friday() j.Message = friday()
} else if (cmd == "proverb") || (cmd == "пословица") {
case cmd == "proverb" || cmd == "пословица":
j.Message = proverb() j.Message = proverb()
} else if (cmd == "f") || (cmd == "ф") {
case cmd == "f" || cmd == "ф":
j.Message = fortune() j.Message = fortune()
} else if (cmd == "fortune") || (cmd == "фортунка") {
case cmd == "fortune" || cmd == "фортунка":
j.Message = fortune() j.Message = fortune()
} else if (cmd == "karma") || (cmd == "карма") {
case cmd == "karma" || cmd == "карма":
j.Message = getKarma(j.ChatID, "") j.Message = getKarma(j.ChatID, "")
} else if match, _ := regexp.MatchString("^(rum|ром)[::space::]?([::space::].+)*$", cmd); match {
case cmd[:3] == "rum" || cmd[:3] == "ром":
format := "/me притаскивает на подносе стопку рома для %s, края стопки искрятся кристаллами соли." format := "/me притаскивает на подносе стопку рома для %s, края стопки искрятся кристаллами соли."
j.Message = fmt.Sprintf(format, j.Misc.Username) j.Message = fmt.Sprintf(format, j.Misc.Username)
} else if match, _ := regexp.MatchString("^(vodka|водка)[::space::]?([::space::].+)*$", cmd); match {
case cmd[:5] == "vodka" || cmd[:5] == "водка":
format := "/me подаёт шот водки с небольшим маринованным огурчиком на блюдце для %s. Из огурчика торчит " format := "/me подаёт шот водки с небольшим маринованным огурчиком на блюдце для %s. Из огурчика торчит "
format += "небольшая вилочка." format += "небольшая вилочка."
j.Message = fmt.Sprintf(format, j.Misc.Username) j.Message = fmt.Sprintf(format, j.Misc.Username)
} else if match, _ := regexp.MatchString("^(beer|пиво)[::space::]?([::space::].+)*$", cmd); match {
case cmd[:4] == "beer" || cmd[:4] == "пиво":
format := "/me бахает об стол перед %s кружкой холодного пива, часть пенной шапки сползает по запотевшей " format := "/me бахает об стол перед %s кружкой холодного пива, часть пенной шапки сползает по запотевшей "
format += "стенке кружки." format += "стенке кружки."
j.Message = fmt.Sprintf(format, j.Misc.Username) j.Message = fmt.Sprintf(format, j.Misc.Username)
} else if match, _ := regexp.MatchString("^(tequila|текила)[::space::]?([::space::].+)*$", cmd); match {
case cmd[:7] == "tequila" || cmd[:6] == "текила":
format := "/me ставит рядом с %s шот текилы, аккуратно на ребро стопки насаживает дольку лайма и ставит " format := "/me ставит рядом с %s шот текилы, аккуратно на ребро стопки насаживает дольку лайма и ставит "
format += "кофейное блюдце с горочкой соли." format += "кофейное блюдце с горочкой соли."
j.Message = fmt.Sprintf(format, j.Misc.Username) j.Message = fmt.Sprintf(format, j.Misc.Username)
} else if match, _ := regexp.MatchString("^(whisky|виски)[::space::]?([::space::].+)*$", cmd); match {
case cmd[:6] == "whisky" || cmd[:5] == "виски":
format := "/me демонстративно достаёт из морозилки пару кубических камушков, бросает их в толстодонный " format := "/me демонстративно достаёт из морозилки пару кубических камушков, бросает их в толстодонный "
format += "стакан и аккуратно наливает Jack Daniels. Запускает стакан вдоль барной стойки, он " format += "стакан и аккуратно наливает Jack Daniels. Запускает стакан вдоль барной стойки, он "
format += "останавливается около %s." format += "останавливается около %s."
j.Message = fmt.Sprintf(format, j.Misc.Username) j.Message = fmt.Sprintf(format, j.Misc.Username)
} else if match, _ := regexp.MatchString("^(absinth|абсент)[::space::]?([::space::].+)*$", cmd); match {
case cmd[:8] == "absinthe" || cmd[:6] == "абсент":
format := "/me наливает абсент в стопку. Смочив кубик сахара в абсенте кладёт его на дырявую ложечку и " format := "/me наливает абсент в стопку. Смочив кубик сахара в абсенте кладёт его на дырявую ложечку и "
format += "поджигает. Как только пламя потухнет, %s размешивает оплавившийся кубик в абсенте и подносит " format += "поджигает. Как только пламя потухнет, %s размешивает оплавившийся кубик в абсенте и подносит "
format += "стопку %s." format += "стопку %s."
j.Message = fmt.Sprintf(format, j.Misc.BotNick, j.Misc.Username) j.Message = fmt.Sprintf(format, j.Misc.BotNick, j.Misc.Username)
} else if match, _ := regexp.MatchString("^fuck[::space::]*$", cmd); match {
default: j.Message = "Не ругайся."
} else {
cmdLen := len(cmd) cmdLen := len(cmd)
cmds := []string{"karma ", "карма "} cmds := []string{"karma ", "карма "}
@@ -604,6 +597,14 @@ func init() {
log.SetLevel(log.InfoLevel) log.SetLevel(log.InfoLevel)
} }
// Надеюсь, это заловит все ошибки и паники в лог при падении программы
defer func() {
if err := recover(); err != nil {
log.Fatalf("Exception: %v\n", err)
os.Exit(1)
}
}()
var err error var err error
// Самое гнусное - открыть базки со статичными фразами, конкретно тут - в RO-режиме // Самое гнусное - открыть базки со статичными фразами, конкретно тут - в RO-режиме
var options pebble.Options var options pebble.Options