Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fba732cc24 | ||
|
|
db379e9491 | ||
|
|
7615daa57e |
2
README
2
README
@@ -17,7 +17,7 @@ aleesa-phrases-go
|
|||||||
|
|
||||||
Как это собрать?
|
Как это собрать?
|
||||||
-----------------------------------------------------------------------------------------------------------------------
|
-----------------------------------------------------------------------------------------------------------------------
|
||||||
Понадобится golang версии 1.17 или более новая.
|
Понадобится golang версии 1.18 или более новая.
|
||||||
|
|
||||||
Сам процесс сборки простой, достаточно запустить:
|
Сам процесс сборки простой, достаточно запустить:
|
||||||
make
|
make
|
||||||
|
|||||||
@@ -95,6 +95,9 @@ var pebbleDB struct {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Создадим источник рандома
|
||||||
|
var random *rand.Rand
|
||||||
|
|
||||||
// ReadConfig читает и валидирует конфиг, а также выставляет некоторые default-ы, если значений для параметров в конфиге нет
|
// ReadConfig читает и валидирует конфиг, а также выставляет некоторые default-ы, если значений для параметров в конфиге нет
|
||||||
func ReadConfig() MyConfig {
|
func ReadConfig() MyConfig {
|
||||||
configLoaded := false
|
configLoaded := false
|
||||||
@@ -307,7 +310,7 @@ func FetchRandomV(db *pebble.DB, dbName string) (string, error) {
|
|||||||
return answer, fmt.Errorf("garbage in count_db while getting info about %s: %s", dbName, err)
|
return answer, fmt.Errorf("garbage in count_db while getting info about %s: %s", dbName, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
phraseNum := 1 + rand.Intn(amountNum)
|
phraseNum := random.Intn(amountNum + 1)
|
||||||
phraseItem := fmt.Sprintf("%d", phraseNum)
|
phraseItem := fmt.Sprintf("%d", phraseNum)
|
||||||
|
|
||||||
answer, err = FetchV(db, phraseItem)
|
answer, err = FetchV(db, phraseItem)
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"math"
|
"math"
|
||||||
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"strconv"
|
"strconv"
|
||||||
@@ -370,29 +371,53 @@ 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
|
||||||
var cmd = j.Message[len(j.Misc.CSign):]
|
switch cmd := j.Message[len(j.Misc.CSign):]; {
|
||||||
|
case cmd == "friday" || cmd == "пятница":
|
||||||
|
j.Message = friday()
|
||||||
|
|
||||||
switch cmd {
|
case cmd == "proverb" || cmd == "пословица":
|
||||||
case "friday":
|
|
||||||
j.Message = friday()
|
|
||||||
case "пятница":
|
|
||||||
j.Message = friday()
|
|
||||||
case "proverb":
|
|
||||||
j.Message = proverb()
|
j.Message = proverb()
|
||||||
case "пословица":
|
|
||||||
j.Message = proverb()
|
case cmd == "f" || cmd == "ф":
|
||||||
case "f":
|
|
||||||
j.Message = fortune()
|
j.Message = fortune()
|
||||||
case "ф":
|
|
||||||
|
case cmd == "fortune" || cmd == "фортунка":
|
||||||
j.Message = fortune()
|
j.Message = fortune()
|
||||||
case "fortune":
|
|
||||||
j.Message = fortune()
|
case cmd == "karma" || cmd == "карма":
|
||||||
case "фортунка":
|
|
||||||
j.Message = fortune()
|
|
||||||
case "karma":
|
|
||||||
j.Message = getKarma(j.ChatID, "")
|
|
||||||
case "карма":
|
|
||||||
j.Message = getKarma(j.ChatID, "")
|
j.Message = getKarma(j.ChatID, "")
|
||||||
|
|
||||||
|
case cmd[:3] == "rum" || cmd[:3] == "ром":
|
||||||
|
format := "/me притаскивает на подносе стопку рома для %s, края стопки искрятся кристаллами соли."
|
||||||
|
j.Message = fmt.Sprintf(format, j.Misc.Username)
|
||||||
|
|
||||||
|
case cmd[:5] == "vodka" || cmd[:5] == "водка":
|
||||||
|
format := "/me подаёт шот водки с небольшим маринованным огурчиком на блюдце для %s. Из огурчика торчит "
|
||||||
|
format += "небольшая вилочка."
|
||||||
|
j.Message = fmt.Sprintf(format, j.Misc.Username)
|
||||||
|
|
||||||
|
case cmd[:4] == "beer" || cmd[:4] == "пиво":
|
||||||
|
format := "/me бахает об стол перед %s кружкой холодного пива, часть пенной шапки сползает по запотевшей "
|
||||||
|
format += "стенке кружки."
|
||||||
|
j.Message = fmt.Sprintf(format, j.Misc.Username)
|
||||||
|
|
||||||
|
case cmd[:7] == "tequila" || cmd[:6] == "текила":
|
||||||
|
format := "/me ставит рядом с %s шот текилы, аккуратно на ребро стопки насаживает дольку лайма и ставит "
|
||||||
|
format += "кофейное блюдце с горочкой соли."
|
||||||
|
j.Message = fmt.Sprintf(format, j.Misc.Username)
|
||||||
|
|
||||||
|
case cmd[:6] == "whisky" || cmd[:5] == "виски":
|
||||||
|
format := "/me демонстративно достаёт из морозилки пару кубических камушков, бросает их в толстодонный "
|
||||||
|
format += "стакан и аккуратно наливает Jack Daniels. Запускает стакан вдоль барной стойки, он "
|
||||||
|
format += "останавливается около %s."
|
||||||
|
j.Message = fmt.Sprintf(format, j.Misc.Username)
|
||||||
|
|
||||||
|
case cmd[:8] == "absinthe" || cmd[:6] == "абсент":
|
||||||
|
format := "/me наливает абсент в стопку. Смочив кубик сахара в абсенте кладёт его на дырявую ложечку и "
|
||||||
|
format += "поджигает. Как только пламя потухнет, %s размешивает оплавившийся кубик в абсенте и подносит "
|
||||||
|
format += "стопку %s."
|
||||||
|
j.Message = fmt.Sprintf(format, j.Misc.BotNick, j.Misc.Username)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
cmdLen := len(cmd)
|
cmdLen := len(cmd)
|
||||||
cmds := []string{"karma ", "карма "}
|
cmds := []string{"karma ", "карма "}
|
||||||
@@ -552,6 +577,10 @@ func init() {
|
|||||||
TimestampFormat: "2006-01-02 15:04:05",
|
TimestampFormat: "2006-01-02 15:04:05",
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Запустим наш рандомайзер
|
||||||
|
rngSeed := rand.NewSource(time.Now().UnixNano())
|
||||||
|
random = rand.New(rngSeed)
|
||||||
|
|
||||||
config = ReadConfig()
|
config = ReadConfig()
|
||||||
|
|
||||||
// no panic, no trace
|
// no panic, no trace
|
||||||
|
|||||||
2
go.mod
2
go.mod
@@ -3,6 +3,7 @@ module main
|
|||||||
go 1.18
|
go 1.18
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/cockroachdb/errors v1.8.1
|
||||||
github.com/cockroachdb/pebble v0.0.0-20220513193540-b8c9a560bed5
|
github.com/cockroachdb/pebble v0.0.0-20220513193540-b8c9a560bed5
|
||||||
github.com/go-redis/redis/v8 v8.11.5
|
github.com/go-redis/redis/v8 v8.11.5
|
||||||
github.com/hjson/hjson-go v3.1.0+incompatible
|
github.com/hjson/hjson-go v3.1.0+incompatible
|
||||||
@@ -12,7 +13,6 @@ require (
|
|||||||
require (
|
require (
|
||||||
github.com/DataDog/zstd v1.4.5 // indirect
|
github.com/DataDog/zstd v1.4.5 // indirect
|
||||||
github.com/cespare/xxhash/v2 v2.1.2 // indirect
|
github.com/cespare/xxhash/v2 v2.1.2 // indirect
|
||||||
github.com/cockroachdb/errors v1.8.1 // indirect
|
|
||||||
github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f // indirect
|
github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f // indirect
|
||||||
github.com/cockroachdb/redact v1.0.8 // indirect
|
github.com/cockroachdb/redact v1.0.8 // indirect
|
||||||
github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 // indirect
|
github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 // indirect
|
||||||
|
|||||||
Reference in New Issue
Block a user